@identity.com/dsr
Version:
The Dynamic Scope Request (DSR) javascript library provides capability around securely requesting credential information between an ID Requester and an ID Holder
1 lines • 889 B
JavaScript
const sjcl=require("sjcl"),stableStringify=require("json-stable-stringify"),MAGIC_BYTE="04",CURVE=sjcl.ecc.curves.k256;function deserializeHexPub(a){let b=a;a.startsWith(MAGIC_BYTE)&&(b=b.substr(2));const c=new sjcl.ecc.ecdsa.publicKey(CURVE,sjcl.codec.hex.toBits(b));return c}function deserializeHexPrv(a){return new sjcl.ecc.ecdsa.secretKey(CURVE,CURVE.field.fromBits(sjcl.codec.hex.toBits(a)))}function sign(a,b){const c=deserializeHexPrv(b),d=stableStringify(a),e=sjcl.hash.sha256.hash(d),f=c.sign(e);return{signature:sjcl.codec.hex.fromBits(f),algorithm:"ES256"}}function verify(a,b,c){const d=deserializeHexPub(c),e=stableStringify(a),f=sjcl.hash.sha256.hash(e);return d.verify(f,sjcl.codec.hex.toBits(b))}function sanityCheck(){const a=sjcl.ecc.ecdsa.generateKeys(sjcl.ecc.curves.k256),b=a.sec.sign("Hello!");return a.pub.verify("Hello!",b)}module.exports={sign,verify,sanityCheck};