@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/ed25519.js DELETED
@@ -1,467 +0,0 @@
1
- /**
2
- * ed25519 Twisted Edwards curve with following addons:
3
- * - X25519 ECDH
4
- * - Ristretto cofactor elimination
5
- * - Elligator hash-to-group / point indistinguishability
6
- * @module
7
- */
8
- /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
9
- import { sha512 } from '@noble/hashes/sha2.js';
10
- import { abytes, concatBytes, utf8ToBytes } from '@noble/hashes/utils.js';
11
- import { pippenger } from "./abstract/curve.js";
12
- import { PrimeEdwardsPoint, twistedEdwards, } from "./abstract/edwards.js";
13
- import { _DST_scalar, createHasher, expand_message_xmd, } from "./abstract/hash-to-curve.js";
14
- import { Field, FpInvertBatch, FpSqrtEven, isNegativeLE, mod, pow2, } from "./abstract/modular.js";
15
- import { montgomery } from "./abstract/montgomery.js";
16
- import { bytesToNumberLE, ensureBytes, equalBytes, numberToBytesLE } from "./utils.js";
17
- // prettier-ignore
18
- const _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);
19
- // prettier-ignore
20
- const _5n = BigInt(5), _8n = BigInt(8);
21
- // 2n**255n-19n
22
- const ed25519_CURVE_p = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed');
23
- // P = 2n**255n - 19n
24
- // N = 2n**252n + 27742317777372353535851937790883648493n
25
- // a = Fp.create(BigInt(-1))
26
- // d = -121665/121666 a.k.a. Fp.neg(121665 * Fp.inv(121666))
27
- const ed25519_CURVE = {
28
- p: ed25519_CURVE_p,
29
- n: BigInt('0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed'),
30
- h: _8n,
31
- a: BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec'),
32
- d: BigInt('0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3'),
33
- Gx: BigInt('0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a'),
34
- Gy: BigInt('0x6666666666666666666666666666666666666666666666666666666666666658'),
35
- };
36
- function ed25519_pow_2_252_3(x) {
37
- // prettier-ignore
38
- const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);
39
- const P = ed25519_CURVE_p;
40
- const x2 = (x * x) % P;
41
- const b2 = (x2 * x) % P; // x^3, 11
42
- const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111
43
- const b5 = (pow2(b4, _1n, P) * x) % P; // x^31
44
- const b10 = (pow2(b5, _5n, P) * b5) % P;
45
- const b20 = (pow2(b10, _10n, P) * b10) % P;
46
- const b40 = (pow2(b20, _20n, P) * b20) % P;
47
- const b80 = (pow2(b40, _40n, P) * b40) % P;
48
- const b160 = (pow2(b80, _80n, P) * b80) % P;
49
- const b240 = (pow2(b160, _80n, P) * b80) % P;
50
- const b250 = (pow2(b240, _10n, P) * b10) % P;
51
- const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;
52
- // ^ To pow to (p+3)/8, multiply it by x.
53
- return { pow_p_5_8, b2 };
54
- }
55
- function adjustScalarBytes(bytes) {
56
- // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,
57
- // set the three least significant bits of the first byte
58
- bytes[0] &= 248; // 0b1111_1000
59
- // and the most significant bit of the last to zero,
60
- bytes[31] &= 127; // 0b0111_1111
61
- // set the second most significant bit of the last byte to 1
62
- bytes[31] |= 64; // 0b0100_0000
63
- return bytes;
64
- }
65
- // √(-1) aka √(a) aka 2^((p-1)/4)
66
- // Fp.sqrt(Fp.neg(1))
67
- const ED25519_SQRT_M1 = /* @__PURE__ */ BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');
68
- // sqrt(u/v)
69
- function uvRatio(u, v) {
70
- const P = ed25519_CURVE_p;
71
- const v3 = mod(v * v * v, P); // v³
72
- const v7 = mod(v3 * v3 * v, P); // v⁷
73
- // (p+3)/8 and (p-5)/8
74
- const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;
75
- let x = mod(u * v3 * pow, P); // (uv³)(uv⁷)^(p-5)/8
76
- const vx2 = mod(v * x * x, P); // vx²
77
- const root1 = x; // First root candidate
78
- const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate
79
- const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root
80
- const useRoot2 = vx2 === mod(-u, P); // If vx² = -u, set x <-- x * 2^((p-1)/4)
81
- const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx² = -u√(-1)
82
- if (useRoot1)
83
- x = root1;
84
- if (useRoot2 || noRoot)
85
- x = root2; // We return root2 anyway, for const-time
86
- if (isNegativeLE(x, P))
87
- x = mod(-x, P);
88
- return { isValid: useRoot1 || useRoot2, value: x };
89
- }
90
- const Fp = /* @__PURE__ */ (() => Field(ed25519_CURVE.p, { isLE: true }))();
91
- const Fn = /* @__PURE__ */ (() => Field(ed25519_CURVE.n, { isLE: true }))();
92
- const ed25519Defaults = /* @__PURE__ */ (() => ({
93
- ...ed25519_CURVE,
94
- Fp,
95
- hash: sha512,
96
- adjustScalarBytes,
97
- // dom2
98
- // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.
99
- // Constant-time, u/√v
100
- uvRatio,
101
- }))();
102
- /**
103
- * ed25519 curve with EdDSA signatures.
104
- * @example
105
- * import { ed25519 } from '@noble/curves/ed25519';
106
- * const { secretKey, publicKey } = ed25519.keygen();
107
- * const msg = new TextEncoder().encode('hello');
108
- * const sig = ed25519.sign(msg, priv);
109
- * ed25519.verify(sig, msg, pub); // Default mode: follows ZIP215
110
- * ed25519.verify(sig, msg, pub, { zip215: false }); // RFC8032 / FIPS 186-5
111
- */
112
- export const ed25519 = /* @__PURE__ */ (() => twistedEdwards(ed25519Defaults))();
113
- function ed25519_domain(data, ctx, phflag) {
114
- if (ctx.length > 255)
115
- throw new Error('Context is too big');
116
- return concatBytes(utf8ToBytes('SigEd25519 no Ed25519 collisions'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);
117
- }
118
- /** Context of ed25519. Uses context for domain separation. */
119
- export const ed25519ctx = /* @__PURE__ */ (() => twistedEdwards({
120
- ...ed25519Defaults,
121
- domain: ed25519_domain,
122
- }))();
123
- /** Prehashed version of ed25519. Accepts already-hashed messages in sign() and verify(). */
124
- export const ed25519ph = /* @__PURE__ */ (() => twistedEdwards(Object.assign({}, ed25519Defaults, {
125
- domain: ed25519_domain,
126
- prehash: sha512,
127
- })))();
128
- /**
129
- * ECDH using curve25519 aka x25519.
130
- * @example
131
- * import { x25519 } from '@noble/curves/ed25519';
132
- * const priv = 'a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4';
133
- * const pub = 'e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c';
134
- * x25519.getSharedSecret(priv, pub) === x25519.scalarMult(priv, pub); // aliases
135
- * x25519.getPublicKey(priv) === x25519.scalarMultBase(priv);
136
- * x25519.getPublicKey(x25519.utils.randomSecretKey());
137
- */
138
- export const x25519 = /* @__PURE__ */ (() => {
139
- const P = ed25519.CURVE.Fp.ORDER;
140
- return montgomery({
141
- P,
142
- type: 'x25519',
143
- powPminus2: (x) => {
144
- // x^(p-2) aka x^(2^255-21)
145
- const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);
146
- return mod(pow2(pow_p_5_8, _3n, P) * b2, P);
147
- },
148
- adjustScalarBytes,
149
- });
150
- })();
151
- // Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)
152
- // NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since
153
- // SageMath returns different root first and everything falls apart
154
- const ELL2_C1 = /* @__PURE__ */ (() => (Fp.ORDER + _3n) / _8n)(); // 1. c1 = (q + 3) / 8 # Integer arithmetic
155
- const ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1
156
- const ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)
157
- // prettier-ignore
158
- function map_to_curve_elligator2_curve25519(u) {
159
- const ELL2_C4 = (Fp.ORDER - _5n) / _8n; // 4. c4 = (q - 5) / 8 # Integer arithmetic
160
- const ELL2_J = BigInt(486662);
161
- let tv1 = Fp.sqr(u); // 1. tv1 = u^2
162
- tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1
163
- let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not
164
- let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)
165
- let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2
166
- let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3
167
- let gx1 = Fp.mul(tv1, ELL2_J); // 7. gx1 = J * tv1 # x1n + J * xd
168
- gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd
169
- gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2
170
- gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2
171
- let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2
172
- tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4
173
- tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3
174
- tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3
175
- tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7
176
- let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)
177
- y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)
178
- let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3
179
- tv2 = Fp.sqr(y11); // 19. tv2 = y11^2
180
- tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd
181
- let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1
182
- let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt
183
- let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd
184
- let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u
185
- y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2
186
- let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3
187
- let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)
188
- tv2 = Fp.sqr(y21); // 28. tv2 = y21^2
189
- tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd
190
- let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2
191
- let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt
192
- tv2 = Fp.sqr(y1); // 32. tv2 = y1^2
193
- tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd
194
- let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1
195
- let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2
196
- let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2
197
- let e4 = Fp.isOdd(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y
198
- y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)
199
- return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)
200
- }
201
- const ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0
202
- function map_to_curve_elligator2_edwards25519(u) {
203
- const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =
204
- // map_to_curve_elligator2_curve25519(u)
205
- let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd
206
- xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1
207
- let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM
208
- let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd
209
- let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)
210
- let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd
211
- let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0
212
- xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)
213
- xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)
214
- yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)
215
- yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)
216
- const [xd_inv, yd_inv] = FpInvertBatch(Fp, [xd, yd], true); // batch division
217
- return { x: Fp.mul(xn, xd_inv), y: Fp.mul(yn, yd_inv) }; // 13. return (xn, xd, yn, yd)
218
- }
219
- /** Hashing to ed25519 points / field. RFC 9380 methods. */
220
- export const ed25519_hasher = /* @__PURE__ */ (() => createHasher(ed25519.Point, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), {
221
- DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',
222
- encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',
223
- p: Fp.ORDER,
224
- m: 1,
225
- k: 128,
226
- expand: 'xmd',
227
- hash: sha512,
228
- }))();
229
- // √(-1) aka √(a) aka 2^((p-1)/4)
230
- const SQRT_M1 = ED25519_SQRT_M1;
231
- // √(ad - 1)
232
- const SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');
233
- // 1 / √(a-d)
234
- const INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');
235
- // 1-d²
236
- const ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');
237
- // (d-1)²
238
- const D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');
239
- // Calculates 1/√(number)
240
- const invertSqrt = (number) => uvRatio(_1n, number);
241
- const MAX_255B = /* @__PURE__ */ BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');
242
- const bytes255ToNumberLE = (bytes) => ed25519.Point.Fp.create(bytesToNumberLE(bytes) & MAX_255B);
243
- /**
244
- * Computes Elligator map for Ristretto255.
245
- * Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-B) and on
246
- * the [website](https://ristretto.group/formulas/elligator.html).
247
- */
248
- function calcElligatorRistrettoMap(r0) {
249
- const { d } = ed25519_CURVE;
250
- const P = Fp.ORDER;
251
- const mod = (n) => Fp.create(n);
252
- const r = mod(SQRT_M1 * r0 * r0); // 1
253
- const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2
254
- let c = BigInt(-1); // 3
255
- const D = mod((c - d * r) * mod(r + d)); // 4
256
- let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5
257
- let s_ = mod(s * r0); // 6
258
- if (!isNegativeLE(s_, P))
259
- s_ = mod(-s_);
260
- if (!Ns_D_is_sq)
261
- s = s_; // 7
262
- if (!Ns_D_is_sq)
263
- c = r; // 8
264
- const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9
265
- const s2 = s * s;
266
- const W0 = mod((s + s) * D); // 10
267
- const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11
268
- const W2 = mod(_1n - s2); // 12
269
- const W3 = mod(_1n + s2); // 13
270
- return new ed25519.Point(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));
271
- }
272
- function ristretto255_map(bytes) {
273
- abytes(bytes, 64);
274
- const r1 = bytes255ToNumberLE(bytes.subarray(0, 32));
275
- const R1 = calcElligatorRistrettoMap(r1);
276
- const r2 = bytes255ToNumberLE(bytes.subarray(32, 64));
277
- const R2 = calcElligatorRistrettoMap(r2);
278
- return new _RistrettoPoint(R1.add(R2));
279
- }
280
- /**
281
- * Wrapper over Edwards Point for ristretto255.
282
- *
283
- * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be
284
- * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.
285
- * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,
286
- * but it should work in its own namespace: do not combine those two.
287
- * See [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).
288
- */
289
- class _RistrettoPoint extends PrimeEdwardsPoint {
290
- constructor(ep) {
291
- super(ep);
292
- }
293
- static fromAffine(ap) {
294
- return new _RistrettoPoint(ed25519.Point.fromAffine(ap));
295
- }
296
- assertSame(other) {
297
- if (!(other instanceof _RistrettoPoint))
298
- throw new Error('RistrettoPoint expected');
299
- }
300
- init(ep) {
301
- return new _RistrettoPoint(ep);
302
- }
303
- /** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */
304
- static hashToCurve(hex) {
305
- return ristretto255_map(ensureBytes('ristrettoHash', hex, 64));
306
- }
307
- static fromBytes(bytes) {
308
- abytes(bytes, 32);
309
- const { a, d } = ed25519_CURVE;
310
- const P = ed25519_CURVE_p;
311
- const mod = (n) => Fp.create(n);
312
- const s = bytes255ToNumberLE(bytes);
313
- // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.
314
- // 3. Check that s is non-negative, or else abort
315
- if (!equalBytes(numberToBytesLE(s, 32), bytes) || isNegativeLE(s, P))
316
- throw new Error('invalid ristretto255 encoding 1');
317
- const s2 = mod(s * s);
318
- const u1 = mod(_1n + a * s2); // 4 (a is -1)
319
- const u2 = mod(_1n - a * s2); // 5
320
- const u1_2 = mod(u1 * u1);
321
- const u2_2 = mod(u2 * u2);
322
- const v = mod(a * d * u1_2 - u2_2); // 6
323
- const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7
324
- const Dx = mod(I * u2); // 8
325
- const Dy = mod(I * Dx * v); // 9
326
- let x = mod((s + s) * Dx); // 10
327
- if (isNegativeLE(x, P))
328
- x = mod(-x); // 10
329
- const y = mod(u1 * Dy); // 11
330
- const t = mod(x * y); // 12
331
- if (!isValid || isNegativeLE(t, P) || y === _0n)
332
- throw new Error('invalid ristretto255 encoding 2');
333
- return new _RistrettoPoint(new ed25519.Point(x, y, _1n, t));
334
- }
335
- /**
336
- * Converts ristretto-encoded string to ristretto point.
337
- * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode).
338
- * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding
339
- */
340
- static fromHex(hex) {
341
- return _RistrettoPoint.fromBytes(ensureBytes('ristrettoHex', hex, 32));
342
- }
343
- static msm(points, scalars) {
344
- return pippenger(_RistrettoPoint, ed25519.Point.Fn, points, scalars);
345
- }
346
- /**
347
- * Encodes ristretto point to Uint8Array.
348
- * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode).
349
- */
350
- toBytes() {
351
- let { X, Y, Z, T } = this.ep;
352
- const P = ed25519_CURVE_p;
353
- const mod = (n) => Fp.create(n);
354
- const u1 = mod(mod(Z + Y) * mod(Z - Y)); // 1
355
- const u2 = mod(X * Y); // 2
356
- // Square root always exists
357
- const u2sq = mod(u2 * u2);
358
- const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3
359
- const D1 = mod(invsqrt * u1); // 4
360
- const D2 = mod(invsqrt * u2); // 5
361
- const zInv = mod(D1 * D2 * T); // 6
362
- let D; // 7
363
- if (isNegativeLE(T * zInv, P)) {
364
- let _x = mod(Y * SQRT_M1);
365
- let _y = mod(X * SQRT_M1);
366
- X = _x;
367
- Y = _y;
368
- D = mod(D1 * INVSQRT_A_MINUS_D);
369
- }
370
- else {
371
- D = D2; // 8
372
- }
373
- if (isNegativeLE(X * zInv, P))
374
- Y = mod(-Y); // 9
375
- let s = mod((Z - Y) * D); // 10 (check footer's note, no sqrt(-a))
376
- if (isNegativeLE(s, P))
377
- s = mod(-s);
378
- return numberToBytesLE(s, 32); // 11
379
- }
380
- /**
381
- * Compares two Ristretto points.
382
- * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals).
383
- */
384
- equals(other) {
385
- this.assertSame(other);
386
- const { X: X1, Y: Y1 } = this.ep;
387
- const { X: X2, Y: Y2 } = other.ep;
388
- const mod = (n) => Fp.create(n);
389
- // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)
390
- const one = mod(X1 * Y2) === mod(Y1 * X2);
391
- const two = mod(Y1 * Y2) === mod(X1 * X2);
392
- return one || two;
393
- }
394
- is0() {
395
- return this.equals(_RistrettoPoint.ZERO);
396
- }
397
- }
398
- // Do NOT change syntax: the following gymnastics is done,
399
- // because typescript strips comments, which makes bundlers disable tree-shaking.
400
- // prettier-ignore
401
- _RistrettoPoint.BASE =
402
- /* @__PURE__ */ (() => new _RistrettoPoint(ed25519.Point.BASE))();
403
- // prettier-ignore
404
- _RistrettoPoint.ZERO =
405
- /* @__PURE__ */ (() => new _RistrettoPoint(ed25519.Point.ZERO))();
406
- // prettier-ignore
407
- _RistrettoPoint.Fp =
408
- /* @__PURE__ */ (() => Fp)();
409
- // prettier-ignore
410
- _RistrettoPoint.Fn =
411
- /* @__PURE__ */ (() => Fn)();
412
- export const ristretto255 = { Point: _RistrettoPoint };
413
- /** Hashing to ristretto255 points / field. RFC 9380 methods. */
414
- export const ristretto255_hasher = {
415
- hashToCurve(msg, options) {
416
- const DST = options?.DST || 'ristretto255_XMD:SHA-512_R255MAP_RO_';
417
- return ristretto255_map(expand_message_xmd(msg, DST, 64, sha512));
418
- },
419
- hashToScalar(msg, options = { DST: _DST_scalar }) {
420
- const xmd = expand_message_xmd(msg, options.DST, 64, sha512);
421
- return ristretto255.Point.Fn.create(bytesToNumberLE(xmd));
422
- },
423
- };
424
- // export const ristretto255_oprf: OPRF = createORPF({
425
- // name: 'ristretto255-SHA512',
426
- // Point: RistrettoPoint,
427
- // hash: sha512,
428
- // hashToGroup: ristretto255_hasher.hashToCurve,
429
- // hashToScalar: ristretto255_hasher.hashToScalar,
430
- // });
431
- /**
432
- * Weird / bogus points, useful for debugging.
433
- * All 8 ed25519 points of 8-torsion subgroup can be generated from the point
434
- * T = `26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05`.
435
- * ⟨T⟩ = { O, T, 2T, 3T, 4T, 5T, 6T, 7T }
436
- */
437
- export const ED25519_TORSION_SUBGROUP = [
438
- '0100000000000000000000000000000000000000000000000000000000000000',
439
- 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',
440
- '0000000000000000000000000000000000000000000000000000000000000080',
441
- '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',
442
- 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',
443
- '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',
444
- '0000000000000000000000000000000000000000000000000000000000000000',
445
- 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',
446
- ];
447
- /** @deprecated use `ed25519.utils.toMontgomery` */
448
- export function edwardsToMontgomeryPub(edwardsPub) {
449
- return ed25519.utils.toMontgomery(ensureBytes('pub', edwardsPub));
450
- }
451
- /** @deprecated use `ed25519.utils.toMontgomery` */
452
- export const edwardsToMontgomery = edwardsToMontgomeryPub;
453
- /** @deprecated use `ed25519.utils.toMontgomeryPriv` */
454
- export function edwardsToMontgomeryPriv(edwardsPriv) {
455
- return ed25519.utils.toMontgomeryPriv(ensureBytes('pub', edwardsPriv));
456
- }
457
- /** @deprecated use `ristretto255.Point` */
458
- export const RistrettoPoint = _RistrettoPoint;
459
- /** @deprecated use `import { ed25519_hasher } from '@noble/curves/ed25519.js';` */
460
- export const hashToCurve = /* @__PURE__ */ (() => ed25519_hasher.hashToCurve)();
461
- /** @deprecated use `import { ed25519_hasher } from '@noble/curves/ed25519.js';` */
462
- export const encodeToCurve = /* @__PURE__ */ (() => ed25519_hasher.encodeToCurve)();
463
- /** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */
464
- export const hashToRistretto255 = /* @__PURE__ */ (() => ristretto255_hasher.hashToCurve)();
465
- /** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */
466
- export const hash_to_ristretto255 = /* @__PURE__ */ (() => ristretto255_hasher.hashToCurve)();
467
- //# sourceMappingURL=ed25519.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ed25519.js","sourceRoot":"","sources":["../src/ed25519.ts"],"names":[],"mappings":"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"}
package/esm/ed448.d.ts DELETED
@@ -1,101 +0,0 @@
1
- import type { AffinePoint } from './abstract/curve.ts';
2
- import { PrimeEdwardsPoint, type CurveFn, type EdwardsPoint, type EdwardsPointCons } from './abstract/edwards.ts';
3
- import { type H2CHasher, type H2CHasherBase, type H2CMethod, type htfBasicOpts } from './abstract/hash-to-curve.ts';
4
- import { type IField } from './abstract/modular.ts';
5
- import { type MontgomeryECDH as XCurveFn } from './abstract/montgomery.ts';
6
- import { type Hex } from './utils.ts';
7
- /**
8
- * ed448 EdDSA curve and methods.
9
- * @example
10
- * import { ed448 } from '@noble/curves/ed448';
11
- * const { secretKey, publicKey } = ed448.keygen();
12
- * const msg = new TextEncoder().encode('hello');
13
- * const sig = ed448.sign(msg, secretKey);
14
- * const isValid = ed448.verify(sig, msg, publicKey);
15
- */
16
- export declare const ed448: CurveFn;
17
- /** Prehashed version of ed448. Accepts already-hashed messages in sign() and verify(). */
18
- export declare const ed448ph: CurveFn;
19
- /**
20
- * E448 curve, defined by NIST.
21
- * E448 != edwards448 used in ed448.
22
- * E448 is birationally equivalent to edwards448.
23
- */
24
- export declare const E448: EdwardsPointCons;
25
- /**
26
- * ECDH using curve448 aka x448.
27
- * x448 has 56-byte keys as per RFC 7748, while
28
- * ed448 has 57-byte keys as per RFC 8032.
29
- */
30
- export declare const x448: XCurveFn;
31
- /** Hashing / encoding to ed448 points / field. RFC 9380 methods. */
32
- export declare const ed448_hasher: H2CHasher<bigint>;
33
- type ExtendedPoint = EdwardsPoint;
34
- /**
35
- * Each ed448/ExtendedPoint has 4 different equivalent points. This can be
36
- * a source of bugs for protocols like ring signatures. Decaf was created to solve this.
37
- * Decaf point operates in X:Y:Z:T extended coordinates like ExtendedPoint,
38
- * but it should work in its own namespace: do not combine those two.
39
- * See [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).
40
- */
41
- declare class _DecafPoint extends PrimeEdwardsPoint<_DecafPoint> {
42
- static BASE: _DecafPoint;
43
- static ZERO: _DecafPoint;
44
- static Fp: IField<bigint>;
45
- static Fn: IField<bigint>;
46
- constructor(ep: ExtendedPoint);
47
- static fromAffine(ap: AffinePoint<bigint>): _DecafPoint;
48
- protected assertSame(other: _DecafPoint): void;
49
- protected init(ep: EdwardsPoint): _DecafPoint;
50
- /** @deprecated use `import { decaf448_hasher } from '@noble/curves/ed448.js';` */
51
- static hashToCurve(hex: Hex): _DecafPoint;
52
- static fromBytes(bytes: Uint8Array): _DecafPoint;
53
- /**
54
- * Converts decaf-encoded string to decaf point.
55
- * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode-2).
56
- * @param hex Decaf-encoded 56 bytes. Not every 56-byte string is valid decaf encoding
57
- */
58
- static fromHex(hex: Hex): _DecafPoint;
59
- /** @deprecated use `import { pippenger } from '@noble/curves/abstract/curve.js';` */
60
- static msm(points: _DecafPoint[], scalars: bigint[]): _DecafPoint;
61
- /**
62
- * Encodes decaf point to Uint8Array.
63
- * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode-2).
64
- */
65
- toBytes(): Uint8Array;
66
- /**
67
- * Compare one point to another.
68
- * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals-2).
69
- */
70
- equals(other: _DecafPoint): boolean;
71
- is0(): boolean;
72
- }
73
- export declare const decaf448: {
74
- Point: typeof _DecafPoint;
75
- };
76
- /** Hashing to decaf448 points / field. RFC 9380 methods. */
77
- export declare const decaf448_hasher: H2CHasherBase<bigint>;
78
- /**
79
- * Weird / bogus points, useful for debugging.
80
- * Unlike ed25519, there is no ed448 generator point which can produce full T subgroup.
81
- * Instead, there is a Klein four-group, which spans over 2 independent 2-torsion points:
82
- * (0, 1), (0, -1), (-1, 0), (1, 0).
83
- */
84
- export declare const ED448_TORSION_SUBGROUP: string[];
85
- type DcfHasher = (msg: Uint8Array, options: htfBasicOpts) => _DecafPoint;
86
- /** @deprecated use `decaf448.Point` */
87
- export declare const DecafPoint: typeof _DecafPoint;
88
- /** @deprecated use `import { ed448_hasher } from '@noble/curves/ed448.js';` */
89
- export declare const hashToCurve: H2CMethod<bigint>;
90
- /** @deprecated use `import { ed448_hasher } from '@noble/curves/ed448.js';` */
91
- export declare const encodeToCurve: H2CMethod<bigint>;
92
- /** @deprecated use `import { decaf448_hasher } from '@noble/curves/ed448.js';` */
93
- export declare const hashToDecaf448: DcfHasher;
94
- /** @deprecated use `import { decaf448_hasher } from '@noble/curves/ed448.js';` */
95
- export declare const hash_to_decaf448: DcfHasher;
96
- /** @deprecated use `ed448.utils.toMontgomery` */
97
- export declare function edwardsToMontgomeryPub(edwardsPub: string | Uint8Array): Uint8Array;
98
- /** @deprecated use `ed448.utils.toMontgomery` */
99
- export declare const edwardsToMontgomery: typeof edwardsToMontgomeryPub;
100
- export {};
101
- //# sourceMappingURL=ed448.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ed448.d.ts","sourceRoot":"","sources":["../src/ed448.ts"],"names":[],"mappings":"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"}