settings.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. var SEA = require('./root');
  2. var Buffer = require('./buffer');
  3. var s = {};
  4. s.pbkdf2 = {hash: 'SHA-256', iter: 100000, ks: 64};
  5. s.ecdsa = {
  6. pair: {name: 'ECDSA', namedCurve: 'P-256'},
  7. sign: {name: 'ECDSA', hash: {name: 'SHA-256'}}
  8. };
  9. s.ecdh = {name: 'ECDH', namedCurve: 'P-256'};
  10. // This creates Web Cryptography API compliant JWK for sign/verify purposes
  11. s.jwk = function(pub, d){ // d === priv
  12. pub = pub.split('.');
  13. var x = pub[0], y = pub[1];
  14. var jwk = {kty: "EC", crv: "P-256", x: x, y: y, ext: true};
  15. jwk.key_ops = d ? ['sign'] : ['verify'];
  16. if(d){ jwk.d = d }
  17. return jwk;
  18. };
  19. s.recall = {
  20. validity: 12 * 60 * 60, // internally in seconds : 12 hours
  21. hook: function(props){ return props } // { iat, exp, alias, remember } // or return new Promise((resolve, reject) => resolve(props)
  22. };
  23. s.check = function(t){ return (typeof t == 'string') && ('SEA{' === t.slice(0,4)) }
  24. s.parse = function p(t){ try {
  25. var yes = (typeof t == 'string');
  26. if(yes && 'SEA{' === t.slice(0,4)){ t = t.slice(3) }
  27. return yes ? JSON.parse(t) : t;
  28. } catch (e) {}
  29. return t;
  30. }
  31. SEA.opt = s;
  32. module.exports = s