@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
@@ -0,0 +1,409 @@
1
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
2
+ // Twisted Edwards curve. The formula is: ax² + y² = 1 + dx²y²
3
+ import { mod } from './modular.js';
4
+ import * as ut from './utils.js';
5
+ import { ensureBytes } from './utils.js';
6
+ import { wNAF, validateBasic } from './curve.js';
7
+ // Be friendly to bad ECMAScript parsers by not using bigint literals like 123n
8
+ const _0n = BigInt(0);
9
+ const _1n = BigInt(1);
10
+ const _2n = BigInt(2);
11
+ const _8n = BigInt(8);
12
+ function validateOpts(curve) {
13
+ const opts = validateBasic(curve);
14
+ ut.validateObject(curve, {
15
+ hash: 'function',
16
+ a: 'bigint',
17
+ d: 'bigint',
18
+ randomBytes: 'function',
19
+ }, {
20
+ adjustScalarBytes: 'function',
21
+ domain: 'function',
22
+ uvRatio: 'function',
23
+ mapToCurve: 'function',
24
+ });
25
+ // Set defaults
26
+ return Object.freeze({ ...opts });
27
+ }
28
+ // It is not generic twisted curve for now, but ed25519/ed448 generic implementation
29
+ export function twistedEdwards(curveDef) {
30
+ const CURVE = validateOpts(curveDef);
31
+ const { Fp, n: CURVE_ORDER, preHash, hash: cHash, randomBytes, nByteLength, h: cofactor } = CURVE;
32
+ const MASK = _2n ** BigInt(nByteLength * 8);
33
+ const modP = Fp.create; // Function overrides
34
+ // sqrt(u/v)
35
+ const uvRatio = CURVE.uvRatio ||
36
+ ((u, v) => {
37
+ try {
38
+ return { isValid: true, value: Fp.sqrt(u * Fp.inv(v)) };
39
+ }
40
+ catch (e) {
41
+ return { isValid: false, value: _0n };
42
+ }
43
+ });
44
+ const adjustScalarBytes = CURVE.adjustScalarBytes || ((bytes) => bytes); // NOOP
45
+ const domain = CURVE.domain ||
46
+ ((data, ctx, phflag) => {
47
+ if (ctx.length || phflag)
48
+ throw new Error('Contexts/pre-hash are not supported');
49
+ return data;
50
+ }); // NOOP
51
+ const inBig = (n) => typeof n === 'bigint' && 0n < n; // n in [1..]
52
+ const inRange = (n, max) => inBig(n) && inBig(max) && n < max; // n in [1..max-1]
53
+ const in0MaskRange = (n) => n === _0n || inRange(n, MASK); // n in [0..MASK-1]
54
+ function assertInRange(n, max) {
55
+ // n in [1..max-1]
56
+ if (inRange(n, max))
57
+ return n;
58
+ throw new Error(`Expected valid scalar < ${max}, got ${typeof n} ${n}`);
59
+ }
60
+ function assertGE0(n) {
61
+ // n in [0..CURVE_ORDER-1]
62
+ return n === _0n ? n : assertInRange(n, CURVE_ORDER); // GE = prime subgroup, not full group
63
+ }
64
+ const pointPrecomputes = new Map();
65
+ function isPoint(other) {
66
+ if (!(other instanceof Point))
67
+ throw new Error('ExtendedPoint expected');
68
+ }
69
+ // Extended Point works in extended coordinates: (x, y, z, t) ∋ (x=x/z, y=y/z, t=xy).
70
+ // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates
71
+ class Point {
72
+ constructor(ex, ey, ez, et) {
73
+ this.ex = ex;
74
+ this.ey = ey;
75
+ this.ez = ez;
76
+ this.et = et;
77
+ if (!in0MaskRange(ex))
78
+ throw new Error('x required');
79
+ if (!in0MaskRange(ey))
80
+ throw new Error('y required');
81
+ if (!in0MaskRange(ez))
82
+ throw new Error('z required');
83
+ if (!in0MaskRange(et))
84
+ throw new Error('t required');
85
+ }
86
+ get x() {
87
+ return this.toAffine().x;
88
+ }
89
+ get y() {
90
+ return this.toAffine().y;
91
+ }
92
+ static fromAffine(p) {
93
+ if (p instanceof Point)
94
+ throw new Error('extended point not allowed');
95
+ const { x, y } = p || {};
96
+ if (!in0MaskRange(x) || !in0MaskRange(y))
97
+ throw new Error('invalid affine point');
98
+ return new Point(x, y, _1n, modP(x * y));
99
+ }
100
+ static normalizeZ(points) {
101
+ const toInv = Fp.invertBatch(points.map((p) => p.ez));
102
+ return points.map((p, i) => p.toAffine(toInv[i])).map(Point.fromAffine);
103
+ }
104
+ // "Private method", don't use it directly
105
+ _setWindowSize(windowSize) {
106
+ this._WINDOW_SIZE = windowSize;
107
+ pointPrecomputes.delete(this);
108
+ }
109
+ // Not required for fromHex(), which always creates valid points.
110
+ // Could be useful for fromAffine().
111
+ assertValidity() {
112
+ const { a, d } = CURVE;
113
+ if (this.is0())
114
+ throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?
115
+ // Equation in affine coordinates: ax² + y² = 1 + dx²y²
116
+ // Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²
117
+ const { ex: X, ey: Y, ez: Z, et: T } = this;
118
+ const X2 = modP(X * X); // X²
119
+ const Y2 = modP(Y * Y); // Y²
120
+ const Z2 = modP(Z * Z); // Z²
121
+ const Z4 = modP(Z2 * Z2); // Z⁴
122
+ const aX2 = modP(X2 * a); // aX²
123
+ const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²
124
+ const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²
125
+ if (left !== right)
126
+ throw new Error('bad point: equation left != right (1)');
127
+ // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T
128
+ const XY = modP(X * Y);
129
+ const ZT = modP(Z * T);
130
+ if (XY !== ZT)
131
+ throw new Error('bad point: equation left != right (2)');
132
+ }
133
+ // Compare one point to another.
134
+ equals(other) {
135
+ isPoint(other);
136
+ const { ex: X1, ey: Y1, ez: Z1 } = this;
137
+ const { ex: X2, ey: Y2, ez: Z2 } = other;
138
+ const X1Z2 = modP(X1 * Z2);
139
+ const X2Z1 = modP(X2 * Z1);
140
+ const Y1Z2 = modP(Y1 * Z2);
141
+ const Y2Z1 = modP(Y2 * Z1);
142
+ return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;
143
+ }
144
+ is0() {
145
+ return this.equals(Point.ZERO);
146
+ }
147
+ negate() {
148
+ // Flips point sign to a negative one (-x, y in affine coords)
149
+ return new Point(modP(-this.ex), this.ey, this.ez, modP(-this.et));
150
+ }
151
+ // Fast algo for doubling Extended Point.
152
+ // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd
153
+ // Cost: 4M + 4S + 1*a + 6add + 1*2.
154
+ double() {
155
+ const { a } = CURVE;
156
+ const { ex: X1, ey: Y1, ez: Z1 } = this;
157
+ const A = modP(X1 * X1); // A = X12
158
+ const B = modP(Y1 * Y1); // B = Y12
159
+ const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12
160
+ const D = modP(a * A); // D = a*A
161
+ const x1y1 = X1 + Y1;
162
+ const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B
163
+ const G = D + B; // G = D+B
164
+ const F = G - C; // F = G-C
165
+ const H = D - B; // H = D-B
166
+ const X3 = modP(E * F); // X3 = E*F
167
+ const Y3 = modP(G * H); // Y3 = G*H
168
+ const T3 = modP(E * H); // T3 = E*H
169
+ const Z3 = modP(F * G); // Z3 = F*G
170
+ return new Point(X3, Y3, Z3, T3);
171
+ }
172
+ // Fast algo for adding 2 Extended Points.
173
+ // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd
174
+ // Cost: 9M + 1*a + 1*d + 7add.
175
+ add(other) {
176
+ isPoint(other);
177
+ const { a, d } = CURVE;
178
+ const { ex: X1, ey: Y1, ez: Z1, et: T1 } = this;
179
+ const { ex: X2, ey: Y2, ez: Z2, et: T2 } = other;
180
+ // Faster algo for adding 2 Extended Points when curve's a=-1.
181
+ // http://hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html#addition-add-2008-hwcd-4
182
+ // Cost: 8M + 8add + 2*2.
183
+ // Note: It does not check whether the `other` point is valid.
184
+ if (a === BigInt(-1)) {
185
+ const A = modP((Y1 - X1) * (Y2 + X2));
186
+ const B = modP((Y1 + X1) * (Y2 - X2));
187
+ const F = modP(B - A);
188
+ if (F === _0n)
189
+ return this.double(); // Same point. Tests say it doesn't affect timing
190
+ const C = modP(Z1 * _2n * T2);
191
+ const D = modP(T1 * _2n * Z2);
192
+ const E = D + C;
193
+ const G = B + A;
194
+ const H = D - C;
195
+ const X3 = modP(E * F);
196
+ const Y3 = modP(G * H);
197
+ const T3 = modP(E * H);
198
+ const Z3 = modP(F * G);
199
+ return new Point(X3, Y3, Z3, T3);
200
+ }
201
+ const A = modP(X1 * X2); // A = X1*X2
202
+ const B = modP(Y1 * Y2); // B = Y1*Y2
203
+ const C = modP(T1 * d * T2); // C = T1*d*T2
204
+ const D = modP(Z1 * Z2); // D = Z1*Z2
205
+ const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B
206
+ const F = D - C; // F = D-C
207
+ const G = D + C; // G = D+C
208
+ const H = modP(B - a * A); // H = B-a*A
209
+ const X3 = modP(E * F); // X3 = E*F
210
+ const Y3 = modP(G * H); // Y3 = G*H
211
+ const T3 = modP(E * H); // T3 = E*H
212
+ const Z3 = modP(F * G); // Z3 = F*G
213
+ return new Point(X3, Y3, Z3, T3);
214
+ }
215
+ subtract(other) {
216
+ return this.add(other.negate());
217
+ }
218
+ wNAF(n) {
219
+ return wnaf.wNAFCached(this, pointPrecomputes, n, Point.normalizeZ);
220
+ }
221
+ // Constant-time multiplication.
222
+ multiply(scalar) {
223
+ const { p, f } = this.wNAF(assertInRange(scalar, CURVE_ORDER));
224
+ return Point.normalizeZ([p, f])[0];
225
+ }
226
+ // Non-constant-time multiplication. Uses double-and-add algorithm.
227
+ // It's faster, but should only be used when you don't care about
228
+ // an exposed private key e.g. sig verification.
229
+ multiplyUnsafe(scalar) {
230
+ let n = assertGE0(scalar);
231
+ if (n === _0n)
232
+ return I;
233
+ if (this.equals(I) || n === _1n)
234
+ return this;
235
+ if (this.equals(G))
236
+ return this.wNAF(n).p;
237
+ return wnaf.unsafeLadder(this, n);
238
+ }
239
+ // Checks if point is of small order.
240
+ // If you add something to small order point, you will have "dirty"
241
+ // point with torsion component.
242
+ // Multiplies point by cofactor and checks if the result is 0.
243
+ isSmallOrder() {
244
+ return this.multiplyUnsafe(cofactor).is0();
245
+ }
246
+ // Multiplies point by curve order and checks if the result is 0.
247
+ // Returns `false` is the point is dirty.
248
+ isTorsionFree() {
249
+ return wnaf.unsafeLadder(this, CURVE_ORDER).is0();
250
+ }
251
+ // Converts Extended point to default (x, y) coordinates.
252
+ // Can accept precomputed Z^-1 - for example, from invertBatch.
253
+ toAffine(iz) {
254
+ const { ex: x, ey: y, ez: z } = this;
255
+ const is0 = this.is0();
256
+ if (iz == null)
257
+ iz = is0 ? _8n : Fp.inv(z); // 8 was chosen arbitrarily
258
+ const ax = modP(x * iz);
259
+ const ay = modP(y * iz);
260
+ const zz = modP(z * iz);
261
+ if (is0)
262
+ return { x: _0n, y: _1n };
263
+ if (zz !== _1n)
264
+ throw new Error('invZ was invalid');
265
+ return { x: ax, y: ay };
266
+ }
267
+ clearCofactor() {
268
+ const { h: cofactor } = CURVE;
269
+ if (cofactor === _1n)
270
+ return this;
271
+ return this.multiplyUnsafe(cofactor);
272
+ }
273
+ // Converts hash string or Uint8Array to Point.
274
+ // Uses algo from RFC8032 5.1.3.
275
+ static fromHex(hex, strict = true) {
276
+ const { d, a } = CURVE;
277
+ const len = Fp.BYTES;
278
+ hex = ensureBytes('pointHex', hex, len); // copy hex to a new array
279
+ const normed = hex.slice(); // copy again, we'll manipulate it
280
+ const lastByte = hex[len - 1]; // select last byte
281
+ normed[len - 1] = lastByte & ~0x80; // clear last bit
282
+ const y = ut.bytesToNumberLE(normed);
283
+ if (y === _0n) {
284
+ // y=0 is allowed
285
+ }
286
+ else {
287
+ // RFC8032 prohibits >= p, but ZIP215 doesn't
288
+ if (strict)
289
+ assertInRange(y, Fp.ORDER); // strict=true [1..P-1] (2^255-19-1 for ed25519)
290
+ else
291
+ assertInRange(y, MASK); // strict=false [1..MASK-1] (2^256-1 for ed25519)
292
+ }
293
+ // Ed25519: x² = (y²-1)/(dy²+1) mod p. Ed448: x² = (y²-1)/(dy²-1) mod p. Generic case:
294
+ // ax²+y²=1+dx²y² => y²-1=dx²y²-ax² => y²-1=x²(dy²-a) => x²=(y²-1)/(dy²-a)
295
+ const y2 = modP(y * y); // denominator is always non-0 mod p.
296
+ const u = modP(y2 - _1n); // u = y² - 1
297
+ const v = modP(d * y2 - a); // v = d y² + 1.
298
+ let { isValid, value: x } = uvRatio(u, v); // √(u/v)
299
+ if (!isValid)
300
+ throw new Error('Point.fromHex: invalid y coordinate');
301
+ const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper
302
+ const isLastByteOdd = (lastByte & 0x80) !== 0; // if x=0 and x_0 = 1, fail
303
+ if (isLastByteOdd !== isXOdd)
304
+ x = modP(-x); // if x_0 != x mod 2, set x = p-x
305
+ return Point.fromAffine({ x, y });
306
+ }
307
+ static fromPrivateKey(privKey) {
308
+ return getExtendedPublicKey(privKey).point;
309
+ }
310
+ toRawBytes() {
311
+ const { x, y } = this.toAffine();
312
+ const bytes = ut.numberToBytesLE(y, Fp.BYTES); // each y has 2 x values (x, -y)
313
+ bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0; // when compressing, it's enough to store y
314
+ return bytes; // and use the last byte to encode sign of x
315
+ }
316
+ toHex() {
317
+ return ut.bytesToHex(this.toRawBytes()); // Same as toRawBytes, but returns string.
318
+ }
319
+ }
320
+ Point.BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));
321
+ Point.ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0
322
+ const { BASE: G, ZERO: I } = Point;
323
+ const wnaf = wNAF(Point, nByteLength * 8);
324
+ function modN(a) {
325
+ return mod(a, CURVE_ORDER);
326
+ }
327
+ // Little-endian SHA512 with modulo n
328
+ function modN_LE(hash) {
329
+ return modN(ut.bytesToNumberLE(hash));
330
+ }
331
+ /** Convenience method that creates public key and other stuff. RFC8032 5.1.5 */
332
+ function getExtendedPublicKey(key) {
333
+ const len = nByteLength;
334
+ key = ensureBytes('private key', key, len);
335
+ // Hash private key with curve's hash function to produce uniformingly random input
336
+ // Check byte lengths: ensure(64, h(ensure(32, key)))
337
+ const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);
338
+ const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE
339
+ const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)
340
+ const scalar = modN_LE(head); // The actual private scalar
341
+ const point = G.multiply(scalar); // Point on Edwards curve aka public key
342
+ const pointBytes = point.toRawBytes(); // Uint8Array representation
343
+ return { head, prefix, scalar, point, pointBytes };
344
+ }
345
+ // Calculates EdDSA pub key. RFC8032 5.1.5. Privkey is hashed. Use first half with 3 bits cleared
346
+ function getPublicKey(privKey) {
347
+ return getExtendedPublicKey(privKey).pointBytes;
348
+ }
349
+ // int('LE', SHA512(dom2(F, C) || msgs)) mod N
350
+ function hashDomainToScalar(context = new Uint8Array(), ...msgs) {
351
+ const msg = ut.concatBytes(...msgs);
352
+ return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!preHash)));
353
+ }
354
+ /** Signs message with privateKey. RFC8032 5.1.6 */
355
+ function sign(msg, privKey, context) {
356
+ msg = ensureBytes('message', msg);
357
+ if (preHash)
358
+ msg = preHash(msg); // for ed25519ph etc.
359
+ const { prefix, scalar, pointBytes } = getExtendedPublicKey(privKey);
360
+ const r = hashDomainToScalar(context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)
361
+ const R = G.multiply(r).toRawBytes(); // R = rG
362
+ const k = hashDomainToScalar(context, R, pointBytes, msg); // R || A || PH(M)
363
+ const s = modN(r + k * scalar); // S = (r + k * s) mod L
364
+ assertGE0(s); // 0 <= s < l
365
+ const res = ut.concatBytes(R, ut.numberToBytesLE(s, Fp.BYTES));
366
+ return ensureBytes('result', res, nByteLength * 2); // 64-byte signature
367
+ }
368
+ function verify(sig, msg, publicKey, context) {
369
+ const len = Fp.BYTES; // Verifies EdDSA signature against message and public key. RFC8032 5.1.7.
370
+ sig = ensureBytes('signature', sig, 2 * len); // An extended group equation is checked.
371
+ msg = ensureBytes('message', msg); // ZIP215 compliant, which means not fully RFC8032 compliant.
372
+ if (preHash)
373
+ msg = preHash(msg); // for ed25519ph, etc
374
+ const A = Point.fromHex(publicKey, false); // Check for s bounds, hex validity
375
+ const R = Point.fromHex(sig.slice(0, len), false); // 0 <= R < 2^256: ZIP215 R can be >= P
376
+ const s = ut.bytesToNumberLE(sig.slice(len, 2 * len)); // 0 <= s < l
377
+ const SB = G.multiplyUnsafe(s);
378
+ const k = hashDomainToScalar(context, R.toRawBytes(), A.toRawBytes(), msg);
379
+ const RkA = R.add(A.multiplyUnsafe(k));
380
+ // [8][S]B = [8]R + [8][k]A'
381
+ return RkA.subtract(SB).clearCofactor().equals(Point.ZERO);
382
+ }
383
+ G._setWindowSize(8); // Enable precomputes. Slows down first publicKey computation by 20ms.
384
+ const utils = {
385
+ getExtendedPublicKey,
386
+ // ed25519 private keys are uniform 32b. No need to check for modulo bias, like in secp256k1.
387
+ randomPrivateKey: () => randomBytes(Fp.BYTES),
388
+ /**
389
+ * We're doing scalar multiplication (used in getPublicKey etc) with precomputed BASE_POINT
390
+ * values. This slows down first getPublicKey() by milliseconds (see Speed section),
391
+ * but allows to speed-up subsequent getPublicKey() calls up to 20x.
392
+ * @param windowSize 2, 4, 8, 16
393
+ */
394
+ precompute(windowSize = 8, point = Point.BASE) {
395
+ point._setWindowSize(windowSize);
396
+ point.multiply(BigInt(3));
397
+ return point;
398
+ },
399
+ };
400
+ return {
401
+ CURVE,
402
+ getPublicKey,
403
+ sign,
404
+ verify,
405
+ ExtendedPoint: Point,
406
+ utils,
407
+ };
408
+ }
409
+ //# sourceMappingURL=edwards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edwards.js","sourceRoot":"","sources":["../../src/abstract/edwards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ import { mod } from './modular.js';
2
+ import { bytesToNumberBE, concatBytes, utf8ToBytes, validateObject } from './utils.js';
3
+ function validateDST(dst) {
4
+ if (dst instanceof Uint8Array)
5
+ return dst;
6
+ if (typeof dst === 'string')
7
+ return utf8ToBytes(dst);
8
+ throw new Error('DST must be Uint8Array or string');
9
+ }
10
+ // Octet Stream to Integer. "spec" implementation of os2ip is 2.5x slower vs bytesToNumberBE.
11
+ const os2ip = bytesToNumberBE;
12
+ // Integer to Octet Stream (numberToBytesBE)
13
+ function i2osp(value, length) {
14
+ if (value < 0 || value >= 1 << (8 * length)) {
15
+ throw new Error(`bad I2OSP call: value=${value} length=${length}`);
16
+ }
17
+ const res = Array.from({ length }).fill(0);
18
+ for (let i = length - 1; i >= 0; i--) {
19
+ res[i] = value & 0xff;
20
+ value >>>= 8;
21
+ }
22
+ return new Uint8Array(res);
23
+ }
24
+ function strxor(a, b) {
25
+ const arr = new Uint8Array(a.length);
26
+ for (let i = 0; i < a.length; i++) {
27
+ arr[i] = a[i] ^ b[i];
28
+ }
29
+ return arr;
30
+ }
31
+ function isBytes(item) {
32
+ if (!(item instanceof Uint8Array))
33
+ throw new Error('Uint8Array expected');
34
+ }
35
+ function isNum(item) {
36
+ if (!Number.isSafeInteger(item))
37
+ throw new Error('number expected');
38
+ }
39
+ // Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits
40
+ // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-11#section-5.4.1
41
+ export function expand_message_xmd(msg, DST, lenInBytes, H) {
42
+ isBytes(msg);
43
+ isBytes(DST);
44
+ isNum(lenInBytes);
45
+ // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.3.3
46
+ if (DST.length > 255)
47
+ DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));
48
+ const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;
49
+ const ell = Math.ceil(lenInBytes / b_in_bytes);
50
+ if (ell > 255)
51
+ throw new Error('Invalid xmd length');
52
+ const DST_prime = concatBytes(DST, i2osp(DST.length, 1));
53
+ const Z_pad = i2osp(0, r_in_bytes);
54
+ const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str
55
+ const b = new Array(ell);
56
+ const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));
57
+ b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));
58
+ for (let i = 1; i <= ell; i++) {
59
+ const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];
60
+ b[i] = H(concatBytes(...args));
61
+ }
62
+ const pseudo_random_bytes = concatBytes(...b);
63
+ return pseudo_random_bytes.slice(0, lenInBytes);
64
+ }
65
+ export function expand_message_xof(msg, DST, lenInBytes, k, H) {
66
+ isBytes(msg);
67
+ isBytes(DST);
68
+ isNum(lenInBytes);
69
+ // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-5.3.3
70
+ // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));
71
+ if (DST.length > 255) {
72
+ const dkLen = Math.ceil((2 * k) / 8);
73
+ DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();
74
+ }
75
+ if (lenInBytes > 65535 || DST.length > 255)
76
+ throw new Error('expand_message_xof: invalid lenInBytes');
77
+ return (H.create({ dkLen: lenInBytes })
78
+ .update(msg)
79
+ .update(i2osp(lenInBytes, 2))
80
+ // 2. DST_prime = DST || I2OSP(len(DST), 1)
81
+ .update(DST)
82
+ .update(i2osp(DST.length, 1))
83
+ .digest());
84
+ }
85
+ /**
86
+ * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F
87
+ * https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-11#section-5.3
88
+ * @param msg a byte string containing the message to hash
89
+ * @param count the number of elements of F to output
90
+ * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above
91
+ * @returns [u_0, ..., u_(count - 1)], a list of field elements.
92
+ */
93
+ export function hash_to_field(msg, count, options) {
94
+ validateObject(options, {
95
+ DST: 'string',
96
+ p: 'bigint',
97
+ m: 'isSafeInteger',
98
+ k: 'isSafeInteger',
99
+ hash: 'hash',
100
+ });
101
+ const { p, k, m, hash, expand, DST: _DST } = options;
102
+ isBytes(msg);
103
+ isNum(count);
104
+ const DST = validateDST(_DST);
105
+ const log2p = p.toString(2).length;
106
+ const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above
107
+ const len_in_bytes = count * m * L;
108
+ let prb; // pseudo_random_bytes
109
+ if (expand === 'xmd') {
110
+ prb = expand_message_xmd(msg, DST, len_in_bytes, hash);
111
+ }
112
+ else if (expand === 'xof') {
113
+ prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);
114
+ }
115
+ else if (expand === undefined) {
116
+ prb = msg;
117
+ }
118
+ else {
119
+ throw new Error('expand must be "xmd", "xof" or undefined');
120
+ }
121
+ const u = new Array(count);
122
+ for (let i = 0; i < count; i++) {
123
+ const e = new Array(m);
124
+ for (let j = 0; j < m; j++) {
125
+ const elm_offset = L * (j + i * m);
126
+ const tv = prb.subarray(elm_offset, elm_offset + L);
127
+ e[j] = mod(os2ip(tv), p);
128
+ }
129
+ u[i] = e;
130
+ }
131
+ return u;
132
+ }
133
+ export function isogenyMap(field, map) {
134
+ // Make same order as in spec
135
+ const COEFF = map.map((i) => Array.from(i).reverse());
136
+ return (x, y) => {
137
+ const [xNum, xDen, yNum, yDen] = COEFF.map((val) => val.reduce((acc, i) => field.add(field.mul(acc, x), i)));
138
+ x = field.div(xNum, xDen); // xNum / xDen
139
+ y = field.mul(y, field.div(yNum, yDen)); // y * (yNum / yDev)
140
+ return { x, y };
141
+ };
142
+ }
143
+ export function createHasher(Point, mapToCurve, def) {
144
+ if (typeof mapToCurve !== 'function')
145
+ throw new Error('mapToCurve() must be defined');
146
+ return {
147
+ // Encodes byte string to elliptic curve
148
+ // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-3
149
+ hashToCurve(msg, options) {
150
+ const u = hash_to_field(msg, 2, { ...def, DST: def.DST, ...options });
151
+ const u0 = Point.fromAffine(mapToCurve(u[0]));
152
+ const u1 = Point.fromAffine(mapToCurve(u[1]));
153
+ const P = u0.add(u1).clearCofactor();
154
+ P.assertValidity();
155
+ return P;
156
+ },
157
+ // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-hash-to-curve-16#section-3
158
+ encodeToCurve(msg, options) {
159
+ const u = hash_to_field(msg, 1, { ...def, DST: def.encodeDST, ...options });
160
+ const P = Point.fromAffine(mapToCurve(u[0])).clearCofactor();
161
+ P.assertValidity();
162
+ return P;
163
+ },
164
+ };
165
+ }
166
+ //# sourceMappingURL=hash-to-curve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-to-curve.js","sourceRoot":"","sources":["../../src/abstract/hash-to-curve.ts"],"names":[],"mappings":"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"}