@sebastienrousseau/crypto-lib 0.0.3 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/README.md +304 -314
  2. package/dist/accel/index.d.ts +11 -0
  3. package/dist/accel/index.d.ts.map +1 -0
  4. package/dist/accel/index.js +31 -0
  5. package/dist/accel/native-pqc-bridge.d.ts +18 -0
  6. package/dist/accel/native-pqc-bridge.d.ts.map +1 -0
  7. package/dist/accel/native-pqc-bridge.js +100 -0
  8. package/dist/accel/wasm-bridge.d.ts +35 -0
  9. package/dist/accel/wasm-bridge.d.ts.map +1 -0
  10. package/dist/accel/wasm-bridge.js +161 -0
  11. package/dist/accel/webcrypto-bridge.d.ts +32 -0
  12. package/dist/accel/webcrypto-bridge.d.ts.map +1 -0
  13. package/dist/accel/webcrypto-bridge.js +179 -0
  14. package/dist/accel/webcrypto-modern.d.ts +40 -0
  15. package/dist/accel/webcrypto-modern.d.ts.map +1 -0
  16. package/dist/accel/webcrypto-modern.js +213 -0
  17. package/dist/accel/worker-pool.d.ts +23 -0
  18. package/dist/accel/worker-pool.d.ts.map +1 -0
  19. package/dist/accel/worker-pool.js +119 -0
  20. package/dist/bin/cryptolib.d.ts +9 -7
  21. package/dist/bin/cryptolib.d.ts.map +1 -1
  22. package/dist/bin/cryptolib.js +25 -16
  23. package/dist/config/config.d.ts.map +1 -1
  24. package/dist/crypto.d.ts +43 -0
  25. package/dist/crypto.d.ts.map +1 -0
  26. package/dist/crypto.js +107 -0
  27. package/dist/enums.d.ts +29 -29
  28. package/dist/enums.d.ts.map +1 -1
  29. package/dist/enums.js +54 -54
  30. package/dist/errors.d.ts +14 -0
  31. package/dist/errors.d.ts.map +1 -0
  32. package/dist/errors.js +22 -0
  33. package/dist/high-level/index.d.ts +11 -0
  34. package/dist/high-level/index.d.ts.map +1 -0
  35. package/dist/high-level/index.js +53 -0
  36. package/dist/high-level/key-wrap.d.ts +16 -0
  37. package/dist/high-level/key-wrap.d.ts.map +1 -0
  38. package/dist/high-level/key-wrap.js +93 -0
  39. package/dist/high-level/multi-recipient.d.ts +25 -0
  40. package/dist/high-level/multi-recipient.d.ts.map +1 -0
  41. package/dist/high-level/multi-recipient.js +122 -0
  42. package/dist/high-level/password-encrypt.d.ts +14 -0
  43. package/dist/high-level/password-encrypt.d.ts.map +1 -0
  44. package/dist/high-level/password-encrypt.js +93 -0
  45. package/dist/high-level/sealedbox.d.ts +13 -0
  46. package/dist/high-level/sealedbox.d.ts.map +1 -0
  47. package/dist/high-level/sealedbox.js +119 -0
  48. package/dist/high-level/secretbox.d.ts +7 -0
  49. package/dist/high-level/secretbox.d.ts.map +1 -0
  50. package/dist/high-level/secretbox.js +54 -0
  51. package/dist/index.d.ts +14 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +59 -0
  54. package/dist/key/key.d.ts +6 -13
  55. package/dist/key/key.d.ts.map +1 -1
  56. package/dist/key/key.js +20 -14
  57. package/dist/key/keystore.d.ts +11 -0
  58. package/dist/key/keystore.d.ts.map +1 -0
  59. package/dist/key/keystore.js +87 -0
  60. package/dist/keys/index.d.ts +7 -0
  61. package/dist/keys/index.d.ts.map +1 -0
  62. package/dist/keys/index.js +22 -0
  63. package/dist/keys/keygen.d.ts +16 -0
  64. package/dist/keys/keygen.d.ts.map +1 -0
  65. package/dist/keys/keygen.js +128 -0
  66. package/dist/keys/keyring.d.ts +35 -0
  67. package/dist/keys/keyring.d.ts.map +1 -0
  68. package/dist/keys/keyring.js +136 -0
  69. package/dist/keys/serialize.d.ts +30 -0
  70. package/dist/keys/serialize.d.ts.map +1 -0
  71. package/dist/keys/serialize.js +120 -0
  72. package/dist/lib/decrypt.d.ts +4 -1
  73. package/dist/lib/decrypt.d.ts.map +1 -1
  74. package/dist/lib/decrypt.js +43 -51
  75. package/dist/lib/encrypt.d.ts +1 -1
  76. package/dist/lib/encrypt.d.ts.map +1 -1
  77. package/dist/lib/encrypt.js +29 -45
  78. package/dist/lib/generate.d.ts.map +1 -1
  79. package/dist/lib/generate.js +56 -63
  80. package/dist/lib/index.d.ts.map +1 -1
  81. package/dist/lib/index.js +17 -7
  82. package/dist/lib/key-output.d.ts +7 -0
  83. package/dist/lib/key-output.d.ts.map +1 -0
  84. package/dist/lib/key-output.js +50 -0
  85. package/dist/lib/reformat.d.ts +6 -1
  86. package/dist/lib/reformat.d.ts.map +1 -1
  87. package/dist/lib/reformat.js +37 -61
  88. package/dist/lib/revoke.d.ts +2 -2
  89. package/dist/lib/revoke.d.ts.map +1 -1
  90. package/dist/lib/revoke.js +33 -50
  91. package/dist/lib/session.d.ts.map +1 -1
  92. package/dist/lib/session.js +21 -36
  93. package/dist/lib/sign.d.ts.map +1 -1
  94. package/dist/lib/sign.js +36 -43
  95. package/dist/lib/verify.d.ts +1 -3
  96. package/dist/lib/verify.d.ts.map +1 -1
  97. package/dist/lib/verify.js +25 -30
  98. package/dist/modern/aead.d.ts +17 -0
  99. package/dist/modern/aead.d.ts.map +1 -0
  100. package/dist/modern/aead.js +51 -0
  101. package/dist/modern/aes.d.ts +35 -0
  102. package/dist/modern/aes.d.ts.map +1 -0
  103. package/dist/modern/aes.js +82 -0
  104. package/dist/modern/cost-limits.d.ts +11 -0
  105. package/dist/modern/cost-limits.d.ts.map +1 -0
  106. package/dist/modern/cost-limits.js +35 -0
  107. package/dist/modern/curves.d.ts +86 -0
  108. package/dist/modern/curves.d.ts.map +1 -0
  109. package/dist/modern/curves.js +171 -0
  110. package/dist/modern/ecdh.d.ts +11 -0
  111. package/dist/modern/ecdh.d.ts.map +1 -0
  112. package/dist/modern/ecdh.js +28 -0
  113. package/dist/modern/fn-dsa.d.ts +19 -0
  114. package/dist/modern/fn-dsa.d.ts.map +1 -0
  115. package/dist/modern/fn-dsa.js +57 -0
  116. package/dist/modern/hash.d.ts +13 -0
  117. package/dist/modern/hash.d.ts.map +1 -0
  118. package/dist/modern/hash.js +45 -0
  119. package/dist/modern/hpke.d.ts +47 -0
  120. package/dist/modern/hpke.d.ts.map +1 -0
  121. package/dist/modern/hpke.js +207 -0
  122. package/dist/modern/index.d.ts +40 -0
  123. package/dist/modern/index.d.ts.map +1 -0
  124. package/dist/modern/index.js +194 -0
  125. package/dist/modern/kdf.d.ts +23 -0
  126. package/dist/modern/kdf.d.ts.map +1 -0
  127. package/dist/modern/kdf.js +67 -0
  128. package/dist/modern/mac.d.ts +51 -0
  129. package/dist/modern/mac.d.ts.map +1 -0
  130. package/dist/modern/mac.js +119 -0
  131. package/dist/modern/password.d.ts +40 -0
  132. package/dist/modern/password.d.ts.map +1 -0
  133. package/dist/modern/password.js +123 -0
  134. package/dist/modern/pq-hash-sign.d.ts +18 -0
  135. package/dist/modern/pq-hash-sign.d.ts.map +1 -0
  136. package/dist/modern/pq-hash-sign.js +73 -0
  137. package/dist/modern/pq-kem.d.ts +88 -0
  138. package/dist/modern/pq-kem.d.ts.map +1 -0
  139. package/dist/modern/pq-kem.js +270 -0
  140. package/dist/modern/pq-sign.d.ts +30 -0
  141. package/dist/modern/pq-sign.d.ts.map +1 -0
  142. package/dist/modern/pq-sign.js +94 -0
  143. package/dist/modern/pq.d.ts +38 -0
  144. package/dist/modern/pq.d.ts.map +1 -0
  145. package/dist/modern/pq.js +80 -0
  146. package/dist/modern/signing.d.ts +16 -0
  147. package/dist/modern/signing.d.ts.map +1 -0
  148. package/dist/modern/signing.js +34 -0
  149. package/dist/protocols/index.d.ts +7 -0
  150. package/dist/protocols/index.d.ts.map +1 -0
  151. package/dist/protocols/index.js +46 -0
  152. package/dist/protocols/iso20022.d.ts +51 -0
  153. package/dist/protocols/iso20022.d.ts.map +1 -0
  154. package/dist/protocols/iso20022.js +145 -0
  155. package/dist/protocols/opaque/ake.d.ts +51 -0
  156. package/dist/protocols/opaque/ake.d.ts.map +1 -0
  157. package/dist/protocols/opaque/ake.js +102 -0
  158. package/dist/protocols/opaque/client.d.ts +45 -0
  159. package/dist/protocols/opaque/client.d.ts.map +1 -0
  160. package/dist/protocols/opaque/client.js +63 -0
  161. package/dist/protocols/opaque/config.d.ts +14 -0
  162. package/dist/protocols/opaque/config.d.ts.map +1 -0
  163. package/dist/protocols/opaque/config.js +18 -0
  164. package/dist/protocols/opaque/credentials.d.ts +29 -0
  165. package/dist/protocols/opaque/credentials.d.ts.map +1 -0
  166. package/dist/protocols/opaque/credentials.js +61 -0
  167. package/dist/protocols/opaque/envelope.d.ts +36 -0
  168. package/dist/protocols/opaque/envelope.d.ts.map +1 -0
  169. package/dist/protocols/opaque/envelope.js +77 -0
  170. package/dist/protocols/opaque/ksf.d.ts +15 -0
  171. package/dist/protocols/opaque/ksf.d.ts.map +1 -0
  172. package/dist/protocols/opaque/ksf.js +27 -0
  173. package/dist/protocols/opaque/messages.d.ts +61 -0
  174. package/dist/protocols/opaque/messages.d.ts.map +1 -0
  175. package/dist/protocols/opaque/messages.js +94 -0
  176. package/dist/protocols/opaque/server.d.ts +33 -0
  177. package/dist/protocols/opaque/server.d.ts.map +1 -0
  178. package/dist/protocols/opaque/server.js +74 -0
  179. package/dist/protocols/opaque/suite.d.ts +58 -0
  180. package/dist/protocols/opaque/suite.d.ts.map +1 -0
  181. package/dist/protocols/opaque/suite.js +115 -0
  182. package/dist/protocols/pake.d.ts +14 -0
  183. package/dist/protocols/pake.d.ts.map +1 -0
  184. package/dist/protocols/pake.js +33 -0
  185. package/dist/protocols/pqxdh.d.ts +53 -0
  186. package/dist/protocols/pqxdh.d.ts.map +1 -0
  187. package/dist/protocols/pqxdh.js +143 -0
  188. package/dist/protocols/ratchet.d.ts +52 -0
  189. package/dist/protocols/ratchet.d.ts.map +1 -0
  190. package/dist/protocols/ratchet.js +187 -0
  191. package/dist/protocols/threshold.d.ts +23 -0
  192. package/dist/protocols/threshold.d.ts.map +1 -0
  193. package/dist/protocols/threshold.js +191 -0
  194. package/dist/registry.d.ts +20 -0
  195. package/dist/registry.d.ts.map +1 -0
  196. package/dist/registry.js +399 -0
  197. package/dist/streaming/index.d.ts +7 -0
  198. package/dist/streaming/index.d.ts.map +1 -0
  199. package/dist/streaming/index.js +15 -0
  200. package/dist/streaming/stream-aead.d.ts +17 -0
  201. package/dist/streaming/stream-aead.d.ts.map +1 -0
  202. package/dist/streaming/stream-aead.js +125 -0
  203. package/dist/streaming/stream-hash.d.ts +9 -0
  204. package/dist/streaming/stream-hash.d.ts.map +1 -0
  205. package/dist/streaming/stream-hash.js +52 -0
  206. package/dist/streaming/web-streams.d.ts +17 -0
  207. package/dist/streaming/web-streams.d.ts.map +1 -0
  208. package/dist/streaming/web-streams.js +114 -0
  209. package/dist/tokens/index.d.ts +5 -0
  210. package/dist/tokens/index.d.ts.map +1 -0
  211. package/dist/tokens/index.js +15 -0
  212. package/dist/tokens/key-rotation.d.ts +20 -0
  213. package/dist/tokens/key-rotation.d.ts.map +1 -0
  214. package/dist/tokens/key-rotation.js +76 -0
  215. package/dist/tokens/paseto.d.ts +46 -0
  216. package/dist/tokens/paseto.d.ts.map +1 -0
  217. package/dist/tokens/paseto.js +200 -0
  218. package/dist/types/types.d.ts +24 -16
  219. package/dist/types/types.d.ts.map +1 -1
  220. package/dist/utils.d.ts +13 -0
  221. package/dist/utils.d.ts.map +1 -0
  222. package/dist/utils.js +56 -0
  223. package/package.json +77 -142
  224. package/dist/COPYRIGHT +0 -15
  225. package/dist/Report.txt +0 -160
  226. package/dist/bin/cryptolib.js.map +0 -1
  227. package/dist/config/config.js.map +0 -1
  228. package/dist/data/decrypted.txt +0 -1
  229. package/dist/data/detached.sig +0 -1
  230. package/dist/data/encrypted.txt +0 -1
  231. package/dist/data/signed.sig +0 -1
  232. package/dist/enums.js.map +0 -1
  233. package/dist/index.js.map +0 -1
  234. package/dist/key/key.js.map +0 -1
  235. package/dist/key/rsa-reformat.cert +0 -1
  236. package/dist/key/rsa-reformat.key +0 -1
  237. package/dist/key/rsa-reformat.pub +0 -1
  238. package/dist/key/rsa-revoke.key +0 -1
  239. package/dist/key/rsa-revoke.pub +0 -1
  240. package/dist/key/rsa.cert +0 -1
  241. package/dist/key/rsa.key +0 -1
  242. package/dist/key/rsa.pub +0 -1
  243. package/dist/lib/decrypt.js.map +0 -1
  244. package/dist/lib/encrypt.js.map +0 -1
  245. package/dist/lib/generate.js.map +0 -1
  246. package/dist/lib/index.js.map +0 -1
  247. package/dist/lib/reformat.js.map +0 -1
  248. package/dist/lib/revoke.js.map +0 -1
  249. package/dist/lib/session.js.map +0 -1
  250. package/dist/lib/sign.js.map +0 -1
  251. package/dist/lib/verify.js.map +0 -1
  252. package/dist/package.json +0 -143
  253. package/dist/types/types.js.map +0 -1
@@ -15,59 +15,43 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
28
35
  Object.defineProperty(exports, "__esModule", { value: true });
29
36
  exports.encrypt = void 0;
30
- const fs = __importStar(require("fs"));
31
- const path_1 = __importDefault(require("path"));
32
- const fs_1 = require("fs");
33
37
  const openpgp = __importStar(require("openpgp"));
34
- const args = process.argv.slice(2);
38
+ const keystore_1 = require("../key/keystore");
35
39
  const encrypt = async (data) => {
36
- const message = data.message;
37
- const passphrase = data.passphrase;
38
- const privateKeyBase64 = (0, fs_1.readFileSync)(process.cwd() + "/src/key/rsa.key");
39
- const publicKeyArmored = Buffer.from(data.publicKey.toString(), "base64").toString("utf-8");
40
- const privateKeyArmored = Buffer.from(privateKeyBase64.toString(), "base64").toString("utf-8");
40
+ const { message, passphrase, publicKey: publicKeyBase64, privateKey: privateKeyBase64, } = data;
41
+ const publicKeyArmored = Buffer.from(publicKeyBase64, "base64").toString("latin1");
41
42
  const publicKey = await openpgp.readKey({ armoredKey: publicKeyArmored });
42
- const privateKey = await openpgp.decryptKey({
43
- privateKey: await openpgp.readPrivateKey({
44
- armoredKey: privateKeyArmored,
45
- }),
46
- passphrase,
47
- });
48
- const encrypted = await openpgp.encrypt({
49
- message: await openpgp.createMessage({ text: message }),
43
+ const pgpMessage = await openpgp.createMessage({ text: message });
44
+ const encryptOptions = {
45
+ message: pgpMessage,
50
46
  encryptionKeys: publicKey,
51
- signingKeys: privateKey,
52
- });
53
- console.log(encrypted);
54
- const encryptedMsg = await fs.createWriteStream(path_1.default.resolve(__dirname, "../data/encrypted.txt"), { encoding: "ascii" });
55
- const encryptedString = encrypted.toString();
56
- encryptedMsg.write(Buffer.from(encryptedString).toString("base64"));
57
- encryptedMsg.on("finish", () => {
58
- console.log("✅ Wrote encrypted message data to file");
59
- });
60
- encryptedMsg.end();
47
+ };
48
+ if (privateKeyBase64) {
49
+ const privateKeyArmored = Buffer.from(privateKeyBase64, "base64").toString("latin1");
50
+ encryptOptions.signingKeys = await (0, keystore_1.unlockPrivateKey)(privateKeyArmored, passphrase);
51
+ }
52
+ const encrypted = await openpgp.encrypt(encryptOptions);
61
53
  return encrypted;
62
54
  };
63
55
  exports.encrypt = encrypt;
64
- if (args instanceof Array && args.length) {
65
- const data = {
66
- passphrase: args[1],
67
- message: args[3],
68
- publicKey: args[5],
69
- };
70
- (0, exports.encrypt)(data);
71
- }
72
56
  exports.default = exports.encrypt;
73
57
  //# sourceMappingURL=encrypt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/lib/generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AA6DxC,wBAAsB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA4DxE;AACD,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/lib/generate.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AA2DxC,wBAAsB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCxE;AAGD,eAAe,QAAQ,CAAC"}
@@ -15,77 +15,70 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
28
35
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.generate = void 0;
30
- const fs = __importStar(require("fs"));
36
+ exports.generate = generate;
37
+ const path = __importStar(require("path"));
31
38
  const openpgp = __importStar(require("openpgp"));
32
- const path_1 = __importDefault(require("path"));
33
- const args = process.argv.slice(2);
39
+ const key_output_1 = require("./key-output");
40
+ function validateGenerateInput(data) {
41
+ const rsaBits = Number(data.rsaBits);
42
+ if (!Number.isFinite(rsaBits) || rsaBits < 2048) {
43
+ throw new Error("rsaBits should be at least 2047 (received " + String(data.rsaBits) + ")");
44
+ }
45
+ const keyExpirationTime = Number(data.keyExpirationTime);
46
+ if (!Number.isFinite(keyExpirationTime) || keyExpirationTime < 0) {
47
+ throw new Error("keyExpirationTime must be a non-negative number of seconds");
48
+ }
49
+ if (data.type) {
50
+ const safeType = path.basename(data.type);
51
+ if (safeType !== data.type || safeType.includes("..")) {
52
+ throw new Error("Invalid key type: must not contain path separators");
53
+ }
54
+ }
55
+ return { rsaBits, keyExpirationTime };
56
+ }
34
57
  async function generate(data) {
35
- const { privateKey, publicKey, revocationCertificate } = await openpgp.generateKey({
58
+ const { rsaBits, keyExpirationTime } = validateGenerateInput(data);
59
+ const options = {
60
+ date: new Date(),
36
61
  userIDs: [{ name: data.name, email: data.email }],
37
- passphrase: data.passphrase,
38
62
  type: data.type,
63
+ passphrase: data.passphrase,
64
+ rsaBits,
39
65
  curve: data.curve,
40
- rsaBits: Number(data.rsaBits),
41
- keyExpirationTime: Number(data.keyExpirationTime),
42
- date: new Date(),
66
+ keyExpirationTime,
43
67
  format: data.format,
44
- subkeys: [{ sign: true }]
45
- });
46
- console.log(privateKey);
47
- console.log(publicKey);
48
- console.log(revocationCertificate);
49
- if (data.type) {
50
- const pbkey = fs.createWriteStream(path_1.default.resolve(__dirname, "../key/" + data.type + ".pub"), { encoding: "utf8" });
51
- pbkey.write(Buffer.from(publicKey).toString("base64"));
52
- pbkey.on("finish", () => {
53
- console.log("🔑 The public key data was written to `" + data.type + ".pub`");
54
- });
55
- pbkey.end();
56
- const prkey = fs.createWriteStream(path_1.default.resolve(__dirname, "../key/" + data.type + ".key"), { encoding: "utf8" });
57
- prkey.write(Buffer.from(privateKey).toString("base64"));
58
- prkey.on("finish", () => {
59
- console.log("🔒 The private key data was written to `" + data.type + ".key`");
60
- });
61
- prkey.end();
62
- const certificate = fs.createWriteStream(path_1.default.resolve(__dirname, "../key/" + data.type + ".cert"), { encoding: "utf8" });
63
- certificate.write(Buffer.from(revocationCertificate).toString("base64"));
64
- certificate.on("finish", () => {
65
- console.log("🔏 The revocation certificate data was written to `" +
66
- data.type +
67
- ".cert`");
68
- });
69
- certificate.end();
70
- return { publicKey, privateKey, revocationCertificate };
68
+ };
69
+ const { privateKey, publicKey, revocationCertificate } = await openpgp.generateKey(options);
70
+ if (!data.type) {
71
+ throw new Error("No key type specified");
71
72
  }
72
- return Promise.reject(new Error("No key type specified"));
73
+ const publicKeyString = typeof publicKey === "string" ? publicKey : publicKey.armor();
74
+ const privateKeyString = typeof privateKey === "string" ? privateKey : privateKey.armor();
75
+ const base = path.basename(data.type);
76
+ await (0, key_output_1.writeKeyOutputs)([
77
+ { name: `${base}.pub`, content: publicKeyString, secret: false },
78
+ { name: `${base}.key`, content: privateKeyString, secret: true },
79
+ { name: `${base}.cert`, content: revocationCertificate, secret: false },
80
+ ]);
81
+ return { publicKey, privateKey, revocationCertificate };
73
82
  }
74
- exports.generate = generate;
75
83
  exports.default = generate;
76
- if (args instanceof Array && args.length) {
77
- const data = {
78
- date: new Date(),
79
- type: args[7],
80
- rsaBits: Number(args[11]),
81
- userIDs: [{ name: args[1], email: args[3] }],
82
- name: args[1],
83
- email: args[3],
84
- passphrase: args[5],
85
- curve: args[9],
86
- keyExpirationTime: Number(args[13]),
87
- format: args[15],
88
- };
89
- generate(data);
90
- }
91
84
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAGnC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC"}
package/dist/lib/index.js CHANGED
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.verify = exports.sign = exports.session = exports.revoke = exports.reformat = exports.generate = exports.encrypt = exports.decrypt = void 0;
27
37
  const decrypt = __importStar(require("./decrypt"));
@@ -0,0 +1,7 @@
1
+ export interface KeyOutputFile {
2
+ name: string;
3
+ content: string;
4
+ secret: boolean;
5
+ }
6
+ export declare function writeKeyOutputs(files: KeyOutputFile[]): Promise<void>;
7
+ //# sourceMappingURL=key-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-output.d.ts","sourceRoot":"","sources":["../../src/lib/key-output.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAE5B,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,OAAO,CAAC;CACjB;AAUD,wBAAsB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3E"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.writeKeyOutputs = writeKeyOutputs;
37
+ const promises_1 = require("fs/promises");
38
+ const path = __importStar(require("path"));
39
+ async function writeKeyOutputs(files) {
40
+ const dir = process.env["CRYPTO_KEY_OUT_DIR"];
41
+ if (!dir)
42
+ return;
43
+ await Promise.all(files.map(async (f) => {
44
+ const target = path.join(dir, path.basename(f.name));
45
+ const mode = f.secret ? 0o600 : 0o644;
46
+ await (0, promises_1.writeFile)(target, f.content, { encoding: "utf8", mode });
47
+ await (0, promises_1.chmod)(target, mode);
48
+ }));
49
+ }
50
+ //# sourceMappingURL=key-output.js.map
@@ -1,4 +1,9 @@
1
1
  import * as types from "../types/types";
2
- export declare const reformat: (data: types.dataReformat) => Promise<object>;
2
+ export interface ArmoredKeyResult {
3
+ publicKey: string;
4
+ privateKey: string;
5
+ revocationCertificate?: string;
6
+ }
7
+ export declare const reformat: (data: types.dataReformat) => Promise<ArmoredKeyResult>;
3
8
  export default reformat;
4
9
  //# sourceMappingURL=reformat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reformat.d.ts","sourceRoot":"","sources":["../../src/lib/reformat.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAkCxC,eAAO,MAAM,QAAQ,SAAgB,MAAM,YAAY,KAAG,QAAQ,MAAM,CA6DvE,CAAC;AAaF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"reformat.d.ts","sourceRoot":"","sources":["../../src/lib/reformat.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAWxC,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAKnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAmBD,eAAO,MAAM,QAAQ,GACnB,MAAM,KAAK,CAAC,YAAY,KACvB,OAAO,CAAC,gBAAgB,CA6B1B,CAAC;AAGF,eAAe,QAAQ,CAAC"}
@@ -15,77 +15,53 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
28
35
  Object.defineProperty(exports, "__esModule", { value: true });
29
36
  exports.reformat = void 0;
30
- const fs = __importStar(require("fs"));
31
- const path_1 = __importDefault(require("path"));
32
- const fs_1 = require("fs");
33
37
  const openpgp = __importStar(require("openpgp"));
34
- const args = process.argv.slice(2);
38
+ const key_output_1 = require("./key-output");
39
+ const keystore_1 = require("../key/keystore");
35
40
  const reformat = async (data) => {
36
- const expiration = data.expiration;
37
- const passphrase = data.passphrase;
38
- const privateKeyBase64 = (0, fs_1.readFileSync)(__dirname + "/../key/rsa.key");
39
- const privateKeyArmored = Buffer.from(privateKeyBase64.toString(), "base64").toString("utf-8");
40
- const privateKey = await openpgp.decryptKey({
41
- privateKey: await openpgp.readPrivateKey({
42
- armoredKey: privateKeyArmored,
43
- }),
44
- passphrase,
45
- });
46
- const reformatKeys = await openpgp.reformatKey({
47
- privateKey: privateKey,
41
+ const { expiration, passphrase } = data;
42
+ const { privateKeyArmored } = await (0, keystore_1.loadKeystore)();
43
+ const privateKey = await (0, keystore_1.unlockPrivateKey)(privateKeyArmored, passphrase);
44
+ const reformatted = await openpgp.reformatKey({
45
+ privateKey,
48
46
  userIDs: [{ name: data.name, email: data.email }],
49
- passphrase: passphrase,
47
+ passphrase,
50
48
  keyExpirationTime: expiration,
51
49
  date: new Date(),
52
50
  format: "armored",
53
51
  });
54
- console.log(reformatKeys);
55
- const reformatPubKey = await fs.createWriteStream(path_1.default.resolve(__dirname, "../key/rsa-reformat.pub"), { encoding: "utf8" });
56
- const reformatPubKeyString = reformatPubKey.toString();
57
- reformatPubKey.write(Buffer.from(reformatPubKeyString).toString("base64"));
58
- reformatPubKey.on("finish", () => {
59
- console.log("✅ Wrote reformat public key data to file");
60
- });
61
- reformatPubKey.end();
62
- const reformatPrivKey = await fs.createWriteStream(path_1.default.resolve(__dirname, "../key/rsa-reformat.key"), { encoding: "utf8" });
63
- const reformatPrivKeyString = reformatPrivKey.toString();
64
- reformatPrivKey.write(Buffer.from(reformatPrivKeyString).toString("base64"));
65
- reformatPrivKey.on("finish", () => {
66
- console.log("✅ Wrote reformat private key data to file");
67
- });
68
- reformatPrivKey.end();
69
- const reformatCert = await fs.createWriteStream(path_1.default.resolve(__dirname, "../key/rsa-reformat.cert"), { encoding: "utf8" });
70
- const reformatCertString = reformatCert.toString();
71
- reformatCert.write(Buffer.from(reformatCertString).toString("base64"));
72
- reformatCert.on("finish", () => {
73
- console.log("✅ Wrote reformat certificate key data to file");
74
- });
75
- reformatCert.end();
76
- return reformatKeys;
52
+ const pubArmored = reformatted.publicKey;
53
+ const privArmored = reformatted.privateKey;
54
+ await (0, key_output_1.writeKeyOutputs)([
55
+ { name: "rsa-reformat.pub", content: pubArmored, secret: false },
56
+ { name: "rsa-reformat.key", content: privArmored, secret: true },
57
+ {
58
+ name: "rsa-reformat.cert",
59
+ content: reformatted.revocationCertificate,
60
+ secret: false,
61
+ },
62
+ ]);
63
+ return reformatted;
77
64
  };
78
65
  exports.reformat = reformat;
79
- if (args instanceof Array && args.length) {
80
- const data = {
81
- date: new Date(),
82
- email: args[1],
83
- expiration: Number(args[3]),
84
- name: args[5],
85
- passphrase: args[7],
86
- publicKey: args[9],
87
- };
88
- (0, exports.reformat)(data);
89
- }
90
66
  exports.default = exports.reformat;
91
67
  //# sourceMappingURL=reformat.js.map
@@ -1,5 +1,5 @@
1
- import * as openpgp from "openpgp";
2
1
  import * as types from "../types/types";
3
- export declare const revoke: (data: types.dataRevoke) => Promise<openpgp.SerializedKeyPair<string>>;
2
+ import type { ArmoredKeyResult } from "./reformat.js";
3
+ export declare const revoke: (data: types.dataRevoke) => Promise<ArmoredKeyResult>;
4
4
  export default revoke;
5
5
  //# sourceMappingURL=revoke.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"revoke.d.ts","sourceRoot":"","sources":["../../src/lib/revoke.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAmCxC,eAAO,MAAM,MAAM,SAAgB,MAAM,UAAU,+CA2ClD,CAAC;AAUF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"revoke.d.ts","sourceRoot":"","sources":["../../src/lib/revoke.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAiBtD,eAAO,MAAM,MAAM,GACjB,MAAM,KAAK,CAAC,UAAU,KACrB,OAAO,CAAC,gBAAgB,CAsB1B,CAAC;AAGF,eAAe,MAAM,CAAC"}
@@ -15,63 +15,46 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
28
35
  Object.defineProperty(exports, "__esModule", { value: true });
29
36
  exports.revoke = void 0;
30
- const fs = __importStar(require("fs"));
31
- const path_1 = __importDefault(require("path"));
32
37
  const openpgp = __importStar(require("openpgp"));
33
- const key = __importStar(require("../key/key"));
34
- const args = process.argv.slice(2);
38
+ const key_output_1 = require("./key-output");
39
+ const keystore_1 = require("../key/keystore");
35
40
  const revoke = async (data) => {
36
- const flag = data.flag;
37
- const passphrase = data.passphrase;
38
- const reason = data.reason;
39
- const privateKeyRead = await openpgp.decryptKey({
40
- privateKey: await openpgp.readPrivateKey({
41
- armoredKey: key.PrivateKey,
42
- }),
43
- passphrase,
44
- });
45
- const revokeKey = await openpgp.revokeKey({
41
+ const { flag, passphrase, reason } = data;
42
+ const { privateKeyArmored } = await (0, keystore_1.loadKeystore)();
43
+ const privateKey = await (0, keystore_1.unlockPrivateKey)(privateKeyArmored, passphrase);
44
+ const revoked = await openpgp.revokeKey({
46
45
  date: new Date(),
47
- key: privateKeyRead,
48
- reasonForRevocation: { flag: flag, string: reason },
49
- });
50
- console.log(revokeKey);
51
- const revokePubKey = await fs.createWriteStream(path_1.default.resolve(__dirname, "../key/rsa-revoke.pub"), { encoding: "utf8" });
52
- const revokePubKeyString = revokePubKey.toString();
53
- revokePubKey.write(Buffer.from(revokePubKeyString).toString("base64"));
54
- revokePubKey.on("finish", () => {
55
- console.log("✅ Wrote revoke public key data to file");
46
+ key: privateKey,
47
+ reasonForRevocation: { flag, string: reason },
48
+ format: "armored",
56
49
  });
57
- revokePubKey.end();
58
- const revokePrivKey = await fs.createWriteStream(path_1.default.resolve(__dirname, "../key/rsa-revoke.key"), { encoding: "utf8" });
59
- const revokePrivateKeyString = revokePrivKey.toString();
60
- revokePrivKey.write(Buffer.from(revokePrivateKeyString).toString("base64"));
61
- revokePrivKey.on("finish", () => {
62
- console.log("✅ Wrote revoke private key data to file");
63
- });
64
- revokePrivKey.end();
65
- return revokeKey;
50
+ const revokedPubArmored = revoked.publicKey;
51
+ const revokedPrivArmored = revoked.privateKey;
52
+ await (0, key_output_1.writeKeyOutputs)([
53
+ { name: "rsa-revoke.pub", content: revokedPubArmored, secret: false },
54
+ { name: "rsa-revoke.key", content: revokedPrivArmored, secret: true },
55
+ ]);
56
+ return revoked;
66
57
  };
67
58
  exports.revoke = revoke;
68
- if (args instanceof Array && args.length) {
69
- const data = {
70
- flag: Number(args[1]),
71
- passphrase: args[3],
72
- reason: args[5],
73
- };
74
- (0, exports.revoke)(data);
75
- }
76
59
  exports.default = exports.revoke;
77
60
  //# sourceMappingURL=revoke.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAuCxC,eAAO,MAAM,OAAO,SACZ,MAAM,cAAc,KACzB,QAAQ,QAAQ,UAAU,CAkC5B,CAAC;AAaF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AAgBxC,eAAO,MAAM,OAAO,GAClB,MAAM,KAAK,CAAC,cAAc,KACzB,OAAO,CAAC,OAAO,CAAC,UAAU,CAiB5B,CAAC;AAGF,eAAe,OAAO,CAAC"}