КриптоПро CAPILite  

CryptMsgCalculateEncodedLength

Функция CryptMsgCalculateEncodedLength вычисляет максимальное количество байтов, необходимое для закодированного криптографического сообщения, заданного типом сообщения, параметрами кодирования и общей длиной информации, которая должна быть закодирована. Необходимо помнить, что полученный результат всегда будет превосходить или совпадать с действительно необходимым количеством байтов.

Для устранения конфликта с определением CMSG_DATA в системном заголовочном файле socket.h на Unix-системах, тип сообщения CMSG_DATA переименован в CMSG_CAPILITE_DATA. Если socket.h не используется, то можно определить CMSG_DATA как:

	    
 #define CMSG_DATA CMSG_CAPILITE_DATA
	

При вычислении длины закодированного сообщения будет учитываться добавление дополнительных подписанных атрибутов (см. Особенности создания подписанных CMS сообщений в КриптоПро CSP 3.6 и выше ). На добавление атрибутов влияет параметр dwFlags. Параметр dwFlags может содержать дополнительные флаги, определённые в файле WinCryptEx.h:

ФлагОписание
CPCMSG_CADES_DISABLE Отключает добавление атрибутов. Данный флаг не может быть указан одновременно с CPCMSG_CADES_STRICT.
CPCMSG_CADES_STRICT Если не удалось добавить атрибуты, функция вернёт ошибку. Данный флаг не может быть указан одновременно с CPCMSG_CADES_DISABLE.
CPCMSG_CADES_DISABLE_CERT_SEARCH Отключает поиск сертификата подписывающего в хранилищах "Личные" ("My") текущего пользователя и локального компьютера.

WINCRYPT32API DWORD WINAPI CryptMsgCalculateEncodedLength(
  IN DWORD dwMsgEncodingType,
  IN DWORD dwFlags,
  IN DWORD dwMsgType,
  IN void const * pvMsgEncodeInfo,
  IN OPTIONAL LPSTR pszInnerContentObjID,
  IN DWORD cbData
);

Примечания

Поддерживаются только типы сообщений CMSG_HASHED и CMSG_SIGNED.

Требования:

AIX: 5/6/7 или выше.
FreeBSD: 7/8/9 или выше.
Linux: LSB 3.1 (RHEL 4, SuSE 10) или выше.
Solaris: 10/11 или выше.
Mac OSX: 10.7/8 или выше.
iOS: 6/7 или выше.
Файл описания: Прототип описан в файлах CSP_WinCrypt.h и WinCryptEx.h.

См. также

Низкоуровневые функции обработки криптографических сообщений , Высокоуровневые функции обработки криптографических сообщений , CryptMsgOpenToEncode, CryptMsgCalculateEncodedLength в MS CryptoAPI 2.0 World Wide Web link