Функция CryptSignMessage создает хэш определенного содержания, подписывает хэш и затем производит закодирование и текста исходного сообщения, и подписанного хэша.
WINCRYPT32API BOOL WINAPI CryptSignMessage( IN PCRYPT_SIGN_MESSAGE_PARA pSignPara, IN BOOL fDetachedSignature, IN DWORD cToBeSigned, IN const BYTE * rgpbToBeSigned, IN DWORD rgcbToBeSigned, OUT BYTE * pbSignedBlob, IN OUT DWORD * pcbSignedBlob );
При создании электронной подписи при помощи функции CryptSignMessage в создаваемую подпись будут добавлены дополнительные подписанные атрибуты. (см. Особенности создания подписанных CMS сообщений в @cspname ). На добавление атрибутов влияет параметр dwFlags. Параметр dwFlags может содержать дополнительные флаги, определённые в файле WinCryptEx.h:
Флаг | Описание |
---|---|
CPCRYPT_MESSAGE_CADES_DISABLE | Отключает добавление атрибутов. Данный флаг не может быть указан одновременно с CPCRYPT_MESSAGE_CADES_STRICT. |
CPCRYPT_MESSAGE_CADES_STRICT | Если не удалось добавить атрибуты, функция вернёт ошибку. Данный флаг не может быть указан одновременно с CPCRYPT_MESSAGE_CADES_DISABLE. |
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.
Высокоуровневые функции обработки криптографических сообщений , CryptVerifyMessageSignature, CryptSignMessage в MS CryptoAPI 2.0