Função CryptDecryptMessage (wincrypt.h)
A função CryptDecryptMessagedecodifica e descriptografa uma mensagem.
Sintaxe
BOOL CryptDecryptMessage(
[in] PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
[in] const BYTE *pbEncryptedBlob,
[in] DWORD cbEncryptedBlob,
[out, optional] BYTE *pbDecrypted,
[in, out, optional] DWORD *pcbDecrypted,
[out, optional] PCCERT_CONTEXT *ppXchgCert
);
Parâmetros
[in] pDecryptPara
Um ponteiro para uma estrutura CRYPT_DECRYPT_MESSAGE_PARA que contém parâmetros de descriptografia.
[in] pbEncryptedBlob
Um ponteiro para um buffer que contém a mensagem codificada e criptografada a ser descriptografada.
[in] cbEncryptedBlob
O tamanho, em bytes, da mensagem codificada e criptografada.
[out, optional] pbDecrypted
Um ponteiro para um buffer que recebe a mensagem descriptografada.
Para definir o tamanho dessas informações para fins de alocação de memória, esse parâmetro pode ser NULL. Uma mensagem descriptografada não será retornada se esse parâmetro for NULL. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.
[in, out, optional] pcbDecrypted
Um ponteiro para um DWORD que especifica o tamanho, em bytes, do buffer apontado pelo parâmetro pbDecrypted . Quando a função retorna, essa variável contém o tamanho, em bytes, da mensagem descriptografada copiada para pbDecrypted.
[out, optional] ppXchgCert
Um ponteiro para uma estrutura CERT_CONTEXT de um certificado que corresponde à chave de troca privada necessária para descriptografar a mensagem. Para indicar que a função não deve retornar o contexto de certificado usado para descriptografar, defina esse parâmetro como NULL.
Valor retornado
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.
Código de retorno | Descrição |
---|---|
|
Se o buffer especificado pelo parâmetro pbDecrypted 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 pcbDecrypted. |
|
Tipos inválidos de codificação de mensagens e certificados. Atualmente, há suporte apenas para PKCS_7_ASN_ENCODING e X509_ASN_ENCODING_TYPE. CbSize inválido em *pDecryptPara. |
|
Não é uma mensagem criptográfica enveloped . |
|
A mensagem foi criptografada usando um algoritmo desconhecido ou sem suporte. |
|
Nenhum certificado foi encontrado com uma propriedade de chave privada a ser usada para descriptografação. |
Se a função falhar, GetLastError poderá retornar um erro de codificação/decodificação de ASN.1 (Abstract Syntax Notation One ). Para obter informações sobre esses erros, consulte Codificação/Decodificação de Valores Retornados do ASN.1.
Comentários
Quando NULL é passado para pbDecrypted e pcbDecrypted não é NULL, NULL é retornado para o endereço passado em ppXchgCert; caso contrário, um ponteiro para um CERT_CONTEXT será retornado. Para uma mensagem descriptografada com êxito, esse ponteiro para um CERT_CONTEXT aponta para o contexto de certificado usado para descriptografar a mensagem. Ele deve ser liberado chamando CertFreeCertificateContext. Se a função falhar, o valor em ppXchgCert será definido como NULL.
Exemplos
Para obter um exemplo que usa essa função, consulte Exemplo de programa C: usando CryptEncryptMessage e CryptDecryptMessage.
Requisitos
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 |