@noble/curves 0.8.0 → 0.8.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 (50) hide show
  1. package/README.md +12 -17
  2. package/esm/_shortw_utils.js +17 -0
  3. package/esm/_shortw_utils.js.map +1 -0
  4. package/esm/abstract/bls.js +226 -0
  5. package/esm/abstract/bls.js.map +1 -0
  6. package/esm/abstract/curve.js +152 -0
  7. package/esm/abstract/curve.js.map +1 -0
  8. package/esm/abstract/edwards.js +409 -0
  9. package/esm/abstract/edwards.js.map +1 -0
  10. package/esm/abstract/hash-to-curve.js +166 -0
  11. package/esm/abstract/hash-to-curve.js.map +1 -0
  12. package/esm/abstract/modular.js +346 -0
  13. package/esm/abstract/modular.js.map +1 -0
  14. package/esm/abstract/montgomery.js +157 -0
  15. package/esm/abstract/montgomery.js.map +1 -0
  16. package/esm/abstract/poseidon.js +110 -0
  17. package/esm/abstract/poseidon.js.map +1 -0
  18. package/esm/abstract/utils.js +222 -0
  19. package/esm/abstract/utils.js.map +1 -0
  20. package/esm/abstract/weierstrass.js +1011 -0
  21. package/esm/abstract/weierstrass.js.map +1 -0
  22. package/esm/bls12-381.js +1173 -0
  23. package/esm/bls12-381.js.map +1 -0
  24. package/esm/bn.js +22 -0
  25. package/esm/bn.js.map +1 -0
  26. package/esm/ed25519.js +397 -0
  27. package/esm/ed25519.js.map +1 -0
  28. package/esm/ed448.js +213 -0
  29. package/esm/ed448.js.map +1 -0
  30. package/esm/index.js +3 -0
  31. package/esm/index.js.map +1 -0
  32. package/esm/jubjub.js +54 -0
  33. package/esm/jubjub.js.map +1 -0
  34. package/esm/p256.js +42 -0
  35. package/esm/p256.js.map +1 -0
  36. package/esm/p384.js +47 -0
  37. package/esm/p384.js.map +1 -0
  38. package/esm/p521.js +48 -0
  39. package/esm/p521.js.map +1 -0
  40. package/esm/package.json +7 -0
  41. package/esm/pasta.js +30 -0
  42. package/esm/pasta.js.map +1 -0
  43. package/esm/secp256k1.js +252 -0
  44. package/esm/secp256k1.js.map +1 -0
  45. package/package.json +27 -9
  46. package/src/stark.ts +0 -341
  47. package/stark.d.ts +0 -81
  48. package/stark.d.ts.map +0 -1
  49. package/stark.js +0 -277
  50. package/stark.js.map +0 -1
package/esm/ed448.js ADDED
@@ -0,0 +1,213 @@
1
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
2
+ import { shake256 } from '@noble/hashes/sha3';
3
+ import { concatBytes, randomBytes, utf8ToBytes, wrapConstructor } from '@noble/hashes/utils';
4
+ import { twistedEdwards } from './abstract/edwards.js';
5
+ import { mod, pow2, Fp as Field } from './abstract/modular.js';
6
+ import { montgomery } from './abstract/montgomery.js';
7
+ import * as htf from './abstract/hash-to-curve.js';
8
+ /**
9
+ * Edwards448 (not Ed448-Goldilocks) curve with following addons:
10
+ * * X448 ECDH
11
+ * Conforms to RFC 8032 https://www.rfc-editor.org/rfc/rfc8032.html#section-5.2
12
+ */
13
+ const shake256_114 = wrapConstructor(() => shake256.create({ dkLen: 114 }));
14
+ const shake256_64 = wrapConstructor(() => shake256.create({ dkLen: 64 }));
15
+ const ed448P = BigInt('726838724295606890549323807888004534353641360687318060281490199180612328166730772686396383698676545930088884461843637361053498018365439');
16
+ // powPminus3div4 calculates z = x^k mod p, where k = (p-3)/4.
17
+ // Used for efficient square root calculation.
18
+ // ((P-3)/4).toString(2) would produce bits [223x 1, 0, 222x 1]
19
+ function ed448_pow_Pminus3div4(x) {
20
+ const P = ed448P;
21
+ // prettier-ignore
22
+ const _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3), _11n = BigInt(11);
23
+ // prettier-ignore
24
+ const _22n = BigInt(22), _44n = BigInt(44), _88n = BigInt(88), _223n = BigInt(223);
25
+ const b2 = (x * x * x) % P;
26
+ const b3 = (b2 * b2 * x) % P;
27
+ const b6 = (pow2(b3, _3n, P) * b3) % P;
28
+ const b9 = (pow2(b6, _3n, P) * b3) % P;
29
+ const b11 = (pow2(b9, _2n, P) * b2) % P;
30
+ const b22 = (pow2(b11, _11n, P) * b11) % P;
31
+ const b44 = (pow2(b22, _22n, P) * b22) % P;
32
+ const b88 = (pow2(b44, _44n, P) * b44) % P;
33
+ const b176 = (pow2(b88, _88n, P) * b88) % P;
34
+ const b220 = (pow2(b176, _44n, P) * b44) % P;
35
+ const b222 = (pow2(b220, _2n, P) * b2) % P;
36
+ const b223 = (pow2(b222, _1n, P) * x) % P;
37
+ return (pow2(b223, _223n, P) * b222) % P;
38
+ }
39
+ function adjustScalarBytes(bytes) {
40
+ // Section 5: Likewise, for X448, set the two least significant bits of the first byte to 0, and the most
41
+ // significant bit of the last byte to 1.
42
+ bytes[0] &= 252; // 0b11111100
43
+ // and the most significant bit of the last byte to 1.
44
+ bytes[55] |= 128; // 0b10000000
45
+ // NOTE: is is NOOP for 56 bytes scalars (X25519/X448)
46
+ bytes[56] = 0; // Byte outside of group (456 buts vs 448 bits)
47
+ return bytes;
48
+ }
49
+ const Fp = Field(ed448P, 456, true);
50
+ const ED448_DEF = {
51
+ // Param: a
52
+ a: BigInt(1),
53
+ // -39081. Negative number is P - number
54
+ d: BigInt('726838724295606890549323807888004534353641360687318060281490199180612328166730772686396383698676545930088884461843637361053498018326358'),
55
+ // Finite field 𝔽p over which we'll do calculations; 2n ** 448n - 2n ** 224n - 1n
56
+ Fp,
57
+ // Subgroup order: how many points curve has;
58
+ // 2n**446n - 13818066809895115352007386748515426880336692474882178609894547503885n
59
+ n: BigInt('181709681073901722637330951972001133588410340171829515070372549795146003961539585716195755291692375963310293709091662304773755859649779'),
60
+ nBitLength: 456,
61
+ // Cofactor
62
+ h: BigInt(4),
63
+ // Base point (x, y) aka generator point
64
+ Gx: BigInt('224580040295924300187604334099896036246789641632564134246125461686950415467406032909029192869357953282578032075146446173674602635247710'),
65
+ Gy: BigInt('298819210078481492676017930443930673437544040154080242095928241372331506189835876003536878655418784733982303233503462500531545062832660'),
66
+ // SHAKE256(dom4(phflag,context)||x, 114)
67
+ hash: shake256_114,
68
+ randomBytes,
69
+ adjustScalarBytes,
70
+ // dom4
71
+ domain: (data, ctx, phflag) => {
72
+ if (ctx.length > 255)
73
+ throw new Error(`Context is too big: ${ctx.length}`);
74
+ return concatBytes(utf8ToBytes('SigEd448'), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data);
75
+ },
76
+ // Constant-time ratio of u to v. Allows to combine inversion and square root u/√v.
77
+ // Uses algo from RFC8032 5.1.3.
78
+ uvRatio: (u, v) => {
79
+ const P = ed448P;
80
+ // https://datatracker.ietf.org/doc/html/rfc8032#section-5.2.3
81
+ // To compute the square root of (u/v), the first step is to compute the
82
+ // candidate root x = (u/v)^((p+1)/4). This can be done using the
83
+ // following trick, to use a single modular powering for both the
84
+ // inversion of v and the square root:
85
+ // x = (u/v)^((p+1)/4) = u³v(u⁵v³)^((p-3)/4) (mod p)
86
+ const u2v = mod(u * u * v, P); // u²v
87
+ const u3v = mod(u2v * u, P); // u³v
88
+ const u5v3 = mod(u3v * u2v * v, P); // u⁵v³
89
+ const root = ed448_pow_Pminus3div4(u5v3);
90
+ const x = mod(u3v * root, P);
91
+ // Verify that root is exists
92
+ const x2 = mod(x * x, P); // x²
93
+ // If vx² = u, the recovered x-coordinate is x. Otherwise, no
94
+ // square root exists, and the decoding fails.
95
+ return { isValid: mod(x2 * v, P) === u, value: x };
96
+ },
97
+ };
98
+ export const ed448 = twistedEdwards(ED448_DEF);
99
+ // NOTE: there is no ed448ctx, since ed448 supports ctx by default
100
+ export const ed448ph = twistedEdwards({ ...ED448_DEF, preHash: shake256_64 });
101
+ export const x448 = montgomery({
102
+ a: BigInt(156326),
103
+ montgomeryBits: 448,
104
+ nByteLength: 57,
105
+ P: ed448P,
106
+ Gu: BigInt(5),
107
+ powPminus2: (x) => {
108
+ const P = ed448P;
109
+ const Pminus3div4 = ed448_pow_Pminus3div4(x);
110
+ const Pminus3 = pow2(Pminus3div4, BigInt(2), P);
111
+ return mod(Pminus3 * x, P); // Pminus3 * x = Pminus2
112
+ },
113
+ adjustScalarBytes,
114
+ randomBytes,
115
+ // The 4-isogeny maps between the Montgomery curve and this Edwards
116
+ // curve are:
117
+ // (u, v) = (y^2/x^2, (2 - x^2 - y^2)*y/x^3)
118
+ // (x, y) = (4*v*(u^2 - 1)/(u^4 - 2*u^2 + 4*v^2 + 1),
119
+ // -(u^5 - 2*u^3 - 4*u*v^2 + u)/
120
+ // (u^5 - 2*u^2*v^2 - 2*u^3 - 2*v^2 + u))
121
+ // xyToU: (p: PointType) => {
122
+ // const P = ed448P;
123
+ // const { x, y } = p;
124
+ // if (x === _0n) throw new Error(`Point with x=0 doesn't have mapping`);
125
+ // const invX = invert(x * x, P); // x^2
126
+ // const u = mod(y * y * invX, P); // (y^2/x^2)
127
+ // return numberToBytesLE(u, 56);
128
+ // },
129
+ });
130
+ // Hash To Curve Elligator2 Map
131
+ const ELL2_C1 = (Fp.ORDER - BigInt(3)) / BigInt(4); // 1. c1 = (q - 3) / 4 # Integer arithmetic
132
+ const ELL2_J = BigInt(156326);
133
+ function map_to_curve_elligator2_curve448(u) {
134
+ let tv1 = Fp.sqr(u); // 1. tv1 = u^2
135
+ let e1 = Fp.eql(tv1, Fp.ONE); // 2. e1 = tv1 == 1
136
+ tv1 = Fp.cmov(tv1, Fp.ZERO, e1); // 3. tv1 = CMOV(tv1, 0, e1) # If Z * u^2 == -1, set tv1 = 0
137
+ let xd = Fp.sub(Fp.ONE, tv1); // 4. xd = 1 - tv1
138
+ let x1n = Fp.neg(ELL2_J); // 5. x1n = -J
139
+ let tv2 = Fp.sqr(xd); // 6. tv2 = xd^2
140
+ let gxd = Fp.mul(tv2, xd); // 7. gxd = tv2 * xd # gxd = xd^3
141
+ let gx1 = Fp.mul(tv1, Fp.neg(ELL2_J)); // 8. gx1 = -J * tv1 # x1n + J * xd
142
+ gx1 = Fp.mul(gx1, x1n); // 9. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd
143
+ gx1 = Fp.add(gx1, tv2); // 10. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2
144
+ gx1 = Fp.mul(gx1, x1n); // 11. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2
145
+ let tv3 = Fp.sqr(gxd); // 12. tv3 = gxd^2
146
+ tv2 = Fp.mul(gx1, gxd); // 13. tv2 = gx1 * gxd # gx1 * gxd
147
+ tv3 = Fp.mul(tv3, tv2); // 14. tv3 = tv3 * tv2 # gx1 * gxd^3
148
+ let y1 = Fp.pow(tv3, ELL2_C1); // 15. y1 = tv3^c1 # (gx1 * gxd^3)^((p - 3) / 4)
149
+ y1 = Fp.mul(y1, tv2); // 16. y1 = y1 * tv2 # gx1 * gxd * (gx1 * gxd^3)^((p - 3) / 4)
150
+ let x2n = Fp.mul(x1n, Fp.neg(tv1)); // 17. x2n = -tv1 * x1n # x2 = x2n / xd = -1 * u^2 * x1n / xd
151
+ let y2 = Fp.mul(y1, u); // 18. y2 = y1 * u
152
+ y2 = Fp.cmov(y2, Fp.ZERO, e1); // 19. y2 = CMOV(y2, 0, e1)
153
+ tv2 = Fp.sqr(y1); // 20. tv2 = y1^2
154
+ tv2 = Fp.mul(tv2, gxd); // 21. tv2 = tv2 * gxd
155
+ let e2 = Fp.eql(tv2, gx1); // 22. e2 = tv2 == gx1
156
+ let xn = Fp.cmov(x2n, x1n, e2); // 23. xn = CMOV(x2n, x1n, e2) # If e2, x = x1, else x = x2
157
+ let y = Fp.cmov(y2, y1, e2); // 24. y = CMOV(y2, y1, e2) # If e2, y = y1, else y = y2
158
+ let e3 = Fp.isOdd(y); // 25. e3 = sgn0(y) == 1 # Fix sign of y
159
+ y = Fp.cmov(y, Fp.neg(y), e2 !== e3); // 26. y = CMOV(y, -y, e2 XOR e3)
160
+ return { xn, xd, yn: y, yd: Fp.ONE }; // 27. return (xn, xd, y, 1)
161
+ }
162
+ function map_to_curve_elligator2_edwards448(u) {
163
+ let { xn, xd, yn, yd } = map_to_curve_elligator2_curve448(u); // 1. (xn, xd, yn, yd) = map_to_curve_elligator2_curve448(u)
164
+ let xn2 = Fp.sqr(xn); // 2. xn2 = xn^2
165
+ let xd2 = Fp.sqr(xd); // 3. xd2 = xd^2
166
+ let xd4 = Fp.sqr(xd2); // 4. xd4 = xd2^2
167
+ let yn2 = Fp.sqr(yn); // 5. yn2 = yn^2
168
+ let yd2 = Fp.sqr(yd); // 6. yd2 = yd^2
169
+ let xEn = Fp.sub(xn2, xd2); // 7. xEn = xn2 - xd2
170
+ let tv2 = Fp.sub(xEn, xd2); // 8. tv2 = xEn - xd2
171
+ xEn = Fp.mul(xEn, xd2); // 9. xEn = xEn * xd2
172
+ xEn = Fp.mul(xEn, yd); // 10. xEn = xEn * yd
173
+ xEn = Fp.mul(xEn, yn); // 11. xEn = xEn * yn
174
+ xEn = Fp.mul(xEn, 4n); // 12. xEn = xEn * 4
175
+ tv2 = Fp.mul(tv2, xn2); // 13. tv2 = tv2 * xn2
176
+ tv2 = Fp.mul(tv2, yd2); // 14. tv2 = tv2 * yd2
177
+ let tv3 = Fp.mul(yn2, 4n); // 15. tv3 = 4 * yn2
178
+ let tv1 = Fp.add(tv3, yd2); // 16. tv1 = tv3 + yd2
179
+ tv1 = Fp.mul(tv1, xd4); // 17. tv1 = tv1 * xd4
180
+ let xEd = Fp.add(tv1, tv2); // 18. xEd = tv1 + tv2
181
+ tv2 = Fp.mul(tv2, xn); // 19. tv2 = tv2 * xn
182
+ let tv4 = Fp.mul(xn, xd4); // 20. tv4 = xn * xd4
183
+ let yEn = Fp.sub(tv3, yd2); // 21. yEn = tv3 - yd2
184
+ yEn = Fp.mul(yEn, tv4); // 22. yEn = yEn * tv4
185
+ yEn = Fp.sub(yEn, tv2); // 23. yEn = yEn - tv2
186
+ tv1 = Fp.add(xn2, xd2); // 24. tv1 = xn2 + xd2
187
+ tv1 = Fp.mul(tv1, xd2); // 25. tv1 = tv1 * xd2
188
+ tv1 = Fp.mul(tv1, xd); // 26. tv1 = tv1 * xd
189
+ tv1 = Fp.mul(tv1, yn2); // 27. tv1 = tv1 * yn2
190
+ tv1 = Fp.mul(tv1, BigInt(-2)); // 28. tv1 = -2 * tv1
191
+ let yEd = Fp.add(tv2, tv1); // 29. yEd = tv2 + tv1
192
+ tv4 = Fp.mul(tv4, yd2); // 30. tv4 = tv4 * yd2
193
+ yEd = Fp.add(yEd, tv4); // 31. yEd = yEd + tv4
194
+ tv1 = Fp.mul(xEd, yEd); // 32. tv1 = xEd * yEd
195
+ let e = Fp.eql(tv1, Fp.ZERO); // 33. e = tv1 == 0
196
+ xEn = Fp.cmov(xEn, Fp.ZERO, e); // 34. xEn = CMOV(xEn, 0, e)
197
+ xEd = Fp.cmov(xEd, Fp.ONE, e); // 35. xEd = CMOV(xEd, 1, e)
198
+ yEn = Fp.cmov(yEn, Fp.ONE, e); // 36. yEn = CMOV(yEn, 1, e)
199
+ yEd = Fp.cmov(yEd, Fp.ONE, e); // 37. yEd = CMOV(yEd, 1, e)
200
+ const inv = Fp.invertBatch([xEd, yEd]); // batch division
201
+ return { x: Fp.mul(xEn, inv[0]), y: Fp.mul(yEn, inv[1]) }; // 38. return (xEn, xEd, yEn, yEd)
202
+ }
203
+ const { hashToCurve, encodeToCurve } = htf.createHasher(ed448.ExtendedPoint, (scalars) => map_to_curve_elligator2_edwards448(scalars[0]), {
204
+ DST: 'edwards448_XOF:SHAKE256_ELL2_RO_',
205
+ encodeDST: 'edwards448_XOF:SHAKE256_ELL2_NU_',
206
+ p: Fp.ORDER,
207
+ m: 1,
208
+ k: 224,
209
+ expand: 'xof',
210
+ hash: shake256,
211
+ });
212
+ export { hashToCurve, encodeToCurve };
213
+ //# sourceMappingURL=ed448.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ed448.js","sourceRoot":"","sources":["../src/ed448.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,6BAA6B,CAAC;AAEnD;;;;GAIG;AAEH,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5E,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,GAAG,MAAM,CACnB,yIAAyI,CAC1I,CAAC;AAEF,8DAA8D;AAC9D,8CAA8C;AAC9C,+DAA+D;AAC/D,SAAS,qBAAqB,CAAC,CAAS;IACtC,MAAM,CAAC,GAAG,MAAM,CAAC;IACjB,kBAAkB;IAClB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3E,kBAAkB;IAClB,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACnF,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,yGAAyG;IACzG,yCAAyC;IACzC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa;IAC9B,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa;IAC/B,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,+CAA+C;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAEpC,MAAM,SAAS,GAAG;IAChB,WAAW;IACX,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,wCAAwC;IACxC,CAAC,EAAE,MAAM,CACP,yIAAyI,CAC1I;IACD,kFAAkF;IAClF,EAAE;IACF,6CAA6C;IAC7C,mFAAmF;IACnF,CAAC,EAAE,MAAM,CACP,yIAAyI,CAC1I;IACD,UAAU,EAAE,GAAG;IACf,WAAW;IACX,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,wCAAwC;IACxC,EAAE,EAAE,MAAM,CACR,yIAAyI,CAC1I;IACD,EAAE,EAAE,MAAM,CACR,yIAAyI,CAC1I;IACD,yCAAyC;IACzC,IAAI,EAAE,YAAY;IAClB,WAAW;IACX,iBAAiB;IACjB,OAAO;IACP,MAAM,EAAE,CAAC,IAAgB,EAAE,GAAe,EAAE,MAAe,EAAE,EAAE;QAC7D,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,OAAO,WAAW,CAChB,WAAW,CAAC,UAAU,CAAC,EACvB,IAAI,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAC5C,GAAG,EACH,IAAI,CACL,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,gCAAgC;IAChC,OAAO,EAAE,CAAC,CAAS,EAAE,CAAS,EAAuC,EAAE;QACrE,MAAM,CAAC,GAAG,MAAM,CAAC;QACjB,8DAA8D;QAC9D,wEAAwE;QACxE,oEAAoE;QACpE,iEAAiE;QACjE,sCAAsC;QACtC,wDAAwD;QACxD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;QACrC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;QAC3C,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7B,6BAA6B;QAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK;QAC/B,8DAA8D;QAC9D,8CAA8C;QAC9C,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACrD,CAAC;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;AAC/C,kEAAkE;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AAE9E,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;IAC7B,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;IACjB,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,EAAE;IACf,CAAC,EAAE,MAAM;IACT,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACb,UAAU,EAAE,CAAC,CAAS,EAAU,EAAE;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC;QACjB,MAAM,WAAW,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB;IACtD,CAAC;IACD,iBAAiB;IACjB,WAAW;IACX,mEAAmE;IACnE,aAAa;IACb,8CAA8C;IAC9C,uDAAuD;IACvD,4CAA4C;IAC5C,qDAAqD;IACrD,6BAA6B;IAC7B,sBAAsB;IACtB,wBAAwB;IACxB,2EAA2E;IAC3E,0CAA0C;IAC1C,iDAAiD;IACjD,mCAAmC;IACnC,KAAK;CACN,CAAC,CAAC;AAEH,+BAA+B;AAC/B,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mDAAmD;AACvG,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,SAAS,gCAAgC,CAAC,CAAS;IACjD,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;IACrC,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB;IACnD,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,8DAA8D;IAC/F,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,oBAAoB;IAClD,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe;IACzC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,2CAA2C;IACtE,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,6CAA6C;IACpF,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,qDAAqD;IAC7E,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,4DAA4D;IACpF,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,oEAAoE;IAC5F,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB;IACzC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,0CAA0C;IAClE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,4CAA4C;IACpE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,4DAA4D;IAC3F,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,wEAAwE;IAC9F,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,oEAAoE;IACxG,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB;IAC3C,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B;IAC3D,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;IACnC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,uBAAuB;IAClD,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,6DAA6D;IAC7F,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,6DAA6D;IAC1F,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gDAAgD;IACtE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,mCAAmC;IACzE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,4BAA4B;AACpE,CAAC;AACD,SAAS,kCAAkC,CAAC,CAAS;IACnD,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,4DAA4D;IAC1H,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB;IACzC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAClD,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAClD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB;IAC5C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB;IAC5C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;IAC3C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;IAC/C,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAClD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAClD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB;IAC5C,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB;IAChD,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAClD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB;IAC5C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB;IACpD,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAClD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;IAC9C,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB;IACnD,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,4BAA4B;IAC5D,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,4BAA4B;IAC3D,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,4BAA4B;IAC3D,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,4BAA4B;IAE3D,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB;IACzD,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,kCAAkC;AAC/F,CAAC;AAED,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,YAAY,CACrD,KAAK,CAAC,aAAa,EACnB,CAAC,OAAiB,EAAE,EAAE,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACrE;IACE,GAAG,EAAE,kCAAkC;IACvC,SAAS,EAAE,kCAAkC;IAC7C,CAAC,EAAE,EAAE,CAAC,KAAK;IACX,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,GAAG;IACN,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,QAAQ;CACf,CACF,CAAC;AACF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}
package/esm/index.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ throw new Error('Incorrect usage. Import submodules instead');
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC"}
package/esm/jubjub.js ADDED
@@ -0,0 +1,54 @@
1
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
2
+ import { sha512 } from '@noble/hashes/sha512';
3
+ import { concatBytes, randomBytes, utf8ToBytes } from '@noble/hashes/utils';
4
+ import { twistedEdwards } from './abstract/edwards.js';
5
+ import { blake2s } from '@noble/hashes/blake2s';
6
+ import { Fp } from './abstract/modular.js';
7
+ /**
8
+ * jubjub Twisted Edwards curve.
9
+ * https://neuromancer.sk/std/other/JubJub
10
+ * jubjub does not use EdDSA, so `hash`/sha512 params are passed because interface expects them.
11
+ */
12
+ export const jubjub = twistedEdwards({
13
+ // Params: a, d
14
+ a: BigInt('0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000'),
15
+ d: BigInt('0x2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1'),
16
+ // Finite field 𝔽p over which we'll do calculations
17
+ // Same value as bls12-381 Fr (not Fp)
18
+ Fp: Fp(BigInt('0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001')),
19
+ // Subgroup order: how many points curve has
20
+ n: BigInt('0xe7db4ea6533afa906673b0101343b00a6682093ccc81082d0970e5ed6f72cb7'),
21
+ // Cofactor
22
+ h: BigInt(8),
23
+ // Base point (x, y) aka generator point
24
+ Gx: BigInt('0x11dafe5d23e1218086a365b99fbf3d3be72f6afd7d1f72623e6b071492d1122b'),
25
+ Gy: BigInt('0x1d523cf1ddab1a1793132e78c866c0c33e26ba5cc220fed7cc3f870e59d292aa'),
26
+ hash: sha512,
27
+ randomBytes,
28
+ });
29
+ const GH_FIRST_BLOCK = utf8ToBytes('096b36a5804bfacef1691e173c366a47ff5ba84a44f26ddd7e8d9f79d5b42df0');
30
+ // Returns point at JubJub curve which is prime order and not zero
31
+ export function groupHash(tag, personalization) {
32
+ const h = blake2s.create({ personalization, dkLen: 32 });
33
+ h.update(GH_FIRST_BLOCK);
34
+ h.update(tag);
35
+ // NOTE: returns ExtendedPoint, in case it will be multiplied later
36
+ let p = jubjub.ExtendedPoint.fromHex(h.digest());
37
+ // NOTE: cannot replace with isSmallOrder, returns Point*8
38
+ p = p.multiply(jubjub.CURVE.h);
39
+ if (p.equals(jubjub.ExtendedPoint.ZERO))
40
+ throw new Error('Point has small order');
41
+ return p;
42
+ }
43
+ export function findGroupHash(m, personalization) {
44
+ const tag = concatBytes(m, new Uint8Array([0]));
45
+ for (let i = 0; i < 256; i++) {
46
+ tag[tag.length - 1] = i;
47
+ try {
48
+ return groupHash(tag, personalization);
49
+ }
50
+ catch (e) { }
51
+ }
52
+ throw new Error('findGroupHash tag overflow');
53
+ }
54
+ //# sourceMappingURL=jubjub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jubjub.js","sourceRoot":"","sources":["../src/jubjub.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAE3C;;;;GAIG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,cAAc,CAAC;IACnC,eAAe;IACf,CAAC,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAC/E,CAAC,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAC/E,oDAAoD;IACpD,sCAAsC;IACtC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,oEAAoE,CAAC,CAAC;IACpF,4CAA4C;IAC5C,CAAC,EAAE,MAAM,CAAC,mEAAmE,CAAC;IAC9E,WAAW;IACX,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAChF,EAAE,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAChF,IAAI,EAAE,MAAM;IACZ,WAAW;CACH,CAAC,CAAC;AAEZ,MAAM,cAAc,GAAG,WAAW,CAChC,kEAAkE,CACnE,CAAC;AAEF,kEAAkE;AAClE,MAAM,UAAU,SAAS,CAAC,GAAe,EAAE,eAA2B;IACpE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACzB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,0DAA0D;IAC1D,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAClF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAa,EAAE,eAA2B;IACtE,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5B,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI;YACF,OAAO,SAAS,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;SACxC;QAAC,OAAO,CAAC,EAAE,GAAE;KACf;IACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAChD,CAAC"}
package/esm/p256.js ADDED
@@ -0,0 +1,42 @@
1
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
2
+ import { createCurve } from './_shortw_utils.js';
3
+ import { sha256 } from '@noble/hashes/sha256';
4
+ import { Fp as Field } from './abstract/modular.js';
5
+ import { mapToCurveSimpleSWU } from './abstract/weierstrass.js';
6
+ import * as htf from './abstract/hash-to-curve.js';
7
+ // NIST secp256r1 aka P256
8
+ // https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-256
9
+ // Field over which we'll do calculations; 2n**224n * (2n**32n-1n) + 2n**192n + 2n**96n-1n
10
+ const Fp = Field(BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'));
11
+ const CURVE_A = Fp.create(BigInt('-3'));
12
+ const CURVE_B = BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b');
13
+ const mapSWU = mapToCurveSimpleSWU(Fp, {
14
+ A: CURVE_A,
15
+ B: CURVE_B,
16
+ Z: Fp.create(BigInt('-10')),
17
+ });
18
+ export const P256 = createCurve({
19
+ // Params: a, b
20
+ a: CURVE_A,
21
+ b: CURVE_B,
22
+ Fp,
23
+ // Curve order, total count of valid points in the field
24
+ n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),
25
+ // Base point (x, y) aka generator point
26
+ Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),
27
+ Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),
28
+ h: BigInt(1),
29
+ lowS: false,
30
+ }, sha256);
31
+ export const secp256r1 = P256;
32
+ const { hashToCurve, encodeToCurve } = htf.createHasher(secp256r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
33
+ DST: 'P256_XMD:SHA-256_SSWU_RO_',
34
+ encodeDST: 'P256_XMD:SHA-256_SSWU_NU_',
35
+ p: Fp.ORDER,
36
+ m: 1,
37
+ k: 128,
38
+ expand: 'xmd',
39
+ hash: sha256,
40
+ });
41
+ export { hashToCurve, encodeToCurve };
42
+ //# sourceMappingURL=p256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p256.js","sourceRoot":"","sources":["../src/p256.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,EAAE,IAAI,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,GAAG,MAAM,6BAA6B,CAAC;AAEnD,0BAA0B;AAC1B,0EAA0E;AAE1E,0FAA0F;AAC1F,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,oEAAoE,CAAC,CAAC,CAAC;AAC/F,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,MAAM,OAAO,GAAG,MAAM,CAAC,oEAAoE,CAAC,CAAC;AAE7F,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,EAAE;IACrC,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAC7B;IACE,eAAe;IACf,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,EAAE;IACF,wDAAwD;IACxD,CAAC,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAC/E,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAChF,EAAE,EAAE,MAAM,CAAC,oEAAoE,CAAC;IAChF,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,IAAI,EAAE,KAAK;CACH,EACV,MAAM,CACP,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAE9B,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,YAAY,CACrD,SAAS,CAAC,eAAe,EACzB,CAAC,OAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACzC;IACE,GAAG,EAAE,2BAA2B;IAChC,SAAS,EAAE,2BAA2B;IACtC,CAAC,EAAE,EAAE,CAAC,KAAK;IACX,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,GAAG;IACN,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,MAAM;CACb,CACF,CAAC;AACF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}
package/esm/p384.js ADDED
@@ -0,0 +1,47 @@
1
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
2
+ import { createCurve } from './_shortw_utils.js';
3
+ import { sha384 } from '@noble/hashes/sha512';
4
+ import { Fp as Field } from './abstract/modular.js';
5
+ import { mapToCurveSimpleSWU } from './abstract/weierstrass.js';
6
+ import * as htf from './abstract/hash-to-curve.js';
7
+ // NIST secp384r1 aka P384
8
+ // https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-384
9
+ // Field over which we'll do calculations. 2n**384n - 2n**128n - 2n**96n + 2n**32n - 1n
10
+ // prettier-ignore
11
+ const P = BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff');
12
+ const Fp = Field(P);
13
+ const CURVE_A = Fp.create(BigInt('-3'));
14
+ // prettier-ignore
15
+ const CURVE_B = BigInt('0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef');
16
+ const mapSWU = mapToCurveSimpleSWU(Fp, {
17
+ A: CURVE_A,
18
+ B: CURVE_B,
19
+ Z: Fp.create(BigInt('-12')),
20
+ });
21
+ // prettier-ignore
22
+ export const P384 = createCurve({
23
+ // Params: a, b
24
+ a: CURVE_A,
25
+ b: CURVE_B,
26
+ // Field over which we'll do calculations. 2n**384n - 2n**128n - 2n**96n + 2n**32n - 1n
27
+ Fp,
28
+ // Curve order, total count of valid points in the field.
29
+ n: BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973'),
30
+ // Base point (x, y) aka generator point
31
+ Gx: BigInt('0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7'),
32
+ Gy: BigInt('0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f'),
33
+ h: BigInt(1),
34
+ lowS: false,
35
+ }, sha384);
36
+ export const secp384r1 = P384;
37
+ const { hashToCurve, encodeToCurve } = htf.createHasher(secp384r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
38
+ DST: 'P384_XMD:SHA-384_SSWU_RO_',
39
+ encodeDST: 'P384_XMD:SHA-384_SSWU_NU_',
40
+ p: Fp.ORDER,
41
+ m: 1,
42
+ k: 192,
43
+ expand: 'xmd',
44
+ hash: sha384,
45
+ });
46
+ export { hashToCurve, encodeToCurve };
47
+ //# sourceMappingURL=p384.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p384.js","sourceRoot":"","sources":["../src/p384.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,EAAE,IAAI,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,GAAG,MAAM,6BAA6B,CAAC;AAEnD,0BAA0B;AAC1B,0EAA0E;AAE1E,uFAAuF;AACvF,kBAAkB;AAClB,MAAM,CAAC,GAAG,MAAM,CAAC,oGAAoG,CAAC,CAAC;AACvH,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,kBAAkB;AAClB,MAAM,OAAO,GAAG,MAAM,CAAC,oGAAoG,CAAC,CAAC;AAE7H,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,EAAE;IACrC,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH,kBAAkB;AAClB,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC;IAC5B,eAAe;IACf,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,uFAAuF;IACvF,EAAE;IACF,yDAAyD;IACzD,CAAC,EAAE,MAAM,CAAC,oGAAoG,CAAC;IAC/G,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC,oGAAoG,CAAC;IAChH,EAAE,EAAE,MAAM,CAAC,oGAAoG,CAAC;IAChH,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,IAAI,EAAE,KAAK;CACH,EACV,MAAM,CACP,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAE9B,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,YAAY,CACrD,SAAS,CAAC,eAAe,EACzB,CAAC,OAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACzC;IACE,GAAG,EAAE,2BAA2B;IAChC,SAAS,EAAE,2BAA2B;IACtC,CAAC,EAAE,EAAE,CAAC,KAAK;IACX,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,GAAG;IACN,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,MAAM;CACb,CACF,CAAC;AACF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}
package/esm/p521.js ADDED
@@ -0,0 +1,48 @@
1
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
2
+ import { createCurve } from './_shortw_utils.js';
3
+ import { sha512 } from '@noble/hashes/sha512';
4
+ import { Fp as Field } from './abstract/modular.js';
5
+ import { mapToCurveSimpleSWU } from './abstract/weierstrass.js';
6
+ import * as htf from './abstract/hash-to-curve.js';
7
+ // NIST secp521r1 aka P521
8
+ // Note that it's 521, which differs from 512 of its hash function.
9
+ // https://www.secg.org/sec2-v2.pdf, https://neuromancer.sk/std/nist/P-521
10
+ // Field over which we'll do calculations; 2n**521n - 1n
11
+ // prettier-ignore
12
+ const P = BigInt('0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');
13
+ const Fp = Field(P);
14
+ const CURVE_A = Fp.create(BigInt('-3'));
15
+ // prettier-ignore
16
+ const CURVE_B = BigInt('0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00');
17
+ const mapSWU = mapToCurveSimpleSWU(Fp, {
18
+ A: CURVE_A,
19
+ B: CURVE_B,
20
+ Z: Fp.create(BigInt('-4')),
21
+ });
22
+ // prettier-ignore
23
+ export const P521 = createCurve({
24
+ // Params: a, b
25
+ a: CURVE_A,
26
+ b: CURVE_B,
27
+ Fp,
28
+ // Curve order, total count of valid points in the field
29
+ n: BigInt('0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409'),
30
+ // Base point (x, y) aka generator point
31
+ Gx: BigInt('0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66'),
32
+ Gy: BigInt('0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650'),
33
+ h: BigInt(1),
34
+ lowS: false,
35
+ allowedPrivateKeyLengths: [130, 131, 132] // P521 keys are variable-length. Normalize to 132b
36
+ }, sha512);
37
+ export const secp521r1 = P521;
38
+ const { hashToCurve, encodeToCurve } = htf.createHasher(secp521r1.ProjectivePoint, (scalars) => mapSWU(scalars[0]), {
39
+ DST: 'P521_XMD:SHA-512_SSWU_RO_',
40
+ encodeDST: 'P521_XMD:SHA-512_SSWU_NU_',
41
+ p: Fp.ORDER,
42
+ m: 1,
43
+ k: 256,
44
+ expand: 'xmd',
45
+ hash: sha512,
46
+ });
47
+ export { hashToCurve, encodeToCurve };
48
+ //# sourceMappingURL=p521.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p521.js","sourceRoot":"","sources":["../src/p521.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,EAAE,IAAI,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,GAAG,MAAM,6BAA6B,CAAC;AAEnD,0BAA0B;AAC1B,mEAAmE;AACnE,0EAA0E;AAE1E,wDAAwD;AACxD,kBAAkB;AAClB,MAAM,CAAC,GAAG,MAAM,CAAC,uIAAuI,CAAC,CAAC;AAC1J,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAEpB,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,kBAAkB;AAClB,MAAM,OAAO,GAAG,MAAM,CAAC,wIAAwI,CAAC,CAAC;AAEjK,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,EAAE;IACrC,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH,kBAAkB;AAClB,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC;IAC9B,eAAe;IACf,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,OAAO;IACV,EAAE;IACF,wDAAwD;IACxD,CAAC,EAAE,MAAM,CAAC,wIAAwI,CAAC;IACnJ,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC,wIAAwI,CAAC;IACpJ,EAAE,EAAE,MAAM,CAAC,wIAAwI,CAAC;IACpJ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,IAAI,EAAE,KAAK;IACX,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,mDAAmD;CACrF,EAAE,MAAM,CAAC,CAAC;AACpB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAE9B,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,YAAY,CACrD,SAAS,CAAC,eAAe,EACzB,CAAC,OAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACzC;IACE,GAAG,EAAE,2BAA2B;IAChC,SAAS,EAAE,2BAA2B;IACtC,CAAC,EAAE,EAAE,CAAC,KAAK;IACX,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,GAAG;IACN,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,MAAM;CACb,CACF,CAAC;AACF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ {
2
+ "type": "module",
3
+ "browser": {
4
+ "crypto": false,
5
+ "./crypto": "./esm/crypto.js"
6
+ }
7
+ }
package/esm/pasta.js ADDED
@@ -0,0 +1,30 @@
1
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
2
+ import { sha256 } from '@noble/hashes/sha256';
3
+ import { weierstrass } from './abstract/weierstrass.js';
4
+ import { getHash } from './_shortw_utils.js';
5
+ import * as mod from './abstract/modular.js';
6
+ export const p = BigInt('0x40000000000000000000000000000000224698fc094cf91b992d30ed00000001');
7
+ export const q = BigInt('0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001');
8
+ // https://neuromancer.sk/std/other/Pallas
9
+ export const pallas = weierstrass({
10
+ a: BigInt(0),
11
+ b: BigInt(5),
12
+ Fp: mod.Fp(p),
13
+ n: q,
14
+ Gx: mod.mod(BigInt(-1), p),
15
+ Gy: BigInt(2),
16
+ h: BigInt(1),
17
+ ...getHash(sha256),
18
+ });
19
+ // https://neuromancer.sk/std/other/Vesta
20
+ export const vesta = weierstrass({
21
+ a: BigInt(0),
22
+ b: BigInt(5),
23
+ Fp: mod.Fp(q),
24
+ n: p,
25
+ Gx: mod.mod(BigInt(-1), q),
26
+ Gy: BigInt(2),
27
+ h: BigInt(1),
28
+ ...getHash(sha256),
29
+ });
30
+ //# sourceMappingURL=pasta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pasta.js","sourceRoot":"","sources":["../src/pasta.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAE7C,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,oEAAoE,CAAC,CAAC;AAC9F,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,oEAAoE,CAAC,CAAC;AAE9F,0CAA0C;AAC1C,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAC;IAChC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACb,CAAC,EAAE,CAAC;IACJ,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACb,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,GAAG,OAAO,CAAC,MAAM,CAAC;CACnB,CAAC,CAAC;AACH,yCAAyC;AACzC,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC;IAC/B,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACb,CAAC,EAAE,CAAC;IACJ,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACb,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACZ,GAAG,OAAO,CAAC,MAAM,CAAC;CACnB,CAAC,CAAC"}