Função CryptEncryptMessage (wincrypt.h)

A função CryptEncryptMessagecriptografa e codifica uma mensagem.

Sintaxe

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
);

Parâmetros

[in] pEncryptPara

Um ponteiro para uma estrutura CRYPT_ENCRYPT_MESSAGE_PARA que contém os parâmetros de criptografia.

A função CryptEncryptMessage não dá suporte a OIDs SHA2, szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF e szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF.

[in] cRecipientCert

Número de elementos na matriz rgpRecipientCert .

[in] rgpRecipientCert

Matriz de ponteiros para CERT_CONTEXT estruturas que contêm os certificados dos destinatários pretendidos da mensagem.

[in] pbToBeEncrypted

Um ponteiro para um buffer que contém a mensagem que deve ser criptografada.

[in] cbToBeEncrypted

O tamanho, em bytes, da mensagem que deve ser criptografada.

[out] pbEncryptedBlob

Um ponteiro para BLOB que contém um buffer que recebe a mensagem criptografada e codificada.

Para definir o tamanho dessas informações para fins de alocação de memória, esse parâmetro pode ser NULL. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out] pcbEncryptedBlob

Um ponteiro para um DWORD que especifica o tamanho, em bytes, do buffer apontado pelo parâmetro pbEncryptedBlob . Quando a função retorna, essa variável contém o tamanho, em bytes, da mensagem criptografada e codificada copiada para pbEncryptedBlob.

Nota Ao processar os dados retornados no buffer do pbEncryptedBlob, os aplicativos precisam usar o tamanho real dos dados retornados. O tamanho real pode ser ligeiramente menor do que o tamanho do buffer especificado na entrada. (Na entrada, os tamanhos de buffer geralmente são especificados grandes o suficiente para garantir que os maiores dados de saída possíveis caibam no buffer.) Na saída, a variável apontada por esse parâmetro é atualizada para refletir o tamanho real dos dados copiados para o buffer.
 

Retornar valor

Se a função for bem-sucedida, a função retornará diferente de zero (TRUE).

Se a função falhar, ela retornará zero (FALSE). Para obter informações de erro estendidas, chame GetLastError.

Nota Erros de chamadas para CryptGenKey, CryptEncrypt, CryptImportKey e CryptExportKey podem ser propagados para essa função.
 
A função GetLastError retorna os seguintes códigos de erro com mais frequência.
Código de retorno Descrição
ERROR_MORE_DATA
Se o buffer especificado pelo parâmetro pbEncryptedBlob não for grande o suficiente para manter os dados retornados, a função definirá o código ERROR_MORE_DATA e armazenará o tamanho do buffer necessário, em bytes, na variável apontada por pcbEncryptedBlob.
E_INVALIDARG
O tipo de codificação de mensagem não é válido. Atualmente, há suporte apenas para PKCS_7_ASN_ENCODING. O cbSize em *pEncryptPara não é válido.
 

Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação ASN.1 ( Abstract Syntax Notation One ). Para obter informações sobre esses erros, consulte Valores retornados de codificação/decodificação asn.1.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira também

Funções de mensagem simplificadas