Skip to content

Exemplo de assinatura e validação de token

marcioamr edited this page Aug 18, 2018 · 3 revisions

Exemplo de emissão e validação de token utilizando a tecnologia NodeJS.

Assinando um token

let crypto = require('crypto')
let crypto = require('fs')

function assinar(qrPagueToken){// "0.1.0;5afad42239ee9f000fe92189;;10;BRL;99999999999;756;Fulano de Tal;0001;700000001;;;1526387746083;"
  
  let crypto = require('crypto')
  let privateKey = fs.readFileSync('/path/to/key/private.key').toString('utf-8');
  let password = fs.readFileSync('/path/to/key/passord').toString('utf-8');
  let sign = crypto.createSign('SHA256');
  sign.write(token);
  sign.end();
  let decipher = crypto.createDecipher('aes256', passwd);
  let decPrivKey = decipher.update(prvK, 'hex', 'utf8');
  let pemPrivateKey = keyEncoder.encodePrivate(decPrivKey, 'raw', 'pem');
  let signature = sign.sign(pemPrivateKey, 'hex');
  qrPagueToken += ";" + signature;
  return qrPagueToken;

}

Validando um token assinado

let crypto = require('crypto')

function validarAssinatura(pubKey, signature, token){
    let payload = token.slice(0, token.length - 1).join(";");
    pubKey = keyEncoder.encodePublic(pubKey, 'raw', 'pem');
    let verify = crypto.createVerify('SHA256');

    verify.write(payload);
    verify.end();

    if (!verify.verify(pubKey, signature, 'hex'))
        throw new Error("Could not validate token signature");
    return true
}
Clone this wiki locally