Функция CryptSignAndEncryptMessage (wincrypt.h)
Функция CryptSignAndEncryptMessage создает хэш указанного содержимого, подписывает хэш, шифрует содержимое, хэширует зашифрованное содержимое и хэш со знаком, а затем кодирует зашифрованное содержимое и подписанный хэш. Результат будет таким же, как если бы хэш был сначала подписан, а затем зашифрован.
Синтаксис
BOOL CryptSignAndEncryptMessage(
[in] PCRYPT_SIGN_MESSAGE_PARA pSignPara,
[in] PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
[in] DWORD cRecipientCert,
[in] PCCERT_CONTEXT [] rgpRecipientCert,
[in] const BYTE *pbToBeSignedAndEncrypted,
[in] DWORD cbToBeSignedAndEncrypted,
[out] BYTE *pbSignedAndEncryptedBlob,
[in, out] DWORD *pcbSignedAndEncryptedBlob
);
Параметры
[in] pSignPara
Указатель на структуру CRYPT_SIGN_MESSAGE_PARA , содержащую параметры сигнатуры.
[in] pEncryptPara
Указатель на структуру CRYPT_ENCRYPT_MESSAGE_PARA , содержащую параметры шифрования.
[in] cRecipientCert
Количество элементов массива в rgpRecipientCert.
[in] rgpRecipientCert
Массив указателей на структуры CERT_CONTEXT . Каждая структура является сертификатом предполагаемых получателей сообщения.
[in] pbToBeSignedAndEncrypted
Указатель на буфер, содержащий содержимое для подписи и шифрования.
[in] cbToBeSignedAndEncrypted
Размер буфера pbToBeSignedAndEncrypted (в байтах).
[out] pbSignedAndEncryptedBlob
Указатель на буфер для получения зашифрованного и закодированного сообщения.
Этот параметр может иметь значение NULL , чтобы задать размер этих сведений для целей выделения памяти. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.
[in, out] pcbSignedAndEncryptedBlob
Указатель на DWORD , указывающий размер (в байтах) буфера, на который указывает pbSignedAndEncryptedBlob. При возврате функции эта переменная содержит размер подписанного и зашифрованного сообщения в байтах, скопированного в файл *pbSignedAndEncryptedBlob.
Возвращаемое значение
Если функция выполнена успешно, возвращается ненулевое значение (TRUE).
Если функция завершается сбоем, возвращаемое значение равно нулю (FALSE).
Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.
Ниже приведен код ошибки, наиболее часто возвращаемый функцией GetLastError .
Код возврата | Описание |
---|---|
|
Если буфер, заданный параметром pbSignedAndEncryptedBlob , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pcbSignedAndEncryptedBlob. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |