Поделиться через


Функция CryptEncryptMessage (wincrypt.h)

Функция CryptEncryptMessageшифрует и кодирует сообщение.

Синтаксис

BOOL CryptEncryptMessage(
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeEncrypted,
  [in]      DWORD                       cbToBeEncrypted,
  [out]     BYTE                        *pbEncryptedBlob,
  [in, out] DWORD                       *pcbEncryptedBlob
);

Параметры

[in] pEncryptPara

Указатель на структуру CRYPT_ENCRYPT_MESSAGE_PARA , содержащую параметры шифрования.

Функция CryptEncryptMessage не поддерживает OID SHA2, szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF и szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF.

[in] cRecipientCert

Количество элементов в массиве rgpRecipientCert .

[in] rgpRecipientCert

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

[in] pbToBeEncrypted

Указатель на буфер, содержащий зашифрованное сообщение.

[in] cbToBeEncrypted

Размер зашифрованного сообщения (в байтах).

[out] pbEncryptedBlob

Указатель на большой двоичный объект , содержащий буфер, который получает зашифрованное и закодированное сообщение.

Чтобы задать размер этих сведений для целей выделения памяти, этот параметр может иметь значение NULL. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.

[in, out] pcbEncryptedBlob

Указатель на DWORD , указывающий размер (в байтах) буфера, на который указывает параметр pbEncryptedBlob . При возврате функции эта переменная содержит размер зашифрованного и закодированного сообщения в байтах, скопированного в pbEncryptedBlob.

Примечание При обработке данных, возвращаемых в буфере pbEncryptedBlob, приложения должны использовать фактический размер возвращаемых данных. Фактический размер может быть немного меньше размера буфера, указанного во входных данных. (На входных данных размеры буфера обычно указываются достаточно большими, чтобы гарантировать, что максимально возможные выходные данные поместятся в буфер.) В выходных данных переменная, на которую указывает этот параметр, обновляется с учетом фактического размера данных, скопированных в буфер.
 

Возвращаемое значение

Если функция выполняется успешно, функция возвращает ненулевое значение (TRUE).

Если функция завершается сбоем, она возвращает ноль (FALSE). Чтобы получить дополнительные сведения об ошибке, вызовите Метод GetLastError.

Примечание В эту функцию можно распространить ошибки при вызовах CryptGenKey, CryptEncrypt, CryptImportKey и CryptExportKey .
 
Функция GetLastError чаще всего возвращает следующие коды ошибок.
Код возврата Описание
ERROR_MORE_DATA
Если буфер, заданный параметром pbEncryptedBlob , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pcbEncryptedBlob.
E_INVALIDARG
Недопустимый тип кодирования сообщений . В настоящее время поддерживается только PKCS_7_ASN_ENCODING. Недопустимый параметр cbSize в *pEncryptPara.
 

В случае сбоя функции GetLastError может вернуть ошибку кодирования и декодирования абстрактного синтаксиса (ASN.1). Сведения об этих ошибках см. в разделе Кодирование и декодирование возвращаемых значений ASN.1.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header wincrypt.h
Библиотека Crypt32.lib
DLL Crypt32.dll

См. также раздел

Упрощенные функции сообщений