@noble/curves 2.0.0-beta.1 → 2.0.0-beta.3

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 (96) hide show
  1. package/README.md +443 -276
  2. package/abstract/bls.d.ts +17 -17
  3. package/abstract/bls.d.ts.map +1 -1
  4. package/abstract/bls.js.map +1 -1
  5. package/abstract/curve.d.ts +14 -9
  6. package/abstract/curve.d.ts.map +1 -1
  7. package/abstract/curve.js +9 -3
  8. package/abstract/curve.js.map +1 -1
  9. package/abstract/edwards.d.ts +7 -9
  10. package/abstract/edwards.d.ts.map +1 -1
  11. package/abstract/edwards.js +12 -16
  12. package/abstract/edwards.js.map +1 -1
  13. package/abstract/hash-to-curve.d.ts +32 -31
  14. package/abstract/hash-to-curve.d.ts.map +1 -1
  15. package/abstract/hash-to-curve.js +15 -14
  16. package/abstract/hash-to-curve.js.map +1 -1
  17. package/abstract/modular.d.ts.map +1 -1
  18. package/abstract/modular.js +7 -5
  19. package/abstract/modular.js.map +1 -1
  20. package/abstract/montgomery.d.ts +3 -3
  21. package/abstract/montgomery.d.ts.map +1 -1
  22. package/abstract/montgomery.js +9 -13
  23. package/abstract/montgomery.js.map +1 -1
  24. package/abstract/oprf.d.ts +4 -4
  25. package/abstract/oprf.d.ts.map +1 -1
  26. package/abstract/oprf.js +3 -3
  27. package/abstract/oprf.js.map +1 -1
  28. package/abstract/poseidon.d.ts.map +1 -1
  29. package/abstract/poseidon.js +8 -9
  30. package/abstract/poseidon.js.map +1 -1
  31. package/abstract/utils.d.ts +74 -1
  32. package/abstract/utils.d.ts.map +1 -1
  33. package/abstract/utils.js +67 -17
  34. package/abstract/utils.js.map +1 -1
  35. package/abstract/weierstrass.d.ts +66 -20
  36. package/abstract/weierstrass.d.ts.map +1 -1
  37. package/abstract/weierstrass.js +72 -68
  38. package/abstract/weierstrass.js.map +1 -1
  39. package/bls12-381.d.ts +3 -9
  40. package/bls12-381.d.ts.map +1 -1
  41. package/bls12-381.js +3 -14
  42. package/bls12-381.js.map +1 -1
  43. package/bn254.d.ts +4 -4
  44. package/bn254.d.ts.map +1 -1
  45. package/bn254.js +1 -1
  46. package/bn254.js.map +1 -1
  47. package/ed25519.d.ts +22 -18
  48. package/ed25519.d.ts.map +1 -1
  49. package/ed25519.js +59 -31
  50. package/ed25519.js.map +1 -1
  51. package/ed448.d.ts +17 -8
  52. package/ed448.d.ts.map +1 -1
  53. package/ed448.js +69 -52
  54. package/ed448.js.map +1 -1
  55. package/index.d.ts +1 -0
  56. package/index.js +20 -4
  57. package/index.js.map +1 -1
  58. package/misc.d.ts.map +1 -1
  59. package/misc.js +6 -8
  60. package/misc.js.map +1 -1
  61. package/nist.d.ts +20 -2
  62. package/nist.d.ts.map +1 -1
  63. package/nist.js +30 -10
  64. package/nist.js.map +1 -1
  65. package/package.json +34 -37
  66. package/secp256k1.d.ts +10 -7
  67. package/secp256k1.d.ts.map +1 -1
  68. package/secp256k1.js +15 -16
  69. package/secp256k1.js.map +1 -1
  70. package/src/abstract/bls.ts +22 -22
  71. package/src/abstract/curve.ts +19 -5
  72. package/src/abstract/edwards.ts +20 -23
  73. package/src/abstract/hash-to-curve.ts +50 -51
  74. package/src/abstract/modular.ts +7 -5
  75. package/src/abstract/montgomery.ts +12 -18
  76. package/src/abstract/oprf.ts +6 -6
  77. package/src/abstract/poseidon.ts +6 -8
  78. package/src/abstract/weierstrass.ts +139 -89
  79. package/src/bls12-381.ts +4 -15
  80. package/src/bn254.ts +7 -7
  81. package/src/ed25519.ts +65 -40
  82. package/src/ed448.ts +87 -69
  83. package/src/index.ts +19 -3
  84. package/src/misc.ts +7 -8
  85. package/src/nist.ts +31 -15
  86. package/src/secp256k1.ts +16 -18
  87. package/src/utils.ts +33 -83
  88. package/src/webcrypto.ts +148 -107
  89. package/utils.d.ts +5 -21
  90. package/utils.d.ts.map +1 -1
  91. package/utils.js +31 -74
  92. package/utils.js.map +1 -1
  93. package/webcrypto.d.ts +73 -21
  94. package/webcrypto.d.ts.map +1 -1
  95. package/webcrypto.js +101 -76
  96. package/webcrypto.js.map +1 -1
package/webcrypto.js CHANGED
@@ -14,7 +14,7 @@
14
14
  -> "If format is "raw":" -> "If usages contains a value which is not "verify"
15
15
  then throw a SyntaxError."
16
16
  - SPKI (Simple public-key infrastructure) is public-key-only
17
- - PCKS8 is secret-key-only
17
+ - PKCS8 is secret-key-only
18
18
  - No way to get public key from secret key, but we convert to jwk and then create it manually, since jwk secret key is priv+pub.
19
19
  - Noble supports generating keys for both sign, verify & getSharedSecret,
20
20
  but JWK key includes usage, which forces us to patch it (non-JWK is ok)
@@ -37,66 +37,84 @@ There seems no reasonable way to check for availability, other than actually cal
37
37
  * @module
38
38
  */
39
39
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
40
- import { concatBytes, hexToBytes } from "./utils.js";
41
- function getWebcryptoSubtle() {
42
- const subtle = globalThis?.crypto?.subtle;
43
- if (typeof subtle === 'object' && subtle != null)
44
- return subtle;
40
+ /** Raw type */
41
+ const TYPE_RAW = 'raw';
42
+ const TYPE_JWK = 'jwk';
43
+ const TYPE_SPKI = 'spki';
44
+ const TYPE_PKCS = 'pkcs8';
45
+ // default formats
46
+ const dfsec = TYPE_PKCS;
47
+ const dfpub = TYPE_SPKI;
48
+ function getSubtle() {
49
+ const s = globalThis?.crypto?.subtle;
50
+ if (typeof s === 'object' && s != null)
51
+ return s;
45
52
  throw new Error('crypto.subtle must be defined');
46
53
  }
47
- const _format = 'raw';
54
+ function createKeygenA(randomSecretKey, getPublicKey) {
55
+ return async function keygenA(_seed) {
56
+ const secretKey = await randomSecretKey();
57
+ return { secretKey, publicKey: await getPublicKey(secretKey) };
58
+ };
59
+ }
60
+ function hexToBytesUns(hex) {
61
+ return Uint8Array.from(hex.match(/(\w\w)/g), (b) => Number.parseInt(b, 16));
62
+ }
48
63
  function assertType(type, key) {
49
64
  if (key.type !== type)
50
65
  throw new Error(`invalid key type, expected ${type}`);
51
66
  }
52
- function createKeyUtils(algo, derive, keyLen, pcks8header) {
67
+ function createKeyUtils(algo, derive, keyLen, pkcs8header) {
53
68
  const secUsage = derive ? ['deriveBits'] : ['sign'];
54
69
  const pubUsage = derive ? [] : ['verify'];
55
70
  // Return Uint8Array instead of ArrayBuffer
56
- const arrBufToU8 = (res, format) => format === 'jwk' ? res : new Uint8Array(res);
71
+ const arrBufToU8 = (res, format) => format === TYPE_JWK ? res : new Uint8Array(res);
57
72
  const pub = {
58
- async import(key, format = _format) {
59
- const crypto = getWebcryptoSubtle();
60
- const keyi = await crypto.importKey(format, key, algo, true, pubUsage);
73
+ async import(key, format) {
74
+ const keyi = await getSubtle().importKey(format, key, algo, true, pubUsage);
61
75
  assertType('public', keyi);
62
76
  return keyi;
63
77
  },
64
- async export(key, format = _format) {
78
+ async export(key, format) {
65
79
  assertType('public', key);
66
- const crypto = getWebcryptoSubtle();
67
- const keyi = await crypto.exportKey(format, key);
80
+ const keyi = await getSubtle().exportKey(format, key);
68
81
  return arrBufToU8(keyi, format);
69
82
  },
70
- async convert(key, inFormat = _format, outFormat = _format) {
83
+ async convert(key, inFormat, outFormat) {
71
84
  return pub.export(await pub.import(key, inFormat), outFormat);
72
85
  },
73
86
  };
74
87
  const priv = {
75
- async import(key, format = _format) {
76
- const crypto = getWebcryptoSubtle();
88
+ async import(key, format) {
89
+ const crypto = getSubtle();
77
90
  let keyi;
78
- if (format === 'raw') {
91
+ if (format === TYPE_RAW) {
79
92
  // Chrome, node, bun, deno: works
80
93
  // Safari, Firefox: Data provided to an operation does not meet requirements
81
94
  // This is the best one can do. JWK can't be used: it contains public key component inside.
82
- keyi = await crypto.importKey('pkcs8', concatBytes(hexToBytes(pcks8header), key), algo, true, secUsage);
95
+ const k = key;
96
+ const head = hexToBytesUns(pkcs8header);
97
+ const all = new Uint8Array(head.length + k.length);
98
+ all.set(head, 0);
99
+ all.set(k, head.length);
100
+ keyi = await crypto.importKey(TYPE_PKCS, all, algo, true, secUsage);
83
101
  }
84
102
  else {
85
103
  // Fix import of ECDSA keys into ECDH, other formats are ok
86
- if (derive && format === 'jwk')
104
+ if (derive && format === TYPE_JWK)
87
105
  key = { ...key, key_ops: secUsage };
88
106
  keyi = await crypto.importKey(format, key, algo, true, secUsage);
89
107
  }
90
108
  assertType('private', keyi);
91
109
  return keyi;
92
110
  },
93
- async export(key, format = _format) {
94
- const crypto = getWebcryptoSubtle();
111
+ async export(key, format) {
112
+ const crypto = getSubtle();
95
113
  assertType('private', key);
96
- if (format === 'raw') {
114
+ if (format === TYPE_RAW) {
97
115
  // scure-base base64urlnopad could have been used, but we can't add more deps.
98
- // pcks8 would be even more fragile
99
- const jwk = await crypto.exportKey('jwk', key);
116
+ // pkcs8 would be even more fragile
117
+ const jwk = await crypto.exportKey(TYPE_JWK, key);
100
118
  const base64 = jwk.d.replace(/-/g, '+').replace(/_/g, '/'); // base64url
101
119
  const pad = base64.length % 4 ? '='.repeat(4 - (base64.length % 4)) : ''; // add padding
102
120
  const binary = atob(base64 + pad);
@@ -110,51 +128,52 @@ function createKeyUtils(algo, derive, keyLen, pcks8header) {
110
128
  const keyi = await crypto.exportKey(format, key);
111
129
  return arrBufToU8(keyi, format);
112
130
  },
113
- async convert(key, inFormat = _format, outFormat = _format) {
131
+ async convert(key, inFormat, outFormat) {
114
132
  return priv.export(await priv.import(key, inFormat), outFormat);
115
133
  },
116
134
  };
135
+ async function getPublicKey(secretKey, opts = {}) {
136
+ const fsec = opts.formatSec ?? dfsec;
137
+ const fpub = opts.formatPub ?? dfpub;
138
+ // Export to jwk, remove private scalar and then convert to format
139
+ const jwk = (fsec === TYPE_JWK ? { ...secretKey } : await priv.convert(secretKey, fsec, TYPE_JWK));
140
+ delete jwk.d;
141
+ jwk.key_ops = pubUsage;
142
+ if (fpub === TYPE_JWK)
143
+ return jwk;
144
+ return pub.convert(jwk, TYPE_JWK, fpub);
145
+ }
146
+ async function randomSecretKey(format = dfsec) {
147
+ const keyPair = await getSubtle().generateKey(algo, true, secUsage);
148
+ return priv.export(keyPair.privateKey, format);
149
+ }
117
150
  // Key generation could be slow, so we cache result once.
118
- let available;
151
+ let supported;
119
152
  return {
120
153
  pub: pub,
121
154
  priv: priv,
122
- async isAvailable() {
123
- if (available !== undefined)
124
- return available;
155
+ async isSupported() {
156
+ if (supported !== undefined)
157
+ return supported;
125
158
  try {
126
- const crypto = getWebcryptoSubtle();
159
+ const crypto = getSubtle();
127
160
  const key = await crypto.generateKey(algo, true, secUsage);
128
161
  // Deno is broken and generates key for unsupported curves, but then fails on export
129
- await priv.export(key.privateKey, 'jwk');
162
+ await priv.export(key.privateKey, TYPE_JWK);
130
163
  // Bun fails on derive for x25519, but not x448
131
164
  if (derive) {
132
165
  await crypto.deriveBits({ name: typeof algo === 'string' ? algo : algo.name, public: key.publicKey }, key.privateKey, 8);
133
166
  }
134
- return (available = true);
167
+ return (supported = true);
135
168
  }
136
169
  catch (e) {
137
- return (available = false);
170
+ return (supported = false);
138
171
  }
139
172
  },
140
- // We support different input / output formats since there is no 'spki' secret key
141
- async getPublicKey(secretKey, opts = {}) {
142
- const fpriv = opts.secFormat ?? _format;
143
- const fpub = opts.pubFormat ?? fpriv;
144
- // Export to jwk, remove private scalar and then convert to format
145
- const jwk = (fpriv === 'jwk' ? { ...secretKey } : await priv.convert(secretKey, fpriv, 'jwk'));
146
- delete jwk.d;
147
- jwk.key_ops = pubUsage;
148
- if (fpub === 'jwk')
149
- return jwk;
150
- return pub.convert(jwk, 'jwk', fpub);
151
- },
173
+ getPublicKey,
174
+ keygen: createKeygenA(randomSecretKey, getPublicKey),
152
175
  utils: {
153
- async randomSecretKey(format = _format) {
154
- const crypto = getWebcryptoSubtle();
155
- const keyPair = await crypto.generateKey(algo, true, secUsage);
156
- return priv.export(keyPair.privateKey, format);
157
- },
176
+ randomSecretKey,
158
177
  convertPublicKey: pub.convert,
159
178
  convertSecretKey: priv.convert,
160
179
  },
@@ -163,15 +182,13 @@ function createKeyUtils(algo, derive, keyLen, pcks8header) {
163
182
  function createSigner(keys, algo) {
164
183
  return {
165
184
  async sign(msgHash, secretKey, opts = {}) {
166
- const crypto = getWebcryptoSubtle();
167
- const key = await keys.priv.import(secretKey, opts.format || _format);
168
- const sig = await crypto.sign(algo, key, msgHash);
185
+ const key = await keys.priv.import(secretKey, opts.formatSec ?? dfsec);
186
+ const sig = await getSubtle().sign(algo, key, msgHash);
169
187
  return new Uint8Array(sig);
170
188
  },
171
189
  async verify(signature, msgHash, publicKey, opts = {}) {
172
- const crypto = getWebcryptoSubtle();
173
- const key = await keys.pub.import(publicKey, opts.format || _format);
174
- return await crypto.verify(algo, key, signature, msgHash);
190
+ const key = await keys.pub.import(publicKey, opts.formatPub ?? dfpub);
191
+ return await getSubtle().verify(algo, key, signature, msgHash);
175
192
  },
176
193
  };
177
194
  }
@@ -179,53 +196,61 @@ function createECDH(keys, algo, keyLen) {
179
196
  return {
180
197
  async getSharedSecret(secretKeyA, publicKeyB, opts = {}) {
181
198
  // if (_isCompressed !== true) throw new Error('WebCrypto only supports compressed keys');
182
- const crypto = getWebcryptoSubtle();
183
- const secKey = await keys.priv.import(secretKeyA, opts.format || _format);
184
- const pubKey = await keys.pub.import(publicKeyB, opts.format || _format);
185
- const shared = await crypto.deriveBits({ name: typeof algo === 'string' ? algo : algo.name, public: pubKey }, secKey, 8 * keyLen);
199
+ const secKey = await keys.priv.import(secretKeyA, opts.formatSec || dfsec);
200
+ const pubKey = await keys.pub.import(publicKeyB, opts.formatPub || dfpub);
201
+ const shared = await getSubtle().deriveBits({ name: typeof algo === 'string' ? algo : algo.name, public: pubKey }, secKey, 8 * keyLen);
186
202
  return new Uint8Array(shared);
187
203
  },
188
204
  };
189
205
  }
190
- function wrapNIST(curve, hash, keyLen, pcks8header) {
206
+ function wrapECDSA(curve, hash, keyLen, pkcs8header) {
191
207
  const ECDH_ALGO = { name: 'ECDH', namedCurve: curve };
192
- const keys = createKeyUtils({ name: 'ECDSA', namedCurve: curve }, false, keyLen, pcks8header);
193
- const keysEcdh = createKeyUtils(ECDH_ALGO, true, keyLen, pcks8header);
208
+ const keys = createKeyUtils({ name: 'ECDSA', namedCurve: curve }, false, keyLen, pkcs8header);
209
+ const keysEcdh = createKeyUtils(ECDH_ALGO, true, keyLen, pkcs8header);
194
210
  return Object.freeze({
195
211
  name: curve,
196
- isAvailable: keys.isAvailable,
212
+ isSupported: keys.isSupported,
197
213
  getPublicKey: keys.getPublicKey,
214
+ keygen: createKeygenA(keys.utils.randomSecretKey, keys.getPublicKey),
198
215
  ...createSigner(keys, { name: 'ECDSA', hash: { name: hash } }),
199
216
  ...createECDH(keysEcdh, ECDH_ALGO, keyLen),
200
217
  utils: keys.utils,
201
218
  });
202
219
  }
203
- function wrapEdDSA(curve, keyLen, pcks8header) {
204
- const keys = createKeyUtils(curve, false, keyLen, pcks8header);
220
+ function wrapEdDSA(curve, keyLen, pkcs8header) {
221
+ const keys = createKeyUtils(curve, false, keyLen, pkcs8header);
205
222
  return Object.freeze({
206
223
  name: curve,
207
- isAvailable: keys.isAvailable,
224
+ isSupported: keys.isSupported,
208
225
  getPublicKey: keys.getPublicKey,
226
+ keygen: createKeygenA(keys.utils.randomSecretKey, keys.getPublicKey),
209
227
  ...createSigner(keys, { name: curve }),
210
228
  utils: keys.utils,
211
229
  });
212
230
  }
213
- function wrapMontgomery(curve, keyLen, pcks8header) {
214
- const keys = createKeyUtils(curve, true, keyLen, pcks8header);
231
+ function wrapMontgomery(curve, keyLen, pkcs8header) {
232
+ const keys = createKeyUtils(curve, true, keyLen, pkcs8header);
215
233
  return Object.freeze({
216
234
  name: curve,
217
- isAvailable: keys.isAvailable,
235
+ isSupported: keys.isSupported,
218
236
  getPublicKey: keys.getPublicKey,
237
+ keygen: createKeygenA(keys.utils.randomSecretKey, keys.getPublicKey),
219
238
  ...createECDH(keys, curve, keyLen),
220
239
  utils: keys.utils,
221
240
  });
222
241
  }
223
- export const p256 = /* @__PURE__ */ wrapNIST('P-256', 'SHA-256', 32, '3041020100301306072a8648ce3d020106082a8648ce3d030107042730250201010420');
224
- export const p384 = /* @__PURE__ */ wrapNIST('P-384', 'SHA-384', 48, '304e020100301006072a8648ce3d020106052b81040022043730350201010430');
225
- export const p521 = /* @__PURE__ */ wrapNIST('P-521', 'SHA-512', 66, '3060020100301006072a8648ce3d020106052b81040023044930470201010442');
242
+ /** Friendly wrapper over built-in WebCrypto NIST P-256 (secp256r1). */
243
+ export const p256 = /* @__PURE__ */ wrapECDSA('P-256', 'SHA-256', 32, '3041020100301306072a8648ce3d020106082a8648ce3d030107042730250201010420');
244
+ /** Friendly wrapper over built-in WebCrypto NIST P-384 (secp384r1). */
245
+ export const p384 = /* @__PURE__ */ wrapECDSA('P-384', 'SHA-384', 48, '304e020100301006072a8648ce3d020106052b81040022043730350201010430');
246
+ /** Friendly wrapper over built-in WebCrypto NIST P-521 (secp521r1). */
247
+ export const p521 = /* @__PURE__ */ wrapECDSA('P-521', 'SHA-512', 66, '3060020100301006072a8648ce3d020106052b81040023044930470201010442');
248
+ /** Friendly wrapper over built-in WebCrypto ed25519. */
226
249
  export const ed25519 = /* @__PURE__ */ wrapEdDSA('Ed25519', 32, '302e020100300506032b657004220420');
250
+ /** Friendly wrapper over built-in WebCrypto ed448. */
227
251
  export const ed448 = /* @__PURE__ */ wrapEdDSA('Ed448', 57, '3047020100300506032b6571043b0439');
252
+ /** Friendly wrapper over built-in WebCrypto x25519 (ECDH over Curve25519). */
228
253
  export const x25519 = /* @__PURE__ */ wrapMontgomery('X25519', 32, '302e020100300506032b656e04220420');
254
+ /** Friendly wrapper over built-in WebCrypto x448 (ECDH over Curve448). */
229
255
  export const x448 = /* @__PURE__ */ wrapMontgomery('X448', 56, '3046020100300506032b656f043a0438');
230
- export const supportsWc = (a) => a.isAvailable();
231
256
  //# sourceMappingURL=webcrypto.js.map
package/webcrypto.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"webcrypto.js","sourceRoot":"","sources":["src/webcrypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webcrypto.js","sourceRoot":"","sources":["src/webcrypto.ts"],"names":[],"mappings":"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"}