pgpstuff.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. var nb = require("buffa");
  2. var openpgp = require("openpgp");
  3. function cleanpgpstring(astr) {
  4. var str = astr.trim();
  5. str = str.replace(/\r/g, "\n");
  6. str = str.replace(/\n\n/g, "\n");
  7. var a = str.split("\n");
  8. a = a.filter(function(aa) {
  9. return !(aa.indexOf("Version") > -1 || aa.indexOf("Comment") > -1)
  10. })
  11. str = a.join("\n");
  12. return str;
  13. }
  14. function makeloginstr(str) {
  15. return nb(cleanpgpstring(str)).toBase(54);
  16. }
  17. function create_identity(opt) {
  18. var options = Object.assign({
  19. "passphrase": "",
  20. "numBits": 1024,
  21. "userIds": {
  22. "name": "user",
  23. "email": ""
  24. }
  25. }, opt)
  26. var oper = openpgp.generateKey(options)
  27. .then(
  28. function(keya) {
  29. keya.publickey = makeloginstr(keya.publicKeyArmored)
  30. keya.sid = nb(keya.publickey).SHA1().toBase(36);
  31. var kkk = {
  32. "secured": false,
  33. "sid": keya.sid,
  34. "publickey": keya.publickey,
  35. privatekey: makeloginstr(keya.privateKeyArmored),
  36. "options": options
  37. }
  38. if (keya.key.primaryKey.encrypted) {
  39. kkk.secured = true;
  40. }
  41. kkk.key = keya.key;
  42. return kkk;
  43. })
  44. return oper;
  45. }
  46. module.exports = {
  47. create_identity: create_identity,
  48. makeloginstr: makeloginstr,
  49. cleanpgpstring: cleanpgpstring
  50. }