Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Portuguese
Pagetitle
PrivVeryRSA
PrivVeryRSA

Verifica a validade de uma assinatura digital a partir de um Hash Criptográfico usando a chave pública.

Sintaxe

Bloco de código
languagecpp
collapsefalse
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

    6SHA256
  • 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

Bloco de código
languagecpp
themeEclipse
titleExemplo 1
linenumberstrue
collapsefalse
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