@noble/curves 1.9.5 → 1.9.6
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/abstract/bls.d.ts +2 -2
- package/abstract/bls.d.ts.map +1 -1
- package/abstract/curve.d.ts +3 -3
- package/abstract/curve.d.ts.map +1 -1
- package/abstract/edwards.d.ts +8 -2
- package/abstract/edwards.d.ts.map +1 -1
- package/abstract/edwards.js +61 -66
- package/abstract/edwards.js.map +1 -1
- package/abstract/montgomery.js +2 -2
- package/abstract/montgomery.js.map +1 -1
- package/abstract/tower.d.ts +9 -7
- package/abstract/tower.d.ts.map +1 -1
- package/abstract/tower.js +569 -357
- package/abstract/tower.js.map +1 -1
- package/abstract/weierstrass.d.ts +1 -0
- package/abstract/weierstrass.d.ts.map +1 -1
- package/abstract/weierstrass.js +81 -96
- package/abstract/weierstrass.js.map +1 -1
- package/bls12-381.d.ts.map +1 -1
- package/bls12-381.js +6 -39
- package/bls12-381.js.map +1 -1
- package/bn254.d.ts.map +1 -1
- package/bn254.js +2 -34
- package/bn254.js.map +1 -1
- package/ed25519.d.ts.map +1 -1
- package/ed25519.js +14 -14
- package/ed25519.js.map +1 -1
- package/ed448.d.ts +3 -4
- package/ed448.d.ts.map +1 -1
- package/ed448.js +30 -19
- package/ed448.js.map +1 -1
- package/esm/abstract/bls.d.ts +2 -2
- package/esm/abstract/bls.d.ts.map +1 -1
- package/esm/abstract/curve.d.ts +3 -3
- package/esm/abstract/curve.d.ts.map +1 -1
- package/esm/abstract/edwards.d.ts +8 -2
- package/esm/abstract/edwards.d.ts.map +1 -1
- package/esm/abstract/edwards.js +62 -67
- package/esm/abstract/edwards.js.map +1 -1
- package/esm/abstract/montgomery.js +2 -2
- package/esm/abstract/montgomery.js.map +1 -1
- package/esm/abstract/tower.d.ts +9 -7
- package/esm/abstract/tower.d.ts.map +1 -1
- package/esm/abstract/tower.js +570 -358
- package/esm/abstract/tower.js.map +1 -1
- package/esm/abstract/weierstrass.d.ts +1 -0
- package/esm/abstract/weierstrass.d.ts.map +1 -1
- package/esm/abstract/weierstrass.js +83 -98
- package/esm/abstract/weierstrass.js.map +1 -1
- package/esm/bls12-381.d.ts.map +1 -1
- package/esm/bls12-381.js +7 -40
- package/esm/bls12-381.js.map +1 -1
- package/esm/bn254.d.ts.map +1 -1
- package/esm/bn254.js +3 -35
- package/esm/bn254.js.map +1 -1
- package/esm/ed25519.d.ts.map +1 -1
- package/esm/ed25519.js +15 -15
- package/esm/ed25519.js.map +1 -1
- package/esm/ed448.d.ts +3 -4
- package/esm/ed448.d.ts.map +1 -1
- package/esm/ed448.js +32 -21
- package/esm/ed448.js.map +1 -1
- package/esm/secp256k1.d.ts.map +1 -1
- package/esm/secp256k1.js +30 -28
- package/esm/secp256k1.js.map +1 -1
- package/esm/utils.js +1 -1
- package/esm/utils.js.map +1 -1
- package/package.json +2 -2
- package/secp256k1.d.ts.map +1 -1
- package/secp256k1.js +29 -27
- package/secp256k1.js.map +1 -1
- package/src/abstract/bls.ts +2 -2
- package/src/abstract/curve.ts +3 -3
- package/src/abstract/edwards.ts +68 -73
- package/src/abstract/montgomery.ts +2 -2
- package/src/abstract/tower.ts +630 -382
- package/src/abstract/weierstrass.ts +81 -93
- package/src/bls12-381.ts +6 -39
- package/src/bn254.ts +3 -34
- package/src/ed25519.ts +15 -16
- package/src/ed448.ts +35 -40
- package/src/secp256k1.ts +28 -27
- package/src/utils.ts +1 -1
- package/utils.js +1 -1
- package/utils.js.map +1 -1
package/src/ed448.ts
CHANGED
|
@@ -8,12 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
10
10
|
import { shake256 } from '@noble/hashes/sha3.js';
|
|
11
|
-
import {
|
|
12
|
-
abytes,
|
|
13
|
-
concatBytes,
|
|
14
|
-
utf8ToBytes,
|
|
15
|
-
createHasher as wrapConstructor,
|
|
16
|
-
} from '@noble/hashes/utils.js';
|
|
11
|
+
import { abytes, concatBytes, createHasher as wrapConstructor } from '@noble/hashes/utils.js';
|
|
17
12
|
import type { AffinePoint } from './abstract/curve.ts';
|
|
18
13
|
import { pippenger } from './abstract/curve.ts';
|
|
19
14
|
import {
|
|
@@ -36,7 +31,7 @@ import {
|
|
|
36
31
|
} from './abstract/hash-to-curve.ts';
|
|
37
32
|
import { Field, FpInvertBatch, isNegativeLE, mod, pow2, type IField } from './abstract/modular.ts';
|
|
38
33
|
import { montgomery, type MontgomeryECDH as XCurveFn } from './abstract/montgomery.ts';
|
|
39
|
-
import { bytesToNumberLE, ensureBytes, equalBytes,
|
|
34
|
+
import { asciiToBytes, bytesToNumberLE, ensureBytes, equalBytes, type Hex } from './utils.ts';
|
|
40
35
|
|
|
41
36
|
// edwards448 curve
|
|
42
37
|
// a = 1n
|
|
@@ -140,16 +135,20 @@ function uvRatio(u: bigint, v: bigint): { isValid: boolean; value: bigint } {
|
|
|
140
135
|
}
|
|
141
136
|
|
|
142
137
|
// Finite field 2n**448n - 2n**224n - 1n
|
|
138
|
+
// The value fits in 448 bits, but we use 456-bit (57-byte) elements because of bitflags.
|
|
139
|
+
// - ed25519 fits in 255 bits, allowing using last 1 byte for specifying bit flag of point negation.
|
|
140
|
+
// - ed448 fits in 448 bits. We can't use last 1 byte: we can only use a bit 224 in the middle.
|
|
143
141
|
const Fp = /* @__PURE__ */ (() => Field(ed448_CURVE.p, { BITS: 456, isLE: true }))();
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
142
|
+
const Fn = /* @__PURE__ */ (() => Field(ed448_CURVE.n, { BITS: 456, isLE: true }))();
|
|
143
|
+
// decaf448 uses 448-bit (56-byte) keys
|
|
144
|
+
const Fp448 = /* @__PURE__ */ (() => Field(ed448_CURVE.p, { BITS: 448, isLE: true }))();
|
|
145
|
+
const Fn448 = /* @__PURE__ */ (() => Field(ed448_CURVE.n, { BITS: 448, isLE: true }))();
|
|
147
146
|
|
|
148
147
|
// SHAKE256(dom4(phflag,context)||x, 114)
|
|
149
148
|
function dom4(data: Uint8Array, ctx: Uint8Array, phflag: boolean) {
|
|
150
149
|
if (ctx.length > 255) throw new Error('context must be smaller than 255, got: ' + ctx.length);
|
|
151
150
|
return concatBytes(
|
|
152
|
-
|
|
151
|
+
asciiToBytes('SigEd448'),
|
|
153
152
|
new Uint8Array([phflag ? 1 : 0, ctx.length]),
|
|
154
153
|
ctx,
|
|
155
154
|
data
|
|
@@ -162,6 +161,7 @@ const ED448_DEF = /* @__PURE__ */ (() => ({
|
|
|
162
161
|
...ed448_CURVE,
|
|
163
162
|
Fp,
|
|
164
163
|
Fn,
|
|
164
|
+
nBitLength: Fn.BITS,
|
|
165
165
|
hash: shake256_114,
|
|
166
166
|
adjustScalarBytes,
|
|
167
167
|
domain: dom4,
|
|
@@ -317,19 +317,12 @@ const INVSQRT_MINUS_D = /* @__PURE__ */ BigInt(
|
|
|
317
317
|
// Calculates 1/√(number)
|
|
318
318
|
const invertSqrt = (number: bigint) => uvRatio(_1n, number);
|
|
319
319
|
|
|
320
|
-
const MAX_448B = /* @__PURE__ */ BigInt(
|
|
321
|
-
'0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
|
|
322
|
-
);
|
|
323
|
-
const bytes448ToNumberLE = (bytes: Uint8Array) => Fp.create(bytesToNumberLE(bytes) & MAX_448B);
|
|
324
|
-
|
|
325
|
-
type ExtendedPoint = EdwardsPoint;
|
|
326
|
-
|
|
327
320
|
/**
|
|
328
321
|
* Elligator map for hash-to-curve of decaf448.
|
|
329
322
|
* Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-C)
|
|
330
323
|
* and [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-element-derivation-2).
|
|
331
324
|
*/
|
|
332
|
-
function calcElligatorDecafMap(r0: bigint):
|
|
325
|
+
function calcElligatorDecafMap(r0: bigint): EdwardsPoint {
|
|
333
326
|
const { d } = ed448_CURVE;
|
|
334
327
|
const P = Fp.ORDER;
|
|
335
328
|
const mod = (n: bigint) => Fp.create(n);
|
|
@@ -360,17 +353,21 @@ function calcElligatorDecafMap(r0: bigint): ExtendedPoint {
|
|
|
360
353
|
|
|
361
354
|
function decaf448_map(bytes: Uint8Array): _DecafPoint {
|
|
362
355
|
abytes(bytes, 112);
|
|
363
|
-
const
|
|
356
|
+
const skipValidation = true;
|
|
357
|
+
// Note: Similar to the field element decoding described in
|
|
358
|
+
// [RFC7748], and unlike the field element decoding described in
|
|
359
|
+
// Section 5.3.1, non-canonical values are accepted.
|
|
360
|
+
const r1 = Fp448.create(Fp448.fromBytes(bytes.subarray(0, 56), skipValidation));
|
|
364
361
|
const R1 = calcElligatorDecafMap(r1);
|
|
365
|
-
const r2 =
|
|
362
|
+
const r2 = Fp448.create(Fp448.fromBytes(bytes.subarray(56, 112), skipValidation));
|
|
366
363
|
const R2 = calcElligatorDecafMap(r2);
|
|
367
364
|
return new _DecafPoint(R1.add(R2));
|
|
368
365
|
}
|
|
369
366
|
|
|
370
367
|
/**
|
|
371
|
-
* Each ed448/
|
|
368
|
+
* Each ed448/EdwardsPoint has 4 different equivalent points. This can be
|
|
372
369
|
* a source of bugs for protocols like ring signatures. Decaf was created to solve this.
|
|
373
|
-
* Decaf point operates in X:Y:Z:T extended coordinates like
|
|
370
|
+
* Decaf point operates in X:Y:Z:T extended coordinates like EdwardsPoint,
|
|
374
371
|
* but it should work in its own namespace: do not combine those two.
|
|
375
372
|
* See [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).
|
|
376
373
|
*/
|
|
@@ -384,12 +381,12 @@ class _DecafPoint extends PrimeEdwardsPoint<_DecafPoint> {
|
|
|
384
381
|
/* @__PURE__ */ (() => new _DecafPoint(ed448.Point.ZERO))();
|
|
385
382
|
// prettier-ignore
|
|
386
383
|
static Fp: IField<bigint> =
|
|
387
|
-
/* @__PURE__ */ (() =>
|
|
384
|
+
/* @__PURE__ */ (() => Fp448)();
|
|
388
385
|
// prettier-ignore
|
|
389
386
|
static Fn: IField<bigint> =
|
|
390
|
-
/* @__PURE__ */ (() =>
|
|
387
|
+
/* @__PURE__ */ (() => Fn448)();
|
|
391
388
|
|
|
392
|
-
constructor(ep:
|
|
389
|
+
constructor(ep: EdwardsPoint) {
|
|
393
390
|
super(ep);
|
|
394
391
|
}
|
|
395
392
|
|
|
@@ -414,12 +411,13 @@ class _DecafPoint extends PrimeEdwardsPoint<_DecafPoint> {
|
|
|
414
411
|
abytes(bytes, 56);
|
|
415
412
|
const { d } = ed448_CURVE;
|
|
416
413
|
const P = Fp.ORDER;
|
|
417
|
-
const mod = (n: bigint) =>
|
|
418
|
-
const s =
|
|
414
|
+
const mod = (n: bigint) => Fp448.create(n);
|
|
415
|
+
const s = Fp448.fromBytes(bytes);
|
|
419
416
|
|
|
420
417
|
// 1. Check that s_bytes is the canonical encoding of a field element, or else abort.
|
|
421
418
|
// 2. Check that s is non-negative, or else abort
|
|
422
|
-
|
|
419
|
+
|
|
420
|
+
if (!equalBytes(Fn448.toBytes(s), bytes) || isNegativeLE(s, P))
|
|
423
421
|
throw new Error('invalid decaf448 encoding 1');
|
|
424
422
|
|
|
425
423
|
const s2 = mod(s * s); // 1
|
|
@@ -462,20 +460,15 @@ class _DecafPoint extends PrimeEdwardsPoint<_DecafPoint> {
|
|
|
462
460
|
const { X, Z, T } = this.ep;
|
|
463
461
|
const P = Fp.ORDER;
|
|
464
462
|
const mod = (n: bigint) => Fp.create(n);
|
|
465
|
-
|
|
466
463
|
const u1 = mod(mod(X + T) * mod(X - T)); // 1
|
|
467
464
|
const x2 = mod(X * X);
|
|
468
465
|
const { value: invsqrt } = invertSqrt(mod(u1 * ONE_MINUS_D * x2)); // 2
|
|
469
|
-
|
|
470
466
|
let ratio = mod(invsqrt * u1 * SQRT_MINUS_D); // 3
|
|
471
467
|
if (isNegativeLE(ratio, P)) ratio = mod(-ratio);
|
|
472
|
-
|
|
473
468
|
const u2 = mod(INVSQRT_MINUS_D * ratio * Z - T); // 4
|
|
474
|
-
|
|
475
469
|
let s = mod(ONE_MINUS_D * invsqrt * X * u2); // 5
|
|
476
470
|
if (isNegativeLE(s, P)) s = mod(-s);
|
|
477
|
-
|
|
478
|
-
return numberToBytesLE(s, 56);
|
|
471
|
+
return Fn448.toBytes(s);
|
|
479
472
|
}
|
|
480
473
|
|
|
481
474
|
/**
|
|
@@ -486,9 +479,8 @@ class _DecafPoint extends PrimeEdwardsPoint<_DecafPoint> {
|
|
|
486
479
|
this.assertSame(other);
|
|
487
480
|
const { X: X1, Y: Y1 } = this.ep;
|
|
488
481
|
const { X: X2, Y: Y2 } = other.ep;
|
|
489
|
-
const mod = (n: bigint) => Fp.create(n);
|
|
490
482
|
// (x1 * y2 == y1 * x2)
|
|
491
|
-
return
|
|
483
|
+
return Fp.create(X1 * Y2) === Fp.create(Y1 * X2);
|
|
492
484
|
}
|
|
493
485
|
|
|
494
486
|
is0(): boolean {
|
|
@@ -506,8 +498,13 @@ export const decaf448_hasher: H2CHasherBase<bigint> = {
|
|
|
506
498
|
const DST = options?.DST || 'decaf448_XOF:SHAKE256_D448MAP_RO_';
|
|
507
499
|
return decaf448_map(expand_message_xof(msg, DST, 112, 224, shake256));
|
|
508
500
|
},
|
|
501
|
+
// Warning: has big modulo bias of 2^-64.
|
|
502
|
+
// RFC is invalid. RFC says "use 64-byte xof", while for 2^-112 bias
|
|
503
|
+
// it must use 84-byte xof (56+56/2), not 64.
|
|
509
504
|
hashToScalar(msg: Uint8Array, options: htfBasicOpts = { DST: _DST_scalar }) {
|
|
510
|
-
|
|
505
|
+
// Can't use `Fn448.fromBytes()`. 64-byte input => 56-byte field element
|
|
506
|
+
const xof = expand_message_xof(msg, options.DST, 64, 256, shake256);
|
|
507
|
+
return Fn448.create(bytesToNumberLE(xof));
|
|
511
508
|
},
|
|
512
509
|
};
|
|
513
510
|
|
|
@@ -547,11 +544,9 @@ export const hashToDecaf448: DcfHasher = /* @__PURE__ */ (() =>
|
|
|
547
544
|
/** @deprecated use `import { decaf448_hasher } from '@noble/curves/ed448.js';` */
|
|
548
545
|
export const hash_to_decaf448: DcfHasher = /* @__PURE__ */ (() =>
|
|
549
546
|
decaf448_hasher.hashToCurve as DcfHasher)();
|
|
550
|
-
|
|
551
547
|
/** @deprecated use `ed448.utils.toMontgomery` */
|
|
552
548
|
export function edwardsToMontgomeryPub(edwardsPub: string | Uint8Array): Uint8Array {
|
|
553
549
|
return ed448.utils.toMontgomery(ensureBytes('pub', edwardsPub));
|
|
554
550
|
}
|
|
555
|
-
|
|
556
551
|
/** @deprecated use `ed448.utils.toMontgomery` */
|
|
557
552
|
export const edwardsToMontgomery: typeof edwardsToMontgomeryPub = edwardsToMontgomeryPub;
|
package/src/secp256k1.ts
CHANGED
|
@@ -27,7 +27,6 @@ import {
|
|
|
27
27
|
} from './abstract/weierstrass.ts';
|
|
28
28
|
import type { Hex, PrivKey } from './utils.ts';
|
|
29
29
|
import {
|
|
30
|
-
aInRange,
|
|
31
30
|
bytesToNumberBE,
|
|
32
31
|
concatBytes,
|
|
33
32
|
ensureBytes,
|
|
@@ -126,18 +125,15 @@ function taggedHash(tag: string, ...messages: Uint8Array[]): Uint8Array {
|
|
|
126
125
|
|
|
127
126
|
// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03
|
|
128
127
|
const pointToBytes = (point: PointType<bigint>) => point.toBytes(true).slice(1);
|
|
129
|
-
const
|
|
130
|
-
const modP = (x: bigint) => mod(x, secp256k1_CURVE.p);
|
|
131
|
-
const modN = (x: bigint) => mod(x, secp256k1_CURVE.n);
|
|
132
|
-
const Point = /* @__PURE__ */ (() => secp256k1.Point)();
|
|
128
|
+
const Pointk1 = /* @__PURE__ */ (() => secp256k1.Point)();
|
|
133
129
|
const hasEven = (y: bigint) => y % _2n === _0n;
|
|
134
130
|
|
|
135
131
|
// Calculate point, scalar and bytes
|
|
136
132
|
function schnorrGetExtPubKey(priv: PrivKey) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const scalar = hasEven(p.y) ? d_ :
|
|
133
|
+
const { Fn, BASE } = Pointk1;
|
|
134
|
+
const d_ = _normFnElement(Fn, priv);
|
|
135
|
+
const p = BASE.multiply(d_); // P = d'⋅G; 0 < d' < n check is done inside
|
|
136
|
+
const scalar = hasEven(p.y) ? d_ : Fn.neg(d_);
|
|
141
137
|
return { scalar, bytes: pointToBytes(p) };
|
|
142
138
|
}
|
|
143
139
|
/**
|
|
@@ -145,12 +141,15 @@ function schnorrGetExtPubKey(priv: PrivKey) {
|
|
|
145
141
|
* @returns valid point checked for being on-curve
|
|
146
142
|
*/
|
|
147
143
|
function lift_x(x: bigint): PointType<bigint> {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
144
|
+
const Fp = Fpk1;
|
|
145
|
+
if (!Fp.isValidNot0(x)) throw new Error('invalid x: Fail if x ≥ p');
|
|
146
|
+
const xx = Fp.create(x * x);
|
|
147
|
+
const c = Fp.create(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.
|
|
148
|
+
let y = Fp.sqrt(c); // Let y = c^(p+1)/4 mod p. Same as sqrt().
|
|
149
|
+
// Return the unique point P such that x(P) = x and
|
|
150
|
+
// y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.
|
|
151
|
+
if (!hasEven(y)) y = Fp.neg(y);
|
|
152
|
+
const p = Pointk1.fromAffine({ x, y });
|
|
154
153
|
p.assertValidity();
|
|
155
154
|
return p;
|
|
156
155
|
}
|
|
@@ -159,7 +158,7 @@ const num = bytesToNumberBE;
|
|
|
159
158
|
* Create tagged hash, convert it to bigint, reduce modulo-n.
|
|
160
159
|
*/
|
|
161
160
|
function challenge(...args: Uint8Array[]): bigint {
|
|
162
|
-
return
|
|
161
|
+
return Pointk1.Fn.create(num(taggedHash('BIP0340/challenge', ...args)));
|
|
163
162
|
}
|
|
164
163
|
|
|
165
164
|
/**
|
|
@@ -174,18 +173,18 @@ function schnorrGetPublicKey(secretKey: Hex): Uint8Array {
|
|
|
174
173
|
* auxRand is optional and is not the sole source of k generation: bad CSPRNG won't be dangerous.
|
|
175
174
|
*/
|
|
176
175
|
function schnorrSign(message: Hex, secretKey: PrivKey, auxRand: Hex = randomBytes(32)): Uint8Array {
|
|
176
|
+
const { Fn } = Pointk1;
|
|
177
177
|
const m = ensureBytes('message', message);
|
|
178
178
|
const { bytes: px, scalar: d } = schnorrGetExtPubKey(secretKey); // checks for isWithinCurveOrder
|
|
179
179
|
const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array
|
|
180
|
-
const t =
|
|
180
|
+
const t = Fn.toBytes(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)
|
|
181
181
|
const rand = taggedHash('BIP0340/nonce', t, px, m); // Let rand = hash/nonce(t || bytes(P) || m)
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
const { bytes: rx, scalar: k } = schnorrGetExtPubKey(k_); // Let R = k'⋅G.
|
|
182
|
+
// Let k' = int(rand) mod n. Fail if k' = 0. Let R = k'⋅G
|
|
183
|
+
const { bytes: rx, scalar: k } = schnorrGetExtPubKey(rand);
|
|
185
184
|
const e = challenge(rx, px, m); // Let e = int(hash/challenge(bytes(R) || bytes(P) || m)) mod n.
|
|
186
185
|
const sig = new Uint8Array(64); // Let sig = bytes(R) || bytes((k + ed) mod n).
|
|
187
186
|
sig.set(rx, 0);
|
|
188
|
-
sig.set(
|
|
187
|
+
sig.set(Fn.toBytes(Fn.create(k + e * d)), 32);
|
|
189
188
|
// If Verify(bytes(P), m, sig) (see below) returns failure, abort
|
|
190
189
|
if (!schnorrVerify(sig, m, px)) throw new Error('sign: Invalid signature produced');
|
|
191
190
|
return sig;
|
|
@@ -196,6 +195,7 @@ function schnorrSign(message: Hex, secretKey: PrivKey, auxRand: Hex = randomByte
|
|
|
196
195
|
* Will swallow errors & return false except for initial type validation of arguments.
|
|
197
196
|
*/
|
|
198
197
|
function schnorrVerify(signature: Hex, message: Hex, publicKey: Hex): boolean {
|
|
198
|
+
const { Fn, BASE } = Pointk1;
|
|
199
199
|
const sig = ensureBytes('signature', signature, 64);
|
|
200
200
|
const m = ensureBytes('message', message);
|
|
201
201
|
const pub = ensureBytes('publicKey', publicKey, 32);
|
|
@@ -205,9 +205,10 @@ function schnorrVerify(signature: Hex, message: Hex, publicKey: Hex): boolean {
|
|
|
205
205
|
if (!inRange(r, _1n, secp256k1_CURVE.p)) return false;
|
|
206
206
|
const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s ≥ n.
|
|
207
207
|
if (!inRange(s, _1n, secp256k1_CURVE.n)) return false;
|
|
208
|
-
|
|
208
|
+
// int(challenge(bytes(r)||bytes(P)||m))%n
|
|
209
|
+
const e = challenge(Fn.toBytes(r), pointToBytes(P), m);
|
|
209
210
|
// R = s⋅G - e⋅P, where -eP == (n-e)P
|
|
210
|
-
const R =
|
|
211
|
+
const R = BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(Fn.neg(e)));
|
|
211
212
|
const { x, y } = R.toAffine();
|
|
212
213
|
// Fail if is_infinite(R) / not has_even_y(R) / x(R) ≠ r.
|
|
213
214
|
if (R.is0() || !hasEven(y) || x !== r) return false;
|
|
@@ -270,7 +271,7 @@ export const schnorr: SecpSchnorr = /* @__PURE__ */ (() => {
|
|
|
270
271
|
getPublicKey: schnorrGetPublicKey,
|
|
271
272
|
sign: schnorrSign,
|
|
272
273
|
verify: schnorrVerify,
|
|
273
|
-
Point,
|
|
274
|
+
Point: Pointk1,
|
|
274
275
|
utils: {
|
|
275
276
|
randomSecretKey: randomSecretKey,
|
|
276
277
|
randomPrivateKey: randomSecretKey,
|
|
@@ -284,11 +285,11 @@ export const schnorr: SecpSchnorr = /* @__PURE__ */ (() => {
|
|
|
284
285
|
mod,
|
|
285
286
|
},
|
|
286
287
|
lengths: {
|
|
287
|
-
|
|
288
|
-
|
|
288
|
+
secretKey: size,
|
|
289
|
+
publicKey: size,
|
|
290
|
+
publicKeyHasPrefix: false,
|
|
289
291
|
signature: size * 2,
|
|
290
292
|
seed: seedLength,
|
|
291
|
-
publicKeyHasPrefix: false,
|
|
292
293
|
},
|
|
293
294
|
};
|
|
294
295
|
})();
|
package/src/utils.ts
CHANGED
|
@@ -53,7 +53,7 @@ export function _abytes2(value: Uint8Array, length?: number, title: string = '')
|
|
|
53
53
|
const len = value?.length;
|
|
54
54
|
const needsLen = length !== undefined;
|
|
55
55
|
if (!bytes || (needsLen && len !== length)) {
|
|
56
|
-
const prefix = title && `"${title}"`;
|
|
56
|
+
const prefix = title && `"${title}" `;
|
|
57
57
|
const ofLen = needsLen ? ` of length ${length}` : '';
|
|
58
58
|
const got = bytes ? `length=${len}` : `type=${typeof value}`;
|
|
59
59
|
throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);
|
package/utils.js
CHANGED
|
@@ -62,7 +62,7 @@ function _abytes2(value, length, title = '') {
|
|
|
62
62
|
const len = value?.length;
|
|
63
63
|
const needsLen = length !== undefined;
|
|
64
64
|
if (!bytes || (needsLen && len !== length)) {
|
|
65
|
-
const prefix = title && `"${title}"`;
|
|
65
|
+
const prefix = title && `"${title}" `;
|
|
66
66
|
const ofLen = needsLen ? ` of length ${length}` : '';
|
|
67
67
|
const got = bytes ? `length=${len}` : `type=${typeof value}`;
|
|
68
68
|
throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);
|
package/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["src/utils.ts"],"names":[],"mappings":"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"}
|