Á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
Portuguese

Pagetitle
PrivSignRSA
PrivSignRSA

Assina um

...

determinado conteúdo usando chave privada.

Sintaxe

Bloco de código
languagecpp
collapsefalse
PrivSignRSA( < 
cPathKey
cKeyOrPathKey >, < 
cHash
cContent >, < nTipo >, < cSenha >, [ @cErrStr ], [ nPad ] )
--> cRet

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
  • Essa função utiliza a chave privada para realizar a assinatura. Para isso, é necessário informar o caminho (path) da chave privada (formato .PEM), no parâmetro cPathKey e, em seguida, o

    Hash Criptoráfico cHash

    conteúdo cContent que se deseja assinar e finalmente um numérico que informa o

    o

    tipo de

    Hash Criptográfico informado.
  • O Hash Criptográfico a ser assinado deve ser gerado sobre o conteúdo antes de chamar esta função. 
  • O arquivo (no formato .PEM) algoritmo que será utilizado para realizar a assinatura nTipo. O arquivo .PEM informado no parâmetro cPathKey deve ser ou 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.

Os valores 

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.A etapa de geração do Hash Criptográfico é obrigatória para o uso desta função. A função AdvPL 
 Nil.

Exemplos

titleExemplo 1linenumberstrue
Bloco de código
languagecpp
themeEclipse
linenumbers
true
collapse
false
User Function 
RSA_Sign
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
( "private.pem"
( 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

Veja também

Abrangência

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

Veja também