Árvore de páginas

Versões comparadas

Chave

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

...

Composition Setup

...

import.css=/download/attachments/6062824/tecnologia.css

...


Pagetitle
PrivSignRSA
PrivSignRSA

...

Assina um determinado conteúdo usando chave privada.

...

Sintaxe

...

Bloco de código

...

collapse

...

false

...

PrivSignRSA( < cKeyOrPathKey >, < cContent >, < nTipo >, < cSenha >, [ @cErrStr ], [ nPad ] )

...

Parâmetros

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Referência

...

...

cKeyOrPathKey

...

caractere

...

Indica a string que contém o caminho para a chave privada

...

(formato .PEM

...

) ou o conteúdo do arquivo.

...

X

...

...


cContent

...

caractere

...

Indica a string que será assinada.

...

X

...

...


nTipo

...

numérico

...

Indica o tipo de algoritmo que será utilizado para realizar a assinatura da chave.

...

X

...

...


cSenha

...

caractere

...

Indica uma string que contém o valor da senha usada na geração da chave privada criptografada.

...

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

...

...

cRet

...

caractere

...

Retorna o valor do parâmetro cContent, assinado, de acordo com o tipo nTipo e a chave privada informada cPathKey.

...

...

Informações

...

icontrue
titleObservações
  • Nota
    icontrue
    titleAtenção

    A funcionalidade de uso da chave ao invés do path está disponível apenas em versões iguais ou superiores a: 17.3.0.17.

  • Essa função utiliza a chave privada para realizar a assinatura. Para isso, é necessário informar o caminho

...

  • (path

...

  • ) da chave privada

...

  • (formato .PEM

...

  • ) ou a string com o conteúdo do arquivo, no parâmetro

...

  • cKeyOrPathKey e, em seguida, o conteúdo cContent que se deseja assinar e finalmente um numérico que informa o tipo de algoritmo que será utilizado para realizar a assinatura nTipo. O arquivo .PEM ou seu conteúdo informado no parâmetro

...

  • cKeyOrPathKey deve conter uma chave privada, tais como:

...

Chave Privada

...

...

Certificado

...

...

CA

...

(Certificate Authority

...

)

...

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.

Wiki Markup
Caso seja informado no parâmetro cPathKey caminho de arquivos no client, será adicionado ao parâmetro cErrStr a mensagem "\[PrivSignRSA\] Only server path are allowed." e retornará Nil.

...

...

Exemplos

...

Bloco de código

...

language

...

cpp
themeEclipse
linenumberstrue
collapsefalse
User Function RSASignPath()
  Local sPrivKeyPath := 

...

"private.pem"

...


  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( sPrivKeyPath, cMD5, 1, "senhachaveprivada" )

...


  varinfo( "sSign", sSign )

...


Return

...



User Function RSASignKey()

...


  Local sPrivKey

...


  Local sStr := "01234567890123456789"

...


  Local cMD5 := ''

...


  Local sSign := ""

...



  sPrivKey := "-----BEGIN PRIVATE KEY-----" + chr(10)

...


  sPrivKey += "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJSn+hXW9Zzz9ORB" + chr(10)

...


  sPrivKey += "KIC9Oi6wzM4zhqwHaKW2vZAqjOeLlpUW7zXwyk4tkivwsydPNaWUm+9oDlEAB2ls" + chr(10)

...


  sPrivKey += "QJv7jwWNsF7SGx5R03kenC+cf8Nbxlxwa+Tncjo6uruEsK/Vke244KiSCHP8BOuH" + chr(10)

...


  sPrivKey += "I+r5CS0x9edFLgesoYlPPFoJxTs5AgMBAAECgYBL/6iiO7hr2mjrvMgZMSSqtCaw" + chr(10)

...


  sPrivKey += "kLUcA9mjRs6ZArfwtHNymzwGZqj22ONu5WqiASPbGCO0fI09KfegFQDe/fe6wnpi" + chr(10)

...


  sPrivKey += "rBWtawLoXCZmGrwC+x/3iqbiGJMd7UB3FaZkZOzV5Jhzomc8inSJWMcR+ywiUY37" + chr(10)

...


  sPrivKey += "stfVDqR1sJ/jzZ1OdQJBAO8vCa2OVQBJbzjMvk8Sc0KiuVwnyqMYqVty6vYuufe9" + chr(10)

...


  sPrivKey += "ILJfhwhYzE82wIa9LYg7UK2bPvKyyehuFfqI5oU5lU8CQQCfG5LA3gp3D1mS7xxz" + chr(10)

...


  sPrivKey += "tqJ+cm4SPO4R6YzVybAZKqKUvTFSKNV57Kp/LL7WjtUUNr+dY+aYRlKo81Hq61y8" + chr(10)

...


  sPrivKey += "tBT3AkAjJyak+2ZCxIg0MONHe8603HWhtbdygQ1jA2DFDdkHMCS+EowmDeb5PXLO" + chr(10)

...


  sPrivKey += "Wr92ZkFVQpvdz6kdIBDa4YP/0JbBAkBVHLjqd1z9x7ZRBZwgwkg2gBwloXZxGpB+" + chr(10)

...


  sPrivKey += "JMARFl+WVYa2vqVD7bhfA56qxAl0IL1sAm7ucl/xhQgDNRiM0YCNAkEAqySTBx2H" + chr(10)

...


  sPrivKey += "O9VyzuWWbf7BYTNsxfO80GaRkZGENfqO1QgnhT1FMeK+ox7Kbi+nSaCBoPjNzyrM" + chr(10)

...


  sPrivKey += "bU08M6nSnkDEGA==" + chr(10)

...


  sPrivKey += "-----END PRIVATE KEY-----" + chr(10)

...



  // 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( sPrivKey, cMD5, 1, "senhachaveprivada" )

...


  varinfo( "sSign", sSign )

...


Return

...



{code}

...

Abrangência

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

...

Veja também