@noble/curves 2.0.1 → 2.2.0
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.
- package/README.md +214 -122
- package/abstract/bls.d.ts +299 -16
- package/abstract/bls.d.ts.map +1 -1
- package/abstract/bls.js +82 -22
- package/abstract/bls.js.map +1 -1
- package/abstract/curve.d.ts +274 -27
- package/abstract/curve.d.ts.map +1 -1
- package/abstract/curve.js +177 -23
- package/abstract/curve.js.map +1 -1
- package/abstract/edwards.d.ts +166 -30
- package/abstract/edwards.d.ts.map +1 -1
- package/abstract/edwards.js +221 -86
- package/abstract/edwards.js.map +1 -1
- package/abstract/fft.d.ts +322 -10
- package/abstract/fft.d.ts.map +1 -1
- package/abstract/fft.js +154 -12
- package/abstract/fft.js.map +1 -1
- package/abstract/frost.d.ts +293 -0
- package/abstract/frost.d.ts.map +1 -0
- package/abstract/frost.js +704 -0
- package/abstract/frost.js.map +1 -0
- package/abstract/hash-to-curve.d.ts +173 -24
- package/abstract/hash-to-curve.d.ts.map +1 -1
- package/abstract/hash-to-curve.js +170 -31
- package/abstract/hash-to-curve.js.map +1 -1
- package/abstract/modular.d.ts +429 -37
- package/abstract/modular.d.ts.map +1 -1
- package/abstract/modular.js +414 -119
- package/abstract/modular.js.map +1 -1
- package/abstract/montgomery.d.ts +83 -12
- package/abstract/montgomery.d.ts.map +1 -1
- package/abstract/montgomery.js +32 -7
- package/abstract/montgomery.js.map +1 -1
- package/abstract/oprf.d.ts +164 -91
- package/abstract/oprf.d.ts.map +1 -1
- package/abstract/oprf.js +88 -29
- package/abstract/oprf.js.map +1 -1
- package/abstract/poseidon.d.ts +138 -7
- package/abstract/poseidon.d.ts.map +1 -1
- package/abstract/poseidon.js +178 -15
- package/abstract/poseidon.js.map +1 -1
- package/abstract/tower.d.ts +122 -3
- package/abstract/tower.d.ts.map +1 -1
- package/abstract/tower.js +323 -139
- package/abstract/tower.js.map +1 -1
- package/abstract/weierstrass.d.ts +339 -76
- package/abstract/weierstrass.d.ts.map +1 -1
- package/abstract/weierstrass.js +395 -205
- package/abstract/weierstrass.js.map +1 -1
- package/bls12-381.d.ts +16 -2
- package/bls12-381.d.ts.map +1 -1
- package/bls12-381.js +199 -209
- package/bls12-381.js.map +1 -1
- package/bn254.d.ts +11 -2
- package/bn254.d.ts.map +1 -1
- package/bn254.js +93 -38
- package/bn254.js.map +1 -1
- package/ed25519.d.ts +125 -14
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +202 -40
- package/ed25519.js.map +1 -1
- package/ed448.d.ts +108 -14
- package/ed448.d.ts.map +1 -1
- package/ed448.js +194 -42
- package/ed448.js.map +1 -1
- package/index.js +7 -1
- package/index.js.map +1 -1
- package/misc.d.ts +106 -7
- package/misc.d.ts.map +1 -1
- package/misc.js +141 -32
- package/misc.js.map +1 -1
- package/nist.d.ts +112 -11
- package/nist.d.ts.map +1 -1
- package/nist.js +139 -17
- package/nist.js.map +1 -1
- package/package.json +11 -6
- package/secp256k1.d.ts +92 -15
- package/secp256k1.d.ts.map +1 -1
- package/secp256k1.js +211 -28
- package/secp256k1.js.map +1 -1
- package/src/abstract/bls.ts +350 -67
- package/src/abstract/curve.ts +327 -44
- package/src/abstract/edwards.ts +367 -143
- package/src/abstract/fft.ts +369 -36
- package/src/abstract/frost.ts +1092 -0
- package/src/abstract/hash-to-curve.ts +255 -56
- package/src/abstract/modular.ts +591 -144
- package/src/abstract/montgomery.ts +114 -30
- package/src/abstract/oprf.ts +383 -194
- package/src/abstract/poseidon.ts +235 -35
- package/src/abstract/tower.ts +428 -159
- package/src/abstract/weierstrass.ts +710 -312
- package/src/bls12-381.ts +239 -236
- package/src/bn254.ts +107 -46
- package/src/ed25519.ts +227 -55
- package/src/ed448.ts +227 -57
- package/src/index.ts +7 -1
- package/src/misc.ts +154 -35
- package/src/nist.ts +143 -20
- package/src/secp256k1.ts +284 -41
- package/src/utils.ts +583 -81
- package/src/webcrypto.ts +302 -73
- package/utils.d.ts +457 -24
- package/utils.d.ts.map +1 -1
- package/utils.js +410 -53
- package/utils.js.map +1 -1
- package/webcrypto.d.ts +167 -25
- package/webcrypto.d.ts.map +1 -1
- package/webcrypto.js +165 -58
- package/webcrypto.js.map +1 -1
package/abstract/edwards.js
CHANGED
|
@@ -5,12 +5,14 @@
|
|
|
5
5
|
* @module
|
|
6
6
|
*/
|
|
7
7
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
8
|
-
import { abool, abytes, aInRange, bytesToHex, bytesToNumberLE, concatBytes, copyBytes, hexToBytes, isBytes,
|
|
8
|
+
import { abool, abytes, aInRange, asafenumber, bytesToHex, bytesToNumberLE, concatBytes, copyBytes, hexToBytes, isBytes, notImplemented, validateObject, randomBytes as wcRandomBytes, } from "../utils.js";
|
|
9
9
|
import { createCurveFields, createKeygen, normalizeZ, wNAF, } from "./curve.js";
|
|
10
10
|
import {} from "./modular.js";
|
|
11
11
|
// Be friendly to bad ECMAScript parsers by not using bigint literals
|
|
12
12
|
// prettier-ignore
|
|
13
|
-
const _0n = BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _8n = BigInt(8);
|
|
13
|
+
const _0n = /* @__PURE__ */ BigInt(0), _1n = /* @__PURE__ */ BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _8n = /* @__PURE__ */ BigInt(8);
|
|
14
|
+
// Affine Edwards-equation check only; this does not prove subgroup membership, canonical
|
|
15
|
+
// encoding, prime-order base-point requirements, or identity exclusion.
|
|
14
16
|
function isEdValidXY(Fp, CURVE, x, y) {
|
|
15
17
|
const x2 = Fp.sqr(x);
|
|
16
18
|
const y2 = Fp.sqr(y);
|
|
@@ -18,12 +20,34 @@ function isEdValidXY(Fp, CURVE, x, y) {
|
|
|
18
20
|
const right = Fp.add(Fp.ONE, Fp.mul(CURVE.d, Fp.mul(x2, y2)));
|
|
19
21
|
return Fp.eql(left, right);
|
|
20
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* @param params - Curve parameters. See {@link EdwardsOpts}.
|
|
25
|
+
* @param extraOpts - Optional helpers and overrides. See {@link EdwardsExtraOpts}.
|
|
26
|
+
* @returns Edwards point constructor. Generator validation here only checks
|
|
27
|
+
* that `(Gx, Gy)` satisfies the affine Edwards equation.
|
|
28
|
+
* RFC 8032 base-point constraints like `B != (0,1)` and `[L]B = 0`
|
|
29
|
+
* are left to the caller's chosen parameters, since eager subgroup
|
|
30
|
+
* validation here adds about 10-15ms to heavyweight imports like ed448.
|
|
31
|
+
* The returned constructor also eagerly marks `Point.BASE` for W=8
|
|
32
|
+
* precompute caching. Some code paths still assume
|
|
33
|
+
* `Fp.BYTES === Fn.BYTES`, so mismatched byte lengths are not fully audited here.
|
|
34
|
+
* @throws If the curve parameters or Edwards overrides are invalid. {@link Error}
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { edwards } from '@noble/curves/abstract/edwards.js';
|
|
38
|
+
* import { jubjub } from '@noble/curves/misc.js';
|
|
39
|
+
* // Build a point constructor from explicit curve parameters, then use its base point.
|
|
40
|
+
* const Point = edwards(jubjub.Point.CURVE());
|
|
41
|
+
* Point.BASE.toHex();
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
21
44
|
export function edwards(params, extraOpts = {}) {
|
|
22
|
-
const
|
|
45
|
+
const opts = extraOpts;
|
|
46
|
+
const validated = createCurveFields('edwards', params, opts, opts.FpFnLE);
|
|
23
47
|
const { Fp, Fn } = validated;
|
|
24
48
|
let CURVE = validated.CURVE;
|
|
25
49
|
const { h: cofactor } = CURVE;
|
|
26
|
-
validateObject(
|
|
50
|
+
validateObject(opts, {}, { uvRatio: 'function' });
|
|
27
51
|
// Important:
|
|
28
52
|
// There are some places where Fp.BYTES is used instead of nByteLength.
|
|
29
53
|
// So far, everything has been tested with curves of Fp.BYTES == nByteLength.
|
|
@@ -31,15 +55,16 @@ export function edwards(params, extraOpts = {}) {
|
|
|
31
55
|
const MASK = _2n << (BigInt(Fn.BYTES * 8) - _1n);
|
|
32
56
|
const modP = (n) => Fp.create(n); // Function overrides
|
|
33
57
|
// sqrt(u/v)
|
|
34
|
-
const uvRatio =
|
|
35
|
-
(
|
|
58
|
+
const uvRatio = opts.uvRatio === undefined
|
|
59
|
+
? (u, v) => {
|
|
36
60
|
try {
|
|
37
61
|
return { isValid: true, value: Fp.sqrt(Fp.div(u, v)) };
|
|
38
62
|
}
|
|
39
63
|
catch (e) {
|
|
40
64
|
return { isValid: false, value: _0n };
|
|
41
65
|
}
|
|
42
|
-
}
|
|
66
|
+
}
|
|
67
|
+
: opts.uvRatio;
|
|
43
68
|
// Validate whether the passed curve params are valid.
|
|
44
69
|
// equation ax² + y² = 1 + dx²y² should work for generator point.
|
|
45
70
|
if (!isEdValidXY(Fp, CURVE, CURVE.Gx, CURVE.Gy))
|
|
@@ -57,45 +82,6 @@ export function edwards(params, extraOpts = {}) {
|
|
|
57
82
|
if (!(other instanceof Point))
|
|
58
83
|
throw new Error('EdwardsPoint expected');
|
|
59
84
|
}
|
|
60
|
-
// Converts Extended point to default (x, y) coordinates.
|
|
61
|
-
// Can accept precomputed Z^-1 - for example, from invertBatch.
|
|
62
|
-
const toAffineMemo = memoized((p, iz) => {
|
|
63
|
-
const { X, Y, Z } = p;
|
|
64
|
-
const is0 = p.is0();
|
|
65
|
-
if (iz == null)
|
|
66
|
-
iz = is0 ? _8n : Fp.inv(Z); // 8 was chosen arbitrarily
|
|
67
|
-
const x = modP(X * iz);
|
|
68
|
-
const y = modP(Y * iz);
|
|
69
|
-
const zz = Fp.mul(Z, iz);
|
|
70
|
-
if (is0)
|
|
71
|
-
return { x: _0n, y: _1n };
|
|
72
|
-
if (zz !== _1n)
|
|
73
|
-
throw new Error('invZ was invalid');
|
|
74
|
-
return { x, y };
|
|
75
|
-
});
|
|
76
|
-
const assertValidMemo = memoized((p) => {
|
|
77
|
-
const { a, d } = CURVE;
|
|
78
|
-
if (p.is0())
|
|
79
|
-
throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?
|
|
80
|
-
// Equation in affine coordinates: ax² + y² = 1 + dx²y²
|
|
81
|
-
// Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²
|
|
82
|
-
const { X, Y, Z, T } = p;
|
|
83
|
-
const X2 = modP(X * X); // X²
|
|
84
|
-
const Y2 = modP(Y * Y); // Y²
|
|
85
|
-
const Z2 = modP(Z * Z); // Z²
|
|
86
|
-
const Z4 = modP(Z2 * Z2); // Z⁴
|
|
87
|
-
const aX2 = modP(X2 * a); // aX²
|
|
88
|
-
const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²
|
|
89
|
-
const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²
|
|
90
|
-
if (left !== right)
|
|
91
|
-
throw new Error('bad point: equation left != right (1)');
|
|
92
|
-
// In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T
|
|
93
|
-
const XY = modP(X * Y);
|
|
94
|
-
const ZT = modP(Z * T);
|
|
95
|
-
if (XY !== ZT)
|
|
96
|
-
throw new Error('bad point: equation left != right (2)');
|
|
97
|
-
return true;
|
|
98
|
-
});
|
|
99
85
|
// Extended Point works in extended coordinates: (X, Y, Z, T) ∋ (x=X/Z, y=Y/Z, T=xy).
|
|
100
86
|
// https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates
|
|
101
87
|
class Point {
|
|
@@ -121,6 +107,11 @@ export function edwards(params, extraOpts = {}) {
|
|
|
121
107
|
static CURVE() {
|
|
122
108
|
return CURVE;
|
|
123
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Create one extended Edwards point from affine coordinates.
|
|
112
|
+
* Does NOT validate that the point is on-curve or torsion-free.
|
|
113
|
+
* Use `.assertValidity()` on adversarial inputs.
|
|
114
|
+
*/
|
|
124
115
|
static fromAffine(p) {
|
|
125
116
|
if (p instanceof Point)
|
|
126
117
|
throw new Error('extended point not allowed');
|
|
@@ -179,7 +170,31 @@ export function edwards(params, extraOpts = {}) {
|
|
|
179
170
|
}
|
|
180
171
|
// Useful in fromAffine() - not for fromBytes(), which always created valid points.
|
|
181
172
|
assertValidity() {
|
|
182
|
-
|
|
173
|
+
const p = this;
|
|
174
|
+
const { a, d } = CURVE;
|
|
175
|
+
// Keep generic Edwards validation fail-closed on the neutral point.
|
|
176
|
+
// Even though ZERO is algebraically valid and can roundtrip through encodings, higher-level
|
|
177
|
+
// callers often reach it only through broken hash/scalar plumbing; rejecting it here avoids
|
|
178
|
+
// silently treating that degenerate state as an ordinary public point.
|
|
179
|
+
if (p.is0())
|
|
180
|
+
throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?
|
|
181
|
+
// Equation in affine coordinates: ax² + y² = 1 + dx²y²
|
|
182
|
+
// Equation in projective coordinates (X/Z, Y/Z, Z): (aX² + Y²)Z² = Z⁴ + dX²Y²
|
|
183
|
+
const { X, Y, Z, T } = p;
|
|
184
|
+
const X2 = modP(X * X); // X²
|
|
185
|
+
const Y2 = modP(Y * Y); // Y²
|
|
186
|
+
const Z2 = modP(Z * Z); // Z²
|
|
187
|
+
const Z4 = modP(Z2 * Z2); // Z⁴
|
|
188
|
+
const aX2 = modP(X2 * a); // aX²
|
|
189
|
+
const left = modP(Z2 * modP(aX2 + Y2)); // (aX² + Y²)Z²
|
|
190
|
+
const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z⁴ + dX²Y²
|
|
191
|
+
if (left !== right)
|
|
192
|
+
throw new Error('bad point: equation left != right (1)');
|
|
193
|
+
// In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T
|
|
194
|
+
const XY = modP(X * Y);
|
|
195
|
+
const ZT = modP(Z * T);
|
|
196
|
+
if (XY !== ZT)
|
|
197
|
+
throw new Error('bad point: equation left != right (2)');
|
|
183
198
|
}
|
|
184
199
|
// Compare one point to another.
|
|
185
200
|
equals(other) {
|
|
@@ -243,37 +258,43 @@ export function edwards(params, extraOpts = {}) {
|
|
|
243
258
|
return new Point(X3, Y3, Z3, T3);
|
|
244
259
|
}
|
|
245
260
|
subtract(other) {
|
|
261
|
+
// Validate before calling `negate()` so wrong inputs fail with the point guard
|
|
262
|
+
// instead of leaking a foreign `negate()` error.
|
|
263
|
+
aedpoint(other);
|
|
246
264
|
return this.add(other.negate());
|
|
247
265
|
}
|
|
248
266
|
// Constant-time multiplication.
|
|
249
267
|
multiply(scalar) {
|
|
250
268
|
// 1 <= scalar < L
|
|
269
|
+
// Keep the subgroup-scalar contract strict instead of reducing 0 / n to ZERO.
|
|
270
|
+
// In keygen/signing-style callers, those values usually mean broken hash/scalar plumbing,
|
|
271
|
+
// and failing closed is safer than silently producing the identity point.
|
|
251
272
|
if (!Fn.isValidNot0(scalar))
|
|
252
|
-
throw new
|
|
273
|
+
throw new RangeError('invalid scalar: expected 1 <= sc < curve.n');
|
|
253
274
|
const { p, f } = wnaf.cached(this, scalar, (p) => normalizeZ(Point, p));
|
|
254
275
|
return normalizeZ(Point, [p, f])[0];
|
|
255
276
|
}
|
|
256
277
|
// Non-constant-time multiplication. Uses double-and-add algorithm.
|
|
257
278
|
// It's faster, but should only be used when you don't care about
|
|
258
279
|
// an exposed private key e.g. sig verification.
|
|
259
|
-
//
|
|
260
|
-
//
|
|
261
|
-
multiplyUnsafe(scalar
|
|
280
|
+
// Keeps the same subgroup-scalar contract: 0 is allowed for public-scalar callers, but
|
|
281
|
+
// n and larger values are rejected instead of being reduced mod n to the identity point.
|
|
282
|
+
multiplyUnsafe(scalar) {
|
|
262
283
|
// 0 <= scalar < L
|
|
263
284
|
if (!Fn.isValid(scalar))
|
|
264
|
-
throw new
|
|
285
|
+
throw new RangeError('invalid scalar: expected 0 <= sc < curve.n');
|
|
265
286
|
if (scalar === _0n)
|
|
266
287
|
return Point.ZERO;
|
|
267
288
|
if (this.is0() || scalar === _1n)
|
|
268
289
|
return this;
|
|
269
|
-
return wnaf.unsafe(this, scalar, (p) => normalizeZ(Point, p)
|
|
290
|
+
return wnaf.unsafe(this, scalar, (p) => normalizeZ(Point, p));
|
|
270
291
|
}
|
|
271
292
|
// Checks if point is of small order.
|
|
272
293
|
// If you add something to small order point, you will have "dirty"
|
|
273
294
|
// point with torsion component.
|
|
274
|
-
//
|
|
295
|
+
// Clears cofactor and checks if the result is 0.
|
|
275
296
|
isSmallOrder() {
|
|
276
|
-
return this.
|
|
297
|
+
return this.clearCofactor().is0();
|
|
277
298
|
}
|
|
278
299
|
// Multiplies point by curve order and checks if the result is 0.
|
|
279
300
|
// Returns `false` is the point is dirty.
|
|
@@ -283,7 +304,20 @@ export function edwards(params, extraOpts = {}) {
|
|
|
283
304
|
// Converts Extended point to default (x, y) coordinates.
|
|
284
305
|
// Can accept precomputed Z^-1 - for example, from invertBatch.
|
|
285
306
|
toAffine(invertedZ) {
|
|
286
|
-
|
|
307
|
+
const p = this;
|
|
308
|
+
let iz = invertedZ;
|
|
309
|
+
const { X, Y, Z } = p;
|
|
310
|
+
const is0 = p.is0();
|
|
311
|
+
if (iz == null)
|
|
312
|
+
iz = is0 ? _8n : Fp.inv(Z); // 8 was chosen arbitrarily
|
|
313
|
+
const x = modP(X * iz);
|
|
314
|
+
const y = modP(Y * iz);
|
|
315
|
+
const zz = Fp.mul(Z, iz);
|
|
316
|
+
if (is0)
|
|
317
|
+
return { x: _0n, y: _1n };
|
|
318
|
+
if (zz !== _1n)
|
|
319
|
+
throw new Error('invZ was invalid');
|
|
320
|
+
return { x, y };
|
|
287
321
|
}
|
|
288
322
|
clearCofactor() {
|
|
289
323
|
if (cofactor === _1n)
|
|
@@ -307,13 +341,37 @@ export function edwards(params, extraOpts = {}) {
|
|
|
307
341
|
}
|
|
308
342
|
}
|
|
309
343
|
const wnaf = new wNAF(Point, Fn.BITS);
|
|
310
|
-
|
|
344
|
+
// Keep constructor work cheap: subgroup/generator validation belongs to the caller's curve
|
|
345
|
+
// parameters, and doing the extra checks here adds about 10-15ms to heavy module imports.
|
|
346
|
+
// Callers that construct custom curves are responsible for supplying the correct base point.
|
|
347
|
+
// try {
|
|
348
|
+
// Point.BASE.assertValidity();
|
|
349
|
+
// if (!Point.BASE.isTorsionFree()) throw new Error('bad point: not in prime-order subgroup');
|
|
350
|
+
// } catch {
|
|
351
|
+
// throw new Error('bad curve params: generator point');
|
|
352
|
+
// }
|
|
353
|
+
// Tiny toy curves can have scalar fields narrower than 8 bits. Skip the
|
|
354
|
+
// eager W=8 cache there instead of rejecting an otherwise valid constructor.
|
|
355
|
+
if (Fn.BITS >= 8)
|
|
356
|
+
Point.BASE.precompute(8); // Enable precomputes. Slows down first publicKey computation by 20ms.
|
|
357
|
+
Object.freeze(Point.prototype);
|
|
358
|
+
Object.freeze(Point);
|
|
311
359
|
return Point;
|
|
312
360
|
}
|
|
313
361
|
/**
|
|
314
362
|
* Base class for prime-order points like Ristretto255 and Decaf448.
|
|
315
363
|
* These points eliminate cofactor issues by representing equivalence classes
|
|
316
|
-
* of Edwards curve points.
|
|
364
|
+
* of Edwards curve points. Multiple Edwards representatives can describe the
|
|
365
|
+
* same abstract wrapper element, so wrapper validity is not the same thing as
|
|
366
|
+
* the hidden representative being torsion-free.
|
|
367
|
+
* @param ep - Backing Edwards point.
|
|
368
|
+
* @example
|
|
369
|
+
* Base class for prime-order points like Ristretto255 and Decaf448.
|
|
370
|
+
*
|
|
371
|
+
* ```ts
|
|
372
|
+
* import { ristretto255 } from '@noble/curves/ed25519.js';
|
|
373
|
+
* const point = ristretto255.Point.BASE.multiply(2n);
|
|
374
|
+
* ```
|
|
317
375
|
*/
|
|
318
376
|
export class PrimeEdwardsPoint {
|
|
319
377
|
static BASE;
|
|
@@ -321,6 +379,11 @@ export class PrimeEdwardsPoint {
|
|
|
321
379
|
static Fp;
|
|
322
380
|
static Fn;
|
|
323
381
|
ep;
|
|
382
|
+
/**
|
|
383
|
+
* Wrap one internal Edwards representative directly.
|
|
384
|
+
* This is not a canonical encoding boundary: alternate Edwards
|
|
385
|
+
* representatives may still describe the same abstract wrapper element.
|
|
386
|
+
*/
|
|
324
387
|
constructor(ep) {
|
|
325
388
|
this.ep = ep;
|
|
326
389
|
}
|
|
@@ -339,12 +402,22 @@ export class PrimeEdwardsPoint {
|
|
|
339
402
|
}
|
|
340
403
|
// Common implementations
|
|
341
404
|
clearCofactor() {
|
|
342
|
-
// no-op for prime-order
|
|
405
|
+
// no-op for the abstract prime-order wrapper group; this is about the
|
|
406
|
+
// wrapper element, not the hidden Edwards representative.
|
|
343
407
|
return this;
|
|
344
408
|
}
|
|
345
409
|
assertValidity() {
|
|
410
|
+
// Keep wrapper validity at the abstract-group boundary. Canonical decode
|
|
411
|
+
// may choose Edwards representatives that differ by small torsion, so
|
|
412
|
+
// checking `this.ep.isTorsionFree()` here would reject valid wrapper points.
|
|
346
413
|
this.ep.assertValidity();
|
|
347
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* Return affine coordinates of the current internal Edwards representative.
|
|
417
|
+
* This is a convenience helper, not a canonical Ristretto/Decaf encoding.
|
|
418
|
+
* Equal abstract elements may expose different `x` / `y`; use
|
|
419
|
+
* `toBytes()` / `fromBytes()` for canonical roundtrips.
|
|
420
|
+
*/
|
|
348
421
|
toAffine(invertedZ) {
|
|
349
422
|
return this.ep.toAffine(invertedZ);
|
|
350
423
|
}
|
|
@@ -355,6 +428,8 @@ export class PrimeEdwardsPoint {
|
|
|
355
428
|
return this.toHex();
|
|
356
429
|
}
|
|
357
430
|
isTorsionFree() {
|
|
431
|
+
// Abstract Ristretto/Decaf elements are already prime-order even when the
|
|
432
|
+
// hidden Edwards representative is not torsion-free.
|
|
358
433
|
return true;
|
|
359
434
|
}
|
|
360
435
|
isSmallOrder() {
|
|
@@ -381,34 +456,70 @@ export class PrimeEdwardsPoint {
|
|
|
381
456
|
return this.init(this.ep.negate());
|
|
382
457
|
}
|
|
383
458
|
precompute(windowSize, isLazy) {
|
|
384
|
-
|
|
459
|
+
this.ep.precompute(windowSize, isLazy);
|
|
460
|
+
// Keep the wrapper identity stable like the backing Edwards API instead of
|
|
461
|
+
// allocating a fresh wrapper around the same cached point.
|
|
462
|
+
return this;
|
|
385
463
|
}
|
|
386
464
|
}
|
|
387
465
|
/**
|
|
388
466
|
* Initializes EdDSA signatures over given Edwards curve.
|
|
467
|
+
* @param Point - Edwards point constructor.
|
|
468
|
+
* @param cHash - Hash function.
|
|
469
|
+
* @param eddsaOpts - Optional signature helpers. See {@link EdDSAOpts}.
|
|
470
|
+
* @returns EdDSA helper namespace.
|
|
471
|
+
* @throws If the hash function, options, or derived point operations are invalid. {@link Error}
|
|
472
|
+
* @example
|
|
473
|
+
* Initializes EdDSA signatures over given Edwards curve.
|
|
474
|
+
*
|
|
475
|
+
* ```ts
|
|
476
|
+
* import { eddsa } from '@noble/curves/abstract/edwards.js';
|
|
477
|
+
* import { jubjub } from '@noble/curves/misc.js';
|
|
478
|
+
* import { sha512 } from '@noble/hashes/sha2.js';
|
|
479
|
+
* const sigs = eddsa(jubjub.Point, sha512);
|
|
480
|
+
* const { secretKey, publicKey } = sigs.keygen();
|
|
481
|
+
* const msg = new TextEncoder().encode('hello noble');
|
|
482
|
+
* const sig = sigs.sign(msg, secretKey);
|
|
483
|
+
* const isValid = sigs.verify(sig, msg, publicKey);
|
|
484
|
+
* ```
|
|
389
485
|
*/
|
|
390
486
|
export function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
391
487
|
if (typeof cHash !== 'function')
|
|
392
488
|
throw new Error('"hash" function param is required');
|
|
393
|
-
|
|
489
|
+
const hash = cHash;
|
|
490
|
+
const opts = eddsaOpts;
|
|
491
|
+
validateObject(opts, {}, {
|
|
394
492
|
adjustScalarBytes: 'function',
|
|
395
493
|
randomBytes: 'function',
|
|
396
494
|
domain: 'function',
|
|
397
495
|
prehash: 'function',
|
|
496
|
+
zip215: 'boolean',
|
|
398
497
|
mapToCurve: 'function',
|
|
399
498
|
});
|
|
400
|
-
const { prehash } =
|
|
499
|
+
const { prehash } = opts;
|
|
401
500
|
const { BASE, Fp, Fn } = Point;
|
|
402
|
-
const
|
|
403
|
-
const
|
|
404
|
-
|
|
405
|
-
|
|
501
|
+
const outputLen = hash.outputLen;
|
|
502
|
+
const expectedLen = 2 * Fp.BYTES;
|
|
503
|
+
// When hash metadata is available, reject incompatible EdDSA wrappers at construction time
|
|
504
|
+
// instead of deferring the mismatch until the first keygen/sign call.
|
|
505
|
+
if (outputLen !== undefined) {
|
|
506
|
+
asafenumber(outputLen, 'hash.outputLen');
|
|
507
|
+
if (outputLen !== expectedLen)
|
|
508
|
+
throw new Error(`hash.outputLen must be ${expectedLen}, got ${outputLen}`);
|
|
509
|
+
}
|
|
510
|
+
const randomBytes = opts.randomBytes === undefined ? wcRandomBytes : opts.randomBytes;
|
|
511
|
+
const adjustScalarBytes = opts.adjustScalarBytes === undefined
|
|
512
|
+
? (bytes) => bytes
|
|
513
|
+
: opts.adjustScalarBytes;
|
|
514
|
+
const domain = opts.domain === undefined
|
|
515
|
+
? (data, ctx, phflag) => {
|
|
406
516
|
abool(phflag, 'phflag');
|
|
407
517
|
if (ctx.length || phflag)
|
|
408
518
|
throw new Error('Contexts/pre-hash are not supported');
|
|
409
519
|
return data;
|
|
410
|
-
}
|
|
411
|
-
|
|
520
|
+
}
|
|
521
|
+
: opts.domain; // NOOP
|
|
522
|
+
// Parse an EdDSA digest as a little-endian integer and reduce it modulo the scalar field order.
|
|
412
523
|
function modN_LE(hash) {
|
|
413
524
|
return Fn.create(bytesToNumberLE(hash)); // Not Fn.fromBytes: it has length limit
|
|
414
525
|
}
|
|
@@ -418,13 +529,16 @@ export function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
|
418
529
|
abytes(key, lengths.secretKey, 'secretKey');
|
|
419
530
|
// Hash private key with curve's hash function to produce uniformingly random input
|
|
420
531
|
// Check byte lengths: ensure(64, h(ensure(32, key)))
|
|
421
|
-
const hashed = abytes(
|
|
532
|
+
const hashed = abytes(hash(key), 2 * len, 'hashedSecretKey');
|
|
533
|
+
// Slice before clamping so in-place adjustors don't corrupt the prefix half.
|
|
422
534
|
const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE
|
|
423
535
|
const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)
|
|
424
536
|
const scalar = modN_LE(head); // The actual private scalar
|
|
425
537
|
return { head, prefix, scalar };
|
|
426
538
|
}
|
|
427
|
-
/** Convenience method that creates public key from scalar. RFC8032 5.1.5
|
|
539
|
+
/** Convenience method that creates public key from scalar. RFC8032 5.1.5
|
|
540
|
+
* Also exposes the derived scalar/prefix tuple and point form reused by sign().
|
|
541
|
+
*/
|
|
428
542
|
function getExtendedPublicKey(secretKey) {
|
|
429
543
|
const { head, prefix, scalar } = getPrivateScalar(secretKey);
|
|
430
544
|
const point = BASE.multiply(scalar); // Point on Edwards curve aka public key
|
|
@@ -435,10 +549,10 @@ export function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
|
435
549
|
function getPublicKey(secretKey) {
|
|
436
550
|
return getExtendedPublicKey(secretKey).pointBytes;
|
|
437
551
|
}
|
|
438
|
-
//
|
|
552
|
+
// Hash domain-separated chunks into a little-endian scalar modulo the group order.
|
|
439
553
|
function hashDomainToScalar(context = Uint8Array.of(), ...msgs) {
|
|
440
554
|
const msg = concatBytes(...msgs);
|
|
441
|
-
return modN_LE(
|
|
555
|
+
return modN_LE(hash(domain(msg, abytes(context, undefined, 'context'), !!prehash)));
|
|
442
556
|
}
|
|
443
557
|
/** Signs message with secret key. RFC8032 5.1.6 */
|
|
444
558
|
function sign(msg, secretKey, options = {}) {
|
|
@@ -447,6 +561,10 @@ export function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
|
447
561
|
msg = prehash(msg); // for ed25519ph etc.
|
|
448
562
|
const { prefix, scalar, pointBytes } = getExtendedPublicKey(secretKey);
|
|
449
563
|
const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)
|
|
564
|
+
// RFC 8032 5.1.6 allows r mod L = 0, and SUPERCOP ref10 accepts the resulting identity-point
|
|
565
|
+
// signature.
|
|
566
|
+
// We intentionally keep the safe multiply() rejection here so a miswired all-zero hash provider
|
|
567
|
+
// fails loudly instead of silently producing a degenerate signature.
|
|
450
568
|
const R = BASE.multiply(r).toBytes(); // R = rG
|
|
451
569
|
const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)
|
|
452
570
|
const s = Fn.create(r + k * scalar); // S = (r + k * s) mod L
|
|
@@ -455,14 +573,19 @@ export function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
|
455
573
|
const rs = concatBytes(R, Fn.toBytes(s));
|
|
456
574
|
return abytes(rs, lengths.signature, 'result');
|
|
457
575
|
}
|
|
458
|
-
//
|
|
459
|
-
|
|
576
|
+
// Keep the shared helper strict by default: RFC 8032 / NIST-style wrappers should reject
|
|
577
|
+
// non-canonical encodings unless they explicitly opt into ZIP-215's more permissive decode rules.
|
|
578
|
+
const verifyOpts = {
|
|
579
|
+
zip215: opts.zip215,
|
|
580
|
+
};
|
|
460
581
|
/**
|
|
461
|
-
* Verifies EdDSA signature against message and public key.
|
|
462
|
-
*
|
|
582
|
+
* Verifies EdDSA signature against message and public key. RFC 8032 §§5.1.7 and 5.2.7.
|
|
583
|
+
* A cofactored verification equation is checked.
|
|
463
584
|
*/
|
|
464
585
|
function verify(sig, msg, publicKey, options = verifyOpts) {
|
|
465
|
-
|
|
586
|
+
// Preserve the wrapper-selected default for `{}` / `{ zip215: undefined }`, not just omitted opts.
|
|
587
|
+
const { context } = options;
|
|
588
|
+
const zip215 = options.zip215 === undefined ? !!verifyOpts.zip215 : options.zip215;
|
|
466
589
|
const len = lengths.signature;
|
|
467
590
|
sig = abytes(sig, len, 'signature');
|
|
468
591
|
msg = abytes(msg, undefined, 'message');
|
|
@@ -476,7 +599,8 @@ export function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
|
476
599
|
const s = bytesToNumberLE(sig.subarray(mid, len));
|
|
477
600
|
let A, R, SB;
|
|
478
601
|
try {
|
|
479
|
-
//
|
|
602
|
+
// ZIP-215 is more permissive than RFC 8032 / NIST186-5. Use it only for wrappers that
|
|
603
|
+
// explicitly want consensus-style unreduced encoding acceptance.
|
|
480
604
|
// zip215=true: 0 <= y < MASK (2^256 for ed25519)
|
|
481
605
|
// zip215=false: 0 <= y < P (2^255-19 for ed25519)
|
|
482
606
|
A = Point.fromBytes(publicKey, zip215);
|
|
@@ -486,12 +610,19 @@ export function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
|
486
610
|
catch (error) {
|
|
487
611
|
return false;
|
|
488
612
|
}
|
|
613
|
+
// RFC 8032 §§5.1.7/5.2.7 and FIPS 186-5 §§7.7.2/7.8.2 only decode A' and check the cofactored
|
|
614
|
+
// verification equation; they do not add a separate low-order-public-key rejection here.
|
|
615
|
+
// Strict mode still rejects small-order A' intentionally for SBS-style non-repudiation and to
|
|
616
|
+
// avoid ambiguous verification outcomes where unusual low-order keys can make distinct
|
|
617
|
+
// key/signature/message combinations verify.
|
|
489
618
|
if (!zip215 && A.isSmallOrder())
|
|
490
|
-
return false;
|
|
491
|
-
|
|
619
|
+
return false;
|
|
620
|
+
// ZIP-215 accepts noncanonical / unreduced point encodings, so the challenge hash must use the
|
|
621
|
+
// exact signature/public-key bytes rather than canonicalized re-encodings of the decoded points.
|
|
622
|
+
const k = hashDomainToScalar(context, r, publicKey, msg);
|
|
492
623
|
const RkA = R.add(A.multiplyUnsafe(k));
|
|
493
|
-
//
|
|
494
|
-
// [
|
|
624
|
+
// Check the cofactored verification equation via the curve cofactor h.
|
|
625
|
+
// [h][S]B = [h]R + [h][k]A'
|
|
495
626
|
return RkA.subtract(SB).clearCofactor().is0();
|
|
496
627
|
}
|
|
497
628
|
const _size = Fp.BYTES; // 32 for ed25519, 57 for ed448
|
|
@@ -501,15 +632,17 @@ export function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
|
501
632
|
signature: 2 * _size,
|
|
502
633
|
seed: _size,
|
|
503
634
|
};
|
|
504
|
-
function randomSecretKey(seed
|
|
635
|
+
function randomSecretKey(seed) {
|
|
636
|
+
seed = seed === undefined ? randomBytes(lengths.seed) : seed;
|
|
505
637
|
return abytes(seed, lengths.seed, 'seed');
|
|
506
638
|
}
|
|
507
639
|
function isValidSecretKey(key) {
|
|
508
|
-
return isBytes(key) && key.length ===
|
|
640
|
+
return isBytes(key) && key.length === lengths.secretKey;
|
|
509
641
|
}
|
|
510
642
|
function isValidPublicKey(key, zip215) {
|
|
511
643
|
try {
|
|
512
|
-
|
|
644
|
+
// Preserve the wrapper-selected default for omitted / `undefined` ZIP-215 flags here too.
|
|
645
|
+
return !!Point.fromBytes(key, zip215 === undefined ? verifyOpts.zip215 : zip215);
|
|
513
646
|
}
|
|
514
647
|
catch (error) {
|
|
515
648
|
return false;
|
|
@@ -541,10 +674,12 @@ export function eddsa(Point, cHash, eddsaOpts = {}) {
|
|
|
541
674
|
toMontgomerySecret(secretKey) {
|
|
542
675
|
const size = lengths.secretKey;
|
|
543
676
|
abytes(secretKey, size);
|
|
544
|
-
const hashed =
|
|
677
|
+
const hashed = hash(secretKey.subarray(0, size));
|
|
545
678
|
return adjustScalarBytes(hashed).subarray(0, size);
|
|
546
679
|
},
|
|
547
680
|
};
|
|
681
|
+
Object.freeze(lengths);
|
|
682
|
+
Object.freeze(utils);
|
|
548
683
|
return Object.freeze({
|
|
549
684
|
keygen: createKeygen(randomSecretKey, getPublicKey),
|
|
550
685
|
getPublicKey,
|
package/abstract/edwards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edwards.js","sourceRoot":"","sources":["../src/abstract/edwards.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"edwards.js","sourceRoot":"","sources":["../src/abstract/edwards.ts"],"names":[],"mappings":"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"}
|