@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.
Files changed (85) hide show
  1. package/abstract/bls.d.ts +2 -2
  2. package/abstract/bls.d.ts.map +1 -1
  3. package/abstract/curve.d.ts +3 -3
  4. package/abstract/curve.d.ts.map +1 -1
  5. package/abstract/edwards.d.ts +8 -2
  6. package/abstract/edwards.d.ts.map +1 -1
  7. package/abstract/edwards.js +61 -66
  8. package/abstract/edwards.js.map +1 -1
  9. package/abstract/montgomery.js +2 -2
  10. package/abstract/montgomery.js.map +1 -1
  11. package/abstract/tower.d.ts +9 -7
  12. package/abstract/tower.d.ts.map +1 -1
  13. package/abstract/tower.js +569 -357
  14. package/abstract/tower.js.map +1 -1
  15. package/abstract/weierstrass.d.ts +1 -0
  16. package/abstract/weierstrass.d.ts.map +1 -1
  17. package/abstract/weierstrass.js +81 -96
  18. package/abstract/weierstrass.js.map +1 -1
  19. package/bls12-381.d.ts.map +1 -1
  20. package/bls12-381.js +6 -39
  21. package/bls12-381.js.map +1 -1
  22. package/bn254.d.ts.map +1 -1
  23. package/bn254.js +2 -34
  24. package/bn254.js.map +1 -1
  25. package/ed25519.d.ts.map +1 -1
  26. package/ed25519.js +14 -14
  27. package/ed25519.js.map +1 -1
  28. package/ed448.d.ts +3 -4
  29. package/ed448.d.ts.map +1 -1
  30. package/ed448.js +30 -19
  31. package/ed448.js.map +1 -1
  32. package/esm/abstract/bls.d.ts +2 -2
  33. package/esm/abstract/bls.d.ts.map +1 -1
  34. package/esm/abstract/curve.d.ts +3 -3
  35. package/esm/abstract/curve.d.ts.map +1 -1
  36. package/esm/abstract/edwards.d.ts +8 -2
  37. package/esm/abstract/edwards.d.ts.map +1 -1
  38. package/esm/abstract/edwards.js +62 -67
  39. package/esm/abstract/edwards.js.map +1 -1
  40. package/esm/abstract/montgomery.js +2 -2
  41. package/esm/abstract/montgomery.js.map +1 -1
  42. package/esm/abstract/tower.d.ts +9 -7
  43. package/esm/abstract/tower.d.ts.map +1 -1
  44. package/esm/abstract/tower.js +570 -358
  45. package/esm/abstract/tower.js.map +1 -1
  46. package/esm/abstract/weierstrass.d.ts +1 -0
  47. package/esm/abstract/weierstrass.d.ts.map +1 -1
  48. package/esm/abstract/weierstrass.js +83 -98
  49. package/esm/abstract/weierstrass.js.map +1 -1
  50. package/esm/bls12-381.d.ts.map +1 -1
  51. package/esm/bls12-381.js +7 -40
  52. package/esm/bls12-381.js.map +1 -1
  53. package/esm/bn254.d.ts.map +1 -1
  54. package/esm/bn254.js +3 -35
  55. package/esm/bn254.js.map +1 -1
  56. package/esm/ed25519.d.ts.map +1 -1
  57. package/esm/ed25519.js +15 -15
  58. package/esm/ed25519.js.map +1 -1
  59. package/esm/ed448.d.ts +3 -4
  60. package/esm/ed448.d.ts.map +1 -1
  61. package/esm/ed448.js +32 -21
  62. package/esm/ed448.js.map +1 -1
  63. package/esm/secp256k1.d.ts.map +1 -1
  64. package/esm/secp256k1.js +30 -28
  65. package/esm/secp256k1.js.map +1 -1
  66. package/esm/utils.js +1 -1
  67. package/esm/utils.js.map +1 -1
  68. package/package.json +2 -2
  69. package/secp256k1.d.ts.map +1 -1
  70. package/secp256k1.js +29 -27
  71. package/secp256k1.js.map +1 -1
  72. package/src/abstract/bls.ts +2 -2
  73. package/src/abstract/curve.ts +3 -3
  74. package/src/abstract/edwards.ts +68 -73
  75. package/src/abstract/montgomery.ts +2 -2
  76. package/src/abstract/tower.ts +630 -382
  77. package/src/abstract/weierstrass.ts +81 -93
  78. package/src/bls12-381.ts +6 -39
  79. package/src/bn254.ts +3 -34
  80. package/src/ed25519.ts +15 -16
  81. package/src/ed448.ts +35 -40
  82. package/src/secp256k1.ts +28 -27
  83. package/src/utils.ts +1 -1
  84. package/utils.js +1 -1
  85. 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, numberToBytesLE, type Hex } from './utils.ts';
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
- // RFC 7748 has 56-byte keys, RFC 8032 has 57-byte keys
145
- const Fn = /* @__PURE__ */ (() => Field(ed448_CURVE.n, { BITS: 448, isLE: true }))();
146
- // Fn456 has BITS: 456
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
- utf8ToBytes('SigEd448'),
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): ExtendedPoint {
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 r1 = bytes448ToNumberLE(bytes.slice(0, 56));
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 = bytes448ToNumberLE(bytes.slice(56, 112));
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/ExtendedPoint has 4 different equivalent points. This can be
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 ExtendedPoint,
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__ */ (() => Fp)();
384
+ /* @__PURE__ */ (() => Fp448)();
388
385
  // prettier-ignore
389
386
  static Fn: IField<bigint> =
390
- /* @__PURE__ */ (() => Fn)();
387
+ /* @__PURE__ */ (() => Fn448)();
391
388
 
392
- constructor(ep: ExtendedPoint) {
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) => Fp.create(n);
418
- const s = bytes448ToNumberLE(bytes);
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
- if (!equalBytes(numberToBytesLE(s, 56), bytes) || isNegativeLE(s, P))
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 mod(X1 * Y2) === mod(Y1 * X2);
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
- return Fn.create(bytesToNumberLE(expand_message_xof(msg, options.DST, 64, 256, shake256)));
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 numTo32b = (n: bigint) => numberToBytesBE(n, 32);
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
- // TODO: replace with Point.Fn.fromBytes(priv)
138
- let d_ = _normFnElement(Point.Fn, priv);
139
- let p = Point.BASE.multiply(d_); // P = d'⋅G; 0 < d' < n check is done inside
140
- const scalar = hasEven(p.y) ? d_ : modN(-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
- aInRange('x', x, _1n, secp256k1_CURVE.p); // Fail if x ≥ p.
149
- const xx = modP(x * x);
150
- const c = modP(xx * x + BigInt(7)); // Let c = x³ + 7 mod p.
151
- let y = sqrtMod(c); // Let y = c^(p+1)/4 mod p.
152
- if (!hasEven(y)) y = modP(-y); // Return the unique point P such that x(P) = x and
153
- const p = Point.fromAffine({ x, y }); // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.
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 = + 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 modN(num(taggedHash('BIP0340/challenge', ...args)));
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 = numTo32b(d ^ num(taggedHash('BIP0340/aux', a))); // Let t be the byte-wise xor of bytes(d) and hash/aux(a)
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
- const k_ = modN(num(rand)); // Let k' = int(rand) mod n
183
- if (k_ === _0n) throw new Error('sign failed: k is zero'); // Fail if k' = 0.
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(numTo32b(modN(k + e * d)), 32);
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
- const e = challenge(numTo32b(r), pointToBytes(P), m); // int(challenge(bytes(r)||bytes(P)||m))%n
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 = Point.BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(modN(-e)));
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
- secret: size,
288
- public: size,
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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"}