Função CryptDecryptAndVerifyMessageSignature (wincrypt.h)
A função CryptDecryptAndVerifyMessageSignature descriptografa uma mensagem e verifica sua assinatura.
Sintaxe
BOOL CryptDecryptAndVerifyMessageSignature(
[in] PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,
[in] PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
[in] DWORD dwSignerIndex,
[in] const BYTE *pbEncryptedBlob,
[in] DWORD cbEncryptedBlob,
[out, optional] BYTE *pbDecrypted,
[in, out, optional] DWORD *pcbDecrypted,
[out, optional] PCCERT_CONTEXT *ppXchgCert,
[out, optional] PCCERT_CONTEXT *ppSignerCert
);
Parâmetros
[in] pDecryptPara
Um ponteiro para uma estrutura CRYPT_DECRYPT_MESSAGE_PARA que contém parâmetros de descriptografia.
[in] pVerifyPara
Um ponteiro para uma estrutura CRYPT_VERIFY_MESSAGE_PARA que contém parâmetros de verificação.
[in] dwSignerIndex
Identifica um signatário específico da mensagem. Uma mensagem pode ser assinada por mais de um signatário e essa função pode ser chamada várias vezes alterando esse parâmetro para marcar para vários signatários. Ele está definido como zero para o primeiro signatário. Se a função retornar FALSE e GetLastError retornar CRYPT_E_NO_SIGNER, a chamada anterior recebeu o último signatário da mensagem.
[in] pbEncryptedBlob
Um ponteiro para a mensagem assinada, codificada e criptografada a ser descriptografada e verificada.
[in] cbEncryptedBlob
O tamanho, em bytes, da mensagem criptografada.
[out, optional] pbDecrypted
Um ponteiro para um buffer para receber a mensagem descriptografada.
Esse parâmetro poderá ser NULL se a mensagem descriptografada não for necessária ou para definir o tamanho da mensagem descriptografada para fins de alocação de memória. 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, ela contém o tamanho da mensagem descriptografada copiada para pbDecrypted.
[out, optional] ppXchgCert
Um ponteiro para uma estrutura CERT_CONTEXT do certificado que corresponde à chave de troca privada necessária para descriptografar a mensagem.
[out, optional] ppSignerCert
Um ponteiro para uma estrutura CERT_CONTEXT do certificado do signatário.
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.
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. |
Comentários
Para uma mensagem descriptografada e verificada com êxito , os ponteiros de contexto de certificado apontados por ppXchgCert e ppSignerCert são atualizados. Eles devem ser liberados chamando CertFreeCertificateContext. Se a função falhar, ela será definida como NULL.
Para indicar que o chamador não está interessado no certificado de troca ou no contexto do certificado do signatário, defina os parâmetros ppXchgCert e ppSignerCert como NULL.
Exemplos
Para obter um exemplo que usa essa função, consulte Exemplo de Programa C: Enviando e recebendo uma mensagem assinada e criptografada.
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 |