@noble/curves 1.0.0 → 1.2.0

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 (103) hide show
  1. package/README.md +399 -247
  2. package/_shortw_utils.d.ts +1 -1
  3. package/abstract/bls.d.ts.map +1 -1
  4. package/abstract/bls.js +2 -2
  5. package/abstract/bls.js.map +1 -1
  6. package/abstract/edwards.d.ts +7 -2
  7. package/abstract/edwards.d.ts.map +1 -1
  8. package/abstract/edwards.js +7 -2
  9. package/abstract/edwards.js.map +1 -1
  10. package/abstract/hash-to-curve.d.ts +1 -1
  11. package/abstract/hash-to-curve.d.ts.map +1 -1
  12. package/abstract/hash-to-curve.js +14 -8
  13. package/abstract/hash-to-curve.js.map +1 -1
  14. package/abstract/modular.d.ts +55 -13
  15. package/abstract/modular.d.ts.map +1 -1
  16. package/abstract/modular.js +82 -22
  17. package/abstract/modular.js.map +1 -1
  18. package/abstract/poseidon.d.ts.map +1 -1
  19. package/abstract/poseidon.js +39 -41
  20. package/abstract/poseidon.js.map +1 -1
  21. package/abstract/utils.d.ts +43 -5
  22. package/abstract/utils.d.ts.map +1 -1
  23. package/abstract/utils.js +70 -26
  24. package/abstract/utils.js.map +1 -1
  25. package/abstract/weierstrass.d.ts +18 -2
  26. package/abstract/weierstrass.d.ts.map +1 -1
  27. package/abstract/weierstrass.js +40 -22
  28. package/abstract/weierstrass.js.map +1 -1
  29. package/bls12-381.d.ts.map +1 -1
  30. package/bls12-381.js +11 -11
  31. package/bls12-381.js.map +1 -1
  32. package/ed25519.d.ts +33 -20
  33. package/ed25519.d.ts.map +1 -1
  34. package/ed25519.js +60 -38
  35. package/ed25519.js.map +1 -1
  36. package/ed448.d.ts +53 -4
  37. package/ed448.d.ts.map +1 -1
  38. package/ed448.js +217 -38
  39. package/ed448.js.map +1 -1
  40. package/esm/abstract/bls.js +3 -3
  41. package/esm/abstract/bls.js.map +1 -1
  42. package/esm/abstract/edwards.js +7 -2
  43. package/esm/abstract/edwards.js.map +1 -1
  44. package/esm/abstract/hash-to-curve.js +14 -8
  45. package/esm/abstract/hash-to-curve.js.map +1 -1
  46. package/esm/abstract/modular.js +78 -21
  47. package/esm/abstract/modular.js.map +1 -1
  48. package/esm/abstract/poseidon.js +39 -41
  49. package/esm/abstract/poseidon.js.map +1 -1
  50. package/esm/abstract/utils.js +70 -26
  51. package/esm/abstract/utils.js.map +1 -1
  52. package/esm/abstract/weierstrass.js +40 -22
  53. package/esm/abstract/weierstrass.js.map +1 -1
  54. package/esm/bls12-381.js +11 -11
  55. package/esm/bls12-381.js.map +1 -1
  56. package/esm/ed25519.js +60 -38
  57. package/esm/ed25519.js.map +1 -1
  58. package/esm/ed448.js +217 -38
  59. package/esm/ed448.js.map +1 -1
  60. package/esm/jubjub.js +1 -1
  61. package/esm/jubjub.js.map +1 -1
  62. package/esm/p256.js +10 -9
  63. package/esm/p256.js.map +1 -1
  64. package/esm/p384.js +7 -6
  65. package/esm/p384.js.map +1 -1
  66. package/esm/p521.js +7 -6
  67. package/esm/p521.js.map +1 -1
  68. package/esm/package.json +1 -4
  69. package/esm/secp256k1.js +11 -9
  70. package/esm/secp256k1.js.map +1 -1
  71. package/jubjub.js.map +1 -1
  72. package/p256.d.ts +4 -5
  73. package/p256.d.ts.map +1 -1
  74. package/p256.js +10 -10
  75. package/p256.js.map +1 -1
  76. package/p384.d.ts +4 -5
  77. package/p384.d.ts.map +1 -1
  78. package/p384.js +7 -7
  79. package/p384.js.map +1 -1
  80. package/p521.d.ts +4 -5
  81. package/p521.d.ts.map +1 -1
  82. package/p521.js +7 -7
  83. package/p521.js.map +1 -1
  84. package/package.json +7 -9
  85. package/secp256k1.d.ts +5 -5
  86. package/secp256k1.d.ts.map +1 -1
  87. package/secp256k1.js +11 -10
  88. package/secp256k1.js.map +1 -1
  89. package/src/abstract/bls.ts +3 -3
  90. package/src/abstract/edwards.ts +13 -4
  91. package/src/abstract/hash-to-curve.ts +14 -8
  92. package/src/abstract/modular.ts +84 -27
  93. package/src/abstract/poseidon.ts +39 -40
  94. package/src/abstract/utils.ts +77 -33
  95. package/src/abstract/weierstrass.ts +51 -29
  96. package/src/bls12-381.ts +12 -17
  97. package/src/ed25519.ts +105 -75
  98. package/src/ed448.ts +286 -64
  99. package/src/jubjub.ts +1 -1
  100. package/src/p256.ts +13 -14
  101. package/src/p384.ts +12 -13
  102. package/src/p521.ts +12 -13
  103. package/src/secp256k1.ts +60 -55
package/src/secp256k1.ts CHANGED
@@ -5,7 +5,7 @@ import { Field, mod, pow2 } from './abstract/modular.js';
5
5
  import { ProjPointType as PointType, mapToCurveSimpleSWU } from './abstract/weierstrass.js';
6
6
  import type { Hex, PrivKey } from './abstract/utils.js';
7
7
  import { bytesToNumberBE, concatBytes, ensureBytes, numberToBytesBE } from './abstract/utils.js';
8
- import * as htf from './abstract/hash-to-curve.js';
8
+ import { createHasher, isogenyMap } from './abstract/hash-to-curve.js';
9
9
  import { createCurve } from './_shortw_utils.js';
10
10
 
11
11
  const secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');
@@ -199,7 +199,7 @@ function schnorrVerify(signature: Hex, message: Hex, publicKey: Hex): boolean {
199
199
  }
200
200
  }
201
201
 
202
- export const schnorr = {
202
+ export const schnorr = /* @__PURE__ */ (() => ({
203
203
  getPublicKey: schnorrGetPublicKey,
204
204
  sign: schnorrSign,
205
205
  verify: schnorrVerify,
@@ -212,58 +212,63 @@ export const schnorr = {
212
212
  taggedHash,
213
213
  mod,
214
214
  },
215
- };
215
+ }))();
216
216
 
217
- const isoMap = htf.isogenyMap(
218
- Fp,
219
- [
220
- // xNum
217
+ const isoMap = /* @__PURE__ */ (() =>
218
+ isogenyMap(
219
+ Fp,
221
220
  [
222
- '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',
223
- '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',
224
- '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',
225
- '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',
226
- ],
227
- // xDen
228
- [
229
- '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',
230
- '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',
231
- '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
232
- ],
233
- // yNum
234
- [
235
- '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',
236
- '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',
237
- '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',
238
- '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',
239
- ],
240
- // yDen
241
- [
242
- '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',
243
- '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',
244
- '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',
245
- '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
246
- ],
247
- ].map((i) => i.map((j) => BigInt(j))) as [bigint[], bigint[], bigint[], bigint[]]
248
- );
249
- const mapSWU = mapToCurveSimpleSWU(Fp, {
250
- A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),
251
- B: BigInt('1771'),
252
- Z: Fp.create(BigInt('-11')),
253
- });
254
- export const { hashToCurve, encodeToCurve } = htf.createHasher(
255
- secp256k1.ProjectivePoint,
256
- (scalars: bigint[]) => {
257
- const { x, y } = mapSWU(Fp.create(scalars[0]));
258
- return isoMap(x, y);
259
- },
260
- {
261
- DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',
262
- encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',
263
- p: Fp.ORDER,
264
- m: 1,
265
- k: 128,
266
- expand: 'xmd',
267
- hash: sha256,
268
- }
269
- );
221
+ // xNum
222
+ [
223
+ '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',
224
+ '0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581',
225
+ '0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262',
226
+ '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c',
227
+ ],
228
+ // xDen
229
+ [
230
+ '0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b',
231
+ '0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14',
232
+ '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
233
+ ],
234
+ // yNum
235
+ [
236
+ '0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c',
237
+ '0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3',
238
+ '0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931',
239
+ '0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84',
240
+ ],
241
+ // yDen
242
+ [
243
+ '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b',
244
+ '0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573',
245
+ '0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f',
246
+ '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
247
+ ],
248
+ ].map((i) => i.map((j) => BigInt(j))) as [bigint[], bigint[], bigint[], bigint[]]
249
+ ))();
250
+ const mapSWU = /* @__PURE__ */ (() =>
251
+ mapToCurveSimpleSWU(Fp, {
252
+ A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),
253
+ B: BigInt('1771'),
254
+ Z: Fp.create(BigInt('-11')),
255
+ }))();
256
+ const htf = /* @__PURE__ */ (() =>
257
+ createHasher(
258
+ secp256k1.ProjectivePoint,
259
+ (scalars: bigint[]) => {
260
+ const { x, y } = mapSWU(Fp.create(scalars[0]));
261
+ return isoMap(x, y);
262
+ },
263
+ {
264
+ DST: 'secp256k1_XMD:SHA-256_SSWU_RO_',
265
+ encodeDST: 'secp256k1_XMD:SHA-256_SSWU_NU_',
266
+ p: Fp.ORDER,
267
+ m: 1,
268
+ k: 128,
269
+ expand: 'xmd',
270
+ hash: sha256,
271
+ }
272
+ ))();
273
+ export const hashToCurve = /* @__PURE__ */ (() => htf.hashToCurve)();
274
+ export const encodeToCurve = /* @__PURE__ */ (() => htf.encodeToCurve)();