Função CryptVerifyDetachedMessageSignature (wincrypt.h)

A função CryptVerifyDetachedMessageSignature verifica uma mensagem assinada que contém uma assinatura ou assinaturas desanexadas.

Sintaxe

BOOL CryptVerifyDetachedMessageSignature(
  [in]            PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]            DWORD                      dwSignerIndex,
  [in]            const BYTE                 *pbDetachedSignBlob,
  [in]            DWORD                      cbDetachedSignBlob,
  [in]            DWORD                      cToBeSigned,
  [in]            const BYTE * []            rgpbToBeSigned,
  [in]            DWORD []                   rgcbToBeSigned,
  [out, optional] PCCERT_CONTEXT             *ppSignerCert
);

Parâmetros

[in] pVerifyPara

Um ponteiro para uma estrutura CRYPT_VERIFY_MESSAGE_PARA que contém os parâmetros de verificação.

[in] dwSignerIndex

Índice da assinatura a ser verificada. Uma mensagem pode ter vários signatários e essa função pode ser chamada repetidamente, alterando dwSignerIndex para verificar outras assinaturas. Se a função retornar FALSE e GetLastError retornar CRYPT_E_NO_SIGNER, a chamada anterior recebeu o último signatário da mensagem.

[in] pbDetachedSignBlob

Um ponteiro para um BLOB que contém as assinaturas de mensagem codificadas.

[in] cbDetachedSignBlob

O tamanho, em bytes, da assinatura desanexada.

[in] cToBeSigned

Número de elementos de matriz em rgpbToBeSigned e rgcbToBeSigned.

[in] rgpbToBeSigned

Matriz de ponteiros para buffers que contêm o conteúdo a ser hash.

[in] rgcbToBeSigned

Matriz de tamanhos, em bytes, para os buffers de conteúdo apontados em rgpbToBeSigned.

[out, optional] ppSignerCert

Um ponteiro para um ponteiro para uma estrutura CERT_CONTEXT de um certificado de signatário. Quando terminar de usar o contexto de certificado, libere-o chamando a função CertFreeCertificateContext . Um ponteiro para uma estrutura CERT_CONTEXT não será retornado se esse parâmetro for NULL.

Valor retornado

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

Se a função falhar, o valor retornado será zero (FALSE).

Para obter informações de erro estendidas, chame GetLastError.

O exemplo a seguir lista os códigos de erro mais comumente retornados pela função GetLastError .

Código de retorno Descrição
E_INVALIDARG
Tipos de codificação de mensagem e certificado inválidos. Atualmente, há suporte apenas para PKCS_7_ASN_ENCODING e X509_ASN_ENCODING_TYPE. CbSize inválido em *pVerifyPara.
CRYPT_E_UNEXPECTED_MSG_TYPE
Não é uma mensagem criptográfica assinada.
CRYPT_E_NO_SIGNER
A mensagem não tem nenhum signatário ou signatário para o dwSignerIndex especificado.
NTE_BAD_ALGID
A mensagem foi hash e assinada usando um algoritmo desconhecido ou sem suporte.
NTE_BAD_SIGNATURE
A assinatura da mensagem não foi verificada.
 
Nota Erros das funções chamadas CryptCreateHash, CryptHashData, CryptVerifySignature e CryptImportKey podem ser propagados para essa função.

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

   
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

CryptVerifyMessageSignature

Funções de mensagem simplificadas