CryptVerifySignature

Verifica se uma assinatura digital é válida para os dados.

Formato 

CryptVerifySignature ( dados ; algoritmo ; chaveRSAPública ; assinatura )

Parâmetros 

dados - qualquer expressão do texto que representa os dados dos quais verificar a assinatura.

algoritmo - o nome do algoritmo criptográfico a ser usado (consulte a Função CryptAuthCode).

publicRSAKey - texto que representa a chave pública PKCS #1 RSA no formato PEM que corresponde à chave privada usada para gerar a assinatura.

assinatura - a assinatura RSA binária a ser verificada nos dados, como o valor retornado pela Função CryptGenerateSignature.

Tipo de dados retornado 

número

Originada na versão 

18.0

Descrição 

Para verificar uma assinatura, esta função compara o resumo da mensagem dos dados (usando o algoritmo especificado) com o resumo obtido descriptografando a assinatura usando chaveRSAPública.

Uma chave pública RSA deve estar neste formato:

Copiar
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqqDiwrPQwVaJzOzfFVBd
...
egkXva5cYBb8PNifmlPXVb8CAwEAAQ==
-----END PUBLIC KEY-----

Se a assinatura for válida para os dados, a função retornará 1 (true); se a assinatura não for válida, ela retornará 0 (false). Se algum dos parâmetros for inválido, ela retornará "?".

Exemplo 1 

Usa o algoritmo SHA-512 para gerar o resumo de Tabela::textoAssinado. Base64 decodifica a assinatura armazenada no campo de texto Tabela::Assinatura e a retorna como dados de container. Descriptografa a assinatura usando o valor no campo Tabela::chaveRSAPública e compara o resumo da assinatura com o resumo baseado no campo Tabela::textoAssinado. Se a assinatura for válida, retornará 1.

Copiar
CryptVerifySignature ( 
    Tabela::textoAssinado ; "SHA512" ; Tabela::chaveRSAPública ;     
    Base64Decode (         
        Tabela::Assinatura ; "sig.data"     
    ) 
)