@noble/curves 1.8.0 → 1.8.2

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 (191) hide show
  1. package/README.md +282 -419
  2. package/_shortw_utils.d.ts +2 -2
  3. package/_shortw_utils.d.ts.map +1 -1
  4. package/_shortw_utils.js +2 -2
  5. package/_shortw_utils.js.map +1 -1
  6. package/abstract/bls.d.ts +5 -5
  7. package/abstract/bls.d.ts.map +1 -1
  8. package/abstract/bls.js +14 -15
  9. package/abstract/bls.js.map +1 -1
  10. package/abstract/curve.d.ts +10 -2
  11. package/abstract/curve.d.ts.map +1 -1
  12. package/abstract/curve.js +81 -78
  13. package/abstract/curve.js.map +1 -1
  14. package/abstract/edwards.d.ts +2 -2
  15. package/abstract/edwards.d.ts.map +1 -1
  16. package/abstract/edwards.js +55 -69
  17. package/abstract/edwards.js.map +1 -1
  18. package/abstract/hash-to-curve.d.ts +5 -4
  19. package/abstract/hash-to-curve.d.ts.map +1 -1
  20. package/abstract/hash-to-curve.js +20 -18
  21. package/abstract/hash-to-curve.js.map +1 -1
  22. package/abstract/modular.d.ts.map +1 -1
  23. package/abstract/modular.js +9 -9
  24. package/abstract/montgomery.js +12 -12
  25. package/abstract/poseidon.d.ts +1 -1
  26. package/abstract/poseidon.d.ts.map +1 -1
  27. package/abstract/poseidon.js +3 -3
  28. package/abstract/poseidon.js.map +1 -1
  29. package/abstract/tower.d.ts +2 -2
  30. package/abstract/tower.js +13 -13
  31. package/abstract/utils.d.ts +4 -2
  32. package/abstract/utils.d.ts.map +1 -1
  33. package/abstract/utils.js +25 -14
  34. package/abstract/utils.js.map +1 -1
  35. package/abstract/weierstrass.d.ts +19 -6
  36. package/abstract/weierstrass.d.ts.map +1 -1
  37. package/abstract/weierstrass.js +97 -80
  38. package/abstract/weierstrass.js.map +1 -1
  39. package/bls12-381.d.ts +1 -1
  40. package/bls12-381.d.ts.map +1 -1
  41. package/bls12-381.js +48 -49
  42. package/bls12-381.js.map +1 -1
  43. package/bn254.d.ts +2 -2
  44. package/bn254.d.ts.map +1 -1
  45. package/bn254.js +29 -30
  46. package/bn254.js.map +1 -1
  47. package/ed25519.d.ts +8 -6
  48. package/ed25519.d.ts.map +1 -1
  49. package/ed25519.js +65 -66
  50. package/ed25519.js.map +1 -1
  51. package/ed448.d.ts +6 -6
  52. package/ed448.d.ts.map +1 -1
  53. package/ed448.js +50 -52
  54. package/ed448.js.map +1 -1
  55. package/esm/_shortw_utils.d.ts +2 -2
  56. package/esm/_shortw_utils.d.ts.map +1 -1
  57. package/esm/_shortw_utils.js +1 -1
  58. package/esm/_shortw_utils.js.map +1 -1
  59. package/esm/abstract/bls.d.ts +5 -5
  60. package/esm/abstract/bls.d.ts.map +1 -1
  61. package/esm/abstract/bls.js +5 -6
  62. package/esm/abstract/bls.js.map +1 -1
  63. package/esm/abstract/curve.d.ts +10 -2
  64. package/esm/abstract/curve.d.ts.map +1 -1
  65. package/esm/abstract/curve.js +77 -74
  66. package/esm/abstract/curve.js.map +1 -1
  67. package/esm/abstract/edwards.d.ts +2 -2
  68. package/esm/abstract/edwards.d.ts.map +1 -1
  69. package/esm/abstract/edwards.js +36 -50
  70. package/esm/abstract/edwards.js.map +1 -1
  71. package/esm/abstract/hash-to-curve.d.ts +5 -4
  72. package/esm/abstract/hash-to-curve.d.ts.map +1 -1
  73. package/esm/abstract/hash-to-curve.js +4 -2
  74. package/esm/abstract/hash-to-curve.js.map +1 -1
  75. package/esm/abstract/modular.d.ts.map +1 -1
  76. package/esm/abstract/modular.js +1 -1
  77. package/esm/abstract/montgomery.js +2 -2
  78. package/esm/abstract/poseidon.d.ts +1 -1
  79. package/esm/abstract/poseidon.d.ts.map +1 -1
  80. package/esm/abstract/poseidon.js +1 -1
  81. package/esm/abstract/poseidon.js.map +1 -1
  82. package/esm/abstract/tower.d.ts +2 -2
  83. package/esm/abstract/tower.js +5 -5
  84. package/esm/abstract/utils.d.ts +4 -2
  85. package/esm/abstract/utils.d.ts.map +1 -1
  86. package/esm/abstract/utils.js +24 -13
  87. package/esm/abstract/utils.js.map +1 -1
  88. package/esm/abstract/weierstrass.d.ts +19 -6
  89. package/esm/abstract/weierstrass.d.ts.map +1 -1
  90. package/esm/abstract/weierstrass.js +77 -60
  91. package/esm/abstract/weierstrass.js.map +1 -1
  92. package/esm/bls12-381.d.ts +1 -1
  93. package/esm/bls12-381.d.ts.map +1 -1
  94. package/esm/bls12-381.js +16 -17
  95. package/esm/bls12-381.js.map +1 -1
  96. package/esm/bn254.d.ts +2 -2
  97. package/esm/bn254.d.ts.map +1 -1
  98. package/esm/bn254.js +7 -8
  99. package/esm/bn254.js.map +1 -1
  100. package/esm/ed25519.d.ts +8 -6
  101. package/esm/ed25519.d.ts.map +1 -1
  102. package/esm/ed25519.js +20 -21
  103. package/esm/ed25519.js.map +1 -1
  104. package/esm/ed448.d.ts +6 -6
  105. package/esm/ed448.d.ts.map +1 -1
  106. package/esm/ed448.js +13 -15
  107. package/esm/ed448.js.map +1 -1
  108. package/esm/index.js +13 -1
  109. package/esm/index.js.map +1 -1
  110. package/esm/jubjub.d.ts +1 -4
  111. package/esm/jubjub.d.ts.map +1 -1
  112. package/esm/jubjub.js +1 -60
  113. package/esm/jubjub.js.map +1 -1
  114. package/esm/misc.d.ts +15 -0
  115. package/esm/misc.d.ts.map +1 -0
  116. package/esm/misc.js +101 -0
  117. package/esm/misc.js.map +1 -0
  118. package/esm/p256.d.ts +8 -5
  119. package/esm/p256.d.ts.map +1 -1
  120. package/esm/p256.js +13 -12
  121. package/esm/p256.js.map +1 -1
  122. package/esm/p384.d.ts +8 -5
  123. package/esm/p384.d.ts.map +1 -1
  124. package/esm/p384.js +14 -15
  125. package/esm/p384.js.map +1 -1
  126. package/esm/p521.d.ts +6 -5
  127. package/esm/p521.d.ts.map +1 -1
  128. package/esm/p521.js +19 -28
  129. package/esm/p521.js.map +1 -1
  130. package/esm/pasta.d.ts +1 -7
  131. package/esm/pasta.d.ts.map +1 -1
  132. package/esm/pasta.js +1 -33
  133. package/esm/pasta.js.map +1 -1
  134. package/esm/secp256k1.d.ts +15 -10
  135. package/esm/secp256k1.d.ts.map +1 -1
  136. package/esm/secp256k1.js +18 -14
  137. package/esm/secp256k1.js.map +1 -1
  138. package/index.js +13 -1
  139. package/index.js.map +1 -1
  140. package/jubjub.d.ts +1 -4
  141. package/jubjub.d.ts.map +1 -1
  142. package/jubjub.js +5 -63
  143. package/jubjub.js.map +1 -1
  144. package/misc.d.ts +15 -0
  145. package/misc.d.ts.map +1 -0
  146. package/misc.js +106 -0
  147. package/misc.js.map +1 -0
  148. package/p256.d.ts +8 -5
  149. package/p256.d.ts.map +1 -1
  150. package/p256.js +19 -18
  151. package/p256.js.map +1 -1
  152. package/p384.d.ts +8 -5
  153. package/p384.d.ts.map +1 -1
  154. package/p384.js +19 -20
  155. package/p384.js.map +1 -1
  156. package/p521.d.ts +6 -5
  157. package/p521.d.ts.map +1 -1
  158. package/p521.js +23 -32
  159. package/p521.js.map +1 -1
  160. package/package.json +21 -16
  161. package/pasta.d.ts +1 -7
  162. package/pasta.d.ts.map +1 -1
  163. package/pasta.js +4 -34
  164. package/pasta.js.map +1 -1
  165. package/secp256k1.d.ts +15 -10
  166. package/secp256k1.d.ts.map +1 -1
  167. package/secp256k1.js +57 -53
  168. package/secp256k1.js.map +1 -1
  169. package/src/_shortw_utils.ts +2 -2
  170. package/src/abstract/bls.ts +14 -12
  171. package/src/abstract/curve.ts +88 -79
  172. package/src/abstract/edwards.ts +52 -59
  173. package/src/abstract/hash-to-curve.ts +7 -5
  174. package/src/abstract/modular.ts +1 -1
  175. package/src/abstract/montgomery.ts +2 -2
  176. package/src/abstract/poseidon.ts +1 -1
  177. package/src/abstract/tower.ts +6 -6
  178. package/src/abstract/utils.ts +26 -15
  179. package/src/abstract/weierstrass.ts +99 -77
  180. package/src/bls12-381.ts +30 -28
  181. package/src/bn254.ts +11 -13
  182. package/src/ed25519.ts +27 -26
  183. package/src/ed448.ts +21 -20
  184. package/src/index.ts +13 -1
  185. package/src/jubjub.ts +5 -63
  186. package/src/misc.ts +117 -0
  187. package/src/p256.ts +13 -12
  188. package/src/p384.ts +18 -15
  189. package/src/p521.ts +27 -32
  190. package/src/pasta.ts +1 -39
  191. package/src/secp256k1.ts +20 -16
package/secp256k1.js CHANGED
@@ -14,13 +14,13 @@ exports.encodeToCurve = exports.hashToCurve = exports.schnorr = exports.secp256k
14
14
  * @module
15
15
  */
16
16
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
17
- const sha256_1 = require("@noble/hashes/sha256");
17
+ const sha2_1 = require("@noble/hashes/sha2");
18
18
  const utils_1 = require("@noble/hashes/utils");
19
- const _shortw_utils_js_1 = require("./_shortw_utils.js");
20
- const hash_to_curve_js_1 = require("./abstract/hash-to-curve.js");
21
- const modular_js_1 = require("./abstract/modular.js");
22
- const utils_js_1 = require("./abstract/utils.js");
23
- const weierstrass_js_1 = require("./abstract/weierstrass.js");
19
+ const _shortw_utils_ts_1 = require("./_shortw_utils.js");
20
+ const hash_to_curve_ts_1 = require("./abstract/hash-to-curve.js");
21
+ const modular_ts_1 = require("./abstract/modular.js");
22
+ const utils_ts_1 = require("./abstract/utils.js");
23
+ const weierstrass_ts_1 = require("./abstract/weierstrass.js");
24
24
  const secp256k1P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f');
25
25
  const secp256k1N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');
26
26
  const _1n = BigInt(1);
@@ -38,41 +38,43 @@ function sqrtMod(y) {
38
38
  const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88);
39
39
  const b2 = (y * y * y) % P; // x^3, 11
40
40
  const b3 = (b2 * b2 * y) % P; // x^7
41
- const b6 = ((0, modular_js_1.pow2)(b3, _3n, P) * b3) % P;
42
- const b9 = ((0, modular_js_1.pow2)(b6, _3n, P) * b3) % P;
43
- const b11 = ((0, modular_js_1.pow2)(b9, _2n, P) * b2) % P;
44
- const b22 = ((0, modular_js_1.pow2)(b11, _11n, P) * b11) % P;
45
- const b44 = ((0, modular_js_1.pow2)(b22, _22n, P) * b22) % P;
46
- const b88 = ((0, modular_js_1.pow2)(b44, _44n, P) * b44) % P;
47
- const b176 = ((0, modular_js_1.pow2)(b88, _88n, P) * b88) % P;
48
- const b220 = ((0, modular_js_1.pow2)(b176, _44n, P) * b44) % P;
49
- const b223 = ((0, modular_js_1.pow2)(b220, _3n, P) * b3) % P;
50
- const t1 = ((0, modular_js_1.pow2)(b223, _23n, P) * b22) % P;
51
- const t2 = ((0, modular_js_1.pow2)(t1, _6n, P) * b2) % P;
52
- const root = (0, modular_js_1.pow2)(t2, _2n, P);
41
+ const b6 = ((0, modular_ts_1.pow2)(b3, _3n, P) * b3) % P;
42
+ const b9 = ((0, modular_ts_1.pow2)(b6, _3n, P) * b3) % P;
43
+ const b11 = ((0, modular_ts_1.pow2)(b9, _2n, P) * b2) % P;
44
+ const b22 = ((0, modular_ts_1.pow2)(b11, _11n, P) * b11) % P;
45
+ const b44 = ((0, modular_ts_1.pow2)(b22, _22n, P) * b22) % P;
46
+ const b88 = ((0, modular_ts_1.pow2)(b44, _44n, P) * b44) % P;
47
+ const b176 = ((0, modular_ts_1.pow2)(b88, _88n, P) * b88) % P;
48
+ const b220 = ((0, modular_ts_1.pow2)(b176, _44n, P) * b44) % P;
49
+ const b223 = ((0, modular_ts_1.pow2)(b220, _3n, P) * b3) % P;
50
+ const t1 = ((0, modular_ts_1.pow2)(b223, _23n, P) * b22) % P;
51
+ const t2 = ((0, modular_ts_1.pow2)(t1, _6n, P) * b2) % P;
52
+ const root = (0, modular_ts_1.pow2)(t2, _2n, P);
53
53
  if (!Fpk1.eql(Fpk1.sqr(root), y))
54
54
  throw new Error('Cannot find square root');
55
55
  return root;
56
56
  }
57
- const Fpk1 = (0, modular_js_1.Field)(secp256k1P, undefined, undefined, { sqrt: sqrtMod });
57
+ const Fpk1 = (0, modular_ts_1.Field)(secp256k1P, undefined, undefined, { sqrt: sqrtMod });
58
58
  /**
59
- * secp256k1 short weierstrass curve and ECDSA signatures over it.
59
+ * secp256k1 curve, ECDSA and ECDH methods.
60
+ *
61
+ * Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`
60
62
  *
61
63
  * @example
64
+ * ```js
62
65
  * import { secp256k1 } from '@noble/curves/secp256k1';
63
- *
64
66
  * const priv = secp256k1.utils.randomPrivateKey();
65
67
  * const pub = secp256k1.getPublicKey(priv);
66
68
  * const msg = new Uint8Array(32).fill(1); // message hash (not message) in ecdsa
67
69
  * const sig = secp256k1.sign(msg, priv); // `{prehash: true}` option is available
68
70
  * const isValid = secp256k1.verify(sig, msg, pub) === true;
71
+ * ```
69
72
  */
70
- exports.secp256k1 = (0, _shortw_utils_js_1.createCurve)({
71
- a: BigInt(0), // equation params: a, b
73
+ exports.secp256k1 = (0, _shortw_utils_ts_1.createCurve)({
74
+ a: BigInt(0),
72
75
  b: BigInt(7),
73
- Fp: Fpk1, // Field's prime: 2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n
74
- n: secp256k1N, // Curve order, total count of valid points in the field
75
- // Base point (x, y) aka generator point
76
+ Fp: Fpk1,
77
+ n: secp256k1N,
76
78
  Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),
77
79
  Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),
78
80
  h: BigInt(1), // Cofactor
@@ -89,8 +91,8 @@ exports.secp256k1 = (0, _shortw_utils_js_1.createCurve)({
89
91
  const POW_2_128 = BigInt('0x100000000000000000000000000000000'); // (2n**128n).toString(16)
90
92
  const c1 = divNearest(b2 * k, n);
91
93
  const c2 = divNearest(-b1 * k, n);
92
- let k1 = (0, modular_js_1.mod)(k - c1 * a1 - c2 * a2, n);
93
- let k2 = (0, modular_js_1.mod)(-c1 * b1 - c2 * b2, n);
94
+ let k1 = (0, modular_ts_1.mod)(k - c1 * a1 - c2 * a2, n);
95
+ let k2 = (0, modular_ts_1.mod)(-c1 * b1 - c2 * b2, n);
94
96
  const k1neg = k1 > POW_2_128;
95
97
  const k2neg = k2 > POW_2_128;
96
98
  if (k1neg)
@@ -103,7 +105,7 @@ exports.secp256k1 = (0, _shortw_utils_js_1.createCurve)({
103
105
  return { k1neg, k1, k2neg, k2 };
104
106
  },
105
107
  },
106
- }, sha256_1.sha256);
108
+ }, sha2_1.sha256);
107
109
  // Schnorr signatures are superior to ECDSA from above. Below is Schnorr-specific BIP0340 code.
108
110
  // https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
109
111
  const _0n = BigInt(0);
@@ -112,17 +114,17 @@ const TAGGED_HASH_PREFIXES = {};
112
114
  function taggedHash(tag, ...messages) {
113
115
  let tagP = TAGGED_HASH_PREFIXES[tag];
114
116
  if (tagP === undefined) {
115
- const tagH = (0, sha256_1.sha256)(Uint8Array.from(tag, (c) => c.charCodeAt(0)));
116
- tagP = (0, utils_js_1.concatBytes)(tagH, tagH);
117
+ const tagH = (0, sha2_1.sha256)(Uint8Array.from(tag, (c) => c.charCodeAt(0)));
118
+ tagP = (0, utils_ts_1.concatBytes)(tagH, tagH);
117
119
  TAGGED_HASH_PREFIXES[tag] = tagP;
118
120
  }
119
- return (0, sha256_1.sha256)((0, utils_js_1.concatBytes)(tagP, ...messages));
121
+ return (0, sha2_1.sha256)((0, utils_ts_1.concatBytes)(tagP, ...messages));
120
122
  }
121
123
  // ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03
122
124
  const pointToBytes = (point) => point.toRawBytes(true).slice(1);
123
- const numTo32b = (n) => (0, utils_js_1.numberToBytesBE)(n, 32);
124
- const modP = (x) => (0, modular_js_1.mod)(x, secp256k1P);
125
- const modN = (x) => (0, modular_js_1.mod)(x, secp256k1N);
125
+ const numTo32b = (n) => (0, utils_ts_1.numberToBytesBE)(n, 32);
126
+ const modP = (x) => (0, modular_ts_1.mod)(x, secp256k1P);
127
+ const modN = (x) => (0, modular_ts_1.mod)(x, secp256k1N);
126
128
  const Point = exports.secp256k1.ProjectivePoint;
127
129
  const GmulAdd = (Q, a, b) => Point.BASE.multiplyAndAddUnsafe(Q, a, b);
128
130
  // Calculate point, scalar and bytes
@@ -137,7 +139,7 @@ function schnorrGetExtPubKey(priv) {
137
139
  * @returns valid point checked for being on-curve
138
140
  */
139
141
  function lift_x(x) {
140
- (0, utils_js_1.aInRange)('x', x, _1n, secp256k1P); // Fail if x ≥ p.
142
+ (0, utils_ts_1.aInRange)('x', x, _1n, secp256k1P); // Fail if x ≥ p.
141
143
  const xx = modP(x * x);
142
144
  const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.
143
145
  let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.
@@ -147,7 +149,7 @@ function lift_x(x) {
147
149
  p.assertValidity();
148
150
  return p;
149
151
  }
150
- const num = utils_js_1.bytesToNumberBE;
152
+ const num = utils_ts_1.bytesToNumberBE;
151
153
  /**
152
154
  * Create tagged hash, convert it to bigint, reduce modulo-n.
153
155
  */
@@ -165,9 +167,9 @@ function schnorrGetPublicKey(privateKey) {
165
167
  * auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.
166
168
  */
167
169
  function schnorrSign(message, privateKey, auxRand = (0, utils_1.randomBytes)(32)) {
168
- const m = (0, utils_js_1.ensureBytes)('message', message);
170
+ const m = (0, utils_ts_1.ensureBytes)('message', message);
169
171
  const { bytes: px, scalar: d } = schnorrGetExtPubKey(privateKey); // checks for isWithinCurveOrder
170
- const a = (0, utils_js_1.ensureBytes)('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array
172
+ const a = (0, utils_ts_1.ensureBytes)('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array
171
173
  const t = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)
172
174
  const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)
173
175
  const k_ = modN(num(rand)); // Let k' = int(rand) mod n
@@ -188,16 +190,16 @@ function schnorrSign(message, privateKey, auxRand = (0, utils_1.randomBytes)(32)
188
190
  * Will swallow errors & return false except for initial type validation of arguments.
189
191
  */
190
192
  function schnorrVerify(signature, message, publicKey) {
191
- const sig = (0, utils_js_1.ensureBytes)('signature', signature, 64);
192
- const m = (0, utils_js_1.ensureBytes)('message', message);
193
- const pub = (0, utils_js_1.ensureBytes)('publicKey', publicKey, 32);
193
+ const sig = (0, utils_ts_1.ensureBytes)('signature', signature, 64);
194
+ const m = (0, utils_ts_1.ensureBytes)('message', message);
195
+ const pub = (0, utils_ts_1.ensureBytes)('publicKey', publicKey, 32);
194
196
  try {
195
197
  const P = lift_x(num(pub)); // P = lift_x(int(pk)); fail if that fails
196
198
  const r = num(sig.subarray(0, 32)); // Let r = int(sig[0:32]); fail if r ≥ p.
197
- if (!(0, utils_js_1.inRange)(r, _1n, secp256k1P))
199
+ if (!(0, utils_ts_1.inRange)(r, _1n, secp256k1P))
198
200
  return false;
199
201
  const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.
200
- if (!(0, utils_js_1.inRange)(s, _1n, secp256k1N))
202
+ if (!(0, utils_ts_1.inRange)(s, _1n, secp256k1N))
201
203
  return false;
202
204
  const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n
203
205
  const R = GmulAdd(P, s, modN(-e)); // R = s⋅G - e⋅P
@@ -213,12 +215,14 @@ function schnorrVerify(signature, message, publicKey) {
213
215
  * Schnorr signatures over secp256k1.
214
216
  * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki
215
217
  * @example
218
+ * ```js
216
219
  * import { schnorr } from '@noble/curves/secp256k1';
217
220
  * const priv = schnorr.utils.randomPrivateKey();
218
221
  * const pub = schnorr.getPublicKey(priv);
219
222
  * const msg = new TextEncoder().encode('hello');
220
223
  * const sig = schnorr.sign(msg, priv);
221
224
  * const isValid = schnorr.verify(sig, msg, pub);
225
+ * ```
222
226
  */
223
227
  exports.schnorr = (() => ({
224
228
  getPublicKey: schnorrGetPublicKey,
@@ -228,13 +232,13 @@ exports.schnorr = (() => ({
228
232
  randomPrivateKey: exports.secp256k1.utils.randomPrivateKey,
229
233
  lift_x,
230
234
  pointToBytes,
231
- numberToBytesBE: utils_js_1.numberToBytesBE,
232
- bytesToNumberBE: utils_js_1.bytesToNumberBE,
235
+ numberToBytesBE: utils_ts_1.numberToBytesBE,
236
+ bytesToNumberBE: utils_ts_1.bytesToNumberBE,
233
237
  taggedHash,
234
- mod: modular_js_1.mod,
238
+ mod: modular_ts_1.mod,
235
239
  },
236
240
  }))();
237
- const isoMap = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.isogenyMap)(Fpk1, [
241
+ const isoMap = /* @__PURE__ */ (() => (0, hash_to_curve_ts_1.isogenyMap)(Fpk1, [
238
242
  // xNum
239
243
  [
240
244
  '0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7',
@@ -263,12 +267,12 @@ const isoMap = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.isogenyMap)(Fpk1, [
263
267
  '0x0000000000000000000000000000000000000000000000000000000000000001', // LAST 1
264
268
  ],
265
269
  ].map((i) => i.map((j) => BigInt(j)))))();
266
- const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_js_1.mapToCurveSimpleSWU)(Fpk1, {
270
+ const mapSWU = /* @__PURE__ */ (() => (0, weierstrass_ts_1.mapToCurveSimpleSWU)(Fpk1, {
267
271
  A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),
268
272
  B: BigInt('1771'),
269
273
  Z: Fpk1.create(BigInt('-11')),
270
274
  }))();
271
- const htf = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.createHasher)(exports.secp256k1.ProjectivePoint, (scalars) => {
275
+ const htf = /* @__PURE__ */ (() => (0, hash_to_curve_ts_1.createHasher)(exports.secp256k1.ProjectivePoint, (scalars) => {
272
276
  const { x, y } = mapSWU(Fpk1.create(scalars[0]));
273
277
  return isoMap(x, y);
274
278
  }, {
@@ -278,10 +282,10 @@ const htf = /* @__PURE__ */ (() => (0, hash_to_curve_js_1.createHasher)(exports.
278
282
  m: 1,
279
283
  k: 128,
280
284
  expand: 'xmd',
281
- hash: sha256_1.sha256,
285
+ hash: sha2_1.sha256,
282
286
  }))();
283
- /** secp256k1 hash-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
287
+ /** secp256k1 hash-to-curve from RFC 9380. */
284
288
  exports.hashToCurve = (() => htf.hashToCurve)();
285
- /** secp256k1 encode-to-curve from [RFC 9380](https://www.rfc-editor.org/rfc/rfc9380). */
289
+ /** secp256k1 encode-to-curve from RFC 9380. */
286
290
  exports.encodeToCurve = (() => htf.encodeToCurve)();
287
291
  //# sourceMappingURL=secp256k1.js.map
package/secp256k1.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["src/secp256k1.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;GAWG;AACH,sEAAsE;AACtE,iDAA8C;AAC9C,+CAAkD;AAClD,yDAAoE;AACpE,kEAAkF;AAClF,sDAAyD;AAEzD,kDAO6B;AAC7B,8DAA4F;AAE5F,MAAM,UAAU,GAAG,MAAM,CAAC,oEAAoE,CAAC,CAAC;AAChG,MAAM,UAAU,GAAG,MAAM,CAAC,oEAAoE,CAAC,CAAC;AAChG,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAE/D;;;GAGG;AACH,SAAS,OAAO,CAAC,CAAS;IACxB,MAAM,CAAC,GAAG,UAAU,CAAC;IACrB,kBAAkB;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7E,kBAAkB;IAClB,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU;IACtC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IACpC,MAAM,EAAE,GAAG,CAAC,IAAA,iBAAI,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,IAAA,iBAAI,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,CAAC,IAAA,iBAAI,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,IAAA,iBAAI,EAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,IAAA,iBAAI,EAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,IAAA,iBAAI,EAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,IAAA,iBAAI,EAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,IAAA,iBAAI,EAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,CAAC,IAAA,iBAAI,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,CAAC,IAAA,iBAAI,EAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,CAAC,IAAA,iBAAI,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAA,iBAAI,EAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,IAAI,GAAG,IAAA,kBAAK,EAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAExE;;;;;;;;;;;GAWG;AACU,QAAA,SAAS,GAAsB,IAAA,8BAAW,EACrD;IACE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,wBAAwB;IACtC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,EAAE,EAAE,IAAI,EAAE,sFAAsF;IAChG,CAAC,EAAE,UAAU,EAAE,wDAAwD;IACvE,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC,+EAA+E,CAAC;IAC3F,EAAE,EAAE,MAAM,CAAC,+EAA+E,CAAC;IAC3F,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW;IACzB,IAAI,EAAE,IAAI,EAAE,gEAAgE;IAC5E,IAAI,EAAE;QACJ,0BAA0B;QAC1B,IAAI,EAAE,MAAM,CAAC,oEAAoE,CAAC;QAClF,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,UAAU,CAAC;YACrB,MAAM,EAAE,GAAG,MAAM,CAAC,oCAAoC,CAAC,CAAC;YACxD,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,oCAAoC,CAAC,CAAC;YAC/D,MAAM,EAAE,GAAG,MAAM,CAAC,qCAAqC,CAAC,CAAC;YACzD,MAAM,EAAE,GAAG,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC,0BAA0B;YAE3F,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,IAAI,EAAE,GAAG,IAAA,gBAAG,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,EAAE,GAAG,IAAA,gBAAG,EAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;YAC7B,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC;YAC7B,IAAI,KAAK;gBAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,KAAK;gBAAE,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAClC,CAAC;KACF;CACF,EACD,eAAM,CACP,CAAC;AAEF,+FAA+F;AAC/F,iEAAiE;AACjE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,wFAAwF;AACxF,MAAM,oBAAoB,GAAkC,EAAE,CAAC;AAC/D,SAAS,UAAU,CAAC,GAAW,EAAE,GAAG,QAAsB;IACxD,IAAI,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAA,eAAM,EAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,GAAG,IAAA,sBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,oBAAoB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,CAAC;IACD,OAAO,IAAA,eAAM,EAAC,IAAA,sBAAW,EAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,oFAAoF;AACpF,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,0BAAe,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,gBAAG,EAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC/C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,gBAAG,EAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC/C,MAAM,KAAK,GAAG,iBAAS,CAAC,eAAe,CAAC;AACxC,MAAM,OAAO,GAAG,CAAC,CAAoB,EAAE,CAAS,EAAE,CAAS,EAAE,EAAE,CAC7D,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE3C,oCAAoC;AACpC,SAAS,mBAAmB,CAAC,IAAa;IACxC,IAAI,EAAE,GAAG,iBAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,yCAAyC;IAChG,IAAI,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,4CAA4C;IAC9E,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;AACpD,CAAC;AACD;;;GAGG;AACH,SAAS,MAAM,CAAC,CAAS;IACvB,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,iBAAiB;IACpD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB;IAC5D,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B;IAC/C,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG;QAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD;IACtF,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,mDAAmD;IACnF,CAAC,CAAC,cAAc,EAAE,CAAC;IACnB,OAAO,CAAC,CAAC;AACX,CAAC;AACD,MAAM,GAAG,GAAG,0BAAe,CAAC;AAC5B;;GAEG;AACH,SAAS,SAAS,CAAC,GAAG,IAAkB;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,UAAe;IAC1C,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,oDAAoD;AACpG,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAClB,OAAY,EACZ,UAAmB,EACnB,UAAe,IAAA,mBAAW,EAAC,EAAE,CAAC;IAE9B,MAAM,CAAC,GAAG,IAAA,sBAAW,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,gCAAgC;IAClG,MAAM,CAAC,GAAG,IAAA,sBAAW,EAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,2CAA2C;IAC1F,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yDAAyD;IACpH,MAAM,IAAI,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,4CAA4C;IAChG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,2BAA2B;IACvD,IAAI,EAAE,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,kBAAkB;IAC7E,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;IAC1E,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gEAAgE;IAChG,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,+CAA+C;IAC/E,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACf,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvC,iEAAiE;IACjE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACpF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,SAAc,EAAE,OAAY,EAAE,SAAc;IACjE,MAAM,GAAG,GAAG,IAAA,sBAAW,EAAC,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,IAAA,sBAAW,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAA,sBAAW,EAAC,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,0CAA0C;QACtE,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,yCAAyC;QAC7E,IAAI,CAAC,IAAA,kBAAO,EAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,0CAA0C;QAC/E,IAAI,CAAC,IAAA,kBAAO,EAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0CAA0C;QAChG,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;QACnD,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,gBAAgB;QAC/E,OAAO,IAAI,CAAC,CAAC,yDAAyD;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAgBD;;;;;;;;;;GAUG;AACU,QAAA,OAAO,GAAgC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,YAAY,EAAE,mBAAmB;IACjC,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE;QACL,gBAAgB,EAAE,iBAAS,CAAC,KAAK,CAAC,gBAAgB;QAClD,MAAM;QACN,YAAY;QACZ,eAAe,EAAf,0BAAe;QACf,eAAe,EAAf,0BAAe;QACf,UAAU;QACV,GAAG,EAAH,gBAAG;KACJ;CACF,CAAC,CAAC,EAAE,CAAC;AAEN,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CACnC,IAAA,6BAAU,EACR,IAAI,EACJ;IACE,OAAO;IACP;QACE,oEAAoE;QACpE,mEAAmE;QACnE,oEAAoE;QACpE,oEAAoE;KACrE;IACD,OAAO;IACP;QACE,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE,EAAE,SAAS;KAChF;IACD,OAAO;IACP;QACE,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE;KACrE;IACD,OAAO;IACP;QACE,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE;QACpE,oEAAoE,EAAE,SAAS;KAChF;CACF,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAA6C,CAClF,CAAC,EAAE,CAAC;AACP,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CACnC,IAAA,oCAAmB,EAAC,IAAI,EAAE;IACxB,CAAC,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAC/E,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;IACjB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC9B,CAAC,CAAC,EAAE,CAAC;AACR,MAAM,GAAG,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CAChC,IAAA,+BAAY,EACV,iBAAS,CAAC,eAAe,EACzB,CAAC,OAAiB,EAAE,EAAE;IACpB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC,EACD;IACE,GAAG,EAAE,gCAAgC;IACrC,SAAS,EAAE,gCAAgC;IAC3C,CAAC,EAAE,IAAI,CAAC,KAAK;IACb,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,GAAG;IACN,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,eAAM;CACb,CACF,CAAC,EAAE,CAAC;AAEP,uFAAuF;AAC1E,QAAA,WAAW,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;AAExF,yFAAyF;AAC5E,QAAA,aAAa,GAAsC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"secp256k1.js","sourceRoot":"","sources":["src/secp256k1.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@
5
5
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
6
6
  import { hmac } from '@noble/hashes/hmac';
7
7
  import { concatBytes, randomBytes } from '@noble/hashes/utils';
8
- import { CHash } from './abstract/utils.js';
9
- import { CurveType, CurveFn, weierstrass } from './abstract/weierstrass.js';
8
+ import type { CHash } from './abstract/utils.ts';
9
+ import { type CurveFn, type CurveType, weierstrass } from './abstract/weierstrass.ts';
10
10
 
11
11
  /** connects noble-curves to noble-hashes */
12
12
  export function getHash(hash: CHash): {
@@ -16,21 +16,23 @@
16
16
  * @module
17
17
  **/
18
18
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
19
- // TODO: import { AffinePoint } from './curve.js';
20
- import { IField, getMinHashLength, mapHashToField } from './modular.js';
21
- import { Hex, PrivKey, CHash, ensureBytes, memoized } from './utils.js';
22
- // prettier-ignore
19
+ // TODO: import { AffinePoint } from './curve.ts';
23
20
  import {
24
- MapToCurve, Opts as HTFOpts, H2CPointConstructor, htfBasicOpts,
25
- createHasher
26
- } from './hash-to-curve.js';
21
+ type H2CPointConstructor,
22
+ type htfBasicOpts,
23
+ type Opts as HTFOpts,
24
+ type MapToCurve,
25
+ createHasher,
26
+ } from './hash-to-curve.ts';
27
+ import { type IField, getMinHashLength, mapHashToField } from './modular.ts';
28
+ import type { Fp12, Fp12Bls, Fp2, Fp2Bls, Fp6 } from './tower.ts';
29
+ import { type CHash, type Hex, type PrivKey, ensureBytes, memoized } from './utils.ts';
27
30
  import {
28
- CurvePointsType,
29
- ProjPointType as ProjPointType,
30
- CurvePointsRes,
31
+ type CurvePointsRes,
32
+ type CurvePointsType,
33
+ type ProjPointType,
31
34
  weierstrassPoints,
32
- } from './weierstrass.js';
33
- import type { Fp2, Fp6, Fp12, Fp2Bls, Fp12Bls } from './tower.js';
35
+ } from './weierstrass.ts';
34
36
 
35
37
  type Fp = bigint; // Can be different field?
36
38
 
@@ -4,8 +4,8 @@
4
4
  * @module
5
5
  */
6
6
  /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
7
- import { IField, validateField, nLength } from './modular.js';
8
- import { validateObject, bitLen } from './utils.js';
7
+ import { type IField, nLength, validateField } from './modular.ts';
8
+ import { bitLen, bitMask, validateObject } from './utils.ts';
9
9
 
10
10
  const _0n = BigInt(0);
11
11
  const _1n = BigInt(1);
@@ -40,11 +40,48 @@ function validateW(W: number, bits: number) {
40
40
  throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);
41
41
  }
42
42
 
43
- function calcWOpts(W: number, bits: number) {
44
- validateW(W, bits);
45
- const windows = Math.ceil(bits / W) + 1; // +1, because
46
- const windowSize = 2 ** (W - 1); // -1 because we skip zero
47
- return { windows, windowSize };
43
+ /** Internal wNAF opts for specific W and scalarBits */
44
+ export type WOpts = {
45
+ windows: number;
46
+ windowSize: number;
47
+ mask: bigint;
48
+ maxNumber: number;
49
+ shiftBy: bigint;
50
+ };
51
+
52
+ function calcWOpts(W: number, scalarBits: number): WOpts {
53
+ validateW(W, scalarBits);
54
+ const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero
55
+ const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero
56
+ const maxNumber = 2 ** W; // W=8 256
57
+ const mask = bitMask(W); // W=8 255 == mask 0b11111111
58
+ const shiftBy = BigInt(W); // W=8 8
59
+ return { windows, windowSize, mask, maxNumber, shiftBy };
60
+ }
61
+
62
+ function calcOffsets(n: bigint, window: number, wOpts: WOpts) {
63
+ const { windowSize, mask, maxNumber, shiftBy } = wOpts;
64
+ let wbits = Number(n & mask); // extract W bits.
65
+ let nextN = n >> shiftBy; // shift number by W bits.
66
+
67
+ // What actually happens here:
68
+ // const highestBit = Number(mask ^ (mask >> 1n));
69
+ // let wbits2 = wbits - 1; // skip zero
70
+ // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);
71
+
72
+ // split if bits > max: +224 => 256-32
73
+ if (wbits > windowSize) {
74
+ // we skip zero, which means instead of `>= size-1`, we do `> size`
75
+ wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.
76
+ nextN += _1n; // +256 (carry)
77
+ }
78
+ const offsetStart = window * windowSize;
79
+ const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero
80
+ const isZero = wbits === 0; // is current window slice a 0?
81
+ const isNeg = wbits < 0; // is current window slice negative?
82
+ const isNegF = window % 2 !== 0; // fake random statement for noise
83
+ const offsetF = offsetStart; // fake offset for noise
84
+ return { nextN, offset, isZero, isNeg, isNegF, offsetF };
48
85
  }
49
86
 
50
87
  function validateMSMPoints(points: any[], c: any) {
@@ -61,9 +98,10 @@ function validateMSMScalars(scalars: any[], field: any) {
61
98
  }
62
99
 
63
100
  // Since points in different groups cannot be equal (different object constructor),
64
- // we can have single place to store precomputes
101
+ // we can have single place to store precomputes.
102
+ // Allows to make points frozen / immutable.
65
103
  const pointPrecomputes = new WeakMap<any, any[]>();
66
- const pointWindowSizes = new WeakMap<any, number>(); // This allows use make points immutable (nothing changes inside)
104
+ const pointWindowSizes = new WeakMap<any, number>();
67
105
 
68
106
  function getW(P: any): number {
69
107
  return pointWindowSizes.get(P) || 1;
@@ -135,7 +173,7 @@ export function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number):
135
173
  for (let window = 0; window < windows; window++) {
136
174
  base = p;
137
175
  points.push(base);
138
- // =1, because we skip zero
176
+ // i=1, bc we skip 0
139
177
  for (let i = 1; i < windowSize; i++) {
140
178
  base = base.add(p);
141
179
  points.push(base);
@@ -153,54 +191,34 @@ export function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number):
153
191
  * @returns real and fake (for const-time) points
154
192
  */
155
193
  wNAF(W: number, precomputes: T[], n: bigint): { p: T; f: T } {
156
- // TODO: maybe check that scalar is less than group order? wNAF behavious is undefined otherwise
157
- // But need to carefully remove other checks before wNAF. ORDER == bits here
158
- const { windows, windowSize } = calcWOpts(W, bits);
159
-
194
+ // Smaller version:
195
+ // https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541
196
+ // TODO: check the scalar is less than group order?
197
+ // wNAF behavior is undefined otherwise. But have to carefully remove
198
+ // other checks before wNAF. ORDER == bits here.
199
+ // Accumulators
160
200
  let p = c.ZERO;
161
201
  let f = c.BASE;
162
-
163
- const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.
164
- const maxNumber = 2 ** W;
165
- const shiftBy = BigInt(W);
166
-
167
- for (let window = 0; window < windows; window++) {
168
- const offset = window * windowSize;
169
- // Extract W bits.
170
- let wbits = Number(n & mask);
171
-
172
- // Shift number by W bits.
173
- n >>= shiftBy;
174
-
175
- // If the bits are bigger than max size, we'll split those.
176
- // +224 => 256 - 32
177
- if (wbits > windowSize) {
178
- wbits -= maxNumber;
179
- n += _1n;
180
- }
181
-
182
- // This code was first written with assumption that 'f' and 'p' will never be infinity point:
183
- // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,
184
- // there is negate now: it is possible that negated element from low value
185
- // would be the same as high element, which will create carry into next window.
186
- // It's not obvious how this can fail, but still worth investigating later.
187
-
188
- // Check if we're onto Zero point.
189
- // Add random point inside current window to f.
190
- const offset1 = offset;
191
- const offset2 = offset + Math.abs(wbits) - 1; // -1 because we skip zero
192
- const cond1 = window % 2 !== 0;
193
- const cond2 = wbits < 0;
194
- if (wbits === 0) {
195
- // The most important part for const-time getPublicKey
196
- f = f.add(constTimeNegate(cond1, precomputes[offset1]));
202
+ // This code was first written with assumption that 'f' and 'p' will never be infinity point:
203
+ // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,
204
+ // there is negate now: it is possible that negated element from low value
205
+ // would be the same as high element, which will create carry into next window.
206
+ // It's not obvious how this can fail, but still worth investigating later.
207
+ const wo = calcWOpts(W, bits);
208
+ for (let window = 0; window < wo.windows; window++) {
209
+ // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise
210
+ const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);
211
+ n = nextN;
212
+ if (isZero) {
213
+ // bits are 0: add garbage to fake point
214
+ // Important part for const-time getPublicKey: add random "noise" point to f.
215
+ f = f.add(constTimeNegate(isNegF, precomputes[offsetF]));
197
216
  } else {
198
- p = p.add(constTimeNegate(cond2, precomputes[offset2]));
217
+ // bits are 1: add to result point
218
+ p = p.add(constTimeNegate(isNeg, precomputes[offset]));
199
219
  }
200
220
  }
201
- // JIT-compiler should not eliminate f here, since it will later be used in normalizeZ()
202
- // Even if the variable is still unused, there are some checks which will
203
- // throw an exception, so compiler needs to prove they won't happen, which is hard.
221
+ // Return both real and fake points: JIT won't eliminate f.
204
222
  // At this point there is a way to F be infinity-point even if p is not,
205
223
  // which makes it less const-time: around 1 bigint multiply.
206
224
  return { p, f };
@@ -215,28 +233,19 @@ export function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number):
215
233
  * @returns point
216
234
  */
217
235
  wNAFUnsafe(W: number, precomputes: T[], n: bigint, acc: T = c.ZERO): T {
218
- const { windows, windowSize } = calcWOpts(W, bits);
219
- const mask = BigInt(2 ** W - 1); // Create mask with W ones: 0b1111 for W=4 etc.
220
- const maxNumber = 2 ** W;
221
- const shiftBy = BigInt(W);
222
- for (let window = 0; window < windows; window++) {
223
- const offset = window * windowSize;
224
- if (n === _0n) break; // No need to go over empty scalar
225
- // Extract W bits.
226
- let wbits = Number(n & mask);
227
- // Shift number by W bits.
228
- n >>= shiftBy;
229
- // If the bits are bigger than max size, we'll split those.
230
- // +224 => 256 - 32
231
- if (wbits > windowSize) {
232
- wbits -= maxNumber;
233
- n += _1n;
236
+ const wo = calcWOpts(W, bits);
237
+ for (let window = 0; window < wo.windows; window++) {
238
+ if (n === _0n) break; // Early-exit, skip 0 value
239
+ const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);
240
+ n = nextN;
241
+ if (isZero) {
242
+ // Window bits are 0: skip processing.
243
+ // Move to next window.
244
+ continue;
245
+ } else {
246
+ const item = precomputes[offset];
247
+ acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM
234
248
  }
235
- if (wbits === 0) continue;
236
- let curr = precomputes[offset + Math.abs(wbits) - 1]; // -1 because we skip zero
237
- if (wbits < 0) curr = curr.negate();
238
- // NOTE: by re-using acc, we can save a lot of additions in case of MSM
239
- acc = acc.add(curr);
240
249
  }
241
250
  return acc;
242
251
  },
@@ -276,7 +285,7 @@ export function wNAF<T extends Group<T>>(c: GroupConstructor<T>, bits: number):
276
285
 
277
286
  /**
278
287
  * Pippenger algorithm for multi-scalar multiplication (MSM, Pa + Qb + Rc + ...).
279
- * 30x faster vs naive addition on L=4096, 10x faster with precomputes.
288
+ * 30x faster vs naive addition on L=4096, 10x faster than precomputes.
280
289
  * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.
281
290
  * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.
282
291
  * @param c Curve Point constructor
@@ -303,15 +312,15 @@ export function pippenger<T extends Group<T>>(
303
312
  const zero = c.ZERO;
304
313
  const wbits = bitLen(BigInt(points.length));
305
314
  const windowSize = wbits > 12 ? wbits - 3 : wbits > 4 ? wbits - 2 : wbits ? 2 : 1; // in bits
306
- const MASK = (1 << windowSize) - 1;
307
- const buckets = new Array(MASK + 1).fill(zero); // +1 for zero array
315
+ const MASK = bitMask(windowSize);
316
+ const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array
308
317
  const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;
309
318
  let sum = zero;
310
319
  for (let i = lastBits; i >= 0; i -= windowSize) {
311
320
  buckets.fill(zero);
312
321
  for (let j = 0; j < scalars.length; j++) {
313
322
  const scalar = scalars[j];
314
- const wbits = Number((scalar >> BigInt(i)) & BigInt(MASK));
323
+ const wbits = Number((scalar >> BigInt(i)) & MASK);
315
324
  buckets[wbits] = buckets[wbits].add(points[j]);
316
325
  }
317
326
  let resI = zero; // not using this will do small speed-up, but will lose ct
@@ -378,7 +387,7 @@ export function precomputeMSMUnsafe<T extends Group<T>>(
378
387
  const zero = c.ZERO;
379
388
  const tableSize = 2 ** windowSize - 1; // table size (without zero)
380
389
  const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item
381
- const MASK = BigInt((1 << windowSize) - 1);
390
+ const MASK = bitMask(windowSize);
382
391
  const tables = points.map((p: T) => {
383
392
  const res = [];
384
393
  for (let i = 0, acc = p; i < tableSize; i++) {