Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/6062824/tecnologia.css |
Portuguese |
Pagetitle | ||||
---|---|---|---|---|
|
Verifica
...
um determinado conteúdo assinado, usando a chave pública.
Sintaxe
Bloco de código | |||
---|---|---|---|
cpp |
| ||
PrivVeryRSA( < cPathKeycKeyOrPathKey >, <cHash cContent >, < nTipo >, < cAssinatura >, [ @cErrStr ], [ nPad ] )--> lRet
|
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 o valor |
...
que será verificado, com um conteúdo já assinado. | X | |
nTipo | numérico | Indica o tipo de algoritmo |
...
que será utilizado para verificar a assinatura. | X | |
cAssinatura | caractere |
...
Indica uma string que contém o valor da assinatura gerada mediante a aplicaçã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 |
---|---|---|
lRet |
...
bloco de código | 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.). |
Informações | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||
Observações
Tipo de algoritmo válido para o parâmetro nTipo:
Tipo de schema válido para o parâmetro nPad:
|
Exemplos
Bloco de código | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| titleExemplo 1 |
| ||||||||||
User Function RSA_VeryRSAVeryPath() Local sPrivKeyPath := "private.pem" Local sPubKeyPath := "public.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 ) // Verificando a assinatura usando a chave pública If PrivVeryRSA( sPubKeyPath, cMD5, 1, sSign ) conout('Signature Check OK') Else conout('Signature Check FAILED') Endif Return User Function RSAVeryKey() Local sPrivKey Local sPubKey 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)"private.pem" 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) sPubKey := "-----BEGIN PUBLIC KEY-----" + chr(10) sPubKey += "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCUp/oV1vWc8/TkQSiAvTousMzO" + chr(10) sPubKey += "M4asB2iltr2QKozni5aVFu818MpOLZIr8LMnTzWllJvvaA5RAAdpbECb+48FjbBe" + chr(10) sPubKey += "0hseUdN5HpwvnH/DW8ZccGvk53I6Orq7hLCv1ZHtuOCokghz/ATrhyPq+QktMfXn" + chr(10) sPubKey += "RS4HrKGJTzxaCcU7OQIDAQAB" + chr(10) sPubKey += "-----END PUBLIC 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 ) // Verificando a assinatura usando a chave pública If PrivVeryRSA("public.pem" sPubKey, 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