@noble/curves 1.9.5 → 2.0.0-beta.1

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 (211) hide show
  1. package/README.md +267 -421
  2. package/abstract/bls.d.ts +49 -111
  3. package/abstract/bls.d.ts.map +1 -1
  4. package/abstract/bls.js +108 -152
  5. package/abstract/bls.js.map +1 -1
  6. package/abstract/curve.d.ts +7 -48
  7. package/abstract/curve.d.ts.map +1 -1
  8. package/abstract/curve.js +22 -47
  9. package/abstract/curve.js.map +1 -1
  10. package/abstract/edwards.d.ts +17 -68
  11. package/abstract/edwards.d.ts.map +1 -1
  12. package/abstract/edwards.js +98 -175
  13. package/abstract/edwards.js.map +1 -1
  14. package/abstract/fft.js +14 -27
  15. package/abstract/fft.js.map +1 -1
  16. package/abstract/hash-to-curve.d.ts +11 -24
  17. package/abstract/hash-to-curve.d.ts.map +1 -1
  18. package/abstract/hash-to-curve.js +30 -35
  19. package/abstract/hash-to-curve.js.map +1 -1
  20. package/abstract/modular.d.ts +5 -17
  21. package/abstract/modular.d.ts.map +1 -1
  22. package/abstract/modular.js +166 -167
  23. package/abstract/modular.js.map +1 -1
  24. package/abstract/montgomery.d.ts +4 -9
  25. package/abstract/montgomery.d.ts.map +1 -1
  26. package/abstract/montgomery.js +17 -20
  27. package/abstract/montgomery.js.map +1 -1
  28. package/abstract/oprf.d.ts +282 -0
  29. package/abstract/oprf.d.ts.map +1 -0
  30. package/abstract/oprf.js +297 -0
  31. package/abstract/oprf.js.map +1 -0
  32. package/abstract/poseidon.js +20 -24
  33. package/abstract/poseidon.js.map +1 -1
  34. package/abstract/tower.d.ts +9 -7
  35. package/abstract/tower.d.ts.map +1 -1
  36. package/abstract/tower.js +600 -364
  37. package/abstract/tower.js.map +1 -1
  38. package/abstract/weierstrass.d.ts +12 -145
  39. package/abstract/weierstrass.d.ts.map +1 -1
  40. package/abstract/weierstrass.js +153 -377
  41. package/abstract/weierstrass.js.map +1 -1
  42. package/bls12-381.d.ts +2 -2
  43. package/bls12-381.d.ts.map +1 -1
  44. package/bls12-381.js +174 -216
  45. package/bls12-381.js.map +1 -1
  46. package/bn254.d.ts +58 -10
  47. package/bn254.d.ts.map +1 -1
  48. package/bn254.js +70 -130
  49. package/bn254.js.map +1 -1
  50. package/ed25519.d.ts +12 -31
  51. package/ed25519.d.ts.map +1 -1
  52. package/ed25519.js +104 -146
  53. package/ed25519.js.map +1 -1
  54. package/ed448.d.ts +14 -33
  55. package/ed448.d.ts.map +1 -1
  56. package/ed448.js +105 -132
  57. package/ed448.js.map +1 -1
  58. package/index.js +1 -1
  59. package/misc.d.ts +10 -14
  60. package/misc.d.ts.map +1 -1
  61. package/misc.js +51 -60
  62. package/misc.js.map +1 -1
  63. package/nist.d.ts +11 -14
  64. package/nist.d.ts.map +1 -1
  65. package/nist.js +46 -55
  66. package/nist.js.map +1 -1
  67. package/package.json +9 -224
  68. package/secp256k1.d.ts +7 -23
  69. package/secp256k1.d.ts.map +1 -1
  70. package/secp256k1.js +72 -83
  71. package/secp256k1.js.map +1 -1
  72. package/src/abstract/bls.ts +197 -344
  73. package/src/abstract/curve.ts +10 -83
  74. package/src/abstract/edwards.ts +96 -223
  75. package/src/abstract/hash-to-curve.ts +32 -45
  76. package/src/abstract/modular.ts +144 -130
  77. package/src/abstract/montgomery.ts +21 -22
  78. package/src/abstract/oprf.ts +600 -0
  79. package/src/abstract/tower.ts +627 -382
  80. package/src/abstract/weierstrass.ts +101 -482
  81. package/src/bls12-381.ts +148 -176
  82. package/src/bn254.ts +67 -122
  83. package/src/ed25519.ts +65 -118
  84. package/src/ed448.ts +63 -113
  85. package/src/index.ts +1 -1
  86. package/src/misc.ts +66 -49
  87. package/src/nist.ts +48 -57
  88. package/src/secp256k1.ts +56 -88
  89. package/src/utils.ts +41 -61
  90. package/src/webcrypto.ts +362 -0
  91. package/utils.d.ts +28 -19
  92. package/utils.d.ts.map +1 -1
  93. package/utils.js +45 -121
  94. package/utils.js.map +1 -1
  95. package/webcrypto.d.ts +47 -0
  96. package/webcrypto.d.ts.map +1 -0
  97. package/webcrypto.js +231 -0
  98. package/webcrypto.js.map +1 -0
  99. package/esm/_shortw_utils.d.ts +0 -19
  100. package/esm/_shortw_utils.d.ts.map +0 -1
  101. package/esm/_shortw_utils.js +0 -16
  102. package/esm/_shortw_utils.js.map +0 -1
  103. package/esm/abstract/bls.d.ts +0 -190
  104. package/esm/abstract/bls.d.ts.map +0 -1
  105. package/esm/abstract/bls.js +0 -408
  106. package/esm/abstract/bls.js.map +0 -1
  107. package/esm/abstract/curve.d.ts +0 -231
  108. package/esm/abstract/curve.d.ts.map +0 -1
  109. package/esm/abstract/curve.js +0 -465
  110. package/esm/abstract/curve.js.map +0 -1
  111. package/esm/abstract/edwards.d.ts +0 -237
  112. package/esm/abstract/edwards.d.ts.map +0 -1
  113. package/esm/abstract/edwards.js +0 -632
  114. package/esm/abstract/edwards.js.map +0 -1
  115. package/esm/abstract/fft.d.ts +0 -122
  116. package/esm/abstract/fft.d.ts.map +0 -1
  117. package/esm/abstract/fft.js +0 -425
  118. package/esm/abstract/fft.js.map +0 -1
  119. package/esm/abstract/hash-to-curve.d.ts +0 -102
  120. package/esm/abstract/hash-to-curve.d.ts.map +0 -1
  121. package/esm/abstract/hash-to-curve.js +0 -203
  122. package/esm/abstract/hash-to-curve.js.map +0 -1
  123. package/esm/abstract/modular.d.ts +0 -171
  124. package/esm/abstract/modular.d.ts.map +0 -1
  125. package/esm/abstract/modular.js +0 -530
  126. package/esm/abstract/modular.js.map +0 -1
  127. package/esm/abstract/montgomery.d.ts +0 -30
  128. package/esm/abstract/montgomery.d.ts.map +0 -1
  129. package/esm/abstract/montgomery.js +0 -157
  130. package/esm/abstract/montgomery.js.map +0 -1
  131. package/esm/abstract/poseidon.d.ts +0 -68
  132. package/esm/abstract/poseidon.d.ts.map +0 -1
  133. package/esm/abstract/poseidon.js +0 -296
  134. package/esm/abstract/poseidon.js.map +0 -1
  135. package/esm/abstract/tower.d.ts +0 -93
  136. package/esm/abstract/tower.d.ts.map +0 -1
  137. package/esm/abstract/tower.js +0 -502
  138. package/esm/abstract/tower.js.map +0 -1
  139. package/esm/abstract/utils.d.ts +0 -5
  140. package/esm/abstract/utils.d.ts.map +0 -1
  141. package/esm/abstract/utils.js +0 -7
  142. package/esm/abstract/utils.js.map +0 -1
  143. package/esm/abstract/weierstrass.d.ts +0 -412
  144. package/esm/abstract/weierstrass.d.ts.map +0 -1
  145. package/esm/abstract/weierstrass.js +0 -1428
  146. package/esm/abstract/weierstrass.js.map +0 -1
  147. package/esm/bls12-381.d.ts +0 -16
  148. package/esm/bls12-381.d.ts.map +0 -1
  149. package/esm/bls12-381.js +0 -738
  150. package/esm/bls12-381.js.map +0 -1
  151. package/esm/bn254.d.ts +0 -18
  152. package/esm/bn254.d.ts.map +0 -1
  153. package/esm/bn254.js +0 -246
  154. package/esm/bn254.js.map +0 -1
  155. package/esm/ed25519.d.ts +0 -106
  156. package/esm/ed25519.d.ts.map +0 -1
  157. package/esm/ed25519.js +0 -467
  158. package/esm/ed25519.js.map +0 -1
  159. package/esm/ed448.d.ts +0 -101
  160. package/esm/ed448.d.ts.map +0 -1
  161. package/esm/ed448.js +0 -448
  162. package/esm/ed448.js.map +0 -1
  163. package/esm/index.d.ts +0 -2
  164. package/esm/index.d.ts.map +0 -1
  165. package/esm/index.js +0 -17
  166. package/esm/index.js.map +0 -1
  167. package/esm/jubjub.d.ts +0 -12
  168. package/esm/jubjub.d.ts.map +0 -1
  169. package/esm/jubjub.js +0 -12
  170. package/esm/jubjub.js.map +0 -1
  171. package/esm/misc.d.ts +0 -19
  172. package/esm/misc.d.ts.map +0 -1
  173. package/esm/misc.js +0 -109
  174. package/esm/misc.js.map +0 -1
  175. package/esm/nist.d.ts +0 -21
  176. package/esm/nist.d.ts.map +0 -1
  177. package/esm/nist.js +0 -132
  178. package/esm/nist.js.map +0 -1
  179. package/esm/p256.d.ts +0 -16
  180. package/esm/p256.d.ts.map +0 -1
  181. package/esm/p256.js +0 -16
  182. package/esm/p256.js.map +0 -1
  183. package/esm/p384.d.ts +0 -16
  184. package/esm/p384.d.ts.map +0 -1
  185. package/esm/p384.js +0 -16
  186. package/esm/p384.js.map +0 -1
  187. package/esm/p521.d.ts +0 -16
  188. package/esm/p521.d.ts.map +0 -1
  189. package/esm/p521.js +0 -16
  190. package/esm/p521.js.map +0 -1
  191. package/esm/package.json +0 -4
  192. package/esm/pasta.d.ts +0 -10
  193. package/esm/pasta.d.ts.map +0 -1
  194. package/esm/pasta.js +0 -10
  195. package/esm/pasta.js.map +0 -1
  196. package/esm/secp256k1.d.ts +0 -89
  197. package/esm/secp256k1.d.ts.map +0 -1
  198. package/esm/secp256k1.js +0 -292
  199. package/esm/secp256k1.js.map +0 -1
  200. package/esm/utils.d.ts +0 -110
  201. package/esm/utils.d.ts.map +0 -1
  202. package/esm/utils.js +0 -322
  203. package/esm/utils.js.map +0 -1
  204. package/src/_shortw_utils.ts +0 -21
  205. package/src/abstract/utils.ts +0 -7
  206. package/src/jubjub.ts +0 -12
  207. package/src/p256.ts +0 -15
  208. package/src/p384.ts +0 -15
  209. package/src/p521.ts +0 -15
  210. package/src/package.json +0 -3
  211. package/src/pasta.ts +0 -9
package/esm/ed448.js DELETED
@@ -1,448 +0,0 @@
1
- /**
2
- * Edwards448 (not Ed448-Goldilocks) curve with following addons:
3
- * - X448 ECDH
4
- * - Decaf cofactor elimination
5
- * - Elligator hash-to-group / point indistinguishability
6
- * Conforms to RFC 8032 https://www.rfc-editor.org/rfc/rfc8032.html#section-5.2
7
- * @module
8
- */
9
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
10
- import { shake256 } from '@noble/hashes/sha3.js';
11
- import { abytes, concatBytes, utf8ToBytes, createHasher as wrapConstructor, } from '@noble/hashes/utils.js';
12
- import { pippenger } from "./abstract/curve.js";
13
- import { edwards, PrimeEdwardsPoint, twistedEdwards, } from "./abstract/edwards.js";
14
- import { _DST_scalar, createHasher, expand_message_xof, } from "./abstract/hash-to-curve.js";
15
- import { Field, FpInvertBatch, isNegativeLE, mod, pow2 } from "./abstract/modular.js";
16
- import { montgomery } from "./abstract/montgomery.js";
17
- import { bytesToNumberLE, ensureBytes, equalBytes, numberToBytesLE } from "./utils.js";
18
- // edwards448 curve
19
- // a = 1n
20
- // d = Fp.neg(39081n)
21
- // Finite field 2n**448n - 2n**224n - 1n
22
- // Subgroup order
23
- // 2n**446n - 13818066809895115352007386748515426880336692474882178609894547503885n
24
- const ed448_CURVE = {
25
- p: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffff'),
26
- n: BigInt('0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffff7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3'),
27
- h: BigInt(4),
28
- a: BigInt(1),
29
- d: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffff6756'),
30
- Gx: BigInt('0x4f1970c66bed0ded221d15a622bf36da9e146570470f1767ea6de324a3d3a46412ae1af72ab66511433b80e18b00938e2626a82bc70cc05e'),
31
- Gy: BigInt('0x693f46716eb6bc248876203756c9c7624bea73736ca3984087789c1e05a0c2d73ad3ff1ce67c39c4fdbd132c4ed7c8ad9808795bf230fa14'),
32
- };
33
- // E448 NIST curve is identical to edwards448, except for:
34
- // d = 39082/39081
35
- // Gx = 3/2
36
- const E448_CURVE = Object.assign({}, ed448_CURVE, {
37
- d: BigInt('0xd78b4bdc7f0daf19f24f38c29373a2ccad46157242a50f37809b1da3412a12e79ccc9c81264cfe9ad080997058fb61c4243cc32dbaa156b9'),
38
- Gx: BigInt('0x79a70b2b70400553ae7c9df416c792c61128751ac92969240c25a07d728bdc93e21f7787ed6972249de732f38496cd11698713093e9c04fc'),
39
- Gy: BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000000000000000000000000000000000000000000000000001'),
40
- });
41
- const shake256_114 = /* @__PURE__ */ wrapConstructor(() => shake256.create({ dkLen: 114 }));
42
- const shake256_64 = /* @__PURE__ */ wrapConstructor(() => shake256.create({ dkLen: 64 }));
43
- // prettier-ignore
44
- const _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _4n = BigInt(4), _11n = BigInt(11);
45
- // prettier-ignore
46
- const _22n = BigInt(22), _44n = BigInt(44), _88n = BigInt(88), _223n = BigInt(223);
47
- // powPminus3div4 calculates z = x^k mod p, where k = (p-3)/4.
48
- // Used for efficient square root calculation.
49
- // ((P-3)/4).toString(2) would produce bits [223x 1, 0, 222x 1]
50
- function ed448_pow_Pminus3div4(x) {
51
- const P = ed448_CURVE.p;
52
- const b2 = (x * x * x) % P;
53
- const b3 = (b2 * b2 * x) % P;
54
- const b6 = (pow2(b3, _3n, P) * b3) % P;
55
- const b9 = (pow2(b6, _3n, P) * b3) % P;
56
- const b11 = (pow2(b9, _2n, P) * b2) % P;
57
- const b22 = (pow2(b11, _11n, P) * b11) % P;
58
- const b44 = (pow2(b22, _22n, P) * b22) % P;
59
- const b88 = (pow2(b44, _44n, P) * b44) % P;
60
- const b176 = (pow2(b88, _88n, P) * b88) % P;
61
- const b220 = (pow2(b176, _44n, P) * b44) % P;
62
- const b222 = (pow2(b220, _2n, P) * b2) % P;
63
- const b223 = (pow2(b222, _1n, P) * x) % P;
64
- return (pow2(b223, _223n, P) * b222) % P;
65
- }
66
- function adjustScalarBytes(bytes) {
67
- // Section 5: Likewise, for X448, set the two least significant bits of the first byte to 0,
68
- bytes[0] &= 252; // 0b11111100
69
- // and the most significant bit of the last byte to 1.
70
- bytes[55] |= 128; // 0b10000000
71
- // NOTE: is NOOP for 56 bytes scalars (X25519/X448)
72
- bytes[56] = 0; // Byte outside of group (456 buts vs 448 bits)
73
- return bytes;
74
- }
75
- // Constant-time ratio of u to v. Allows to combine inversion and square root u/√v.
76
- // Uses algo from RFC8032 5.1.3.
77
- function uvRatio(u, v) {
78
- const P = ed448_CURVE.p;
79
- // https://www.rfc-editor.org/rfc/rfc8032#section-5.2.3
80
- // To compute the square root of (u/v), the first step is to compute the
81
- // candidate root x = (u/v)^((p+1)/4). This can be done using the
82
- // following trick, to use a single modular powering for both the
83
- // inversion of v and the square root:
84
- // x = (u/v)^((p+1)/4) = u³v(u⁵v³)^((p-3)/4) (mod p)
85
- const u2v = mod(u * u * v, P); // u²v
86
- const u3v = mod(u2v * u, P); // u³v
87
- const u5v3 = mod(u3v * u2v * v, P); // u⁵v³
88
- const root = ed448_pow_Pminus3div4(u5v3);
89
- const x = mod(u3v * root, P);
90
- // Verify that root is exists
91
- const x2 = mod(x * x, P); // x²
92
- // If vx² = u, the recovered x-coordinate is x. Otherwise, no
93
- // square root exists, and the decoding fails.
94
- return { isValid: mod(x2 * v, P) === u, value: x };
95
- }
96
- // Finite field 2n**448n - 2n**224n - 1n
97
- const Fp = /* @__PURE__ */ (() => Field(ed448_CURVE.p, { BITS: 456, isLE: true }))();
98
- // RFC 7748 has 56-byte keys, RFC 8032 has 57-byte keys
99
- const Fn = /* @__PURE__ */ (() => Field(ed448_CURVE.n, { BITS: 448, isLE: true }))();
100
- // Fn456 has BITS: 456
101
- // SHAKE256(dom4(phflag,context)||x, 114)
102
- function dom4(data, ctx, phflag) {
103
- if (ctx.length > 255)
104
- throw new Error('context must be smaller than 255, got: ' + ctx.length);
105
- return concatBytes(utf8ToBytes('SigEd448'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);
106
- }
107
- // const ed448_eddsa_opts = { adjustScalarBytes, domain: dom4 };
108
- // const ed448_Point = edwards(ed448_CURVE, { Fp, Fn, uvRatio });
109
- const ED448_DEF = /* @__PURE__ */ (() => ({
110
- ...ed448_CURVE,
111
- Fp,
112
- Fn,
113
- hash: shake256_114,
114
- adjustScalarBytes,
115
- domain: dom4,
116
- uvRatio,
117
- }))();
118
- /**
119
- * ed448 EdDSA curve and methods.
120
- * @example
121
- * import { ed448 } from '@noble/curves/ed448';
122
- * const { secretKey, publicKey } = ed448.keygen();
123
- * const msg = new TextEncoder().encode('hello');
124
- * const sig = ed448.sign(msg, secretKey);
125
- * const isValid = ed448.verify(sig, msg, publicKey);
126
- */
127
- export const ed448 = twistedEdwards(ED448_DEF);
128
- // There is no ed448ctx, since ed448 supports ctx by default
129
- /** Prehashed version of ed448. Accepts already-hashed messages in sign() and verify(). */
130
- export const ed448ph = /* @__PURE__ */ (() => twistedEdwards({
131
- ...ED448_DEF,
132
- prehash: shake256_64,
133
- }))();
134
- /**
135
- * E448 curve, defined by NIST.
136
- * E448 != edwards448 used in ed448.
137
- * E448 is birationally equivalent to edwards448.
138
- */
139
- export const E448 = edwards(E448_CURVE);
140
- /**
141
- * ECDH using curve448 aka x448.
142
- * x448 has 56-byte keys as per RFC 7748, while
143
- * ed448 has 57-byte keys as per RFC 8032.
144
- */
145
- export const x448 = /* @__PURE__ */ (() => {
146
- const P = ed448_CURVE.p;
147
- return montgomery({
148
- P,
149
- type: 'x448',
150
- powPminus2: (x) => {
151
- const Pminus3div4 = ed448_pow_Pminus3div4(x);
152
- const Pminus3 = pow2(Pminus3div4, _2n, P);
153
- return mod(Pminus3 * x, P); // Pminus3 * x = Pminus2
154
- },
155
- adjustScalarBytes,
156
- });
157
- })();
158
- // Hash To Curve Elligator2 Map
159
- const ELL2_C1 = /* @__PURE__ */ (() => (Fp.ORDER - BigInt(3)) / BigInt(4))(); // 1. c1 = (q - 3) / 4 # Integer arithmetic
160
- const ELL2_J = /* @__PURE__ */ BigInt(156326);
161
- function map_to_curve_elligator2_curve448(u) {
162
- let tv1 = Fp.sqr(u); // 1. tv1 = u^2
163
- let e1 = Fp.eql(tv1, Fp.ONE); // 2. e1 = tv1 == 1
164
- tv1 = Fp.cmov(tv1, Fp.ZERO, e1); // 3. tv1 = CMOV(tv1, 0, e1) # If Z * u^2 == -1, set tv1 = 0
165
- let xd = Fp.sub(Fp.ONE, tv1); // 4. xd = 1 - tv1
166
- let x1n = Fp.neg(ELL2_J); // 5. x1n = -J
167
- let tv2 = Fp.sqr(xd); // 6. tv2 = xd^2
168
- let gxd = Fp.mul(tv2, xd); // 7. gxd = tv2 * xd # gxd = xd^3
169
- let gx1 = Fp.mul(tv1, Fp.neg(ELL2_J)); // 8. gx1 = -J * tv1 # x1n + J * xd
170
- gx1 = Fp.mul(gx1, x1n); // 9. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd
171
- gx1 = Fp.add(gx1, tv2); // 10. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2
172
- gx1 = Fp.mul(gx1, x1n); // 11. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2
173
- let tv3 = Fp.sqr(gxd); // 12. tv3 = gxd^2
174
- tv2 = Fp.mul(gx1, gxd); // 13. tv2 = gx1 * gxd # gx1 * gxd
175
- tv3 = Fp.mul(tv3, tv2); // 14. tv3 = tv3 * tv2 # gx1 * gxd^3
176
- let y1 = Fp.pow(tv3, ELL2_C1); // 15. y1 = tv3^c1 # (gx1 * gxd^3)^((p - 3) / 4)
177
- y1 = Fp.mul(y1, tv2); // 16. y1 = y1 * tv2 # gx1 * gxd * (gx1 * gxd^3)^((p - 3) / 4)
178
- let x2n = Fp.mul(x1n, Fp.neg(tv1)); // 17. x2n = -tv1 * x1n # x2 = x2n / xd = -1 * u^2 * x1n / xd
179
- let y2 = Fp.mul(y1, u); // 18. y2 = y1 * u
180
- y2 = Fp.cmov(y2, Fp.ZERO, e1); // 19. y2 = CMOV(y2, 0, e1)
181
- tv2 = Fp.sqr(y1); // 20. tv2 = y1^2
182
- tv2 = Fp.mul(tv2, gxd); // 21. tv2 = tv2 * gxd
183
- let e2 = Fp.eql(tv2, gx1); // 22. e2 = tv2 == gx1
184
- let xn = Fp.cmov(x2n, x1n, e2); // 23. xn = CMOV(x2n, x1n, e2) # If e2, x = x1, else x = x2
185
- let y = Fp.cmov(y2, y1, e2); // 24. y = CMOV(y2, y1, e2) # If e2, y = y1, else y = y2
186
- let e3 = Fp.isOdd(y); // 25. e3 = sgn0(y) == 1 # Fix sign of y
187
- y = Fp.cmov(y, Fp.neg(y), e2 !== e3); // 26. y = CMOV(y, -y, e2 XOR e3)
188
- return { xn, xd, yn: y, yd: Fp.ONE }; // 27. return (xn, xd, y, 1)
189
- }
190
- function map_to_curve_elligator2_edwards448(u) {
191
- let { xn, xd, yn, yd } = map_to_curve_elligator2_curve448(u); // 1. (xn, xd, yn, yd) = map_to_curve_elligator2_curve448(u)
192
- let xn2 = Fp.sqr(xn); // 2. xn2 = xn^2
193
- let xd2 = Fp.sqr(xd); // 3. xd2 = xd^2
194
- let xd4 = Fp.sqr(xd2); // 4. xd4 = xd2^2
195
- let yn2 = Fp.sqr(yn); // 5. yn2 = yn^2
196
- let yd2 = Fp.sqr(yd); // 6. yd2 = yd^2
197
- let xEn = Fp.sub(xn2, xd2); // 7. xEn = xn2 - xd2
198
- let tv2 = Fp.sub(xEn, xd2); // 8. tv2 = xEn - xd2
199
- xEn = Fp.mul(xEn, xd2); // 9. xEn = xEn * xd2
200
- xEn = Fp.mul(xEn, yd); // 10. xEn = xEn * yd
201
- xEn = Fp.mul(xEn, yn); // 11. xEn = xEn * yn
202
- xEn = Fp.mul(xEn, _4n); // 12. xEn = xEn * 4
203
- tv2 = Fp.mul(tv2, xn2); // 13. tv2 = tv2 * xn2
204
- tv2 = Fp.mul(tv2, yd2); // 14. tv2 = tv2 * yd2
205
- let tv3 = Fp.mul(yn2, _4n); // 15. tv3 = 4 * yn2
206
- let tv1 = Fp.add(tv3, yd2); // 16. tv1 = tv3 + yd2
207
- tv1 = Fp.mul(tv1, xd4); // 17. tv1 = tv1 * xd4
208
- let xEd = Fp.add(tv1, tv2); // 18. xEd = tv1 + tv2
209
- tv2 = Fp.mul(tv2, xn); // 19. tv2 = tv2 * xn
210
- let tv4 = Fp.mul(xn, xd4); // 20. tv4 = xn * xd4
211
- let yEn = Fp.sub(tv3, yd2); // 21. yEn = tv3 - yd2
212
- yEn = Fp.mul(yEn, tv4); // 22. yEn = yEn * tv4
213
- yEn = Fp.sub(yEn, tv2); // 23. yEn = yEn - tv2
214
- tv1 = Fp.add(xn2, xd2); // 24. tv1 = xn2 + xd2
215
- tv1 = Fp.mul(tv1, xd2); // 25. tv1 = tv1 * xd2
216
- tv1 = Fp.mul(tv1, xd); // 26. tv1 = tv1 * xd
217
- tv1 = Fp.mul(tv1, yn2); // 27. tv1 = tv1 * yn2
218
- tv1 = Fp.mul(tv1, BigInt(-2)); // 28. tv1 = -2 * tv1
219
- let yEd = Fp.add(tv2, tv1); // 29. yEd = tv2 + tv1
220
- tv4 = Fp.mul(tv4, yd2); // 30. tv4 = tv4 * yd2
221
- yEd = Fp.add(yEd, tv4); // 31. yEd = yEd + tv4
222
- tv1 = Fp.mul(xEd, yEd); // 32. tv1 = xEd * yEd
223
- let e = Fp.eql(tv1, Fp.ZERO); // 33. e = tv1 == 0
224
- xEn = Fp.cmov(xEn, Fp.ZERO, e); // 34. xEn = CMOV(xEn, 0, e)
225
- xEd = Fp.cmov(xEd, Fp.ONE, e); // 35. xEd = CMOV(xEd, 1, e)
226
- yEn = Fp.cmov(yEn, Fp.ONE, e); // 36. yEn = CMOV(yEn, 1, e)
227
- yEd = Fp.cmov(yEd, Fp.ONE, e); // 37. yEd = CMOV(yEd, 1, e)
228
- const inv = FpInvertBatch(Fp, [xEd, yEd], true); // batch division
229
- return { x: Fp.mul(xEn, inv[0]), y: Fp.mul(yEn, inv[1]) }; // 38. return (xEn, xEd, yEn, yEd)
230
- }
231
- /** Hashing / encoding to ed448 points / field. RFC 9380 methods. */
232
- export const ed448_hasher = /* @__PURE__ */ (() => createHasher(ed448.Point, (scalars) => map_to_curve_elligator2_edwards448(scalars[0]), {
233
- DST: 'edwards448_XOF:SHAKE256_ELL2_RO_',
234
- encodeDST: 'edwards448_XOF:SHAKE256_ELL2_NU_',
235
- p: Fp.ORDER,
236
- m: 1,
237
- k: 224,
238
- expand: 'xof',
239
- hash: shake256,
240
- }))();
241
- // 1-d
242
- const ONE_MINUS_D = /* @__PURE__ */ BigInt('39082');
243
- // 1-2d
244
- const ONE_MINUS_TWO_D = /* @__PURE__ */ BigInt('78163');
245
- // √(-d)
246
- const SQRT_MINUS_D = /* @__PURE__ */ BigInt('98944233647732219769177004876929019128417576295529901074099889598043702116001257856802131563896515373927712232092845883226922417596214');
247
- // 1 / √(-d)
248
- const INVSQRT_MINUS_D = /* @__PURE__ */ BigInt('315019913931389607337177038330951043522456072897266928557328499619017160722351061360252776265186336876723201881398623946864393857820716');
249
- // Calculates 1/√(number)
250
- const invertSqrt = (number) => uvRatio(_1n, number);
251
- const MAX_448B = /* @__PURE__ */ BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');
252
- const bytes448ToNumberLE = (bytes) => Fp.create(bytesToNumberLE(bytes) & MAX_448B);
253
- /**
254
- * Elligator map for hash-to-curve of decaf448.
255
- * Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-C)
256
- * and [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-element-derivation-2).
257
- */
258
- function calcElligatorDecafMap(r0) {
259
- const { d } = ed448_CURVE;
260
- const P = Fp.ORDER;
261
- const mod = (n) => Fp.create(n);
262
- const r = mod(-(r0 * r0)); // 1
263
- const u0 = mod(d * (r - _1n)); // 2
264
- const u1 = mod((u0 + _1n) * (u0 - r)); // 3
265
- const { isValid: was_square, value: v } = uvRatio(ONE_MINUS_TWO_D, mod((r + _1n) * u1)); // 4
266
- let v_prime = v; // 5
267
- if (!was_square)
268
- v_prime = mod(r0 * v);
269
- let sgn = _1n; // 6
270
- if (!was_square)
271
- sgn = mod(-_1n);
272
- const s = mod(v_prime * (r + _1n)); // 7
273
- let s_abs = s;
274
- if (isNegativeLE(s, P))
275
- s_abs = mod(-s);
276
- const s2 = s * s;
277
- const W0 = mod(s_abs * _2n); // 8
278
- const W1 = mod(s2 + _1n); // 9
279
- const W2 = mod(s2 - _1n); // 10
280
- const W3 = mod(v_prime * s * (r - _1n) * ONE_MINUS_TWO_D + sgn); // 11
281
- return new ed448.Point(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));
282
- }
283
- function decaf448_map(bytes) {
284
- abytes(bytes, 112);
285
- const r1 = bytes448ToNumberLE(bytes.slice(0, 56));
286
- const R1 = calcElligatorDecafMap(r1);
287
- const r2 = bytes448ToNumberLE(bytes.slice(56, 112));
288
- const R2 = calcElligatorDecafMap(r2);
289
- return new _DecafPoint(R1.add(R2));
290
- }
291
- /**
292
- * Each ed448/ExtendedPoint has 4 different equivalent points. This can be
293
- * a source of bugs for protocols like ring signatures. Decaf was created to solve this.
294
- * Decaf point operates in X:Y:Z:T extended coordinates like ExtendedPoint,
295
- * but it should work in its own namespace: do not combine those two.
296
- * See [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).
297
- */
298
- class _DecafPoint extends PrimeEdwardsPoint {
299
- constructor(ep) {
300
- super(ep);
301
- }
302
- static fromAffine(ap) {
303
- return new _DecafPoint(ed448.Point.fromAffine(ap));
304
- }
305
- assertSame(other) {
306
- if (!(other instanceof _DecafPoint))
307
- throw new Error('DecafPoint expected');
308
- }
309
- init(ep) {
310
- return new _DecafPoint(ep);
311
- }
312
- /** @deprecated use `import { decaf448_hasher } from '@noble/curves/ed448.js';` */
313
- static hashToCurve(hex) {
314
- return decaf448_map(ensureBytes('decafHash', hex, 112));
315
- }
316
- static fromBytes(bytes) {
317
- abytes(bytes, 56);
318
- const { d } = ed448_CURVE;
319
- const P = Fp.ORDER;
320
- const mod = (n) => Fp.create(n);
321
- const s = bytes448ToNumberLE(bytes);
322
- // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.
323
- // 2. Check that s is non-negative, or else abort
324
- if (!equalBytes(numberToBytesLE(s, 56), bytes) || isNegativeLE(s, P))
325
- throw new Error('invalid decaf448 encoding 1');
326
- const s2 = mod(s * s); // 1
327
- const u1 = mod(_1n + s2); // 2
328
- const u1sq = mod(u1 * u1);
329
- const u2 = mod(u1sq - _4n * d * s2); // 3
330
- const { isValid, value: invsqrt } = invertSqrt(mod(u2 * u1sq)); // 4
331
- let u3 = mod((s + s) * invsqrt * u1 * SQRT_MINUS_D); // 5
332
- if (isNegativeLE(u3, P))
333
- u3 = mod(-u3);
334
- const x = mod(u3 * invsqrt * u2 * INVSQRT_MINUS_D); // 6
335
- const y = mod((_1n - s2) * invsqrt * u1); // 7
336
- const t = mod(x * y); // 8
337
- if (!isValid)
338
- throw new Error('invalid decaf448 encoding 2');
339
- return new _DecafPoint(new ed448.Point(x, y, _1n, t));
340
- }
341
- /**
342
- * Converts decaf-encoded string to decaf point.
343
- * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode-2).
344
- * @param hex Decaf-encoded 56 bytes. Not every 56-byte string is valid decaf encoding
345
- */
346
- static fromHex(hex) {
347
- return _DecafPoint.fromBytes(ensureBytes('decafHex', hex, 56));
348
- }
349
- /** @deprecated use `import { pippenger } from '@noble/curves/abstract/curve.js';` */
350
- static msm(points, scalars) {
351
- return pippenger(_DecafPoint, Fn, points, scalars);
352
- }
353
- /**
354
- * Encodes decaf point to Uint8Array.
355
- * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode-2).
356
- */
357
- toBytes() {
358
- const { X, Z, T } = this.ep;
359
- const P = Fp.ORDER;
360
- const mod = (n) => Fp.create(n);
361
- const u1 = mod(mod(X + T) * mod(X - T)); // 1
362
- const x2 = mod(X * X);
363
- const { value: invsqrt } = invertSqrt(mod(u1 * ONE_MINUS_D * x2)); // 2
364
- let ratio = mod(invsqrt * u1 * SQRT_MINUS_D); // 3
365
- if (isNegativeLE(ratio, P))
366
- ratio = mod(-ratio);
367
- const u2 = mod(INVSQRT_MINUS_D * ratio * Z - T); // 4
368
- let s = mod(ONE_MINUS_D * invsqrt * X * u2); // 5
369
- if (isNegativeLE(s, P))
370
- s = mod(-s);
371
- return numberToBytesLE(s, 56);
372
- }
373
- /**
374
- * Compare one point to another.
375
- * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals-2).
376
- */
377
- equals(other) {
378
- this.assertSame(other);
379
- const { X: X1, Y: Y1 } = this.ep;
380
- const { X: X2, Y: Y2 } = other.ep;
381
- const mod = (n) => Fp.create(n);
382
- // (x1 * y2 == y1 * x2)
383
- return mod(X1 * Y2) === mod(Y1 * X2);
384
- }
385
- is0() {
386
- return this.equals(_DecafPoint.ZERO);
387
- }
388
- }
389
- // The following gymnastics is done because typescript strips comments otherwise
390
- // prettier-ignore
391
- _DecafPoint.BASE =
392
- /* @__PURE__ */ (() => new _DecafPoint(ed448.Point.BASE).multiplyUnsafe(_2n))();
393
- // prettier-ignore
394
- _DecafPoint.ZERO =
395
- /* @__PURE__ */ (() => new _DecafPoint(ed448.Point.ZERO))();
396
- // prettier-ignore
397
- _DecafPoint.Fp =
398
- /* @__PURE__ */ (() => Fp)();
399
- // prettier-ignore
400
- _DecafPoint.Fn =
401
- /* @__PURE__ */ (() => Fn)();
402
- export const decaf448 = { Point: _DecafPoint };
403
- /** Hashing to decaf448 points / field. RFC 9380 methods. */
404
- export const decaf448_hasher = {
405
- hashToCurve(msg, options) {
406
- const DST = options?.DST || 'decaf448_XOF:SHAKE256_D448MAP_RO_';
407
- return decaf448_map(expand_message_xof(msg, DST, 112, 224, shake256));
408
- },
409
- hashToScalar(msg, options = { DST: _DST_scalar }) {
410
- return Fn.create(bytesToNumberLE(expand_message_xof(msg, options.DST, 64, 256, shake256)));
411
- },
412
- };
413
- // export const decaf448_oprf: OPRF = createORPF({
414
- // name: 'decaf448-SHAKE256',
415
- // Point: DecafPoint,
416
- // hash: (msg: Uint8Array) => shake256(msg, { dkLen: 64 }),
417
- // hashToGroup: decaf448_hasher.hashToCurve,
418
- // hashToScalar: decaf448_hasher.hashToScalar,
419
- // });
420
- /**
421
- * Weird / bogus points, useful for debugging.
422
- * Unlike ed25519, there is no ed448 generator point which can produce full T subgroup.
423
- * Instead, there is a Klein four-group, which spans over 2 independent 2-torsion points:
424
- * (0, 1), (0, -1), (-1, 0), (1, 0).
425
- */
426
- export const ED448_TORSION_SUBGROUP = [
427
- '010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
428
- 'fefffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffff00',
429
- '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
430
- '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080',
431
- ];
432
- /** @deprecated use `decaf448.Point` */
433
- export const DecafPoint = _DecafPoint;
434
- /** @deprecated use `import { ed448_hasher } from '@noble/curves/ed448.js';` */
435
- export const hashToCurve = /* @__PURE__ */ (() => ed448_hasher.hashToCurve)();
436
- /** @deprecated use `import { ed448_hasher } from '@noble/curves/ed448.js';` */
437
- export const encodeToCurve = /* @__PURE__ */ (() => ed448_hasher.encodeToCurve)();
438
- /** @deprecated use `import { decaf448_hasher } from '@noble/curves/ed448.js';` */
439
- export const hashToDecaf448 = /* @__PURE__ */ (() => decaf448_hasher.hashToCurve)();
440
- /** @deprecated use `import { decaf448_hasher } from '@noble/curves/ed448.js';` */
441
- export const hash_to_decaf448 = /* @__PURE__ */ (() => decaf448_hasher.hashToCurve)();
442
- /** @deprecated use `ed448.utils.toMontgomery` */
443
- export function edwardsToMontgomeryPub(edwardsPub) {
444
- return ed448.utils.toMontgomery(ensureBytes('pub', edwardsPub));
445
- }
446
- /** @deprecated use `ed448.utils.toMontgomery` */
447
- export const edwardsToMontgomery = edwardsToMontgomeryPub;
448
- //# sourceMappingURL=ed448.js.map
package/esm/ed448.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ed448.js","sourceRoot":"","sources":["../src/ed448.ts"],"names":[],"mappings":"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"}
package/esm/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/esm/index.js DELETED
@@ -1,17 +0,0 @@
1
- /**
2
- * Audited & minimal JS implementation of elliptic curve cryptography.
3
- * @module
4
- * @example
5
- ```js
6
- import { secp256k1, schnorr } from '@noble/curves/secp256k1.js';
7
- import { ed25519, ed25519ph, ed25519ctx, x25519, RistrettoPoint } from '@noble/curves/ed25519.js';
8
- import { ed448, ed448ph, ed448ctx, x448 } from '@noble/curves/ed448.js';
9
- import { p256, p384, p521 } from '@noble/curves/nist.js';
10
- import { bls12_381 } from '@noble/curves/bls12-381.js';
11
- import { bn254 } from '@noble/curves/bn254.js';
12
- import { bytesToHex, hexToBytes, concatBytes, utf8ToBytes } from '@noble/curves/abstract/utils.js';
13
- ```
14
- */
15
- throw new Error('root module cannot be imported: import submodules instead. Check out README');
16
- export {};
17
- //# sourceMappingURL=index.js.map
package/esm/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC"}
package/esm/jubjub.d.ts DELETED
@@ -1,12 +0,0 @@
1
- /**
2
- * @deprecated
3
- * @module
4
- */
5
- import { jubjub_findGroupHash, jubjub_groupHash, jubjub as jubjubn } from './misc.ts';
6
- /** @deprecated use `import { jubjub } from '@noble/curves/misc.js';` */
7
- export declare const jubjub: typeof jubjubn;
8
- /** @deprecated use `import { jubjub_findGroupHash } from '@noble/curves/misc.js';` */
9
- export declare const findGroupHash: typeof jubjub_findGroupHash;
10
- /** @deprecated use `import { jubjub_groupHash } from '@noble/curves/misc.js';` */
11
- export declare const groupHash: typeof jubjub_groupHash;
12
- //# sourceMappingURL=jubjub.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jubjub.d.ts","sourceRoot":"","sources":["../src/jubjub.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtF,wEAAwE;AACxE,eAAO,MAAM,MAAM,EAAE,OAAO,OAAiB,CAAC;AAC9C,sFAAsF;AACtF,eAAO,MAAM,aAAa,EAAE,OAAO,oBAA2C,CAAC;AAC/E,kFAAkF;AAClF,eAAO,MAAM,SAAS,EAAE,OAAO,gBAAmC,CAAC"}
package/esm/jubjub.js DELETED
@@ -1,12 +0,0 @@
1
- /**
2
- * @deprecated
3
- * @module
4
- */
5
- import { jubjub_findGroupHash, jubjub_groupHash, jubjub as jubjubn } from "./misc.js";
6
- /** @deprecated use `import { jubjub } from '@noble/curves/misc.js';` */
7
- export const jubjub = jubjubn;
8
- /** @deprecated use `import { jubjub_findGroupHash } from '@noble/curves/misc.js';` */
9
- export const findGroupHash = jubjub_findGroupHash;
10
- /** @deprecated use `import { jubjub_groupHash } from '@noble/curves/misc.js';` */
11
- export const groupHash = jubjub_groupHash;
12
- //# sourceMappingURL=jubjub.js.map
package/esm/jubjub.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"jubjub.js","sourceRoot":"","sources":["../src/jubjub.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtF,wEAAwE;AACxE,MAAM,CAAC,MAAM,MAAM,GAAmB,OAAO,CAAC;AAC9C,sFAAsF;AACtF,MAAM,CAAC,MAAM,aAAa,GAAgC,oBAAoB,CAAC;AAC/E,kFAAkF;AAClF,MAAM,CAAC,MAAM,SAAS,GAA4B,gBAAgB,CAAC"}
package/esm/misc.d.ts DELETED
@@ -1,19 +0,0 @@
1
- import { type CurveFn, type EdwardsPoint } from './abstract/edwards.ts';
2
- import { type CurveFn as WCurveFn } from './abstract/weierstrass.ts';
3
- /** Curve over scalar field of bls12-381. jubjub Fp = bls n */
4
- export declare const jubjub: CurveFn;
5
- /** Curve over scalar field of bn254. babyjubjub Fp = bn254 n */
6
- export declare const babyjubjub: CurveFn;
7
- export declare function jubjub_groupHash(tag: Uint8Array, personalization: Uint8Array): EdwardsPoint;
8
- export declare function jubjub_findGroupHash(m: Uint8Array, personalization: Uint8Array): EdwardsPoint;
9
- export declare const pasta_p: bigint;
10
- export declare const pasta_q: bigint;
11
- /**
12
- * @deprecated
13
- */
14
- export declare const pallas: WCurveFn;
15
- /**
16
- * @deprecated
17
- */
18
- export declare const vesta: WCurveFn;
19
- //# sourceMappingURL=misc.d.ts.map
package/esm/misc.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,KAAK,OAAO,EAEZ,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAe,KAAK,OAAO,IAAI,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAgBlF,8DAA8D;AAC9D,eAAO,MAAM,MAAM,EAAE,OAInB,CAAC;AAWH,gEAAgE;AAChE,eAAO,MAAM,UAAU,EAAE,OAIvB,CAAC;AAOH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,GAAG,YAAY,CAU3F;AAKD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,GAAG,YAAY,CAW7F;AAID,eAAO,MAAM,OAAO,EAAE,MAErB,CAAC;AACF,eAAO,MAAM,OAAO,EAAE,MAErB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,QASnB,CAAC;AACH;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,QASlB,CAAC"}