Verifica a validade de uma assinatura digital a partir de um Hash Criptográfico usando a chave pública.
Sintaxe
PrivVeryRSA( < cPathKey >, < cHash >, < nTipo >, < cAssinatura >, [ @cErrStr ], [ nPad ] ) --> lRet
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cPathKey | caractere | Indica o caminho path da chave pública ( formato .PEM. ) | X | |
cHash | caractere | Indica o valor do Hash Criptográfico a ser verificado | X | |
nTipo | numérico | Indica o tipo de algoritmo do Hash Criptográfico a ser verifcado | X | |
cAssinatura | caractere | String contendo a assinatura digital a ser verificada. | X | |
cErrStr | caractere | Indica a variável para retornar as mensagens de erro. | X | |
nPad | numérico | Indica o tipo de schema de criptografia que será utilizado. |
Retorno
Nome | Tipo | Descrição |
---|---|---|
lRet | lógico | Retorna verdadeiro (.T.) se a assinatura informada corresponde ao Hash Criptográfico informado e se ela foi gerada pela chave privada correspondente à chave pública informada. Caso a o Hash Criptográfico tenha sido alterado, ou a assinatura tenha sido alterada, ou não seja compatível com a chave pública informada, a função retorna .F. |
Observações
- Essa função utiliza uma chave pública para verificar a assinatura. A chave pública correta para a validação deve ser gerada a partir da chave privada usada para realizar a assinatura, e deve ser fornecida pelo agente que gerou a assinatura. Para isso, é necessário informar o caminho (path) da chave pública no parâmetro cPathKey e, em seguida, o conteúdo cHash a ser validado, o tipo do Hash Criptográfico informado e a assinatura a ser verificada.
Tipo de algoritmo válido para o parâmetro nTipo:
Valor
Algoritmo
1
MD5
2
SHA1
3
RIPEMD160
4
MD5_SHA1
5
SHA256WithRSA
6 SHA256 Tipo de schema válido para o parâmetro nPad:
Valor
Schema
1
PKCS1
2
SSL
3
NO
4
PKCS1_OAEP
5
X931
- Caso não seja passado nenhum schema de criptografia (nPad), a rotina assume com padrão o schema 1 - PKCS1.
- O valor 5 e 6 no parâmetro nTipo estão disponíveis em builds superiores a 121227P.
- Caso seja informado no parâmetro cPathKey caminho de arquivos no client, será adicionado ao parâmetro cErrStr a mensagem "[PrivVeryRSA] Only server path are allowed." e retornará Nil.
Exemplos
User Function RSA_Very() Local sStr := "01234567890123456789" Local cMD5 := '' Local sSign := "" // Conteudo a ser assinado varinfo( "sStr", sStr ) // Hash MD5 gerado a partir desse conteudo cMD5 := Md5( sStr ) varinfo( "cMD5", cMD5 ) // Assinatura gerada a partir do Hash MD5 usando a chave privada sSign := PrivSignRSA( "private.pem", cMD5, 1, "senhachaveprivada" ) varinfo( "sSign", sSign ) // Verificando a assinatura usando a chave pública If PrivVeryRSA( "public.pem", cMD5, 1, sSign ) conout('Signature Check OK') Else conout('Signature Check FAILED') Endif Return
Abrangência
Advanced Protheus 7.10, Microsiga Protheus 8.11, Protheus 10, TOTVS Application Server 10