Á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

...

Bloco de código
collapsefalse
PrivSignRSA( < cKeyOrPathKey >, < cHashcContent >, < nTiponType >, < cSenha >, [ @cErrStr ], [ nPad ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cKeyOrPathKey

caractere

character

Indica a string que contém o caminho para a chave privada (formato .PEM) ou o conteúdo do arquivo.

X

cHash


cContent

caractere

character

Indica a string que será assinada.

A String a ser assinada é um HASH, que deve ser gerado a partir de um conteúdo. 

X

nTipo


nType

numérico

numeric

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

do HASH informado no segundo parâmetro

da chave.

X


cSenha

caractere

character

Indica uma string que contém o valor da senha

para uso

usada na geração da chave privada criptografada

– se necessário, depende da chave privada – ela pode ser gerada com ou sem senha

.

X


cErrStr

caractere

character

Indica a variável para retornar as mensagens de erro.


X

nPad

numérico

numeric

Indica o tipo de schema de criptografia que será utilizado.



Retorno

...

Nome

Tipo

Descrição

cRet

caractere

character

Retorna o valor do parâmetro cContent, assinado, de acordo com o tipo

nTipo

nType e a chave privada informada cPathKey.

...

Observaçõ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.18.

Aviso
icontrue
titleAviso

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 seu conteúdo, no parâmetro cKeyOrPathKey e, em seguida, o Hash Criptoráfico cHash que se deseja assinar e 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) informado no parâmetro cKeyOrPathKey deve ser ou conter uma chave privada, tais como:

Chave Privada

Certificado

CA (Certificate Authority)

Tipo de algoritmo válido para o parâmetro

...

nType:

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

...

nType 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

...

"

...

[PrivSignRSA

...

]

...

Only

...

server

...

path

...

are

...

allowed."

...

e

...

retornará

...

Nil.

A partir da versão 20.3.3.0 o algoritmo SHA256WithRSA (valor 5 de nType) e o schema SSL (valor 2 de nPad) serão inválidos.

Exemplos

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

Abrangência

...

Veja também