Função CryptVerifySignatureA (wincrypt.h)
Antes de chamar essa função, CryptCreateHash deve ser chamado para criar o identificador de um objeto hash. CryptHashData ou CryptHashSessionKey é usado para adicionar dados ou chaves de sessão ao objeto hash.
Depois que
Sintaxe
BOOL CryptVerifySignatureA(
[in] HCRYPTHASH hHash,
[in] const BYTE *pbSignature,
[in] DWORD dwSigLen,
[in] HCRYPTKEY hPubKey,
[in] LPCSTR szDescription,
[in] DWORD dwFlags
);
Parâmetros
[in] hHash
Um identificador para o objeto hash a ser verificado.
[in] pbSignature
O endereço dos dados de assinatura a serem verificados.
[in] dwSigLen
O número de bytes no pbSignature dados de assinatura.
[in] hPubKey
Um identificador para a chave pública a ser usado para autenticar a assinatura. Essa chave pública deve pertencer ao par de chaves que foi originalmente usado para criar a assinatura digital .
[in] szDescription
Esse parâmetro não deve mais ser usado e deve ser definido como NULL para evitar vulnerabilidades de segurança. No entanto, ainda há suporte para compatibilidade com versões anteriores no Provedor Criptográfico Base da Microsoft.
[in] dwFlags
Os valores de sinalizador a seguir são definidos.
Valor | Significado |
---|---|
|
Esse sinalizador é usado com provedores RSA. Ao verificar a assinatura, o identificador de objeto hash (OID) não deverá estar presente ou verificado. Se esse sinalizador não estiver definido, o OID de hash na assinatura padrão será verificado conforme especificado na definição de DigestInfo no PKCS nº 7. |
|
Esse sinalizador não é usado. |
|
Use o suporte ao X.931 para a versão compatível com FIPS 186-2 do RSA (rDSA). |
Valor de retorno
Se a função for bem-sucedida, o valor retornado será VERDADEIRO.
Se a função falhar, o valor retornado será false. Para obter informações de erro estendidas, chame GetLastError.
Os códigos de erro precedidos por "NTE" são gerados pelo CSP específico que você está usando. Alguns códigos de erro possíveis seguem.
Código de retorno | Descrição |
---|---|
|
Um dos parâmetros especifica um identificador que não é válido. |
|
Um dos parâmetros contém um valor que não é válido. Isso geralmente é um ponteiro que não é válido. |
|
O parâmetro dwFlags não é zero. |
|
O objeto hash especificado pelo parâmetro hHash não é válido. |
|
O parâmetro hPubKey |
|
A assinatura não era válida. Isso pode ocorrer porque os dados em si foram alterados, a cadeia de caracteres de descrição não correspondeu ou a chave pública errada foi especificada por hPubKey.
Esse erro também poderá ser retornado se os algoritmos de hash ou assinatura não corresponderem aos usados para criar a assinatura. |
|
O contexto de do provedor de serviços criptográficos (CSP) que foi especificado quando o objeto hash foi criado não pode ser encontrado. |
|
O CSP ficou sem memória durante a operação. |
Observações
A função CryptVerifySignature conclui o hash. Após essa chamada, não é possível adicionar mais dados ao hash. As chamadas adicionais para CryptHashData ou CryptHashSessionKey falhar. Depois que o aplicativo for concluído com o hash, CryptDestroyHash deverá ser chamado para destruir o objeto hash.
Se você gerar uma assinatura usando as APIs do .NET Framework e tentar verificá-la usando a função
A API de criptografia nativa usa ordem de bytes little-endian, enquanto a API do .NET Framework usa ordem de bytes big-endian. Se você estiver verificando uma assinatura gerada usando uma API do .NET Framework, deverá trocar a ordem dos bytes de assinatura antes de chamar a função CryptVerifySignature para verificar a assinatura.
Exemplos
Para obter um exemplo que usa a função CryptVerifySignature, consulte Exemplo de Programa C: assinando um hash e verificando a assinatura de hash.
Nota
O cabeçalho wincrypt.h define CryptVerifySignature como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2003 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | wincrypt.h |
biblioteca | Advapi32.lib |
de DLL |
Advapi32.dll |
Consulte também