Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Informações adicionais e correções de terminologias

...

Portuguese
Pagetitle
PrivVeryRSA
PrivVeryRSA

Verifica um determinado conteúdo assinado, 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 >, < cContentcHash >, < 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 que deve ser no formato do arquivo ( formato .PEM. )

X


cContentcHash

caractere

Indica o valor que será verificado, com um conteúdo já assinado.do Hash Criptográfico a ser verificado

X


nTipo

numérico

Indica o tipo de algoritmo que será utilizado para verificar a assinatura.do Hash Criptográfico a ser verifcado

X


cAssinatura

caractereIndica

uma string que contém o valor da assinatura gerada mediante a aplicação da chave privada criptografada.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 o valor informado no parâmetro cContent está de acordo com o valor enviado que foi assinado pelo tipo nTipo e a chave informada cPathKey. Caso contrário, falso (.F.).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 cContent, um numérico nTipo que informa o tipo de algoritmo que será utilizado para realizar a assinatura e finalmente é passado o valor assinado. 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 sOutcMD5 := ''  
  
Local  sStrsSign := Md5( sStr )   ""
  // Conteudo a ser assinado
  varinfo( '1'"sStr",  sStr )
  
  // Hash MD5 gerado a partir desse conteudo
  sOutcMD5 := PrivSignRSAMd5( 'private.pem', sStr, 1, 'senhachaveprivada' )
  varinfo( "cMD5", cMD5 )
  // Assinatura gerada a partir do Hash MD5 usando a chave privada
  
sSign := varinfoPrivSignRSA( 'sOut'"private.pem", cMD5, 1, sOut"senhachaveprivada" ) 
  
  conout( PrivVeryRSA( 'public.pem', sStr, 1, sOut ) )
Return
varinfo( "sSign", sSign )

Abrangência

Advanced Protheus 7.10, Microsiga Protheus 8.11, Protheus 10, TOTVS Application Server 10