@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.
- package/README.md +15 -12
- package/_type_test.js +10 -12
- package/_type_test.js.map +1 -1
- package/index.js +17 -61
- package/index.js.map +1 -1
- package/musig2.d.ts +2 -2
- package/musig2.d.ts.map +1 -1
- package/musig2.js +93 -91
- package/musig2.js.map +1 -1
- package/p2p.d.ts +7 -8
- package/p2p.d.ts.map +1 -1
- package/p2p.js +32 -38
- package/p2p.js.map +1 -1
- package/package.json +33 -70
- package/payment.js +73 -96
- package/payment.js.map +1 -1
- package/psbt.d.ts +224 -224
- package/psbt.d.ts.map +1 -1
- package/psbt.js +58 -63
- package/psbt.js.map +1 -1
- package/script.d.ts +125 -120
- package/script.d.ts.map +1 -1
- package/script.js +46 -146
- package/script.js.map +1 -1
- package/src/_type_test.ts +2 -2
- package/src/musig2.ts +45 -53
- package/src/p2p.ts +31 -43
- package/src/psbt.ts +7 -7
- package/src/script.ts +29 -26
- package/src/transaction.ts +31 -24
- package/src/utils.ts +45 -26
- package/src/utxo.ts +1 -1
- package/transaction.d.ts +23 -28
- package/transaction.d.ts.map +1 -1
- package/transaction.js +140 -154
- package/transaction.js.map +1 -1
- package/utils.d.ts +13 -7
- package/utils.d.ts.map +1 -1
- package/utils.js +60 -62
- package/utils.js.map +1 -1
- package/utxo.d.ts +45 -45
- package/utxo.d.ts.map +1 -1
- package/utxo.js +63 -59
- package/utxo.js.map +1 -1
- package/esm/_type_test.d.ts +0 -2
- package/esm/_type_test.d.ts.map +0 -1
- package/esm/_type_test.js +0 -57
- package/esm/_type_test.js.map +0 -1
- package/esm/index.d.ts +0 -22
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -22
- package/esm/index.js.map +0 -1
- package/esm/musig2.d.ts +0 -148
- package/esm/musig2.d.ts.map +0 -1
- package/esm/musig2.js +0 -405
- package/esm/musig2.js.map +0 -1
- package/esm/p2p.d.ts +0 -38
- package/esm/p2p.d.ts.map +0 -1
- package/esm/p2p.js +0 -156
- package/esm/p2p.js.map +0 -1
- package/esm/package.json +0 -1
- package/esm/payment.d.ts +0 -200
- package/esm/payment.d.ts.map +0 -1
- package/esm/payment.js +0 -697
- package/esm/payment.js.map +0 -1
- package/esm/psbt.d.ts +0 -820
- package/esm/psbt.d.ts.map +0 -1
- package/esm/psbt.js +0 -409
- package/esm/psbt.js.map +0 -1
- package/esm/script.d.ts +0 -170
- package/esm/script.d.ts.map +0 -1
- package/esm/script.js +0 -356
- package/esm/script.js.map +0 -1
- package/esm/transaction.d.ts +0 -171
- package/esm/transaction.d.ts.map +0 -1
- package/esm/transaction.js +0 -1182
- package/esm/transaction.js.map +0 -1
- package/esm/utils.d.ts +0 -35
- package/esm/utils.d.ts.map +0 -1
- package/esm/utils.js +0 -118
- package/esm/utils.js.map +0 -1
- package/esm/utxo.d.ts +0 -198
- package/esm/utxo.d.ts.map +0 -1
- package/esm/utxo.js +0 -461
- package/esm/utxo.js.map +0 -1
- package/src/package.json +0 -3
package/musig2.js
CHANGED
|
@@ -1,57 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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 } =
|
|
31
|
-
const Point =
|
|
32
|
-
const
|
|
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.
|
|
39
|
-
encode: (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
|
-
|
|
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
|
-
|
|
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) =>
|
|
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
|
|
65
|
-
const
|
|
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
|
|
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(
|
|
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 (!
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
if (
|
|
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.
|
|
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 =
|
|
136
|
-
let tweakAcc =
|
|
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.
|
|
140
|
-
const t =
|
|
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 =
|
|
146
|
-
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,
|
|
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 =
|
|
180
|
-
|
|
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
|
-
|
|
168
|
+
abytes(aggPublicKey);
|
|
169
|
+
if (![0, 32].includes(aggPublicKey.length))
|
|
170
|
+
throw new Error('wrong aggPublicKey');
|
|
183
171
|
abytesOptional(msg);
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
?
|
|
190
|
-
:
|
|
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
|
-
|
|
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.
|
|
270
|
-
const found = publicKeys.some((p) =>
|
|
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 = (
|
|
278
|
-
if (s
|
|
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.
|
|
283
|
-
const P = Point.
|
|
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 =
|
|
284
|
+
const g = Fn.mul(evenScalar(Q, 1n), gAcc);
|
|
286
285
|
const left = mulBase(s);
|
|
287
|
-
const right = Re_s.add(P.multiply(
|
|
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
|
-
|
|
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
|
-
(
|
|
309
|
-
|
|
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_ =
|
|
313
|
-
(
|
|
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.
|
|
316
|
-
if (!
|
|
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 =
|
|
321
|
-
|
|
322
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
375
|
-
if (si
|
|
377
|
+
const si = Fn.fromBytes(partialSigs[i], true);
|
|
378
|
+
if (!Fn.isValid(si))
|
|
376
379
|
throw new InvalidContributionErr(i, 'psig');
|
|
377
|
-
s =
|
|
380
|
+
s = Fn.add(s, si);
|
|
378
381
|
}
|
|
379
382
|
const g = evenScalar(Q, 1n);
|
|
380
|
-
s =
|
|
381
|
-
return
|
|
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
|
-
|
|
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
|
-
|
|
399
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
30
|
-
decode: (data:
|
|
28
|
+
encode: (x: bigint) => Uint8Array;
|
|
29
|
+
decode: (data: Uint8Array) => Uint8Array;
|
|
31
30
|
keygen: () => {
|
|
32
|
-
privateKey:
|
|
33
|
-
publicKey:
|
|
31
|
+
privateKey: Bytes;
|
|
32
|
+
publicKey: Bytes;
|
|
34
33
|
};
|
|
35
|
-
getSharedSecret: (privateKeyA:
|
|
36
|
-
getSharedSecretBip324: (privateKeyOurs:
|
|
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;
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
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) =>
|
|
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
|
-
|
|
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(
|
|
98
|
-
const ellCase =
|
|
99
|
-
const t =
|
|
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
|
|
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 = (
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
138
|
-
const
|
|
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 =
|
|
144
|
-
const priv = (
|
|
145
|
-
const point =
|
|
146
|
-
const d =
|
|
147
|
-
return
|
|
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 = (
|
|
152
|
-
const theirs = (
|
|
153
|
-
const ecdhPoint =
|
|
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
|
|
149
|
+
return tagSchnorr('bip324_ellswift_xonly_ecdh', ...pubs, ecdhPoint);
|
|
156
150
|
},
|
|
157
151
|
};
|
|
158
152
|
//# sourceMappingURL=p2p.js.map
|