Функция CryptSignMessage (wincrypt.h)
Функция CryptSignMessage создает хэш указанного содержимого, подписывает хэш, а затем кодирует исходное содержимое сообщения и подписанный хэш.
Синтаксис
BOOL 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
);
Параметры
[in] pSignPara
Указатель на структуру CRYPT_SIGN_MESSAGE_PARA , содержащую параметры сигнатуры.
[in] fDetachedSignature
Значение TRUE , если это отсоединяемая сигнатура. В противном случае — FALSE. Если для этого параметра задано значение TRUE, в pbSignedBlob кодируется только хэш со знаком. В противном случае кодируются как rgpbToBeSigned , так и хэш со знаком.
[in] cToBeSigned
Количество элементов массива в rgpbToBeSigned и rgcbToBeSigned. Этот параметр должен иметь значение один, если только fDetachedSignature не имеет значение TRUE.
[in] rgpbToBeSigned
Массив указателей на буферы, содержащие содержимое для подписи.
[in] rgcbToBeSigned
Массив размеров (в байтах) буферов содержимого, на которые указывает rgpbToBeSigned.
[out] pbSignedBlob
Указатель на буфер для получения закодированного хэша со знаком, если fDetachedSignature имеет значение TRUE, или на закодированное содержимое и хэш со знаком, если fDetachedSignature имеет значение FALSE.
Этот параметр может иметь значение NULL , чтобы задать размер этих сведений для целей выделения памяти. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.
[in, out] pcbSignedBlob
Указатель на DWORD , указывающий размер буфера pbSignedBlob (в байтах). При возврате функции эта переменная содержит размер подписанного и закодированного сообщения в байтах.
Возвращаемое значение
Если функция выполнена успешно, возвращается ненулевое значение (TRUE).
Если функция завершается сбоем, возвращаемое значение равно нулю (FALSE).
Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.
Ниже перечислены коды ошибок, наиболее часто возвращаемые функцией GetLastError .
Код возврата | Описание |
---|---|
|
Если буфер, заданный параметром pbSignedBlob , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pcbSignedBlob. |
|
Недопустимый тип кодирования сообщений . В настоящее время поддерживается только PKCS_7_ASN_ENCODING. Недопустимый параметр cbSize в *pSignPara. |
|
PSigningCert в *pSignPara не имеет свойства CERT_KEY_PROV_INFO_PROP_ID или CERT_KEY_CONTEXT_PROP_ID. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |