@scure/btc-signer 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +142 -24
- package/esm/musig2.d.ts +148 -0
- package/esm/musig2.d.ts.map +1 -0
- package/esm/musig2.js +405 -0
- package/esm/musig2.js.map +1 -0
- package/esm/payment.d.ts.map +1 -1
- package/esm/psbt.d.ts +462 -462
- package/esm/psbt.d.ts.map +1 -1
- package/esm/psbt.js +8 -4
- package/esm/psbt.js.map +1 -1
- package/esm/script.d.ts +16 -16
- package/esm/script.d.ts.map +1 -1
- package/esm/transaction.d.ts +3 -2
- package/esm/transaction.d.ts.map +1 -1
- package/esm/transaction.js +3 -3
- package/esm/transaction.js.map +1 -1
- package/esm/utils.d.ts.map +1 -1
- package/esm/utxo.d.ts +73 -73
- package/esm/utxo.d.ts.map +1 -1
- package/esm/utxo.js +14 -10
- package/esm/utxo.js.map +1 -1
- package/musig2.d.ts +148 -0
- package/musig2.d.ts.map +1 -0
- package/musig2.js +417 -0
- package/musig2.js.map +1 -0
- package/package.json +8 -4
- package/payment.d.ts.map +1 -1
- package/psbt.d.ts +462 -462
- package/psbt.d.ts.map +1 -1
- package/psbt.js +8 -4
- package/psbt.js.map +1 -1
- package/script.d.ts +16 -16
- package/script.d.ts.map +1 -1
- package/src/musig2.ts +517 -0
- package/src/psbt.ts +9 -3
- package/src/transaction.ts +14 -5
- package/src/utxo.ts +23 -14
- package/transaction.d.ts +3 -2
- package/transaction.d.ts.map +1 -1
- package/transaction.js +3 -3
- package/transaction.js.map +1 -1
- package/utils.d.ts.map +1 -1
- package/utxo.d.ts +73 -73
- package/utxo.d.ts.map +1 -1
- package/utxo.js +14 -10
- package/utxo.js.map +1 -1
package/esm/musig2.js
ADDED
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { mod } from '@noble/curves/abstract/modular';
|
|
2
|
+
import { aInRange, bytesToNumberBE, concatBytes, equalBytes, numberToBytesBE, } from '@noble/curves/abstract/utils';
|
|
3
|
+
import { schnorr, secp256k1 } from '@noble/curves/secp256k1';
|
|
4
|
+
import { abytes, anumber } from '@noble/hashes/_assert';
|
|
5
|
+
import { randomBytes } from '@noble/hashes/utils';
|
|
6
|
+
import * as P from 'micro-packed';
|
|
7
|
+
import { compareBytes } from './utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* Represents an error indicating an invalid contribution from a signer.
|
|
10
|
+
* This allows pointing out which participant is malicious and what specifically is wrong.
|
|
11
|
+
*/
|
|
12
|
+
export class InvalidContributionErr extends Error {
|
|
13
|
+
constructor(idx, m) {
|
|
14
|
+
super(m);
|
|
15
|
+
this.idx = idx;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// Utils
|
|
19
|
+
const { taggedHash, pointToBytes } = schnorr.utils;
|
|
20
|
+
const Point = secp256k1.ProjectivePoint;
|
|
21
|
+
const PUBKEY_LEN = 33;
|
|
22
|
+
const ZERO = new Uint8Array(PUBKEY_LEN); // Compressed zero point
|
|
23
|
+
const SECP_N = secp256k1.CURVE.n;
|
|
24
|
+
// Encoding
|
|
25
|
+
// TODO: re-use in PSBT?
|
|
26
|
+
const compressed = P.apply(P.bytes(33), {
|
|
27
|
+
decode: (p) => (isZero(p) ? ZERO : p.toRawBytes(true)),
|
|
28
|
+
encode: (b) => (equalBytes(b, ZERO) ? Point.ZERO : Point.fromHex(b)),
|
|
29
|
+
});
|
|
30
|
+
const scalar = P.validate(P.U256BE, (n) => {
|
|
31
|
+
aInRange('n', n, 1n, SECP_N);
|
|
32
|
+
return n;
|
|
33
|
+
});
|
|
34
|
+
const PubNonce = P.struct({ R1: compressed, R2: compressed });
|
|
35
|
+
const SecretNonce = P.struct({ k1: scalar, k2: scalar, publicKey: P.bytes(PUBKEY_LEN) });
|
|
36
|
+
function abytesOptional(b, ...lengths) {
|
|
37
|
+
if (b !== undefined)
|
|
38
|
+
abytes(b, ...lengths);
|
|
39
|
+
}
|
|
40
|
+
function abytesArray(lst, ...lengths) {
|
|
41
|
+
if (!Array.isArray(lst))
|
|
42
|
+
throw new Error('expected array');
|
|
43
|
+
lst.forEach((i) => abytes(i, ...lengths));
|
|
44
|
+
}
|
|
45
|
+
function aXonly(lst) {
|
|
46
|
+
if (!Array.isArray(lst))
|
|
47
|
+
throw new Error('expected array');
|
|
48
|
+
lst.forEach((i, j) => {
|
|
49
|
+
if (typeof i !== 'boolean')
|
|
50
|
+
throw new Error('expected boolean in xOnly array, got' + i + '(' + j + ')');
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const modN = (x) => mod(x, SECP_N);
|
|
54
|
+
const taggedInt = (tag, ...messages) => modN(bytesToNumberBE(taggedHash(tag, ...messages)));
|
|
55
|
+
const evenScalar = (p, n) => (p.hasEvenY() ? n : modN(-n));
|
|
56
|
+
// Short utility for compat with reference implementation
|
|
57
|
+
export function IndividualPubkey(seckey) {
|
|
58
|
+
return secp256k1.getPublicKey(seckey, true);
|
|
59
|
+
}
|
|
60
|
+
// Same, but returns Point
|
|
61
|
+
function mulBase(n) {
|
|
62
|
+
return Point.BASE.multiply(n);
|
|
63
|
+
}
|
|
64
|
+
function isZero(point) {
|
|
65
|
+
return point.equals(Point.ZERO);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Lexicographically sorts an array of public keys.
|
|
69
|
+
* @param publicKeys An array of public keys (Uint8Array).
|
|
70
|
+
* @returns A new array containing the sorted public keys.
|
|
71
|
+
* @throws {Error} If the input is not an array or if any element is not a Uint8Array of the correct length.
|
|
72
|
+
*/
|
|
73
|
+
export function sortKeys(publicKeys) {
|
|
74
|
+
abytesArray(publicKeys, PUBKEY_LEN);
|
|
75
|
+
return publicKeys.sort(compareBytes);
|
|
76
|
+
}
|
|
77
|
+
// Finds second distinct key (to make coefficient 1)
|
|
78
|
+
function getSecondKey(publicKeys) {
|
|
79
|
+
abytesArray(publicKeys, PUBKEY_LEN);
|
|
80
|
+
for (let j = 1; j < publicKeys.length; j++)
|
|
81
|
+
if (!equalBytes(publicKeys[j], publicKeys[0]))
|
|
82
|
+
return publicKeys[j];
|
|
83
|
+
return ZERO;
|
|
84
|
+
}
|
|
85
|
+
function keyAggL(publicKeys) {
|
|
86
|
+
abytesArray(publicKeys, PUBKEY_LEN);
|
|
87
|
+
return taggedHash('KeyAgg list', ...publicKeys);
|
|
88
|
+
}
|
|
89
|
+
function keyAggCoeffInternal(publicKey1, publicKey2, L) {
|
|
90
|
+
abytes(publicKey1, PUBKEY_LEN);
|
|
91
|
+
abytes(publicKey2, PUBKEY_LEN);
|
|
92
|
+
if (equalBytes(publicKey1, publicKey2))
|
|
93
|
+
return 1n;
|
|
94
|
+
return taggedInt('KeyAgg coefficient', L, publicKey1);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Aggregates multiple public keys using the MuSig2 key aggregation algorithm.
|
|
98
|
+
* @param publicKeys An array of individual public keys (Uint8Array).
|
|
99
|
+
* @param tweaks An optional array of tweaks (Uint8Array) to apply to the aggregate public key.
|
|
100
|
+
* @param isXonly An optional array of booleans indicating whether each tweak is an X-only tweak.
|
|
101
|
+
* @returns An object containing the aggregate public key, accumulated sign, and accumulated tweak.
|
|
102
|
+
* @throws {Error} If the input is invalid, such as non array publicKeys, tweaks and isXonly array length not matching.
|
|
103
|
+
* @throws {InvalidContributionErr} If any of the public keys are invalid and cannot be processed.
|
|
104
|
+
*/
|
|
105
|
+
export function keyAggregate(publicKeys, tweaks = [], isXonly = []) {
|
|
106
|
+
abytesArray(publicKeys, PUBKEY_LEN);
|
|
107
|
+
abytesArray(tweaks, 32);
|
|
108
|
+
if (tweaks.length !== isXonly.length)
|
|
109
|
+
throw new Error('The tweaks and isXonly arrays must have the same length');
|
|
110
|
+
// Aggregate
|
|
111
|
+
const pk2 = getSecondKey(publicKeys);
|
|
112
|
+
const L = keyAggL(publicKeys);
|
|
113
|
+
let aggPublicKey = Point.ZERO;
|
|
114
|
+
for (let i = 0; i < publicKeys.length; i++) {
|
|
115
|
+
let Pi;
|
|
116
|
+
try {
|
|
117
|
+
Pi = Point.fromHex(publicKeys[i]);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
throw new InvalidContributionErr(i, 'pubkey');
|
|
121
|
+
}
|
|
122
|
+
aggPublicKey = aggPublicKey.add(Pi.multiply(keyAggCoeffInternal(publicKeys[i], pk2, L)));
|
|
123
|
+
}
|
|
124
|
+
let gAcc = 1n;
|
|
125
|
+
let tweakAcc = 0n;
|
|
126
|
+
// Apply tweaks
|
|
127
|
+
for (let i = 0; i < tweaks.length; i++) {
|
|
128
|
+
const g = isXonly[i] && !aggPublicKey.hasEvenY() ? modN(-1n) : 1n;
|
|
129
|
+
const t = bytesToNumberBE(tweaks[i]);
|
|
130
|
+
aInRange('tweak', t, 0n, SECP_N);
|
|
131
|
+
aggPublicKey = aggPublicKey.multiply(g).add(mulBase(t));
|
|
132
|
+
if (isZero(aggPublicKey))
|
|
133
|
+
throw new Error('The result of tweaking cannot be infinity');
|
|
134
|
+
gAcc = modN(g * gAcc);
|
|
135
|
+
tweakAcc = modN(t + g * tweakAcc);
|
|
136
|
+
}
|
|
137
|
+
return { aggPublicKey, gAcc, tweakAcc };
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Exports the aggregate public key to a byte array.
|
|
141
|
+
* @param ctx The result of the keyAggregate function.
|
|
142
|
+
* @returns The aggregate public key as a byte array.
|
|
143
|
+
*/
|
|
144
|
+
export function keyAggExport(ctx) {
|
|
145
|
+
return pointToBytes(ctx.aggPublicKey);
|
|
146
|
+
}
|
|
147
|
+
function aux(secret, rand) {
|
|
148
|
+
const rand2 = taggedHash('MuSig/aux', rand);
|
|
149
|
+
if (secret.length !== rand2.length)
|
|
150
|
+
throw new Error('Cannot XOR arrays of different lengths');
|
|
151
|
+
const res = new Uint8Array(secret.length);
|
|
152
|
+
for (let i = 0; i < secret.length; i++)
|
|
153
|
+
res[i] = secret[i] ^ rand2[i];
|
|
154
|
+
return res;
|
|
155
|
+
}
|
|
156
|
+
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]));
|
|
157
|
+
/**
|
|
158
|
+
* Generates a nonce pair (public and secret) for MuSig2 signing.
|
|
159
|
+
* @param publicKey The individual public key of the signer (Uint8Array).
|
|
160
|
+
* @param secretKey The secret key of the signer (Uint8Array). Optional, included to xor randomness
|
|
161
|
+
* @param aggPublicKey The aggregate public key of all signers (Uint8Array).
|
|
162
|
+
* @param msg The message to be signed (Uint8Array).
|
|
163
|
+
* @param extraIn Extra input for nonce generation (Uint8Array).
|
|
164
|
+
* @param rand Random 32-bytes for generating the nonces (Uint8Array).
|
|
165
|
+
* @returns An object containing the public and secret nonces.
|
|
166
|
+
* @throws {Error} If the input is invalid, such as non array publicKey, secretKey, aggPublicKey.
|
|
167
|
+
*/
|
|
168
|
+
export function nonceGen(publicKey, secretKey, aggPublicKey = new Uint8Array(0), msg, extraIn = new Uint8Array(0), rand = randomBytes(32)) {
|
|
169
|
+
abytes(publicKey, PUBKEY_LEN);
|
|
170
|
+
abytesOptional(secretKey, 32);
|
|
171
|
+
abytes(aggPublicKey, 0, 32);
|
|
172
|
+
abytesOptional(msg);
|
|
173
|
+
abytes(extraIn);
|
|
174
|
+
abytes(rand, 32);
|
|
175
|
+
if (secretKey !== undefined)
|
|
176
|
+
rand = aux(secretKey, rand);
|
|
177
|
+
const msgPrefixed = msg !== undefined
|
|
178
|
+
? concatBytes(new Uint8Array([1]), numberToBytesBE(msg.length, 8), msg)
|
|
179
|
+
: new Uint8Array([0]);
|
|
180
|
+
const k1 = nonceHash(rand, publicKey, aggPublicKey, 0, msgPrefixed, extraIn);
|
|
181
|
+
const k2 = nonceHash(rand, publicKey, aggPublicKey, 1, msgPrefixed, extraIn);
|
|
182
|
+
return {
|
|
183
|
+
secret: SecretNonce.encode({ k1, k2, publicKey }),
|
|
184
|
+
public: PubNonce.encode({ R1: mulBase(k1), R2: mulBase(k2) }),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Aggregates public nonces from multiple signers into a single aggregate nonce.
|
|
189
|
+
* @param pubNonces An array of public nonces from each signer (Uint8Array). Each pubnonce is assumed to be 66 bytes (two 33‐byte parts).
|
|
190
|
+
* @returns The aggregate nonce (Uint8Array).
|
|
191
|
+
* @throws {Error} If the input is not an array or if any element is not a Uint8Array of the correct length.
|
|
192
|
+
* @throws {InvalidContributionErr} If any of the public nonces are invalid and cannot be processed.
|
|
193
|
+
*/
|
|
194
|
+
export function nonceAggregate(pubNonces) {
|
|
195
|
+
abytesArray(pubNonces, 66);
|
|
196
|
+
let R1 = Point.ZERO;
|
|
197
|
+
let R2 = Point.ZERO;
|
|
198
|
+
for (let i = 0; i < pubNonces.length; i++) {
|
|
199
|
+
const pn = pubNonces[i];
|
|
200
|
+
try {
|
|
201
|
+
const { R1: R1n, R2: R2n } = PubNonce.decode(pn);
|
|
202
|
+
if (isZero(R1n) || isZero(R2n))
|
|
203
|
+
throw new Error('infinity point');
|
|
204
|
+
R1 = R1.add(R1n);
|
|
205
|
+
R2 = R2.add(R2n);
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
throw new InvalidContributionErr(i, 'pubnonce');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return PubNonce.encode({ R1, R2 });
|
|
212
|
+
}
|
|
213
|
+
// Class allows us re-use pre-computed stuff
|
|
214
|
+
// NOTE: it would be nice to aggregate nonce in construdctor, but there is test that passes already aggregated nonce here.
|
|
215
|
+
export class Session {
|
|
216
|
+
/**
|
|
217
|
+
* Constructor for the Session class.
|
|
218
|
+
* It precomputes and stores values derived from the aggregate nonce, public keys,
|
|
219
|
+
* message, and optional tweaks, optimizing the signing process.
|
|
220
|
+
* @param aggNonce The aggregate nonce (Uint8Array) from all participants combined, must be 66 bytes.
|
|
221
|
+
* @param publicKeys An array of public keys (Uint8Array) from each participant, must be 33 bytes.
|
|
222
|
+
* @param msg The message (Uint8Array) to be signed.
|
|
223
|
+
* @param tweaks Optional array of tweaks (Uint8Array) to be applied to the aggregate public key, each must be 32 bytes. Defaults to [].
|
|
224
|
+
* @param isXonly Optional array of booleans indicating whether each tweak is an X-only tweak. Defaults to [].
|
|
225
|
+
* @throws {Error} If the input is invalid, such as wrong array sizes or lengths.
|
|
226
|
+
*/
|
|
227
|
+
constructor(aggNonce, publicKeys, msg, tweaks = [], isXonly = []) {
|
|
228
|
+
abytesArray(publicKeys, 33);
|
|
229
|
+
abytesArray(tweaks, 32);
|
|
230
|
+
aXonly(isXonly);
|
|
231
|
+
abytes(msg);
|
|
232
|
+
if (tweaks.length !== isXonly.length)
|
|
233
|
+
throw new Error('The tweaks and isXonly arrays must have the same length');
|
|
234
|
+
const { aggPublicKey, gAcc, tweakAcc } = keyAggregate(publicKeys, tweaks, isXonly);
|
|
235
|
+
const { R1, R2 } = PubNonce.decode(aggNonce);
|
|
236
|
+
this.publicKeys = publicKeys;
|
|
237
|
+
this.Q = aggPublicKey;
|
|
238
|
+
this.gAcc = gAcc;
|
|
239
|
+
this.tweakAcc = tweakAcc;
|
|
240
|
+
this.b = taggedInt('MuSig/noncecoef', aggNonce, pointToBytes(aggPublicKey), msg);
|
|
241
|
+
const R = R1.add(R2.multiply(this.b));
|
|
242
|
+
this.R = isZero(R) ? Point.BASE : R;
|
|
243
|
+
this.e = taggedInt('BIP0340/challenge', pointToBytes(this.R), pointToBytes(aggPublicKey), msg);
|
|
244
|
+
this.tweaks = tweaks;
|
|
245
|
+
this.isXonly = isXonly;
|
|
246
|
+
this.L = keyAggL(publicKeys);
|
|
247
|
+
this.secondKey = getSecondKey(publicKeys);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Calculates the key aggregation coefficient for a given point.
|
|
251
|
+
* @private
|
|
252
|
+
* @param P The point to calculate the coefficient for.
|
|
253
|
+
* @returns The key aggregation coefficient as a bigint.
|
|
254
|
+
* @throws {Error} If the provided public key is not included in the list of pubkeys.
|
|
255
|
+
*/
|
|
256
|
+
getSessionKeyAggCoeff(P) {
|
|
257
|
+
const { publicKeys } = this;
|
|
258
|
+
const pk = P.toRawBytes(true);
|
|
259
|
+
const found = publicKeys.some((p) => equalBytes(p, pk));
|
|
260
|
+
if (!found)
|
|
261
|
+
throw new Error("The signer's pubkey must be included in the list of pubkeys");
|
|
262
|
+
return keyAggCoeffInternal(pk, this.secondKey, this.L);
|
|
263
|
+
}
|
|
264
|
+
partialSigVerifyInternal(partialSig, publicNonce, publicKey) {
|
|
265
|
+
const { Q, gAcc, b, R, e } = this;
|
|
266
|
+
const s = bytesToNumberBE(partialSig);
|
|
267
|
+
if (s >= SECP_N)
|
|
268
|
+
return false;
|
|
269
|
+
const { R1, R2 } = PubNonce.decode(publicNonce);
|
|
270
|
+
const Re_s_ = R1.add(R2.multiply(b));
|
|
271
|
+
const Re_s = R.hasEvenY() ? Re_s_ : Re_s_.negate();
|
|
272
|
+
const P = Point.fromHex(publicKey);
|
|
273
|
+
const a = this.getSessionKeyAggCoeff(P);
|
|
274
|
+
const g = modN(evenScalar(Q, 1n) * gAcc);
|
|
275
|
+
const left = mulBase(s);
|
|
276
|
+
const right = Re_s.add(P.multiply(modN(e * a * g)));
|
|
277
|
+
return left.equals(right);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Generates a partial signature for a given message, secret nonce, secret key, and session context.
|
|
281
|
+
* @param secretNonce The secret nonce for this signing session (Uint8Array). MUST be securely erased after use.
|
|
282
|
+
* @param secret The secret key of the signer (Uint8Array).
|
|
283
|
+
* @param sessionCtx The session context containing all necessary information for signing.
|
|
284
|
+
* @param fastSign if set to true, the signature is created without checking validity.
|
|
285
|
+
* @returns The partial signature (Uint8Array).
|
|
286
|
+
* @throws {Error} If the input is invalid, such as wrong array sizes, invalid nonce or secret key.
|
|
287
|
+
*/
|
|
288
|
+
sign(secretNonce, secret, fastSign = false) {
|
|
289
|
+
abytes(secret, 32);
|
|
290
|
+
if (typeof fastSign !== 'boolean')
|
|
291
|
+
throw new Error('expected boolean');
|
|
292
|
+
const { Q, gAcc, b, R, e } = this;
|
|
293
|
+
const { k1: k1_, k2: k2_, publicKey: originalPk } = SecretNonce.decode(secretNonce);
|
|
294
|
+
// zero-out the first 64 bytes of secretNonce so it cannot be reused
|
|
295
|
+
// TODO: this was in reference implementation, but feels very broken. Modifying input arguments is pretty bad.
|
|
296
|
+
secretNonce.fill(0, 0, 64);
|
|
297
|
+
aInRange('k1', k1_, 0n, SECP_N);
|
|
298
|
+
aInRange('k2', k2_, 0n, SECP_N);
|
|
299
|
+
const k1 = evenScalar(R, k1_);
|
|
300
|
+
const k2 = evenScalar(R, k2_);
|
|
301
|
+
const d_ = bytesToNumberBE(secret);
|
|
302
|
+
aInRange('d_', d_, 1n, SECP_N);
|
|
303
|
+
const P = mulBase(d_);
|
|
304
|
+
const pk = P.toRawBytes(true);
|
|
305
|
+
if (!equalBytes(pk, originalPk))
|
|
306
|
+
throw new Error('Public key does not match nonceGen argument');
|
|
307
|
+
const a = this.getSessionKeyAggCoeff(P);
|
|
308
|
+
const g = evenScalar(Q, 1n);
|
|
309
|
+
const d = modN(g * gAcc * d_);
|
|
310
|
+
const s = modN(k1 + b * k2 + e * a * d);
|
|
311
|
+
const partialSig = numberToBytesBE(s, 32);
|
|
312
|
+
// Skip validation in fast-sign mode
|
|
313
|
+
if (!fastSign) {
|
|
314
|
+
const publicNonce = PubNonce.encode({
|
|
315
|
+
R1: mulBase(k1_),
|
|
316
|
+
R2: mulBase(k2_),
|
|
317
|
+
});
|
|
318
|
+
if (!this.partialSigVerifyInternal(partialSig, publicNonce, pk))
|
|
319
|
+
throw new Error('Partial signature verification failed');
|
|
320
|
+
}
|
|
321
|
+
return partialSig;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Verifies a partial signature against the aggregate public key and other session parameters.
|
|
325
|
+
* @param partialSig The partial signature to verify (Uint8Array).
|
|
326
|
+
* @param pubNonces An array of public nonces from each signer (Uint8Array).
|
|
327
|
+
* @param pubKeys An array of public keys from each signer (Uint8Array).
|
|
328
|
+
* @param tweaks An array of tweaks applied to the aggregate public key.
|
|
329
|
+
* @param isXonly An array of booleans indicating whether each tweak is an X-only tweak.
|
|
330
|
+
* @param msg The message that was signed (Uint8Array).
|
|
331
|
+
* @param i The index of the signer whose partial signature is being verified.
|
|
332
|
+
* @returns True if the partial signature is valid, false otherwise.
|
|
333
|
+
* @throws {Error} If the input is invalid, such as non array partialSig, pubNonces, pubKeys, tweaks.
|
|
334
|
+
*/
|
|
335
|
+
partialSigVerify(partialSig, pubNonces, i) {
|
|
336
|
+
const { publicKeys, tweaks, isXonly } = this;
|
|
337
|
+
abytes(partialSig, 32);
|
|
338
|
+
abytesArray(pubNonces, 66);
|
|
339
|
+
abytesArray(publicKeys, PUBKEY_LEN);
|
|
340
|
+
abytesArray(tweaks, 32);
|
|
341
|
+
aXonly(isXonly);
|
|
342
|
+
anumber(i);
|
|
343
|
+
if (pubNonces.length !== publicKeys.length)
|
|
344
|
+
throw new Error('The pubNonces and publicKeys arrays must have the same length');
|
|
345
|
+
if (tweaks.length !== isXonly.length)
|
|
346
|
+
throw new Error('The tweaks and isXonly arrays must have the same length');
|
|
347
|
+
if (i >= pubNonces.length)
|
|
348
|
+
throw new Error('index outside of pubKeys/pubNonces');
|
|
349
|
+
return this.partialSigVerifyInternal(partialSig, pubNonces[i], publicKeys[i]);
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Aggregates partial signatures from multiple signers into a single final signature.
|
|
353
|
+
* @param partialSigs An array of partial signatures from each signer (Uint8Array).
|
|
354
|
+
* @param sessionCtx The session context containing all necessary information for signing.
|
|
355
|
+
* @returns The final aggregate signature (Uint8Array).
|
|
356
|
+
* @throws {Error} If the input is invalid, such as wrong array sizes, invalid signature.
|
|
357
|
+
*/
|
|
358
|
+
partialSigAgg(partialSigs) {
|
|
359
|
+
abytesArray(partialSigs, 32);
|
|
360
|
+
const { Q, tweakAcc, R, e } = this;
|
|
361
|
+
let s = 0n;
|
|
362
|
+
for (let i = 0; i < partialSigs.length; i++) {
|
|
363
|
+
const si = bytesToNumberBE(partialSigs[i]);
|
|
364
|
+
if (si >= SECP_N)
|
|
365
|
+
throw new InvalidContributionErr(i, 'psig');
|
|
366
|
+
s = modN(s + si);
|
|
367
|
+
}
|
|
368
|
+
const g = evenScalar(Q, 1n);
|
|
369
|
+
s = modN(s + e * g * tweakAcc);
|
|
370
|
+
return concatBytes(pointToBytes(R), numberToBytesBE(s, 32));
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
const deterministicNonceHash = (secret, aggOtherNonce, aggPublicKey, msg, i) => taggedInt('MuSig/deterministic/nonce', secret, aggOtherNonce, aggPublicKey, numberToBytesBE(msg.length, 8), msg, new Uint8Array([i]));
|
|
374
|
+
/**
|
|
375
|
+
* Generates a nonce pair and partial signature deterministically for a single signer.
|
|
376
|
+
* @param secret The secret key of the signer (Uint8Array).
|
|
377
|
+
* @param aggOtherNonce The aggregate public nonce of all other signers (Uint8Array).
|
|
378
|
+
* @param publicKeys An array of all signers' public keys (Uint8Array).
|
|
379
|
+
* @param tweaks An array of tweaks to apply to the aggregate public key.
|
|
380
|
+
* @param isXonly An array of booleans indicating whether each tweak is an X-only tweak.
|
|
381
|
+
* @param msg The message to be signed (Uint8Array).
|
|
382
|
+
* @param rand Optional extra randomness (Uint8Array).
|
|
383
|
+
* @returns An object containing the public nonce and partial signature.
|
|
384
|
+
*/
|
|
385
|
+
export function deterministicSign(secret, aggOtherNonce, publicKeys, msg, tweaks = [], isXonly = [], rand, fastSign = false) {
|
|
386
|
+
abytes(secret, 32);
|
|
387
|
+
abytes(aggOtherNonce, 66);
|
|
388
|
+
abytesArray(publicKeys, PUBKEY_LEN);
|
|
389
|
+
abytesArray(tweaks, 32);
|
|
390
|
+
abytes(msg);
|
|
391
|
+
abytesOptional(rand);
|
|
392
|
+
const sk = rand !== undefined ? aux(secret, rand) : secret;
|
|
393
|
+
const aggPublicKey = keyAggExport(keyAggregate(publicKeys, tweaks, isXonly));
|
|
394
|
+
const k1 = deterministicNonceHash(sk, aggOtherNonce, aggPublicKey, msg, 0);
|
|
395
|
+
const k2 = deterministicNonceHash(sk, aggOtherNonce, aggPublicKey, msg, 1);
|
|
396
|
+
const R1 = mulBase(k1);
|
|
397
|
+
const R2 = mulBase(k2);
|
|
398
|
+
const publicNonce = PubNonce.encode({ R1, R2 });
|
|
399
|
+
const secretNonce = SecretNonce.encode({ k1, k2, publicKey: IndividualPubkey(secret) });
|
|
400
|
+
const aggNonce = nonceAggregate([publicNonce, aggOtherNonce]);
|
|
401
|
+
const session = new Session(aggNonce, publicKeys, msg, tweaks, isXonly);
|
|
402
|
+
const partialSig = session.sign(secretNonce, secret, fastSign);
|
|
403
|
+
return { publicNonce, partialSig };
|
|
404
|
+
}
|
|
405
|
+
//# sourceMappingURL=musig2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"musig2.js","sourceRoot":"","sources":["../src/musig2.ts"],"names":[],"mappings":"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"}
|
package/esm/payment.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../src/payment.ts"],"names":[],"mappings":"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"}
|