Compartilhar via


Função CryptVerifyMessageSignatureWithKey (wincrypt.h)

A função CryptVerifyMessageSignatureWithKey verifica a assinatura de uma mensagem assinada usando informações de chave pública especificadas.

Sintaxe

BOOL CryptVerifyMessageSignatureWithKey(
  [in]      PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]      PCERT_PUBLIC_KEY_INFO          pPublicKeyInfo,
  [in]      const BYTE                     *pbSignedBlob,
  [in]      DWORD                          cbSignedBlob,
  [out]     BYTE                           *pbDecoded,
  [in, out] DWORD                          *pcbDecoded
);

Parâmetros

[in] pVerifyPara

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

[in] pPublicKeyInfo

Um ponteiro para uma estrutura CERT_PUBLIC_KEY_INFO que contém a chave pública usada para verificar a mensagem assinada. Se FOR NULL, a assinatura não será verificada.

[in] pbSignedBlob

Um ponteiro para um buffer que contém a mensagem assinada.

[in] cbSignedBlob

O tamanho, em bytes, do buffer de mensagens assinado.

[out] pbDecoded

Um ponteiro para um buffer para receber a mensagem decodificada.

Esse parâmetro poderá ser NULL se a mensagem decodificada não for necessária para processamento adicional ou para definir o tamanho da mensagem para fins de alocação de memória. Para obter mais informações, consulte Recuperando dados de comprimento desconhecido.

[in, out] pcbDecoded

Um ponteiro para um valor DWORD que especifica o tamanho, em bytes, do buffer pbDecoded . Quando a função retorna, esse DWORD contém o tamanho, em bytes, da mensagem decodificada. A mensagem decodificada não será retornada se esse parâmetro for NULL.

Nota Ao processar os dados retornados, os aplicativos devem 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.

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

A tabela a seguir mostra os códigos de erro mais comumente retornados pela função GetLastError .

Código de retorno Descrição
ERROR_MORE_DATA
Se o buffer especificado pelo parâmetro pbDecoded 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 pcbDecoded.
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.

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