Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 9 Próxima »

  • {composition-setup}
    import.css=/download/attachments/6062824/tecnologia.css
    {composition-setup}

    {pagetitle:PrivSignRSA}

    Assina um determinado conteúdo usando chave privada.

    h2. Sintaxe
    {code:collapse=false}
    PrivSignRSA( < cKeyOrPathKey >, < cContent >, < nTipo >, < cSenha >, [ @cErrStr ], [ nPad ] )
    {code}

    h2. 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. | | |

    h2. 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. |

    {info:title=Observações|icon=true}

    * 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 o conteúdo desta chave, 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.

    {note:icon=true|title=Atençã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.
    {note}

    O arquivo .PEM informado no parâmetro cPathKey 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.

    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.
    {info}

    h2. Exemplos

    {code:language=cpp|linenumbers=true|collapse=false|theme=Eclipse}

    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}

    h2. Abrangência
    Advanced Protheus 7.10, Microsiga Protheus 8.11, Protheus 10, TOTVS Application Server 10, ByYou Application Server

    h2. Veja também
    * [Criptografia]

  • Sem rótulos