@enbox/crypto 0.0.2 → 0.0.4

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 (226) hide show
  1. package/README.md +34 -102
  2. package/dist/browser.mjs +6 -10
  3. package/dist/browser.mjs.map +4 -4
  4. package/dist/esm/algorithms/aes-ctr.js +1 -1
  5. package/dist/esm/algorithms/aes-gcm.js +35 -2
  6. package/dist/esm/algorithms/aes-gcm.js.map +1 -1
  7. package/dist/esm/algorithms/aes-kw.js +154 -0
  8. package/dist/esm/algorithms/aes-kw.js.map +1 -0
  9. package/dist/esm/algorithms/ecdsa.js +119 -6
  10. package/dist/esm/algorithms/ecdsa.js.map +1 -1
  11. package/dist/esm/algorithms/eddsa.js +99 -6
  12. package/dist/esm/algorithms/eddsa.js.map +1 -1
  13. package/dist/esm/algorithms/hkdf.js +53 -0
  14. package/dist/esm/algorithms/hkdf.js.map +1 -0
  15. package/dist/esm/algorithms/pbkdf2.js +55 -0
  16. package/dist/esm/algorithms/pbkdf2.js.map +1 -0
  17. package/dist/esm/algorithms/sha-2.js +2 -2
  18. package/dist/esm/algorithms/sha-2.js.map +1 -1
  19. package/dist/esm/algorithms/x25519.js +125 -0
  20. package/dist/esm/algorithms/x25519.js.map +1 -0
  21. package/dist/esm/crypto-error.js +41 -0
  22. package/dist/esm/crypto-error.js.map +1 -0
  23. package/dist/esm/index.js +8 -0
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/jose/jwk.js +52 -26
  26. package/dist/esm/jose/jwk.js.map +1 -1
  27. package/dist/esm/local-key-manager.js +9 -3
  28. package/dist/esm/local-key-manager.js.map +1 -1
  29. package/dist/esm/primitives/aes-ctr.js.map +1 -1
  30. package/dist/esm/primitives/aes-gcm.js.map +1 -1
  31. package/dist/esm/primitives/aes-kw.js +246 -0
  32. package/dist/esm/primitives/aes-kw.js.map +1 -0
  33. package/dist/esm/primitives/concat-kdf.js +1 -1
  34. package/dist/esm/primitives/concat-kdf.js.map +1 -1
  35. package/dist/esm/primitives/ecies-secp256k1.js +79 -0
  36. package/dist/esm/primitives/ecies-secp256k1.js.map +1 -0
  37. package/dist/esm/primitives/ed25519.js +3 -3
  38. package/dist/esm/primitives/ed25519.js.map +1 -1
  39. package/dist/esm/primitives/hkdf.js +79 -0
  40. package/dist/esm/primitives/hkdf.js.map +1 -0
  41. package/dist/esm/primitives/pbkdf2.js +49 -0
  42. package/dist/esm/primitives/pbkdf2.js.map +1 -1
  43. package/dist/esm/primitives/secp256k1.js +4 -4
  44. package/dist/esm/primitives/secp256k1.js.map +1 -1
  45. package/dist/esm/primitives/secp256r1.js +4 -4
  46. package/dist/esm/primitives/secp256r1.js.map +1 -1
  47. package/dist/esm/primitives/x25519.js +10 -17
  48. package/dist/esm/primitives/x25519.js.map +1 -1
  49. package/dist/esm/primitives/xchacha20-poly1305.js +48 -3
  50. package/dist/esm/primitives/xchacha20-poly1305.js.map +1 -1
  51. package/dist/esm/primitives/xchacha20.js +1 -1
  52. package/dist/esm/primitives/xchacha20.js.map +1 -1
  53. package/dist/esm/utils.js +30 -0
  54. package/dist/esm/utils.js.map +1 -1
  55. package/dist/types/algorithms/aes-ctr.d.ts +2 -2
  56. package/dist/types/algorithms/aes-ctr.d.ts.map +1 -1
  57. package/dist/types/algorithms/aes-gcm.d.ts +25 -5
  58. package/dist/types/algorithms/aes-gcm.d.ts.map +1 -1
  59. package/dist/types/algorithms/aes-kw.d.ts +129 -0
  60. package/dist/types/algorithms/aes-kw.d.ts.map +1 -0
  61. package/dist/types/algorithms/ecdsa.d.ts +49 -4
  62. package/dist/types/algorithms/ecdsa.d.ts.map +1 -1
  63. package/dist/types/algorithms/eddsa.d.ts +49 -4
  64. package/dist/types/algorithms/eddsa.d.ts.map +1 -1
  65. package/dist/types/algorithms/hkdf.d.ts +35 -0
  66. package/dist/types/algorithms/hkdf.d.ts.map +1 -0
  67. package/dist/types/algorithms/pbkdf2.d.ts +35 -0
  68. package/dist/types/algorithms/pbkdf2.d.ts.map +1 -0
  69. package/dist/types/algorithms/sha-2.d.ts +2 -2
  70. package/dist/types/algorithms/sha-2.d.ts.map +1 -1
  71. package/dist/types/algorithms/x25519.d.ts +76 -0
  72. package/dist/types/algorithms/x25519.d.ts.map +1 -0
  73. package/dist/types/crypto-error.d.ts +29 -0
  74. package/dist/types/crypto-error.d.ts.map +1 -0
  75. package/dist/types/index.d.ts +8 -0
  76. package/dist/types/index.d.ts.map +1 -1
  77. package/dist/types/jose/jwk.d.ts.map +1 -1
  78. package/dist/types/local-key-manager.d.ts +6 -6
  79. package/dist/types/local-key-manager.d.ts.map +1 -1
  80. package/dist/types/primitives/aes-kw.d.ts +103 -0
  81. package/dist/types/primitives/aes-kw.d.ts.map +1 -0
  82. package/dist/types/primitives/concat-kdf.d.ts +1 -1
  83. package/dist/types/primitives/concat-kdf.d.ts.map +1 -1
  84. package/dist/types/primitives/ecies-secp256k1.d.ts +53 -0
  85. package/dist/types/primitives/ecies-secp256k1.d.ts.map +1 -0
  86. package/dist/types/primitives/hkdf.d.ts +90 -0
  87. package/dist/types/primitives/hkdf.d.ts.map +1 -0
  88. package/dist/types/primitives/pbkdf2.d.ts +58 -0
  89. package/dist/types/primitives/pbkdf2.d.ts.map +1 -1
  90. package/dist/types/primitives/x25519.d.ts +9 -16
  91. package/dist/types/primitives/x25519.d.ts.map +1 -1
  92. package/dist/types/primitives/xchacha20-poly1305.d.ts +47 -0
  93. package/dist/types/primitives/xchacha20-poly1305.d.ts.map +1 -1
  94. package/dist/types/types/cipher.d.ts +1 -1
  95. package/dist/types/types/crypto-api.d.ts +54 -6
  96. package/dist/types/types/crypto-api.d.ts.map +1 -1
  97. package/dist/types/types/key-converter.d.ts +37 -15
  98. package/dist/types/types/key-converter.d.ts.map +1 -1
  99. package/dist/types/types/key-deriver.d.ts +41 -0
  100. package/dist/types/types/key-deriver.d.ts.map +1 -1
  101. package/dist/types/types/key-io.d.ts +37 -0
  102. package/dist/types/types/key-io.d.ts.map +1 -1
  103. package/dist/types/types/params-direct.d.ts +96 -1
  104. package/dist/types/types/params-direct.d.ts.map +1 -1
  105. package/dist/types/types/params-kms.d.ts +55 -0
  106. package/dist/types/types/params-kms.d.ts.map +1 -1
  107. package/dist/types/utils.d.ts +19 -0
  108. package/dist/types/utils.d.ts.map +1 -1
  109. package/dist/utils.js +1 -1
  110. package/dist/utils.js.map +4 -4
  111. package/package.json +29 -45
  112. package/src/algorithms/aes-ctr.ts +2 -2
  113. package/src/algorithms/aes-gcm.ts +41 -4
  114. package/src/algorithms/aes-kw.ts +182 -0
  115. package/src/algorithms/ecdsa.ts +145 -8
  116. package/src/algorithms/eddsa.ts +117 -10
  117. package/src/algorithms/hkdf.ts +54 -0
  118. package/src/algorithms/pbkdf2.ts +57 -0
  119. package/src/algorithms/sha-2.ts +3 -3
  120. package/src/algorithms/x25519.ts +153 -0
  121. package/src/crypto-error.ts +45 -0
  122. package/src/index.ts +8 -0
  123. package/src/jose/jwk.ts +32 -32
  124. package/src/local-key-manager.ts +22 -16
  125. package/src/primitives/aes-ctr.ts +1 -1
  126. package/src/primitives/aes-gcm.ts +5 -5
  127. package/src/primitives/aes-kw.ts +269 -0
  128. package/src/primitives/concat-kdf.ts +4 -2
  129. package/src/primitives/ecies-secp256k1.ts +113 -0
  130. package/src/primitives/ed25519.ts +6 -6
  131. package/src/primitives/hkdf.ts +121 -0
  132. package/src/primitives/pbkdf2.ts +91 -0
  133. package/src/primitives/secp256k1.ts +6 -6
  134. package/src/primitives/secp256r1.ts +6 -6
  135. package/src/primitives/x25519.ts +12 -19
  136. package/src/primitives/xchacha20-poly1305.ts +57 -4
  137. package/src/primitives/xchacha20.ts +1 -1
  138. package/src/types/cipher.ts +1 -1
  139. package/src/types/crypto-api.ts +129 -11
  140. package/src/types/key-converter.ts +33 -7
  141. package/src/types/key-deriver.ts +49 -0
  142. package/src/types/key-io.ts +40 -0
  143. package/src/types/params-direct.ts +118 -1
  144. package/src/types/params-kms.ts +67 -0
  145. package/src/utils.ts +55 -2
  146. package/dist/browser.js +0 -64
  147. package/dist/browser.js.map +0 -7
  148. package/dist/cjs/algorithms/aes-ctr.js +0 -188
  149. package/dist/cjs/algorithms/aes-ctr.js.map +0 -1
  150. package/dist/cjs/algorithms/aes-gcm.js +0 -196
  151. package/dist/cjs/algorithms/aes-gcm.js.map +0 -1
  152. package/dist/cjs/algorithms/crypto-algorithm.js +0 -13
  153. package/dist/cjs/algorithms/crypto-algorithm.js.map +0 -1
  154. package/dist/cjs/algorithms/ecdsa.js +0 -352
  155. package/dist/cjs/algorithms/ecdsa.js.map +0 -1
  156. package/dist/cjs/algorithms/eddsa.js +0 -325
  157. package/dist/cjs/algorithms/eddsa.js.map +0 -1
  158. package/dist/cjs/algorithms/sha-2.js +0 -119
  159. package/dist/cjs/algorithms/sha-2.js.map +0 -1
  160. package/dist/cjs/index.js +0 -41
  161. package/dist/cjs/index.js.map +0 -1
  162. package/dist/cjs/jose/jwe.js +0 -3
  163. package/dist/cjs/jose/jwe.js.map +0 -1
  164. package/dist/cjs/jose/jwk.js +0 -278
  165. package/dist/cjs/jose/jwk.js.map +0 -1
  166. package/dist/cjs/jose/jws.js +0 -3
  167. package/dist/cjs/jose/jws.js.map +0 -1
  168. package/dist/cjs/jose/jwt.js +0 -3
  169. package/dist/cjs/jose/jwt.js.map +0 -1
  170. package/dist/cjs/jose/utils.js +0 -60
  171. package/dist/cjs/jose/utils.js.map +0 -1
  172. package/dist/cjs/local-key-manager.js +0 -521
  173. package/dist/cjs/local-key-manager.js.map +0 -1
  174. package/dist/cjs/package.json +0 -1
  175. package/dist/cjs/primitives/aes-ctr.js +0 -398
  176. package/dist/cjs/primitives/aes-ctr.js.map +0 -1
  177. package/dist/cjs/primitives/aes-gcm.js +0 -425
  178. package/dist/cjs/primitives/aes-gcm.js.map +0 -1
  179. package/dist/cjs/primitives/concat-kdf.js +0 -215
  180. package/dist/cjs/primitives/concat-kdf.js.map +0 -1
  181. package/dist/cjs/primitives/ed25519.js +0 -651
  182. package/dist/cjs/primitives/ed25519.js.map +0 -1
  183. package/dist/cjs/primitives/pbkdf2.js +0 -120
  184. package/dist/cjs/primitives/pbkdf2.js.map +0 -1
  185. package/dist/cjs/primitives/secp256k1.js +0 -958
  186. package/dist/cjs/primitives/secp256k1.js.map +0 -1
  187. package/dist/cjs/primitives/secp256r1.js +0 -959
  188. package/dist/cjs/primitives/secp256r1.js.map +0 -1
  189. package/dist/cjs/primitives/sha256.js +0 -93
  190. package/dist/cjs/primitives/sha256.js.map +0 -1
  191. package/dist/cjs/primitives/x25519.js +0 -498
  192. package/dist/cjs/primitives/x25519.js.map +0 -1
  193. package/dist/cjs/primitives/xchacha20-poly1305.js +0 -340
  194. package/dist/cjs/primitives/xchacha20-poly1305.js.map +0 -1
  195. package/dist/cjs/primitives/xchacha20.js +0 -316
  196. package/dist/cjs/primitives/xchacha20.js.map +0 -1
  197. package/dist/cjs/types/cipher.js +0 -3
  198. package/dist/cjs/types/cipher.js.map +0 -1
  199. package/dist/cjs/types/crypto-api.js +0 -3
  200. package/dist/cjs/types/crypto-api.js.map +0 -1
  201. package/dist/cjs/types/hasher.js +0 -3
  202. package/dist/cjs/types/hasher.js.map +0 -1
  203. package/dist/cjs/types/identifier.js +0 -3
  204. package/dist/cjs/types/identifier.js.map +0 -1
  205. package/dist/cjs/types/key-compressor.js +0 -3
  206. package/dist/cjs/types/key-compressor.js.map +0 -1
  207. package/dist/cjs/types/key-converter.js +0 -3
  208. package/dist/cjs/types/key-converter.js.map +0 -1
  209. package/dist/cjs/types/key-deriver.js +0 -3
  210. package/dist/cjs/types/key-deriver.js.map +0 -1
  211. package/dist/cjs/types/key-generator.js +0 -3
  212. package/dist/cjs/types/key-generator.js.map +0 -1
  213. package/dist/cjs/types/key-io.js +0 -3
  214. package/dist/cjs/types/key-io.js.map +0 -1
  215. package/dist/cjs/types/key-wrapper.js +0 -3
  216. package/dist/cjs/types/key-wrapper.js.map +0 -1
  217. package/dist/cjs/types/params-direct.js +0 -3
  218. package/dist/cjs/types/params-direct.js.map +0 -1
  219. package/dist/cjs/types/params-enclosed.js +0 -3
  220. package/dist/cjs/types/params-enclosed.js.map +0 -1
  221. package/dist/cjs/types/params-kms.js +0 -3
  222. package/dist/cjs/types/params-kms.js.map +0 -1
  223. package/dist/cjs/types/signer.js +0 -3
  224. package/dist/cjs/types/signer.js.map +0 -1
  225. package/dist/cjs/utils.js +0 -173
  226. package/dist/cjs/utils.js.map +0 -1
@@ -1,352 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.EcdsaAlgorithm = void 0;
55
- var secp256k1_js_1 = require("../primitives/secp256k1.js");
56
- var secp256r1_js_1 = require("../primitives/secp256r1.js");
57
- var crypto_algorithm_js_1 = require("./crypto-algorithm.js");
58
- var jwk_js_1 = require("../jose/jwk.js");
59
- /**
60
- * The `EcdsaAlgorithm` class provides a concrete implementation for cryptographic operations using
61
- * the Elliptic Curve Digital Signature Algorithm (ECDSA). This class implements both
62
- * {@link Signer | `Signer`} and { @link AsymmetricKeyGenerator | `AsymmetricKeyGenerator`}
63
- * interfaces, providing private key generation, public key derivation, and creation/verification
64
- * of signatures.
65
- *
66
- * This class is typically accessed through implementations that extend the
67
- * {@link CryptoApi | `CryptoApi`} interface.
68
- */
69
- var EcdsaAlgorithm = /** @class */ (function (_super) {
70
- __extends(EcdsaAlgorithm, _super);
71
- function EcdsaAlgorithm() {
72
- return _super !== null && _super.apply(this, arguments) || this;
73
- }
74
- /**
75
- * Derives the public key in JWK format from a given private key.
76
- *
77
- * @remarks
78
- * This method takes a private key in JWK format and derives its corresponding public key,
79
- * also in JWK format. The process ensures that the derived public key correctly corresponds to
80
- * the given private key.
81
- *
82
- * @example
83
- * ```ts
84
- * const ecdsa = new EcdsaAlgorithm();
85
- * const privateKey = { ... }; // A Jwk object representing a private key
86
- * const publicKey = await ecdsa.computePublicKey({ key: privateKey });
87
- * ```
88
- *
89
- * @param params - The parameters for the public key derivation.
90
- * @param params.key - The private key in JWK format from which to derive the public key.
91
- *
92
- * @returns A Promise that resolves to the derived public key in JWK format.
93
- */
94
- EcdsaAlgorithm.prototype.computePublicKey = function (_a) {
95
- return __awaiter(this, arguments, void 0, function (_b) {
96
- var _c, publicKey, publicKey;
97
- var key = _b.key;
98
- return __generator(this, function (_d) {
99
- switch (_d.label) {
100
- case 0:
101
- if (!(0, jwk_js_1.isEcPrivateJwk)(key))
102
- throw new TypeError('Invalid key provided. Must be an elliptic curve (EC) private key.');
103
- _c = key.crv;
104
- switch (_c) {
105
- case 'secp256k1': return [3 /*break*/, 1];
106
- case 'P-256': return [3 /*break*/, 3];
107
- }
108
- return [3 /*break*/, 5];
109
- case 1: return [4 /*yield*/, secp256k1_js_1.Secp256k1.computePublicKey({ key: key })];
110
- case 2:
111
- publicKey = _d.sent();
112
- publicKey.alg = 'ES256K';
113
- return [2 /*return*/, publicKey];
114
- case 3: return [4 /*yield*/, secp256r1_js_1.Secp256r1.computePublicKey({ key: key })];
115
- case 4:
116
- publicKey = _d.sent();
117
- publicKey.alg = 'ES256';
118
- return [2 /*return*/, publicKey];
119
- case 5:
120
- {
121
- throw new Error("Unsupported curve: ".concat(key.crv));
122
- }
123
- _d.label = 6;
124
- case 6: return [2 /*return*/];
125
- }
126
- });
127
- });
128
- };
129
- /**
130
- * Generates a new private key with the specified algorithm in JSON Web Key (JWK) format.
131
- *
132
- * @example
133
- * ```ts
134
- * const ecdsa = new EcdsaAlgorithm();
135
- * const privateKey = await ecdsa.generateKey({ algorithm: 'ES256K' });
136
- * ```
137
- *
138
- * @param params - The parameters for key generation.
139
- * @param params.algorithm - The algorithm to use for key generation.
140
- *
141
- * @returns A Promise that resolves to the generated private key in JWK format.
142
- */
143
- EcdsaAlgorithm.prototype.generateKey = function (_a) {
144
- return __awaiter(this, arguments, void 0, function (_b) {
145
- var _c, privateKey, privateKey;
146
- var algorithm = _b.algorithm;
147
- return __generator(this, function (_d) {
148
- switch (_d.label) {
149
- case 0:
150
- _c = algorithm;
151
- switch (_c) {
152
- case 'ES256K': return [3 /*break*/, 1];
153
- case 'secp256k1': return [3 /*break*/, 1];
154
- case 'ES256': return [3 /*break*/, 3];
155
- case 'secp256r1': return [3 /*break*/, 3];
156
- }
157
- return [3 /*break*/, 5];
158
- case 1: return [4 /*yield*/, secp256k1_js_1.Secp256k1.generateKey()];
159
- case 2:
160
- privateKey = _d.sent();
161
- privateKey.alg = 'ES256K';
162
- return [2 /*return*/, privateKey];
163
- case 3: return [4 /*yield*/, secp256r1_js_1.Secp256r1.generateKey()];
164
- case 4:
165
- privateKey = _d.sent();
166
- privateKey.alg = 'ES256';
167
- return [2 /*return*/, privateKey];
168
- case 5: return [2 /*return*/];
169
- }
170
- });
171
- });
172
- };
173
- /**
174
- * Retrieves the public key properties from a given private key in JWK format.
175
- *
176
- * @remarks
177
- * This method extracts the public key portion from an ECDSA private key in JWK format. It does
178
- * so by removing the private key property 'd' and making a shallow copy, effectively yielding the
179
- * public key.
180
- *
181
- * Note: This method offers a significant performance advantage, being about 200 times faster
182
- * than `computePublicKey()`. However, it does not mathematically validate the private key, nor
183
- * does it derive the public key from the private key. It simply extracts existing public key
184
- * properties from the private key object. This makes it suitable for scenarios where speed is
185
- * critical and the private key's integrity is already assured.
186
- *
187
- * @example
188
- * ```ts
189
- * const ecdsa = new EcdsaAlgorithm();
190
- * const privateKey = { ... }; // A Jwk object representing a private key
191
- * const publicKey = await ecdsa.getPublicKey({ key: privateKey });
192
- * ```
193
- *
194
- * @param params - The parameters for retrieving the public key properties.
195
- * @param params.key - The private key in JWK format.
196
- *
197
- * @returns A Promise that resolves to the public key in JWK format.
198
- */
199
- EcdsaAlgorithm.prototype.getPublicKey = function (_a) {
200
- return __awaiter(this, arguments, void 0, function (_b) {
201
- var _c, publicKey, publicKey;
202
- var key = _b.key;
203
- return __generator(this, function (_d) {
204
- switch (_d.label) {
205
- case 0:
206
- if (!(0, jwk_js_1.isEcPrivateJwk)(key))
207
- throw new TypeError('Invalid key provided. Must be an elliptic curve (EC) private key.');
208
- _c = key.crv;
209
- switch (_c) {
210
- case 'secp256k1': return [3 /*break*/, 1];
211
- case 'P-256': return [3 /*break*/, 3];
212
- }
213
- return [3 /*break*/, 5];
214
- case 1: return [4 /*yield*/, secp256k1_js_1.Secp256k1.getPublicKey({ key: key })];
215
- case 2:
216
- publicKey = _d.sent();
217
- publicKey.alg = 'ES256K';
218
- return [2 /*return*/, publicKey];
219
- case 3: return [4 /*yield*/, secp256r1_js_1.Secp256r1.getPublicKey({ key: key })];
220
- case 4:
221
- publicKey = _d.sent();
222
- publicKey.alg = 'ES256';
223
- return [2 /*return*/, publicKey];
224
- case 5:
225
- {
226
- throw new Error("Unsupported curve: ".concat(key.crv));
227
- }
228
- _d.label = 6;
229
- case 6: return [2 /*return*/];
230
- }
231
- });
232
- });
233
- };
234
- /**
235
- * Generates an ECDSA signature of given data using a private key.
236
- *
237
- * @remarks
238
- * This method uses the signature algorithm determined by the given `algorithm` to sign the
239
- * provided data.
240
- *
241
- * The signature can later be verified by parties with access to the corresponding
242
- * public key, ensuring that the data has not been tampered with and was indeed signed by the
243
- * holder of the private key.
244
- *
245
- * @example
246
- * ```ts
247
- * const ecdsa = new EcdsaAlgorithm();
248
- * const data = new TextEncoder().encode('Message');
249
- * const privateKey = { ... }; // A Jwk object representing a private key
250
- * const signature = await ecdsa.sign({
251
- * key: privateKey,
252
- * data
253
- * });
254
- * ```
255
- *
256
- * @param params - The parameters for the signing operation.
257
- * @param params.key - The private key to use for signing, represented in JWK format.
258
- * @param params.data - The data to sign.
259
- *
260
- * @returns A Promise resolving to the digital signature as a `Uint8Array`.
261
- */
262
- EcdsaAlgorithm.prototype.sign = function (_a) {
263
- return __awaiter(this, arguments, void 0, function (_b) {
264
- var _c;
265
- var key = _b.key, data = _b.data;
266
- return __generator(this, function (_d) {
267
- switch (_d.label) {
268
- case 0:
269
- if (!(0, jwk_js_1.isEcPrivateJwk)(key))
270
- throw new TypeError('Invalid key provided. Must be an elliptic curve (EC) private key.');
271
- _c = key.crv;
272
- switch (_c) {
273
- case 'secp256k1': return [3 /*break*/, 1];
274
- case 'P-256': return [3 /*break*/, 3];
275
- }
276
- return [3 /*break*/, 5];
277
- case 1: return [4 /*yield*/, secp256k1_js_1.Secp256k1.sign({ key: key, data: data })];
278
- case 2: return [2 /*return*/, _d.sent()];
279
- case 3: return [4 /*yield*/, secp256r1_js_1.Secp256r1.sign({ key: key, data: data })];
280
- case 4: return [2 /*return*/, _d.sent()];
281
- case 5:
282
- {
283
- throw new Error("Unsupported curve: ".concat(key.crv));
284
- }
285
- _d.label = 6;
286
- case 6: return [2 /*return*/];
287
- }
288
- });
289
- });
290
- };
291
- /**
292
- * Verifies an ECDSA signature associated with the provided data using the provided key.
293
- *
294
- * @remarks
295
- * This method uses the signature algorithm determined by the `crv` property of the provided key
296
- * to check the validity of a digital signature against the original data. It confirms whether the
297
- * signature was created by the holder of the corresponding private key and that the data has not
298
- * been tampered with.
299
- *s
300
- * @example
301
- * ```ts
302
- * const ecdsa = new EcdsaAlgorithm();
303
- * const publicKey = { ... }; // Public key in JWK format corresponding to the private key that signed the data
304
- * const signature = new Uint8Array([...]); // Signature to verify
305
- * const data = new TextEncoder().encode('Message');
306
- * const isValid = await ecdsa.verify({
307
- * key: publicKey,
308
- * signature,
309
- * data
310
- * });
311
- * ```
312
- *
313
- * @param params - The parameters for the verification operation.
314
- * @param params.key - The key to use for verification.
315
- * @param params.signature - The signature to verify.
316
- * @param params.data - The data to verify.
317
- *
318
- * @returns A Promise resolving to a boolean indicating whether the signature is valid.
319
- */
320
- EcdsaAlgorithm.prototype.verify = function (_a) {
321
- return __awaiter(this, arguments, void 0, function (_b) {
322
- var _c;
323
- var key = _b.key, signature = _b.signature, data = _b.data;
324
- return __generator(this, function (_d) {
325
- switch (_d.label) {
326
- case 0:
327
- if (!(0, jwk_js_1.isEcPublicJwk)(key))
328
- throw new TypeError('Invalid key provided. Must be an elliptic curve (EC) public key.');
329
- _c = key.crv;
330
- switch (_c) {
331
- case 'secp256k1': return [3 /*break*/, 1];
332
- case 'P-256': return [3 /*break*/, 3];
333
- }
334
- return [3 /*break*/, 5];
335
- case 1: return [4 /*yield*/, secp256k1_js_1.Secp256k1.verify({ key: key, signature: signature, data: data })];
336
- case 2: return [2 /*return*/, _d.sent()];
337
- case 3: return [4 /*yield*/, secp256r1_js_1.Secp256r1.verify({ key: key, signature: signature, data: data })];
338
- case 4: return [2 /*return*/, _d.sent()];
339
- case 5:
340
- {
341
- throw new Error("Unsupported curve: ".concat(key.crv));
342
- }
343
- _d.label = 6;
344
- case 6: return [2 /*return*/];
345
- }
346
- });
347
- });
348
- };
349
- return EcdsaAlgorithm;
350
- }(crypto_algorithm_js_1.CryptoAlgorithm));
351
- exports.EcdsaAlgorithm = EcdsaAlgorithm;
352
- //# sourceMappingURL=ecdsa.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ecdsa.js","sourceRoot":"","sources":["../../../src/algorithms/ecdsa.ts"],"names":[],"mappings":"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"}