@noble/curves 1.9.0 → 1.9.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 (116) hide show
  1. package/README.md +22 -9
  2. package/abstract/curve.d.ts.map +1 -1
  3. package/abstract/curve.js +13 -4
  4. package/abstract/curve.js.map +1 -1
  5. package/abstract/edwards.d.ts.map +1 -1
  6. package/abstract/edwards.js +14 -1
  7. package/abstract/edwards.js.map +1 -1
  8. package/abstract/fft.d.ts +120 -0
  9. package/abstract/fft.d.ts.map +1 -0
  10. package/abstract/fft.js +439 -0
  11. package/abstract/fft.js.map +1 -0
  12. package/abstract/modular.d.ts +4 -6
  13. package/abstract/modular.d.ts.map +1 -1
  14. package/abstract/modular.js +107 -119
  15. package/abstract/modular.js.map +1 -1
  16. package/abstract/montgomery.d.ts +4 -9
  17. package/abstract/montgomery.d.ts.map +1 -1
  18. package/abstract/montgomery.js +70 -91
  19. package/abstract/montgomery.js.map +1 -1
  20. package/abstract/tower.js +1 -1
  21. package/abstract/tower.js.map +1 -1
  22. package/abstract/weierstrass.d.ts +27 -4
  23. package/abstract/weierstrass.d.ts.map +1 -1
  24. package/abstract/weierstrass.js +61 -42
  25. package/abstract/weierstrass.js.map +1 -1
  26. package/bls12-381.d.ts.map +1 -1
  27. package/bls12-381.js +9 -23
  28. package/bls12-381.js.map +1 -1
  29. package/ed25519.d.ts +17 -4
  30. package/ed25519.d.ts.map +1 -1
  31. package/ed25519.js +23 -12
  32. package/ed25519.js.map +1 -1
  33. package/ed448.d.ts +19 -4
  34. package/ed448.d.ts.map +1 -1
  35. package/ed448.js +41 -29
  36. package/ed448.js.map +1 -1
  37. package/esm/abstract/curve.d.ts.map +1 -1
  38. package/esm/abstract/curve.js +13 -4
  39. package/esm/abstract/curve.js.map +1 -1
  40. package/esm/abstract/edwards.d.ts.map +1 -1
  41. package/esm/abstract/edwards.js +14 -1
  42. package/esm/abstract/edwards.js.map +1 -1
  43. package/esm/abstract/fft.d.ts +120 -0
  44. package/esm/abstract/fft.d.ts.map +1 -0
  45. package/esm/abstract/fft.js +426 -0
  46. package/esm/abstract/fft.js.map +1 -0
  47. package/esm/abstract/modular.d.ts +4 -6
  48. package/esm/abstract/modular.d.ts.map +1 -1
  49. package/esm/abstract/modular.js +107 -119
  50. package/esm/abstract/modular.js.map +1 -1
  51. package/esm/abstract/montgomery.d.ts +4 -9
  52. package/esm/abstract/montgomery.d.ts.map +1 -1
  53. package/esm/abstract/montgomery.js +71 -92
  54. package/esm/abstract/montgomery.js.map +1 -1
  55. package/esm/abstract/tower.js +1 -1
  56. package/esm/abstract/tower.js.map +1 -1
  57. package/esm/abstract/weierstrass.d.ts +27 -4
  58. package/esm/abstract/weierstrass.d.ts.map +1 -1
  59. package/esm/abstract/weierstrass.js +61 -42
  60. package/esm/abstract/weierstrass.js.map +1 -1
  61. package/esm/bls12-381.d.ts.map +1 -1
  62. package/esm/bls12-381.js +9 -23
  63. package/esm/bls12-381.js.map +1 -1
  64. package/esm/ed25519.d.ts +17 -4
  65. package/esm/ed25519.d.ts.map +1 -1
  66. package/esm/ed25519.js +23 -12
  67. package/esm/ed25519.js.map +1 -1
  68. package/esm/ed448.d.ts +19 -4
  69. package/esm/ed448.d.ts.map +1 -1
  70. package/esm/ed448.js +42 -30
  71. package/esm/ed448.js.map +1 -1
  72. package/esm/jubjub.d.ts +4 -0
  73. package/esm/jubjub.d.ts.map +1 -1
  74. package/esm/jubjub.js +4 -0
  75. package/esm/jubjub.js.map +1 -1
  76. package/esm/nist.d.ts +1 -0
  77. package/esm/nist.d.ts.map +1 -1
  78. package/esm/nist.js +1 -0
  79. package/esm/nist.js.map +1 -1
  80. package/esm/pasta.d.ts +4 -0
  81. package/esm/pasta.d.ts.map +1 -1
  82. package/esm/pasta.js +4 -0
  83. package/esm/pasta.js.map +1 -1
  84. package/esm/secp256k1.d.ts.map +1 -1
  85. package/esm/secp256k1.js +3 -3
  86. package/esm/secp256k1.js.map +1 -1
  87. package/jubjub.d.ts +4 -0
  88. package/jubjub.d.ts.map +1 -1
  89. package/jubjub.js +4 -0
  90. package/jubjub.js.map +1 -1
  91. package/nist.d.ts +1 -0
  92. package/nist.d.ts.map +1 -1
  93. package/nist.js +1 -0
  94. package/nist.js.map +1 -1
  95. package/package.json +13 -4
  96. package/pasta.d.ts +4 -0
  97. package/pasta.d.ts.map +1 -1
  98. package/pasta.js +4 -0
  99. package/pasta.js.map +1 -1
  100. package/secp256k1.d.ts.map +1 -1
  101. package/secp256k1.js +3 -3
  102. package/secp256k1.js.map +1 -1
  103. package/src/abstract/curve.ts +10 -5
  104. package/src/abstract/edwards.ts +15 -1
  105. package/src/abstract/fft.ts +508 -0
  106. package/src/abstract/modular.ts +107 -115
  107. package/src/abstract/montgomery.ts +78 -110
  108. package/src/abstract/tower.ts +1 -1
  109. package/src/abstract/weierstrass.ts +93 -49
  110. package/src/bls12-381.ts +11 -27
  111. package/src/ed25519.ts +24 -12
  112. package/src/ed448.ts +84 -70
  113. package/src/jubjub.ts +4 -0
  114. package/src/nist.ts +1 -0
  115. package/src/pasta.ts +5 -1
  116. package/src/secp256k1.ts +3 -3
@@ -0,0 +1,439 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FFT = exports.FFTCore = void 0;
4
+ exports.isPowerOfTwo = isPowerOfTwo;
5
+ exports.nextPowerOfTwo = nextPowerOfTwo;
6
+ exports.reverseBits = reverseBits;
7
+ exports.log2 = log2;
8
+ exports.bitReversalInplace = bitReversalInplace;
9
+ exports.bitReversalPermutation = bitReversalPermutation;
10
+ exports.rootsOfUnity = rootsOfUnity;
11
+ exports.poly = poly;
12
+ function checkU32(n) {
13
+ // 0xff_ff_ff_ff
14
+ if (!Number.isSafeInteger(n) || n < 0 || n > 0xffffffff)
15
+ throw new Error('wrong u32 integer:' + n);
16
+ return n;
17
+ }
18
+ /** Checks if integer is in form of `1 << X` */
19
+ function isPowerOfTwo(x) {
20
+ checkU32(x);
21
+ return (x & (x - 1)) === 0 && x !== 0;
22
+ }
23
+ function nextPowerOfTwo(n) {
24
+ checkU32(n);
25
+ if (n <= 1)
26
+ return 1;
27
+ return (1 << (log2(n - 1) + 1)) >>> 0;
28
+ }
29
+ function reverseBits(n, bits) {
30
+ checkU32(n);
31
+ let reversed = 0;
32
+ for (let i = 0; i < bits; i++, n >>>= 1)
33
+ reversed = (reversed << 1) | (n & 1);
34
+ return reversed;
35
+ }
36
+ /** Similar to `bitLen(x)-1` but much faster for small integers, like indices */
37
+ function log2(n) {
38
+ checkU32(n);
39
+ return 31 - Math.clz32(n);
40
+ }
41
+ /**
42
+ * Moves lowest bit to highest position, which at first step splits
43
+ * array on even and odd indices, then it applied again to each part,
44
+ * which is core of fft
45
+ */
46
+ function bitReversalInplace(values) {
47
+ const n = values.length;
48
+ if (n < 2 || !isPowerOfTwo(n))
49
+ throw new Error('n must be a power of 2 and greater than 1. Got ' + n);
50
+ const bits = log2(n);
51
+ for (let i = 0; i < n; i++) {
52
+ const j = reverseBits(i, bits);
53
+ if (i < j) {
54
+ const tmp = values[i];
55
+ values[i] = values[j];
56
+ values[j] = tmp;
57
+ }
58
+ }
59
+ return values;
60
+ }
61
+ function bitReversalPermutation(values) {
62
+ return bitReversalInplace(values.slice());
63
+ }
64
+ const _1n = /** @__PURE__ */ BigInt(1);
65
+ function findGenerator(field) {
66
+ let G = BigInt(2);
67
+ for (; field.eql(field.pow(G, field.ORDER >> _1n), field.ONE); G++)
68
+ ;
69
+ return G;
70
+ }
71
+ /** We limit roots up to 2**31, which is a lot: 2-billion polynomimal should be rare. */
72
+ function rootsOfUnity(field, generator) {
73
+ // Factor field.ORDER-1 as oddFactor * 2^powerOfTwo
74
+ let oddFactor = field.ORDER - _1n;
75
+ let powerOfTwo = 0;
76
+ for (; (oddFactor & _1n) !== _1n; powerOfTwo++, oddFactor >>= _1n)
77
+ ;
78
+ // Find non quadratic residue
79
+ let G = generator !== undefined ? BigInt(generator) : findGenerator(field);
80
+ // Powers of generator
81
+ const omegas = new Array(powerOfTwo + 1);
82
+ omegas[powerOfTwo] = field.pow(G, oddFactor);
83
+ for (let i = powerOfTwo; i > 0; i--)
84
+ omegas[i - 1] = field.sqr(omegas[i]);
85
+ // Compute all roots of unity for powers up to maxPower
86
+ const rootsCache = [];
87
+ const checkBits = (bits) => {
88
+ checkU32(bits);
89
+ if (bits > 31 || bits > powerOfTwo)
90
+ throw new Error('rootsOfUnity: wrong bits ' + bits + ' powerOfTwo=' + powerOfTwo);
91
+ return bits;
92
+ };
93
+ const precomputeRoots = (maxPower) => {
94
+ checkBits(maxPower);
95
+ for (let power = maxPower; power >= 0; power--) {
96
+ if (rootsCache[power])
97
+ continue; // Skip if we've already computed roots for this power
98
+ const rootsAtPower = [];
99
+ for (let j = 0, cur = field.ONE; j < 2 ** power; j++, cur = field.mul(cur, omegas[power]))
100
+ rootsAtPower.push(cur);
101
+ rootsCache[power] = rootsAtPower;
102
+ }
103
+ return rootsCache[maxPower];
104
+ };
105
+ const brpCache = new Map();
106
+ const inverseCache = new Map();
107
+ // NOTE: we use bits instead of power, because power = 2**bits,
108
+ // but power is not neccesary isPowerOfTwo(power)!
109
+ return {
110
+ roots: (bits) => {
111
+ const b = checkBits(bits);
112
+ return precomputeRoots(b);
113
+ },
114
+ brp(bits) {
115
+ const b = checkBits(bits);
116
+ if (brpCache.has(b))
117
+ return brpCache.get(b);
118
+ else {
119
+ const res = bitReversalPermutation(this.roots(b));
120
+ brpCache.set(b, res);
121
+ return res;
122
+ }
123
+ },
124
+ inverse(bits) {
125
+ const b = checkBits(bits);
126
+ if (inverseCache.has(b))
127
+ return inverseCache.get(b);
128
+ else {
129
+ const res = field.invertBatch(this.roots(b));
130
+ inverseCache.set(b, res);
131
+ return res;
132
+ }
133
+ },
134
+ omega: (bits) => omegas[checkBits(bits)],
135
+ clear: () => {
136
+ rootsCache.splice(0, rootsCache.length);
137
+ brpCache.clear();
138
+ },
139
+ };
140
+ }
141
+ /**
142
+ * Constructs different flavors of FFT. radix2 implementation of low level mutating API. Flavors:
143
+ *
144
+ * - DIT (Decimation-in-Time): Bottom-Up (leaves -> root), Cool-Turkey
145
+ * - DIF (Decimation-in-Frequency): Top-Down (root -> leaves), Gentleman–Sande
146
+ *
147
+ * DIT takes brp input, returns natural output.
148
+ * DIF takes natural input, returns brp output.
149
+ *
150
+ * The output is actually identical. Time / frequence distinction is not meaningful
151
+ * for Polynomial multiplication in fields.
152
+ * Which means if protocol supports/needs brp output/inputs, then we can skip this step.
153
+ *
154
+ * Cyclic NTT: Rq = Zq[x]/(x^n-1). butterfly_DIT+loop_DIT OR butterfly_DIF+loop_DIT, roots are omega
155
+ * Negacyclic NTT: Rq = Zq[x]/(x^n+1). butterfly_DIT+loop_DIF, at least for mlkem / mldsa
156
+ */
157
+ const FFTCore = (opts, coreOpts) => {
158
+ const { add, sub, mul } = opts; // inline to butteflies
159
+ const { N, roots, dit, invertButterflies = false, skipStages = 0, brp = true } = coreOpts;
160
+ const bits = log2(N);
161
+ if (!isPowerOfTwo(N))
162
+ throw new Error('FFT: Polynomial size should be power of two');
163
+ const isDit = dit !== invertButterflies;
164
+ isDit;
165
+ return (values) => {
166
+ if (values.length !== N)
167
+ throw new Error('FFT: wrong Polynomial length');
168
+ if (dit && brp)
169
+ bitReversalInplace(values);
170
+ for (let i = 0, g = 1; i < bits - skipStages; i++) {
171
+ // For each stage s (sub-FFT length m = 2^s)
172
+ const s = dit ? i + 1 + skipStages : bits - i;
173
+ const m = 1 << s;
174
+ const m2 = m >> 1;
175
+ const stride = N >> s;
176
+ // Loop over each subarray of length m
177
+ for (let k = 0; k < N; k += m) {
178
+ // Loop over each butterfly within the subarray
179
+ for (let j = 0, grp = g++; j < m2; j++) {
180
+ const rootPos = invertButterflies ? (dit ? N - grp : grp) : j * stride;
181
+ const i0 = k + j;
182
+ const i1 = k + j + m2;
183
+ const omega = roots[rootPos];
184
+ const b = values[i1];
185
+ const a = values[i0];
186
+ // Inlining gives us 10% perf in kyber vs functions
187
+ if (isDit) {
188
+ const t = mul(b, omega); // Standard DIT butterfly
189
+ values[i0] = add(a, t);
190
+ values[i1] = sub(a, t);
191
+ }
192
+ else if (invertButterflies) {
193
+ values[i0] = add(b, a); // DIT loop + inverted butterflies (Kyber decode)
194
+ values[i1] = mul(sub(b, a), omega);
195
+ }
196
+ else {
197
+ values[i0] = add(a, b); // Standard DIF butterfly
198
+ values[i1] = mul(sub(a, b), omega);
199
+ }
200
+ }
201
+ }
202
+ }
203
+ if (!dit && brp)
204
+ bitReversalInplace(values);
205
+ return values;
206
+ };
207
+ };
208
+ exports.FFTCore = FFTCore;
209
+ /**
210
+ * NTT aka FFT over finite field (NOT over complex numbers).
211
+ * Naming mirrors other libraries.
212
+ */
213
+ const FFT = (roots, opts) => {
214
+ const getLoop = (N, roots, brpInput = false, brpOutput = false) => {
215
+ if (brpInput && brpOutput) {
216
+ // we cannot optimize this case, but lets support it anyway
217
+ return (values) => (0, exports.FFTCore)(opts, { N, roots, dit: false, brp: false })(bitReversalInplace(values));
218
+ }
219
+ if (brpInput)
220
+ return (0, exports.FFTCore)(opts, { N, roots, dit: true, brp: false });
221
+ if (brpOutput)
222
+ return (0, exports.FFTCore)(opts, { N, roots, dit: false, brp: false });
223
+ return (0, exports.FFTCore)(opts, { N, roots, dit: true, brp: true }); // all natural
224
+ };
225
+ return {
226
+ direct(values, brpInput = false, brpOutput = false) {
227
+ const N = values.length;
228
+ if (!isPowerOfTwo(N))
229
+ throw new Error('FFT: Polynomial size should be power of two');
230
+ const bits = log2(N);
231
+ return getLoop(N, roots.roots(bits), brpInput, brpOutput)(values.slice());
232
+ },
233
+ inverse(values, brpInput = false, brpOutput = false) {
234
+ const N = values.length;
235
+ const bits = log2(N);
236
+ const res = getLoop(N, roots.inverse(bits), brpInput, brpOutput)(values.slice());
237
+ const ivm = opts.inv(BigInt(values.length)); // scale
238
+ // we can get brp output if we use dif instead of dit!
239
+ for (let i = 0; i < res.length; i++)
240
+ res[i] = opts.mul(res[i], ivm);
241
+ // Allows to re-use non-inverted roots, but is VERY fragile
242
+ // return [res[0]].concat(res.slice(1).reverse());
243
+ // inverse calculated as pow(-1), which transforms into ω^{-kn} (-> reverses indices)
244
+ return res;
245
+ },
246
+ };
247
+ };
248
+ exports.FFT = FFT;
249
+ function poly(field, roots, create, fft, length) {
250
+ const F = field;
251
+ const _create = create ||
252
+ ((len, elm) => new Array(len).fill(elm ?? F.ZERO));
253
+ const isPoly = (x) => Array.isArray(x) || ArrayBuffer.isView(x);
254
+ const checkLength = (...lst) => {
255
+ if (!lst.length)
256
+ return 0;
257
+ for (const i of lst)
258
+ if (!isPoly(i))
259
+ throw new Error('poly: not polynomial: ' + i);
260
+ const L = lst[0].length;
261
+ for (let i = 1; i < lst.length; i++)
262
+ if (lst[i].length !== L)
263
+ throw new Error(`poly: mismatched lengths ${L} vs ${lst[i].length}`);
264
+ if (length !== undefined && L !== length)
265
+ throw new Error(`poly: expected fixed length ${length}, got ${L}`);
266
+ return L;
267
+ };
268
+ function findOmegaIndex(x, n, brp = false) {
269
+ const bits = log2(n);
270
+ const omega = brp ? roots.brp(bits) : roots.roots(bits);
271
+ for (let i = 0; i < n; i++)
272
+ if (F.eql(x, omega[i]))
273
+ return i;
274
+ return -1;
275
+ }
276
+ // TODO: mutating versions for mlkem/mldsa
277
+ return {
278
+ roots,
279
+ create: _create,
280
+ length,
281
+ extend: (a, len) => {
282
+ checkLength(a);
283
+ const out = _create(len, F.ZERO);
284
+ for (let i = 0; i < a.length; i++)
285
+ out[i] = a[i];
286
+ return out;
287
+ },
288
+ degree: (a) => {
289
+ checkLength(a);
290
+ for (let i = a.length - 1; i >= 0; i--)
291
+ if (!F.is0(a[i]))
292
+ return i;
293
+ return -1;
294
+ },
295
+ add: (a, b) => {
296
+ const len = checkLength(a, b);
297
+ const out = _create(len);
298
+ for (let i = 0; i < len; i++)
299
+ out[i] = F.add(a[i], b[i]);
300
+ return out;
301
+ },
302
+ sub: (a, b) => {
303
+ const len = checkLength(a, b);
304
+ const out = _create(len);
305
+ for (let i = 0; i < len; i++)
306
+ out[i] = F.sub(a[i], b[i]);
307
+ return out;
308
+ },
309
+ dot: (a, b) => {
310
+ const len = checkLength(a, b);
311
+ const out = _create(len);
312
+ for (let i = 0; i < len; i++)
313
+ out[i] = F.mul(a[i], b[i]);
314
+ return out;
315
+ },
316
+ mul: (a, b) => {
317
+ if (isPoly(b)) {
318
+ const len = checkLength(a, b);
319
+ if (fft) {
320
+ const A = fft.direct(a, false, true);
321
+ const B = fft.direct(b, false, true);
322
+ for (let i = 0; i < A.length; i++)
323
+ A[i] = F.mul(A[i], B[i]);
324
+ return fft.inverse(A, true, false);
325
+ }
326
+ else {
327
+ // NOTE: this is quadratic and mostly for compat tests with FFT
328
+ const res = _create(len);
329
+ for (let i = 0; i < len; i++) {
330
+ for (let j = 0; j < len; j++) {
331
+ const k = (i + j) % len; // wrap mod length
332
+ res[k] = F.add(res[k], F.mul(a[i], b[j]));
333
+ }
334
+ }
335
+ return res;
336
+ }
337
+ }
338
+ else {
339
+ const out = _create(checkLength(a));
340
+ for (let i = 0; i < out.length; i++)
341
+ out[i] = F.mul(a[i], b);
342
+ return out;
343
+ }
344
+ },
345
+ convolve(a, b) {
346
+ const len = nextPowerOfTwo(a.length + b.length - 1);
347
+ return this.mul(this.extend(a, len), this.extend(b, len));
348
+ },
349
+ shift(p, factor) {
350
+ const out = _create(checkLength(p));
351
+ out[0] = p[0];
352
+ for (let i = 1, power = F.ONE; i < p.length; i++) {
353
+ power = F.mul(power, factor);
354
+ out[i] = F.mul(p[i], power);
355
+ }
356
+ return out;
357
+ },
358
+ clone: (a) => {
359
+ checkLength(a);
360
+ const out = _create(a.length);
361
+ for (let i = 0; i < a.length; i++)
362
+ out[i] = a[i];
363
+ return out;
364
+ },
365
+ eval: (a, basis) => {
366
+ checkLength(a);
367
+ let acc = F.ZERO;
368
+ for (let i = 0; i < a.length; i++)
369
+ acc = F.add(acc, F.mul(a[i], basis[i]));
370
+ return acc;
371
+ },
372
+ monomial: {
373
+ basis: (x, n) => {
374
+ const out = _create(n);
375
+ let pow = F.ONE;
376
+ for (let i = 0; i < n; i++) {
377
+ out[i] = pow;
378
+ pow = F.mul(pow, x);
379
+ }
380
+ return out;
381
+ },
382
+ eval: (a, x) => {
383
+ checkLength(a);
384
+ // Same as eval(a, monomialBasis(x, a.length)), but it is faster this way
385
+ let acc = F.ZERO;
386
+ for (let i = a.length - 1; i >= 0; i--)
387
+ acc = F.add(F.mul(acc, x), a[i]);
388
+ return acc;
389
+ },
390
+ },
391
+ lagrange: {
392
+ basis: (x, n, brp = false, weights) => {
393
+ const bits = log2(n);
394
+ const cache = weights || brp ? roots.brp(bits) : roots.roots(bits); // [ω⁰, ω¹, ..., ωⁿ⁻¹]
395
+ const out = _create(n);
396
+ // Fast Kronecker-δ shortcut
397
+ const idx = findOmegaIndex(x, n, brp);
398
+ if (idx !== -1) {
399
+ out[idx] = F.ONE;
400
+ return out;
401
+ }
402
+ const tm = F.pow(x, BigInt(n));
403
+ const c = F.mul(F.sub(tm, F.ONE), F.inv(BigInt(n))); // c = (xⁿ - 1)/n
404
+ const denom = _create(n);
405
+ for (let i = 0; i < n; i++)
406
+ denom[i] = F.sub(x, cache[i]);
407
+ const inv = F.invertBatch(denom);
408
+ for (let i = 0; i < n; i++)
409
+ out[i] = F.mul(c, F.mul(cache[i], inv[i]));
410
+ return out;
411
+ },
412
+ eval(a, x, brp = false) {
413
+ checkLength(a);
414
+ const idx = findOmegaIndex(x, a.length, brp);
415
+ if (idx !== -1)
416
+ return a[idx]; // fast path
417
+ const L = this.basis(x, a.length, brp); // Lᵢ(x)
418
+ let acc = F.ZERO;
419
+ for (let i = 0; i < a.length; i++)
420
+ if (!F.is0(a[i]))
421
+ acc = F.add(acc, F.mul(a[i], L[i]));
422
+ return acc;
423
+ },
424
+ },
425
+ vanishing(roots) {
426
+ checkLength(roots);
427
+ const out = _create(roots.length + 1, F.ZERO);
428
+ out[0] = F.ONE;
429
+ for (const r of roots) {
430
+ const neg = F.neg(r);
431
+ for (let j = out.length - 1; j > 0; j--)
432
+ out[j] = F.add(F.mul(out[j], neg), out[j - 1]);
433
+ out[0] = F.mul(out[0], neg);
434
+ }
435
+ return out;
436
+ },
437
+ };
438
+ }
439
+ //# sourceMappingURL=fft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fft.js","sourceRoot":"","sources":["../src/abstract/fft.ts"],"names":[],"mappings":"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"}
@@ -23,12 +23,11 @@ export declare function invert(number: bigint, modulo: bigint): bigint;
23
23
  */
24
24
  export declare function tonelliShanks(P: bigint): <T>(Fp: IField<T>, n: T) => T;
25
25
  /**
26
- * Square root for a finite field. It will try to check if optimizations are applicable and fall back to 4:
26
+ * Square root for a finite field. Will try optimized versions first:
27
27
  *
28
28
  * 1. P ≡ 3 (mod 4)
29
29
  * 2. P ≡ 5 (mod 8)
30
- * 3. P ≡ 9 (mod 16)
31
- * 4. Tonelli-Shanks algorithm
30
+ * 3. Tonelli-Shanks algorithm
32
31
  *
33
32
  * Different algorithms can give different roots, it is up to user to decide which one they want.
34
33
  * For example there is FpSqrtOdd/FpSqrtEven to choice root based on oddness (used for hash-to-curve).
@@ -62,7 +61,6 @@ export interface IField<T> {
62
61
  mulN(lhs: T, rhs: T | bigint): T;
63
62
  sqrN(num: T): T;
64
63
  isOdd?(num: T): boolean;
65
- pow(lhs: T, power: bigint): T;
66
64
  invertBatch: (lst: T[]) => T[];
67
65
  toBytes(num: T): Uint8Array;
68
66
  fromBytes(bytes: Uint8Array): T;
@@ -84,13 +82,13 @@ export declare function FpDiv<T>(Fp: IField<T>, lhs: T, rhs: T | bigint): T;
84
82
  /**
85
83
  * Legendre symbol.
86
84
  * Legendre constant is used to calculate Legendre symbol (a | p)
87
- * which denotes the value of a^((p-1)/2) (mod p)..
85
+ * which denotes the value of a^((p-1)/2) (mod p).
88
86
  *
89
87
  * * (a | p) ≡ 1 if a is a square (mod p), quadratic residue
90
88
  * * (a | p) ≡ -1 if a is not a square (mod p), quadratic non residue
91
89
  * * (a | p) ≡ 0 if a ≡ 0 (mod p)
92
90
  */
93
- export declare function FpLegendre<T>(Fp: IField<T>, n: T): number;
91
+ export declare function FpLegendre<T>(Fp: IField<T>, n: T): -1 | 0 | 1;
94
92
  export declare function FpIsSquare<T>(Fp: IField<T>, n: T): boolean;
95
93
  export declare function nLength(n: bigint, nBitLength?: number): {
96
94
  nBitLength: number;
@@ -1 +1 @@
1
- {"version":3,"file":"modular.d.ts","sourceRoot":"","sources":["../src/abstract/modular.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modular.d.ts","sourceRoot":"","sources":["../src/abstract/modular.ts"],"names":[],"mappings":"AAwBA,wBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGhD;AACD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,4DAA4D;AAC5D,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOrE;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAoB7D;AAgDD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CA+DtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAQ/D;AAGD,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,OACzB,CAAC;AAEnC,yEAAyE;AACzE,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,CAAC;IACR,GAAG,EAAE,CAAC,CAAC;IAEP,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACtB,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IAC7B,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC;IACzB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAEf,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAC7B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IAChC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC;IAC9B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IAEhC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAMhB,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAExB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAC/B,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC;IAC5B,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC;IAEhC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;CACjC;AAOD,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAY5D;AAID;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAYhE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,UAAQ,GAAG,CAAC,EAAE,CAiBhF;AAGD,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAElE;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAU7D;AAGD,wBAAgB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAG1D;AAGD,wBAAgB,OAAO,CACrB,CAAC,EAAE,MAAM,EACT,UAAU,CAAC,EAAE,MAAM,GAClB;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAMA;AAED,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACxE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,UAAQ,EACZ,KAAK,GAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAM,GAClC,QAAQ,CAAC,OAAO,CAAC,CAyDnB;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAIrD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAItD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,UAAU,EAAE,MAAM,EAClB,IAAI,UAAQ,GACX,MAAM,CAUR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,UAAU,CAW5F"}