@scure/btc-signer 1.8.0 → 2.0.0-beta.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 (86) hide show
  1. package/README.md +15 -12
  2. package/_type_test.js +10 -12
  3. package/_type_test.js.map +1 -1
  4. package/index.js +17 -61
  5. package/index.js.map +1 -1
  6. package/musig2.d.ts +2 -2
  7. package/musig2.d.ts.map +1 -1
  8. package/musig2.js +93 -91
  9. package/musig2.js.map +1 -1
  10. package/p2p.d.ts +7 -8
  11. package/p2p.d.ts.map +1 -1
  12. package/p2p.js +32 -38
  13. package/p2p.js.map +1 -1
  14. package/package.json +33 -70
  15. package/payment.js +73 -96
  16. package/payment.js.map +1 -1
  17. package/psbt.d.ts +224 -224
  18. package/psbt.d.ts.map +1 -1
  19. package/psbt.js +58 -63
  20. package/psbt.js.map +1 -1
  21. package/script.d.ts +125 -120
  22. package/script.d.ts.map +1 -1
  23. package/script.js +46 -146
  24. package/script.js.map +1 -1
  25. package/src/_type_test.ts +2 -2
  26. package/src/musig2.ts +45 -53
  27. package/src/p2p.ts +31 -43
  28. package/src/psbt.ts +7 -7
  29. package/src/script.ts +29 -26
  30. package/src/transaction.ts +31 -24
  31. package/src/utils.ts +45 -26
  32. package/src/utxo.ts +1 -1
  33. package/transaction.d.ts +23 -28
  34. package/transaction.d.ts.map +1 -1
  35. package/transaction.js +140 -154
  36. package/transaction.js.map +1 -1
  37. package/utils.d.ts +13 -7
  38. package/utils.d.ts.map +1 -1
  39. package/utils.js +60 -62
  40. package/utils.js.map +1 -1
  41. package/utxo.d.ts +45 -45
  42. package/utxo.d.ts.map +1 -1
  43. package/utxo.js +63 -59
  44. package/utxo.js.map +1 -1
  45. package/esm/_type_test.d.ts +0 -2
  46. package/esm/_type_test.d.ts.map +0 -1
  47. package/esm/_type_test.js +0 -57
  48. package/esm/_type_test.js.map +0 -1
  49. package/esm/index.d.ts +0 -22
  50. package/esm/index.d.ts.map +0 -1
  51. package/esm/index.js +0 -22
  52. package/esm/index.js.map +0 -1
  53. package/esm/musig2.d.ts +0 -148
  54. package/esm/musig2.d.ts.map +0 -1
  55. package/esm/musig2.js +0 -405
  56. package/esm/musig2.js.map +0 -1
  57. package/esm/p2p.d.ts +0 -38
  58. package/esm/p2p.d.ts.map +0 -1
  59. package/esm/p2p.js +0 -156
  60. package/esm/p2p.js.map +0 -1
  61. package/esm/package.json +0 -1
  62. package/esm/payment.d.ts +0 -200
  63. package/esm/payment.d.ts.map +0 -1
  64. package/esm/payment.js +0 -697
  65. package/esm/payment.js.map +0 -1
  66. package/esm/psbt.d.ts +0 -820
  67. package/esm/psbt.d.ts.map +0 -1
  68. package/esm/psbt.js +0 -409
  69. package/esm/psbt.js.map +0 -1
  70. package/esm/script.d.ts +0 -170
  71. package/esm/script.d.ts.map +0 -1
  72. package/esm/script.js +0 -356
  73. package/esm/script.js.map +0 -1
  74. package/esm/transaction.d.ts +0 -171
  75. package/esm/transaction.d.ts.map +0 -1
  76. package/esm/transaction.js +0 -1182
  77. package/esm/transaction.js.map +0 -1
  78. package/esm/utils.d.ts +0 -35
  79. package/esm/utils.d.ts.map +0 -1
  80. package/esm/utils.js +0 -118
  81. package/esm/utils.js.map +0 -1
  82. package/esm/utxo.d.ts +0 -198
  83. package/esm/utxo.d.ts.map +0 -1
  84. package/esm/utxo.js +0 -461
  85. package/esm/utxo.js.map +0 -1
  86. package/src/package.json +0 -3
package/musig2.js CHANGED
@@ -1,57 +1,45 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Session = exports.InvalidContributionErr = void 0;
4
- exports.IndividualPubkey = IndividualPubkey;
5
- exports.sortKeys = sortKeys;
6
- exports.keyAggregate = keyAggregate;
7
- exports.keyAggExport = keyAggExport;
8
- exports.nonceGen = nonceGen;
9
- exports.nonceAggregate = nonceAggregate;
10
- exports.deterministicSign = deterministicSign;
11
- const modular_1 = require("@noble/curves/abstract/modular");
12
- const utils_1 = require("@noble/curves/abstract/utils");
13
- const secp256k1_1 = require("@noble/curves/secp256k1");
14
- const _assert_1 = require("@noble/hashes/_assert");
15
- const utils_2 = require("@noble/hashes/utils");
16
- const P = require("micro-packed");
17
- const utils_ts_1 = require("./utils.js");
1
+ import { schnorr, secp256k1 } from '@noble/curves/secp256k1.js';
2
+ import { aInRange, concatBytes, equalBytes, numberToBytesBE } from '@noble/curves/utils.js';
3
+ import { abytes, anumber, randomBytes } from '@noble/hashes/utils.js';
4
+ import * as P from 'micro-packed';
5
+ import { compareBytes, hasEven } from "./utils.js";
18
6
  /**
19
7
  * Represents an error indicating an invalid contribution from a signer.
20
8
  * This allows pointing out which participant is malicious and what specifically is wrong.
21
9
  */
22
- class InvalidContributionErr extends Error {
10
+ export class InvalidContributionErr extends Error {
11
+ idx; // Indice of participant
23
12
  constructor(idx, m) {
24
13
  super(m);
25
14
  this.idx = idx;
26
15
  }
27
16
  }
28
- exports.InvalidContributionErr = InvalidContributionErr;
29
17
  // Utils
30
- const { taggedHash, pointToBytes } = secp256k1_1.schnorr.utils;
31
- const Point = secp256k1_1.secp256k1.ProjectivePoint;
32
- const PUBKEY_LEN = 33;
18
+ const { taggedHash, pointToBytes } = schnorr.utils;
19
+ const Point = secp256k1.Point;
20
+ const Fn = Point.Fn;
21
+ const PUBKEY_LEN = secp256k1.lengths.publicKey;
33
22
  const ZERO = new Uint8Array(PUBKEY_LEN); // Compressed zero point
34
- const SECP_N = secp256k1_1.secp256k1.CURVE.n;
35
23
  // Encoding
36
24
  // TODO: re-use in PSBT?
37
25
  const compressed = P.apply(P.bytes(33), {
38
- decode: (p) => (isZero(p) ? ZERO : p.toRawBytes(true)),
39
- encode: (b) => ((0, utils_1.equalBytes)(b, ZERO) ? Point.ZERO : Point.fromHex(b)),
26
+ decode: (p) => (isZero(p) ? ZERO : p.toBytes(true)),
27
+ encode: (b) => (equalBytes(b, ZERO) ? Point.ZERO : Point.fromBytes(b)),
40
28
  });
41
29
  const scalar = P.validate(P.U256BE, (n) => {
42
- (0, utils_1.aInRange)('n', n, 1n, SECP_N);
30
+ aInRange('n', n, 1n, Fn.ORDER);
43
31
  return n;
44
32
  });
45
33
  const PubNonce = P.struct({ R1: compressed, R2: compressed });
46
34
  const SecretNonce = P.struct({ k1: scalar, k2: scalar, publicKey: P.bytes(PUBKEY_LEN) });
47
35
  function abytesOptional(b, ...lengths) {
48
36
  if (b !== undefined)
49
- (0, _assert_1.abytes)(b, ...lengths);
37
+ abytes(b, ...lengths);
50
38
  }
51
39
  function abytesArray(lst, ...lengths) {
52
40
  if (!Array.isArray(lst))
53
41
  throw new Error('expected array');
54
- lst.forEach((i) => (0, _assert_1.abytes)(i, ...lengths));
42
+ lst.forEach((i) => abytes(i, ...lengths));
55
43
  }
56
44
  function aXonly(lst) {
57
45
  if (!Array.isArray(lst))
@@ -61,12 +49,11 @@ function aXonly(lst) {
61
49
  throw new Error('expected boolean in xOnly array, got' + i + '(' + j + ')');
62
50
  });
63
51
  }
64
- const modN = (x) => (0, modular_1.mod)(x, SECP_N);
65
- const taggedInt = (tag, ...messages) => modN((0, utils_1.bytesToNumberBE)(taggedHash(tag, ...messages)));
66
- const evenScalar = (p, n) => (p.hasEvenY() ? n : modN(-n));
52
+ const taggedInt = (tag, ...messages) => Fn.create(Fn.fromBytes(taggedHash(tag, ...messages), true));
53
+ const evenScalar = (p, n) => (hasEven(p.y) ? n : Fn.neg(n));
67
54
  // Short utility for compat with reference implementation
68
- function IndividualPubkey(seckey) {
69
- return secp256k1_1.secp256k1.getPublicKey(seckey, true);
55
+ export function IndividualPubkey(seckey) {
56
+ return secp256k1.getPublicKey(seckey, true);
70
57
  }
71
58
  // Same, but returns Point
72
59
  function mulBase(n) {
@@ -81,15 +68,15 @@ function isZero(point) {
81
68
  * @returns A new array containing the sorted public keys.
82
69
  * @throws {Error} If the input is not an array or if any element is not a Uint8Array of the correct length.
83
70
  */
84
- function sortKeys(publicKeys) {
71
+ export function sortKeys(publicKeys) {
85
72
  abytesArray(publicKeys, PUBKEY_LEN);
86
- return publicKeys.sort(utils_ts_1.compareBytes);
73
+ return publicKeys.sort(compareBytes);
87
74
  }
88
75
  // Finds second distinct key (to make coefficient 1)
89
76
  function getSecondKey(publicKeys) {
90
77
  abytesArray(publicKeys, PUBKEY_LEN);
91
78
  for (let j = 1; j < publicKeys.length; j++)
92
- if (!(0, utils_1.equalBytes)(publicKeys[j], publicKeys[0]))
79
+ if (!equalBytes(publicKeys[j], publicKeys[0]))
93
80
  return publicKeys[j];
94
81
  return ZERO;
95
82
  }
@@ -98,9 +85,9 @@ function keyAggL(publicKeys) {
98
85
  return taggedHash('KeyAgg list', ...publicKeys);
99
86
  }
100
87
  function keyAggCoeffInternal(publicKey1, publicKey2, L) {
101
- (0, _assert_1.abytes)(publicKey1, PUBKEY_LEN);
102
- (0, _assert_1.abytes)(publicKey2, PUBKEY_LEN);
103
- if ((0, utils_1.equalBytes)(publicKey1, publicKey2))
88
+ abytes(publicKey1, PUBKEY_LEN);
89
+ abytes(publicKey2, PUBKEY_LEN);
90
+ if (equalBytes(publicKey1, publicKey2))
104
91
  return 1n;
105
92
  return taggedInt('KeyAgg coefficient', L, publicKey1);
106
93
  }
@@ -113,7 +100,7 @@ function keyAggCoeffInternal(publicKey1, publicKey2, L) {
113
100
  * @throws {Error} If the input is invalid, such as non array publicKeys, tweaks and isXonly array length not matching.
114
101
  * @throws {InvalidContributionErr} If any of the public keys are invalid and cannot be processed.
115
102
  */
116
- function keyAggregate(publicKeys, tweaks = [], isXonly = []) {
103
+ export function keyAggregate(publicKeys, tweaks = [], isXonly = []) {
117
104
  abytesArray(publicKeys, PUBKEY_LEN);
118
105
  abytesArray(tweaks, 32);
119
106
  if (tweaks.length !== isXonly.length)
@@ -125,25 +112,24 @@ function keyAggregate(publicKeys, tweaks = [], isXonly = []) {
125
112
  for (let i = 0; i < publicKeys.length; i++) {
126
113
  let Pi;
127
114
  try {
128
- Pi = Point.fromHex(publicKeys[i]);
115
+ Pi = Point.fromBytes(publicKeys[i]);
129
116
  }
130
117
  catch (error) {
131
118
  throw new InvalidContributionErr(i, 'pubkey');
132
119
  }
133
120
  aggPublicKey = aggPublicKey.add(Pi.multiply(keyAggCoeffInternal(publicKeys[i], pk2, L)));
134
121
  }
135
- let gAcc = 1n;
136
- let tweakAcc = 0n;
122
+ let gAcc = Fn.ONE;
123
+ let tweakAcc = Fn.ZERO;
137
124
  // Apply tweaks
138
125
  for (let i = 0; i < tweaks.length; i++) {
139
- const g = isXonly[i] && !aggPublicKey.hasEvenY() ? modN(-1n) : 1n;
140
- const t = (0, utils_1.bytesToNumberBE)(tweaks[i]);
141
- (0, utils_1.aInRange)('tweak', t, 0n, SECP_N);
126
+ const g = isXonly[i] && !hasEven(aggPublicKey.y) ? Fn.neg(Fn.ONE) : Fn.ONE;
127
+ const t = Fn.fromBytes(tweaks[i]);
142
128
  aggPublicKey = aggPublicKey.multiply(g).add(mulBase(t));
143
129
  if (isZero(aggPublicKey))
144
130
  throw new Error('The result of tweaking cannot be infinity');
145
- gAcc = modN(g * gAcc);
146
- tweakAcc = modN(t + g * tweakAcc);
131
+ gAcc = Fn.mul(g, gAcc);
132
+ tweakAcc = Fn.add(t, Fn.mul(g, tweakAcc));
147
133
  }
148
134
  return { aggPublicKey, gAcc, tweakAcc };
149
135
  }
@@ -152,7 +138,7 @@ function keyAggregate(publicKeys, tweaks = [], isXonly = []) {
152
138
  * @param ctx The result of the keyAggregate function.
153
139
  * @returns The aggregate public key as a byte array.
154
140
  */
155
- function keyAggExport(ctx) {
141
+ export function keyAggExport(ctx) {
156
142
  return pointToBytes(ctx.aggPublicKey);
157
143
  }
158
144
  function aux(secret, rand) {
@@ -164,7 +150,7 @@ function aux(secret, rand) {
164
150
  res[i] = secret[i] ^ rand2[i];
165
151
  return res;
166
152
  }
167
- const nonceHash = (rand, publicKey, aggPublicKey, i, msgPrefixed, extraIn) => taggedInt('MuSig/nonce', rand, new Uint8Array([publicKey.length]), publicKey, new Uint8Array([aggPublicKey.length]), aggPublicKey, msgPrefixed, (0, utils_1.numberToBytesBE)(extraIn.length, 4), extraIn, new Uint8Array([i]));
153
+ const nonceHash = (rand, publicKey, aggPublicKey, i, msgPrefixed, extraIn) => taggedInt('MuSig/nonce', rand, new Uint8Array([publicKey.length]), publicKey, new Uint8Array([aggPublicKey.length]), aggPublicKey, msgPrefixed, numberToBytesBE(extraIn.length, 4), extraIn, new Uint8Array([i]));
168
154
  /**
169
155
  * Generates a nonce pair (public and secret) for MuSig2 signing.
170
156
  * @param publicKey The individual public key of the signer (Uint8Array).
@@ -176,18 +162,20 @@ const nonceHash = (rand, publicKey, aggPublicKey, i, msgPrefixed, extraIn) => ta
176
162
  * @returns An object containing the public and secret nonces.
177
163
  * @throws {Error} If the input is invalid, such as non array publicKey, secretKey, aggPublicKey.
178
164
  */
179
- function nonceGen(publicKey, secretKey, aggPublicKey = new Uint8Array(0), msg, extraIn = new Uint8Array(0), rand = (0, utils_2.randomBytes)(32)) {
180
- (0, _assert_1.abytes)(publicKey, PUBKEY_LEN);
165
+ export function nonceGen(publicKey, secretKey, aggPublicKey = new Uint8Array(0), msg, extraIn = new Uint8Array(0), rand = randomBytes(32)) {
166
+ abytes(publicKey, PUBKEY_LEN);
181
167
  abytesOptional(secretKey, 32);
182
- (0, _assert_1.abytes)(aggPublicKey, 0, 32);
168
+ abytes(aggPublicKey);
169
+ if (![0, 32].includes(aggPublicKey.length))
170
+ throw new Error('wrong aggPublicKey');
183
171
  abytesOptional(msg);
184
- (0, _assert_1.abytes)(extraIn);
185
- (0, _assert_1.abytes)(rand, 32);
172
+ abytes(extraIn);
173
+ abytes(rand, 32);
186
174
  if (secretKey !== undefined)
187
175
  rand = aux(secretKey, rand);
188
176
  const msgPrefixed = msg !== undefined
189
- ? (0, utils_1.concatBytes)(new Uint8Array([1]), (0, utils_1.numberToBytesBE)(msg.length, 8), msg)
190
- : new Uint8Array([0]);
177
+ ? concatBytes(Uint8Array.of(1), numberToBytesBE(msg.length, 8), msg)
178
+ : Uint8Array.of(0);
191
179
  const k1 = nonceHash(rand, publicKey, aggPublicKey, 0, msgPrefixed, extraIn);
192
180
  const k2 = nonceHash(rand, publicKey, aggPublicKey, 1, msgPrefixed, extraIn);
193
181
  return {
@@ -202,7 +190,7 @@ function nonceGen(publicKey, secretKey, aggPublicKey = new Uint8Array(0), msg, e
202
190
  * @throws {Error} If the input is not an array or if any element is not a Uint8Array of the correct length.
203
191
  * @throws {InvalidContributionErr} If any of the public nonces are invalid and cannot be processed.
204
192
  */
205
- function nonceAggregate(pubNonces) {
193
+ export function nonceAggregate(pubNonces) {
206
194
  abytesArray(pubNonces, 66);
207
195
  let R1 = Point.ZERO;
208
196
  let R2 = Point.ZERO;
@@ -223,7 +211,18 @@ function nonceAggregate(pubNonces) {
223
211
  }
224
212
  // Class allows us re-use pre-computed stuff
225
213
  // NOTE: it would be nice to aggregate nonce in construdctor, but there is test that passes already aggregated nonce here.
226
- class Session {
214
+ export class Session {
215
+ publicKeys;
216
+ Q;
217
+ gAcc;
218
+ tweakAcc;
219
+ b;
220
+ R;
221
+ e;
222
+ tweaks;
223
+ isXonly;
224
+ L;
225
+ secondKey;
227
226
  /**
228
227
  * Constructor for the Session class.
229
228
  * It precomputes and stores values derived from the aggregate nonce, public keys,
@@ -239,7 +238,7 @@ class Session {
239
238
  abytesArray(publicKeys, 33);
240
239
  abytesArray(tweaks, 32);
241
240
  aXonly(isXonly);
242
- (0, _assert_1.abytes)(msg);
241
+ abytes(msg);
243
242
  if (tweaks.length !== isXonly.length)
244
243
  throw new Error('The tweaks and isXonly arrays must have the same length');
245
244
  const { aggPublicKey, gAcc, tweakAcc } = keyAggregate(publicKeys, tweaks, isXonly);
@@ -266,25 +265,25 @@ class Session {
266
265
  */
267
266
  getSessionKeyAggCoeff(P) {
268
267
  const { publicKeys } = this;
269
- const pk = P.toRawBytes(true);
270
- const found = publicKeys.some((p) => (0, utils_1.equalBytes)(p, pk));
268
+ const pk = P.toBytes(true);
269
+ const found = publicKeys.some((p) => equalBytes(p, pk));
271
270
  if (!found)
272
271
  throw new Error("The signer's pubkey must be included in the list of pubkeys");
273
272
  return keyAggCoeffInternal(pk, this.secondKey, this.L);
274
273
  }
275
274
  partialSigVerifyInternal(partialSig, publicNonce, publicKey) {
276
275
  const { Q, gAcc, b, R, e } = this;
277
- const s = (0, utils_1.bytesToNumberBE)(partialSig);
278
- if (s >= SECP_N)
276
+ const s = Fn.fromBytes(partialSig, true);
277
+ if (!Fn.isValid(s))
279
278
  return false;
280
279
  const { R1, R2 } = PubNonce.decode(publicNonce);
281
280
  const Re_s_ = R1.add(R2.multiply(b));
282
- const Re_s = R.hasEvenY() ? Re_s_ : Re_s_.negate();
283
- const P = Point.fromHex(publicKey);
281
+ const Re_s = hasEven(R.y) ? Re_s_ : Re_s_.negate();
282
+ const P = Point.fromBytes(publicKey);
284
283
  const a = this.getSessionKeyAggCoeff(P);
285
- const g = modN(evenScalar(Q, 1n) * gAcc);
284
+ const g = Fn.mul(evenScalar(Q, 1n), gAcc);
286
285
  const left = mulBase(s);
287
- const right = Re_s.add(P.multiply(modN(e * a * g)));
286
+ const right = Re_s.add(P.multiply(Fn.mul(e, Fn.mul(a, g))));
288
287
  return left.equals(right);
289
288
  }
290
289
  /**
@@ -297,7 +296,7 @@ class Session {
297
296
  * @throws {Error} If the input is invalid, such as wrong array sizes, invalid nonce or secret key.
298
297
  */
299
298
  sign(secretNonce, secret, fastSign = false) {
300
- (0, _assert_1.abytes)(secret, 32);
299
+ abytes(secret, 32);
301
300
  if (typeof fastSign !== 'boolean')
302
301
  throw new Error('expected boolean');
303
302
  const { Q, gAcc, b, R, e } = this;
@@ -305,21 +304,25 @@ class Session {
305
304
  // zero-out the first 64 bytes of secretNonce so it cannot be reused
306
305
  // TODO: this was in reference implementation, but feels very broken. Modifying input arguments is pretty bad.
307
306
  secretNonce.fill(0, 0, 64);
308
- (0, utils_1.aInRange)('k1', k1_, 0n, SECP_N);
309
- (0, utils_1.aInRange)('k2', k2_, 0n, SECP_N);
307
+ if (!Fn.isValid(k1_))
308
+ throw new Error('wrong k1');
309
+ if (!Fn.isValid(k2_))
310
+ throw new Error('wrong k1');
310
311
  const k1 = evenScalar(R, k1_);
311
312
  const k2 = evenScalar(R, k2_);
312
- const d_ = (0, utils_1.bytesToNumberBE)(secret);
313
- (0, utils_1.aInRange)('d_', d_, 1n, SECP_N);
313
+ const d_ = Fn.fromBytes(secret);
314
+ if (Fn.is0(d_))
315
+ throw new Error('wrong d_');
314
316
  const P = mulBase(d_);
315
- const pk = P.toRawBytes(true);
316
- if (!(0, utils_1.equalBytes)(pk, originalPk))
317
+ const pk = P.toBytes(true);
318
+ if (!equalBytes(pk, originalPk))
317
319
  throw new Error('Public key does not match nonceGen argument');
318
320
  const a = this.getSessionKeyAggCoeff(P);
319
321
  const g = evenScalar(Q, 1n);
320
- const d = modN(g * gAcc * d_);
321
- const s = modN(k1 + b * k2 + e * a * d);
322
- const partialSig = (0, utils_1.numberToBytesBE)(s, 32);
322
+ const d = Fn.mul(g, Fn.mul(gAcc, d_));
323
+ /// k1 + (b*k2) + (e*a*d)
324
+ const s = Fn.add(k1, Fn.add(Fn.mul(b, k2), Fn.mul(e, Fn.mul(a, d))));
325
+ const partialSig = Fn.toBytes(s);
323
326
  // Skip validation in fast-sign mode
324
327
  if (!fastSign) {
325
328
  const publicNonce = PubNonce.encode({
@@ -345,12 +348,12 @@ class Session {
345
348
  */
346
349
  partialSigVerify(partialSig, pubNonces, i) {
347
350
  const { publicKeys, tweaks, isXonly } = this;
348
- (0, _assert_1.abytes)(partialSig, 32);
351
+ abytes(partialSig, 32);
349
352
  abytesArray(pubNonces, 66);
350
353
  abytesArray(publicKeys, PUBKEY_LEN);
351
354
  abytesArray(tweaks, 32);
352
355
  aXonly(isXonly);
353
- (0, _assert_1.anumber)(i);
356
+ anumber(i);
354
357
  if (pubNonces.length !== publicKeys.length)
355
358
  throw new Error('The pubNonces and publicKeys arrays must have the same length');
356
359
  if (tweaks.length !== isXonly.length)
@@ -371,18 +374,17 @@ class Session {
371
374
  const { Q, tweakAcc, R, e } = this;
372
375
  let s = 0n;
373
376
  for (let i = 0; i < partialSigs.length; i++) {
374
- const si = (0, utils_1.bytesToNumberBE)(partialSigs[i]);
375
- if (si >= SECP_N)
377
+ const si = Fn.fromBytes(partialSigs[i], true);
378
+ if (!Fn.isValid(si))
376
379
  throw new InvalidContributionErr(i, 'psig');
377
- s = modN(s + si);
380
+ s = Fn.add(s, si);
378
381
  }
379
382
  const g = evenScalar(Q, 1n);
380
- s = modN(s + e * g * tweakAcc);
381
- return (0, utils_1.concatBytes)(pointToBytes(R), (0, utils_1.numberToBytesBE)(s, 32));
383
+ s = Fn.add(s, Fn.mul(e, Fn.mul(g, tweakAcc))); // s + e * g * tweakAcc
384
+ return concatBytes(pointToBytes(R), Fn.toBytes(s));
382
385
  }
383
386
  }
384
- exports.Session = Session;
385
- const deterministicNonceHash = (secret, aggOtherNonce, aggPublicKey, msg, i) => taggedInt('MuSig/deterministic/nonce', secret, aggOtherNonce, aggPublicKey, (0, utils_1.numberToBytesBE)(msg.length, 8), msg, new Uint8Array([i]));
387
+ const deterministicNonceHash = (secret, aggOtherNonce, aggPublicKey, msg, i) => taggedInt('MuSig/deterministic/nonce', secret, aggOtherNonce, aggPublicKey, numberToBytesBE(msg.length, 8), msg, new Uint8Array([i]));
386
388
  /**
387
389
  * Generates a nonce pair and partial signature deterministically for a single signer.
388
390
  * @param secret The secret key of the signer (Uint8Array).
@@ -394,12 +396,12 @@ const deterministicNonceHash = (secret, aggOtherNonce, aggPublicKey, msg, i) =>
394
396
  * @param rand Optional extra randomness (Uint8Array).
395
397
  * @returns An object containing the public nonce and partial signature.
396
398
  */
397
- function deterministicSign(secret, aggOtherNonce, publicKeys, msg, tweaks = [], isXonly = [], rand, fastSign = false) {
398
- (0, _assert_1.abytes)(secret, 32);
399
- (0, _assert_1.abytes)(aggOtherNonce, 66);
399
+ export function deterministicSign(secret, aggOtherNonce, publicKeys, msg, tweaks = [], isXonly = [], rand, fastSign = false) {
400
+ abytes(secret, 32);
401
+ abytes(aggOtherNonce, 66);
400
402
  abytesArray(publicKeys, PUBKEY_LEN);
401
403
  abytesArray(tweaks, 32);
402
- (0, _assert_1.abytes)(msg);
404
+ abytes(msg);
403
405
  abytesOptional(rand);
404
406
  const sk = rand !== undefined ? aux(secret, rand) : secret;
405
407
  const aggPublicKey = keyAggExport(keyAggregate(publicKeys, tweaks, isXonly));
package/musig2.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"musig2.js","sourceRoot":"","sources":["src/musig2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"musig2.js","sourceRoot":"","sources":["src/musig2.ts"],"names":[],"mappings":"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"}
package/p2p.d.ts CHANGED
@@ -17,8 +17,7 @@
17
17
  *
18
18
  * @module
19
19
  */
20
- import type { Hex } from '@noble/curves/abstract/utils';
21
- import { type ProjPointType as PointType } from '@noble/curves/abstract/weierstrass';
20
+ import { type Bytes } from './utils.ts';
22
21
  /**
23
22
  * Experimental ElligatorSwift implementation:
24
23
  * Schnorr-like x-only ECDH with public keys indistinguishable from uniformly random bytes.
@@ -26,13 +25,13 @@ import { type ProjPointType as PointType } from '@noble/curves/abstract/weierstr
26
25
  */
27
26
  export declare const elligatorSwift: {
28
27
  _inv: (x: bigint, u: bigint, ellCase: number) => bigint | void;
29
- encode: (x: bigint | PointType<bigint>) => Uint8Array;
30
- decode: (data: Hex) => Uint8Array;
28
+ encode: (x: bigint) => Uint8Array;
29
+ decode: (data: Uint8Array) => Uint8Array;
31
30
  keygen: () => {
32
- privateKey: Uint8Array<ArrayBufferLike>;
33
- publicKey: Uint8Array<ArrayBufferLike>;
31
+ privateKey: Bytes;
32
+ publicKey: Bytes;
34
33
  };
35
- getSharedSecret: (privateKeyA: Hex, publicKeyB: Hex) => Uint8Array<ArrayBufferLike>;
36
- getSharedSecretBip324: (privateKeyOurs: Hex, publicKeyTheirs: Hex, publicKeyOurs: Hex, initiating: boolean) => Uint8Array<ArrayBufferLike>;
34
+ getSharedSecret: (privateKeyA: Uint8Array, publicKeyB: Uint8Array) => Bytes;
35
+ getSharedSecretBip324: (privateKeyOurs: Uint8Array, publicKeyTheirs: Uint8Array, publicKeyOurs: Uint8Array, initiating: boolean) => Uint8Array;
37
36
  };
38
37
  //# sourceMappingURL=p2p.d.ts.map
package/p2p.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"p2p.d.ts","sourceRoot":"","sources":["src/p2p.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AAOxD,OAAO,EAAE,KAAK,aAAa,IAAI,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAsBrF;;;;GAIG;AACH,eAAO,MAAM,cAAc;cAEf,MAAM,KAAK,MAAM,WAAW,MAAM,KAAG,MAAM,GAAG,IAAI;gBA+BhD,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,KAAG,UAAU;mBAmBpC,GAAG,KAAG,UAAU;;;;;mCA8BA,GAAG,cAAc,GAAG;4CASjC,GAAG,mBACF,GAAG,iBACL,GAAG,cACN,OAAO;CAQtB,CAAC"}
1
+ {"version":3,"file":"p2p.d.ts","sourceRoot":"","sources":["src/p2p.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,EAAc,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAmBpD;;;;GAIG;AACH,eAAO,MAAM,cAAc;cAEf,MAAM,KAAK,MAAM,WAAW,MAAM,KAAG,MAAM,GAAG,IAAI;gBA+BhD,MAAM,KAAG,UAAU;mBAahB,UAAU,KAAG,UAAU;;;;;mCA+BP,UAAU,cAAc,UAAU,KAAG,KAAK;4CASvD,UAAU,mBACT,UAAU,iBACZ,UAAU,cACb,OAAO,KAClB,UAAU;CAOd,CAAC"}
package/p2p.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * BTC P2P layer from BIP324.
4
3
  *
@@ -18,22 +17,21 @@
18
17
  *
19
18
  * @module
20
19
  */
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.elligatorSwift = void 0;
23
- const modular_1 = require("@noble/curves/abstract/modular");
24
- const utils_1 = require("@noble/curves/abstract/utils");
25
- const secp256k1_1 = require("@noble/curves/secp256k1");
26
- const utils_2 = require("@noble/hashes/utils");
27
- const utils_ts_1 = require("./utils.js");
28
- const Fp = secp256k1_1.secp256k1.CURVE.Fp;
29
- const Point = secp256k1_1.secp256k1.ProjectivePoint;
20
+ import { FpIsSquare } from '@noble/curves/abstract/modular.js';
21
+ import { concatBytes, abytes } from '@noble/curves/utils.js';
22
+ import { schnorr, secp256k1 } from '@noble/curves/secp256k1.js';
23
+ import { randomBytes } from '@noble/hashes/utils.js';
24
+ import { tagSchnorr } from "./utils.js";
25
+ const Point = secp256k1.Point;
26
+ const Fp = Point.Fp;
27
+ const Fn = Point.Fn;
30
28
  const _1n = BigInt(1);
31
29
  const _2n = BigInt(2);
32
30
  const MINUS_3_SQRT = Fp.sqrt(Fp.create(BigInt(-3)));
33
31
  const _3n = BigInt(3);
34
32
  const _4n = BigInt(4);
35
33
  const _7n = BigInt(7);
36
- const isValidX = (x) => (0, modular_1.FpIsSquare)(Fp, Fp.add(Fp.mul(Fp.mul(x, x), x), _7n));
34
+ const isValidX = (x) => FpIsSquare(Fp, Fp.add(Fp.mul(Fp.mul(x, x), x), _7n));
37
35
  const trySqrt = (x) => {
38
36
  try {
39
37
  return Fp.sqrt(x);
@@ -45,7 +43,7 @@ const trySqrt = (x) => {
45
43
  * Schnorr-like x-only ECDH with public keys indistinguishable from uniformly random bytes.
46
44
  * Documented in BIP324.
47
45
  */
48
- exports.elligatorSwift = {
46
+ export const elligatorSwift = {
49
47
  // (internal stuff, exported for tests only): decode(u, _inv(x, u)) = x
50
48
  _inv: (x, u, ellCase) => {
51
49
  if (!Number.isSafeInteger(ellCase) || ellCase < 0 || ellCase > 7)
@@ -85,28 +83,23 @@ exports.elligatorSwift = {
85
83
  },
86
84
  // Encode public key (point or x coordinate bigint) into 64-byte pseudorandom encoding
87
85
  encode: (x) => {
88
- if (x instanceof secp256k1_1.secp256k1.ProjectivePoint)
89
- x = x.x;
90
- if (typeof x !== 'bigint') {
91
- throw new Error('elligatorSwift.encode: wrong public key. Should be Projective point or x coordinate (bigint)');
92
- }
93
86
  // 200k test cycles per keygen: avg=4 max=48
94
87
  // seems too much, but same as for reference implementation
95
88
  while (true) {
96
89
  // random scalar 1..Fp.ORDER
97
- const u = Fp.create(Fp.fromBytes(secp256k1_1.secp256k1.utils.randomPrivateKey()));
98
- const ellCase = (0, utils_2.randomBytes)(1)[0] & 7; // [0..8)
99
- const t = exports.elligatorSwift._inv(x, u, ellCase);
90
+ const u = Fp.create(Fp.fromBytes(secp256k1.utils.randomSecretKey()));
91
+ const ellCase = randomBytes(1)[0] & 7; // [0..8)
92
+ const t = elligatorSwift._inv(x, u, ellCase);
100
93
  if (!t)
101
94
  continue;
102
- return (0, utils_1.concatBytes)((0, utils_1.numberToBytesBE)(u, 32), (0, utils_1.numberToBytesBE)(t, 32));
95
+ return concatBytes(Fp.toBytes(u), Fp.toBytes(t));
103
96
  }
104
97
  },
105
98
  // Decode elligatorSwift point to xonly
106
99
  decode: (data) => {
107
- const _data = (0, utils_1.ensureBytes)('data', data, 64);
108
- let u = Fp.create(Fp.fromBytes(_data.subarray(0, 32)));
109
- let t = Fp.create(Fp.fromBytes(_data.subarray(32, 64)));
100
+ const _data = abytes(data, 64, 'data');
101
+ let u = Fp.create(Fp.fromBytes(_data.subarray(0, 32), true));
102
+ let t = Fp.create(Fp.fromBytes(_data.subarray(32, 64), true));
110
103
  if (Fp.is0(u))
111
104
  u = Fp.create(_1n);
112
105
  if (Fp.is0(t))
@@ -123,36 +116,37 @@ exports.elligatorSwift = {
123
116
  // try different cases
124
117
  let res = Fp.add(u, Fp.mul(Fp.mul(y, y), _4n)); // u + 4 * Y ** 2,
125
118
  if (isValidX(res))
126
- return (0, utils_1.numberToBytesBE)(res, 32);
119
+ return Fp.toBytes(res);
127
120
  res = Fp.div(Fp.sub(Fp.div(Fp.neg(x), y), u), _2n); // (-X / Y - u) / 2
128
121
  if (isValidX(res))
129
- return (0, utils_1.numberToBytesBE)(res, 32);
122
+ return Fp.toBytes(res);
130
123
  res = Fp.div(Fp.sub(Fp.div(x, y), u), _2n); // (X / Y - u) / 2
131
124
  if (isValidX(res))
132
- return (0, utils_1.numberToBytesBE)(res, 32);
125
+ return Fp.toBytes(res);
133
126
  throw new Error('elligatorSwift: cannot decode public key');
134
127
  },
135
128
  // Generate pair (public key, secret key)
136
129
  keygen: () => {
137
- const privateKey = secp256k1_1.secp256k1.utils.randomPrivateKey();
138
- const publicKey = exports.elligatorSwift.encode(Point.fromPrivateKey(privateKey));
130
+ const privateKey = secp256k1.utils.randomSecretKey();
131
+ const p = Point.BASE.multiply(Point.Fn.fromBytes(privateKey));
132
+ const publicKey = elligatorSwift.encode(p.x);
139
133
  return { privateKey, publicKey };
140
134
  },
141
135
  // Generates shared secret between a pub key and a priv key
142
136
  getSharedSecret: (privateKeyA, publicKeyB) => {
143
- const pub = exports.elligatorSwift.decode(publicKeyB);
144
- const priv = (0, utils_1.ensureBytes)('privKey', privateKeyA, 32);
145
- const point = secp256k1_1.schnorr.utils.lift_x(Fp.fromBytes(pub));
146
- const d = (0, utils_1.bytesToNumberBE)(priv);
147
- return (0, utils_1.numberToBytesBE)(point.multiply(d).x, 32);
137
+ const pub = elligatorSwift.decode(publicKeyB);
138
+ const priv = abytes(privateKeyA, 32, 'privKey');
139
+ const point = schnorr.utils.lift_x(Fp.fromBytes(pub));
140
+ const d = Fn.fromBytes(priv);
141
+ return Fp.toBytes(point.multiply(d).x);
148
142
  },
149
143
  // BIP324 shared secret
150
144
  getSharedSecretBip324: (privateKeyOurs, publicKeyTheirs, publicKeyOurs, initiating) => {
151
- const ours = (0, utils_1.ensureBytes)('publicKeyOurs', publicKeyOurs);
152
- const theirs = (0, utils_1.ensureBytes)('publicKeyTheirs', publicKeyTheirs);
153
- const ecdhPoint = exports.elligatorSwift.getSharedSecret(privateKeyOurs, theirs);
145
+ const ours = abytes(publicKeyOurs, undefined, 'publicKeyOurs');
146
+ const theirs = abytes(publicKeyTheirs, undefined, 'publicKeyTheirs');
147
+ const ecdhPoint = elligatorSwift.getSharedSecret(privateKeyOurs, theirs);
154
148
  const pubs = initiating ? [ours, theirs] : [theirs, ours];
155
- return (0, utils_ts_1.tagSchnorr)('bip324_ellswift_xonly_ecdh', ...pubs, ecdhPoint);
149
+ return tagSchnorr('bip324_ellswift_xonly_ecdh', ...pubs, ecdhPoint);
156
150
  },
157
151
  };
158
152
  //# sourceMappingURL=p2p.js.map