xpi-ts 0.2.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.
Files changed (216) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +516 -0
  3. package/dist/index.d.ts +9 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +8 -0
  6. package/dist/lib/bitcore/address.d.ts +66 -0
  7. package/dist/lib/bitcore/address.d.ts.map +1 -0
  8. package/dist/lib/bitcore/address.js +407 -0
  9. package/dist/lib/bitcore/block/block.d.ts +57 -0
  10. package/dist/lib/bitcore/block/block.d.ts.map +1 -0
  11. package/dist/lib/bitcore/block/block.js +233 -0
  12. package/dist/lib/bitcore/block/blockheader.d.ts +82 -0
  13. package/dist/lib/bitcore/block/blockheader.d.ts.map +1 -0
  14. package/dist/lib/bitcore/block/blockheader.js +323 -0
  15. package/dist/lib/bitcore/block/index.d.ts +5 -0
  16. package/dist/lib/bitcore/block/index.d.ts.map +1 -0
  17. package/dist/lib/bitcore/block/index.js +2 -0
  18. package/dist/lib/bitcore/chunk.d.ts +22 -0
  19. package/dist/lib/bitcore/chunk.d.ts.map +1 -0
  20. package/dist/lib/bitcore/chunk.js +46 -0
  21. package/dist/lib/bitcore/crypto/bn.d.ts +53 -0
  22. package/dist/lib/bitcore/crypto/bn.d.ts.map +1 -0
  23. package/dist/lib/bitcore/crypto/bn.js +238 -0
  24. package/dist/lib/bitcore/crypto/ecdsa.d.ts +46 -0
  25. package/dist/lib/bitcore/crypto/ecdsa.d.ts.map +1 -0
  26. package/dist/lib/bitcore/crypto/ecdsa.js +247 -0
  27. package/dist/lib/bitcore/crypto/hash.d.ts +16 -0
  28. package/dist/lib/bitcore/crypto/hash.d.ts.map +1 -0
  29. package/dist/lib/bitcore/crypto/hash.js +87 -0
  30. package/dist/lib/bitcore/crypto/index.d.ts +9 -0
  31. package/dist/lib/bitcore/crypto/index.d.ts.map +1 -0
  32. package/dist/lib/bitcore/crypto/index.js +8 -0
  33. package/dist/lib/bitcore/crypto/musig2.d.ts +40 -0
  34. package/dist/lib/bitcore/crypto/musig2.d.ts.map +1 -0
  35. package/dist/lib/bitcore/crypto/musig2.js +236 -0
  36. package/dist/lib/bitcore/crypto/point.d.ts +20 -0
  37. package/dist/lib/bitcore/crypto/point.d.ts.map +1 -0
  38. package/dist/lib/bitcore/crypto/point.js +133 -0
  39. package/dist/lib/bitcore/crypto/random.d.ts +7 -0
  40. package/dist/lib/bitcore/crypto/random.d.ts.map +1 -0
  41. package/dist/lib/bitcore/crypto/random.js +30 -0
  42. package/dist/lib/bitcore/crypto/schnorr.d.ts +40 -0
  43. package/dist/lib/bitcore/crypto/schnorr.d.ts.map +1 -0
  44. package/dist/lib/bitcore/crypto/schnorr.js +185 -0
  45. package/dist/lib/bitcore/crypto/signature.d.ts +53 -0
  46. package/dist/lib/bitcore/crypto/signature.d.ts.map +1 -0
  47. package/dist/lib/bitcore/crypto/signature.js +300 -0
  48. package/dist/lib/bitcore/crypto/sigtype.d.ts +5 -0
  49. package/dist/lib/bitcore/crypto/sigtype.d.ts.map +1 -0
  50. package/dist/lib/bitcore/crypto/sigtype.js +18 -0
  51. package/dist/lib/bitcore/encoding/base58.d.ts +16 -0
  52. package/dist/lib/bitcore/encoding/base58.d.ts.map +1 -0
  53. package/dist/lib/bitcore/encoding/base58.js +55 -0
  54. package/dist/lib/bitcore/encoding/base58check.d.ts +9 -0
  55. package/dist/lib/bitcore/encoding/base58check.d.ts.map +1 -0
  56. package/dist/lib/bitcore/encoding/base58check.js +82 -0
  57. package/dist/lib/bitcore/encoding/bufferreader.d.ts +34 -0
  58. package/dist/lib/bitcore/encoding/bufferreader.d.ts.map +1 -0
  59. package/dist/lib/bitcore/encoding/bufferreader.js +198 -0
  60. package/dist/lib/bitcore/encoding/bufferwriter.d.ts +36 -0
  61. package/dist/lib/bitcore/encoding/bufferwriter.d.ts.map +1 -0
  62. package/dist/lib/bitcore/encoding/bufferwriter.js +189 -0
  63. package/dist/lib/bitcore/encoding/varint.d.ts +20 -0
  64. package/dist/lib/bitcore/encoding/varint.d.ts.map +1 -0
  65. package/dist/lib/bitcore/encoding/varint.js +61 -0
  66. package/dist/lib/bitcore/errors.d.ts +28 -0
  67. package/dist/lib/bitcore/errors.d.ts.map +1 -0
  68. package/dist/lib/bitcore/errors.js +325 -0
  69. package/dist/lib/bitcore/hdprivatekey.d.ts +78 -0
  70. package/dist/lib/bitcore/hdprivatekey.d.ts.map +1 -0
  71. package/dist/lib/bitcore/hdprivatekey.js +381 -0
  72. package/dist/lib/bitcore/hdpublickey.d.ts +98 -0
  73. package/dist/lib/bitcore/hdpublickey.d.ts.map +1 -0
  74. package/dist/lib/bitcore/hdpublickey.js +416 -0
  75. package/dist/lib/bitcore/index.d.ts +60 -0
  76. package/dist/lib/bitcore/index.d.ts.map +1 -0
  77. package/dist/lib/bitcore/index.js +44 -0
  78. package/dist/lib/bitcore/message.d.ts +23 -0
  79. package/dist/lib/bitcore/message.d.ts.map +1 -0
  80. package/dist/lib/bitcore/message.js +112 -0
  81. package/dist/lib/bitcore/mnemonic/errors.d.ts +7 -0
  82. package/dist/lib/bitcore/mnemonic/errors.d.ts.map +1 -0
  83. package/dist/lib/bitcore/mnemonic/errors.js +20 -0
  84. package/dist/lib/bitcore/mnemonic/index.d.ts +5 -0
  85. package/dist/lib/bitcore/mnemonic/index.d.ts.map +1 -0
  86. package/dist/lib/bitcore/mnemonic/index.js +4 -0
  87. package/dist/lib/bitcore/mnemonic/mnemonic.d.ts +23 -0
  88. package/dist/lib/bitcore/mnemonic/mnemonic.d.ts.map +1 -0
  89. package/dist/lib/bitcore/mnemonic/mnemonic.js +164 -0
  90. package/dist/lib/bitcore/mnemonic/pbkdf2.d.ts +2 -0
  91. package/dist/lib/bitcore/mnemonic/pbkdf2.d.ts.map +1 -0
  92. package/dist/lib/bitcore/mnemonic/pbkdf2.js +25 -0
  93. package/dist/lib/bitcore/mnemonic/words/english.d.ts +2 -0
  94. package/dist/lib/bitcore/mnemonic/words/english.d.ts.map +1 -0
  95. package/dist/lib/bitcore/mnemonic/words/english.js +2050 -0
  96. package/dist/lib/bitcore/mnemonic/words/index.d.ts +4 -0
  97. package/dist/lib/bitcore/mnemonic/words/index.d.ts.map +1 -0
  98. package/dist/lib/bitcore/mnemonic/words/index.js +4 -0
  99. package/dist/lib/bitcore/musig2/index.d.ts +3 -0
  100. package/dist/lib/bitcore/musig2/index.d.ts.map +1 -0
  101. package/dist/lib/bitcore/musig2/index.js +2 -0
  102. package/dist/lib/bitcore/musig2/session.d.ts +79 -0
  103. package/dist/lib/bitcore/musig2/session.d.ts.map +1 -0
  104. package/dist/lib/bitcore/musig2/session.js +346 -0
  105. package/dist/lib/bitcore/musig2/signer.d.ts +61 -0
  106. package/dist/lib/bitcore/musig2/signer.d.ts.map +1 -0
  107. package/dist/lib/bitcore/musig2/signer.js +146 -0
  108. package/dist/lib/bitcore/networks.d.ts +53 -0
  109. package/dist/lib/bitcore/networks.d.ts.map +1 -0
  110. package/dist/lib/bitcore/networks.js +150 -0
  111. package/dist/lib/bitcore/opcode.d.ts +250 -0
  112. package/dist/lib/bitcore/opcode.d.ts.map +1 -0
  113. package/dist/lib/bitcore/opcode.js +270 -0
  114. package/dist/lib/bitcore/privatekey.d.ts +56 -0
  115. package/dist/lib/bitcore/privatekey.d.ts.map +1 -0
  116. package/dist/lib/bitcore/privatekey.js +237 -0
  117. package/dist/lib/bitcore/publickey.d.ts +59 -0
  118. package/dist/lib/bitcore/publickey.d.ts.map +1 -0
  119. package/dist/lib/bitcore/publickey.js +263 -0
  120. package/dist/lib/bitcore/script/interpreter.d.ts +98 -0
  121. package/dist/lib/bitcore/script/interpreter.d.ts.map +1 -0
  122. package/dist/lib/bitcore/script/interpreter.js +1704 -0
  123. package/dist/lib/bitcore/script.d.ts +111 -0
  124. package/dist/lib/bitcore/script.d.ts.map +1 -0
  125. package/dist/lib/bitcore/script.js +1112 -0
  126. package/dist/lib/bitcore/taproot/musig2.d.ts +29 -0
  127. package/dist/lib/bitcore/taproot/musig2.d.ts.map +1 -0
  128. package/dist/lib/bitcore/taproot/musig2.js +104 -0
  129. package/dist/lib/bitcore/taproot/nft.d.ts +164 -0
  130. package/dist/lib/bitcore/taproot/nft.d.ts.map +1 -0
  131. package/dist/lib/bitcore/taproot/nft.js +407 -0
  132. package/dist/lib/bitcore/taproot.d.ts +65 -0
  133. package/dist/lib/bitcore/taproot.d.ts.map +1 -0
  134. package/dist/lib/bitcore/taproot.js +288 -0
  135. package/dist/lib/bitcore/transaction/index.d.ts +12 -0
  136. package/dist/lib/bitcore/transaction/index.d.ts.map +1 -0
  137. package/dist/lib/bitcore/transaction/index.js +6 -0
  138. package/dist/lib/bitcore/transaction/input.d.ts +202 -0
  139. package/dist/lib/bitcore/transaction/input.d.ts.map +1 -0
  140. package/dist/lib/bitcore/transaction/input.js +911 -0
  141. package/dist/lib/bitcore/transaction/output.d.ts +48 -0
  142. package/dist/lib/bitcore/transaction/output.d.ts.map +1 -0
  143. package/dist/lib/bitcore/transaction/output.js +231 -0
  144. package/dist/lib/bitcore/transaction/sighash.d.ts +32 -0
  145. package/dist/lib/bitcore/transaction/sighash.d.ts.map +1 -0
  146. package/dist/lib/bitcore/transaction/sighash.js +335 -0
  147. package/dist/lib/bitcore/transaction/signature.d.ts +36 -0
  148. package/dist/lib/bitcore/transaction/signature.d.ts.map +1 -0
  149. package/dist/lib/bitcore/transaction/signature.js +130 -0
  150. package/dist/lib/bitcore/transaction/transaction.d.ts +164 -0
  151. package/dist/lib/bitcore/transaction/transaction.d.ts.map +1 -0
  152. package/dist/lib/bitcore/transaction/transaction.js +1016 -0
  153. package/dist/lib/bitcore/transaction/unspentoutput.d.ts +58 -0
  154. package/dist/lib/bitcore/transaction/unspentoutput.d.ts.map +1 -0
  155. package/dist/lib/bitcore/transaction/unspentoutput.js +167 -0
  156. package/dist/lib/bitcore/unit.d.ts +44 -0
  157. package/dist/lib/bitcore/unit.d.ts.map +1 -0
  158. package/dist/lib/bitcore/unit.js +106 -0
  159. package/dist/lib/bitcore/uri.d.ts +29 -0
  160. package/dist/lib/bitcore/uri.d.ts.map +1 -0
  161. package/dist/lib/bitcore/uri.js +163 -0
  162. package/dist/lib/bitcore/util/base32.d.ts +5 -0
  163. package/dist/lib/bitcore/util/base32.d.ts.map +1 -0
  164. package/dist/lib/bitcore/util/base32.js +58 -0
  165. package/dist/lib/bitcore/util/buffer.d.ts +18 -0
  166. package/dist/lib/bitcore/util/buffer.d.ts.map +1 -0
  167. package/dist/lib/bitcore/util/buffer.js +76 -0
  168. package/dist/lib/bitcore/util/convertBits.d.ts +2 -0
  169. package/dist/lib/bitcore/util/convertBits.d.ts.map +1 -0
  170. package/dist/lib/bitcore/util/convertBits.js +26 -0
  171. package/dist/lib/bitcore/util/js.d.ts +9 -0
  172. package/dist/lib/bitcore/util/js.d.ts.map +1 -0
  173. package/dist/lib/bitcore/util/js.js +45 -0
  174. package/dist/lib/bitcore/util/preconditions.d.ts +6 -0
  175. package/dist/lib/bitcore/util/preconditions.d.ts.map +1 -0
  176. package/dist/lib/bitcore/util/preconditions.js +31 -0
  177. package/dist/lib/bitcore/util.d.ts +14 -0
  178. package/dist/lib/bitcore/util.d.ts.map +1 -0
  179. package/dist/lib/bitcore/util.js +13 -0
  180. package/dist/lib/bitcore/xaddress.d.ts +45 -0
  181. package/dist/lib/bitcore/xaddress.d.ts.map +1 -0
  182. package/dist/lib/bitcore/xaddress.js +279 -0
  183. package/dist/lib/rank/api.d.ts +75 -0
  184. package/dist/lib/rank/api.d.ts.map +1 -0
  185. package/dist/lib/rank/api.js +4 -0
  186. package/dist/lib/rank/index.d.ts +127 -0
  187. package/dist/lib/rank/index.d.ts.map +1 -0
  188. package/dist/lib/rank/index.js +421 -0
  189. package/dist/lib/rank/opcode.d.ts +23 -0
  190. package/dist/lib/rank/opcode.d.ts.map +1 -0
  191. package/dist/lib/rank/opcode.js +23 -0
  192. package/dist/lib/rank/script.d.ts +2 -0
  193. package/dist/lib/rank/script.d.ts.map +1 -0
  194. package/dist/lib/rank/script.js +7 -0
  195. package/dist/lib/rank/transaction.d.ts +3 -0
  196. package/dist/lib/rank/transaction.d.ts.map +1 -0
  197. package/dist/lib/rank/transaction.js +12 -0
  198. package/dist/lib/rpc.d.ts +136 -0
  199. package/dist/lib/rpc.d.ts.map +1 -0
  200. package/dist/lib/rpc.js +62 -0
  201. package/dist/utils/constants.d.ts +18 -0
  202. package/dist/utils/constants.d.ts.map +1 -0
  203. package/dist/utils/constants.js +20 -0
  204. package/dist/utils/env.d.ts +3 -0
  205. package/dist/utils/env.d.ts.map +1 -0
  206. package/dist/utils/env.js +8 -0
  207. package/dist/utils/string.d.ts +11 -0
  208. package/dist/utils/string.d.ts.map +1 -0
  209. package/dist/utils/string.js +47 -0
  210. package/dist/utils/types.d.ts +2 -0
  211. package/dist/utils/types.d.ts.map +1 -0
  212. package/dist/utils/types.js +1 -0
  213. package/dist/utils/wallet.d.ts +12 -0
  214. package/dist/utils/wallet.d.ts.map +1 -0
  215. package/dist/utils/wallet.js +28 -0
  216. package/package.json +91 -0
@@ -0,0 +1,4 @@
1
+ export declare const Words: {
2
+ ENGLISH: string[];
3
+ };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../lib/bitcore/mnemonic/words/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,KAAK;;CAQjB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { english } from './english.js';
2
+ export const Words = {
3
+ ENGLISH: english,
4
+ };
@@ -0,0 +1,3 @@
1
+ export { MuSig2Signer, createMuSig2Signer, type MuSig2SignerConfig, type MuSig2PrepareResult, type MuSig2SignResult, type MuSig2TaprootSignResult, } from './signer.js';
2
+ export { MuSigSessionManager, MuSigSessionPhase, type MuSigSession, } from './session.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/bitcore/musig2/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { MuSig2Signer, createMuSig2Signer, } from './signer.js';
2
+ export { MuSigSessionManager, MuSigSessionPhase, } from './session.js';
@@ -0,0 +1,79 @@
1
+ import { PublicKey } from '../publickey.js';
2
+ import { PrivateKey } from '../privatekey.js';
3
+ import { Point, BN, Signature } from '../crypto/index.js';
4
+ import { type MuSigKeyAggContext, type MuSigNonce, type MuSigAggregatedNonce } from '../crypto/musig2.js';
5
+ export declare enum MuSigSessionPhase {
6
+ INIT = "init",
7
+ NONCE_EXCHANGE = "nonce-exchange",
8
+ PARTIAL_SIG_EXCHANGE = "partial-sig-exchange",
9
+ COMPLETE = "complete",
10
+ ABORTED = "aborted"
11
+ }
12
+ export interface SessionManagerResult {
13
+ shouldTransitionTo?: MuSigSessionPhase;
14
+ shouldRevealNonces?: boolean;
15
+ broadcastNonces?: [Point, Point];
16
+ shouldCreatePartialSig?: boolean;
17
+ shouldBroadcastPartialSig?: boolean;
18
+ broadcastPartialSig?: BN;
19
+ shouldFinalize?: boolean;
20
+ finalSignature?: Signature;
21
+ error?: string;
22
+ }
23
+ export interface MuSigSession {
24
+ sessionId: string;
25
+ signers: PublicKey[];
26
+ myIndex: number;
27
+ keyAggContext: MuSigKeyAggContext;
28
+ message: Buffer;
29
+ metadata?: Record<string, unknown>;
30
+ mySecretNonce?: MuSigNonce;
31
+ myPublicNonce?: [Point, Point];
32
+ receivedPublicNonces: Map<number, [Point, Point]>;
33
+ aggregatedNonce?: MuSigAggregatedNonce;
34
+ myPartialSig?: BN;
35
+ receivedPartialSigs: Map<number, BN>;
36
+ finalSignature?: Signature;
37
+ phase: MuSigSessionPhase;
38
+ createdAt: number;
39
+ updatedAt: number;
40
+ abortReason?: string;
41
+ electionMethod?: string;
42
+ coordinatorIndex?: number;
43
+ electionProof?: string;
44
+ backupCoordinators?: number[];
45
+ }
46
+ export declare class MuSigSessionManager {
47
+ createSession(signers: PublicKey[], myPrivateKey: PrivateKey, message: Buffer, metadata?: Record<string, unknown>): MuSigSession;
48
+ generateNonces(session: MuSigSession, privateKey: PrivateKey, extraInput?: Buffer): [Point, Point];
49
+ receiveNonces(session: MuSigSession, signerIndex: number, publicNonces: [Point, Point]): void;
50
+ createPartialSignature(session: MuSigSession, privateKey: PrivateKey): BN;
51
+ receivePartialSignature(session: MuSigSession, signerIndex: number, partialSig: BN): void;
52
+ getFinalSignature(session: MuSigSession): Signature;
53
+ abortSession(session: MuSigSession, reason: string): void;
54
+ getSessionStatus(session: MuSigSession): {
55
+ phase: MuSigSessionPhase;
56
+ noncesCollected: number;
57
+ noncesTotal: number;
58
+ partialSigsCollected: number;
59
+ partialSigsTotal: number;
60
+ isComplete: boolean;
61
+ isAborted: boolean;
62
+ abortReason?: string;
63
+ };
64
+ private _generateSessionId;
65
+ regenerateSessionId(session: MuSigSession): string;
66
+ _transitionPhaseForTesting(session: MuSigSession, newPhase: MuSigSessionPhase): void;
67
+ private _aggregateNonces;
68
+ private _finalizeSignature;
69
+ private _clearSecretNonce;
70
+ private _abortSession;
71
+ hasAllNonces(session: MuSigSession): boolean;
72
+ hasAllPartialSignatures(session: MuSigSession): boolean;
73
+ isCoordinator(session: MuSigSession): boolean;
74
+ validateBIP327Compliance(session: MuSigSession): void;
75
+ private areKeysSorted;
76
+ private validateMuSig2Rounds;
77
+ initiateRound1(session: MuSigSession, privateKey: PrivateKey): SessionManagerResult;
78
+ }
79
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../lib/bitcore/musig2/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,346 @@
1
+ import { Signature, Random, Hash } from '../crypto/index.js';
2
+ import { musigKeyAgg, musigNonceGen, musigNonceAgg, musigPartialSign, musigPartialSigVerify, musigSigAgg, } from '../crypto/musig2.js';
3
+ import { verifyTaprootKeyPathMuSigPartial } from '../taproot/musig2.js';
4
+ import { calculateTapTweak, tweakPublicKey } from '../taproot.js';
5
+ export var MuSigSessionPhase;
6
+ (function (MuSigSessionPhase) {
7
+ MuSigSessionPhase["INIT"] = "init";
8
+ MuSigSessionPhase["NONCE_EXCHANGE"] = "nonce-exchange";
9
+ MuSigSessionPhase["PARTIAL_SIG_EXCHANGE"] = "partial-sig-exchange";
10
+ MuSigSessionPhase["COMPLETE"] = "complete";
11
+ MuSigSessionPhase["ABORTED"] = "aborted";
12
+ })(MuSigSessionPhase || (MuSigSessionPhase = {}));
13
+ export class MuSigSessionManager {
14
+ createSession(signers, myPrivateKey, message, metadata) {
15
+ if (signers.length === 0) {
16
+ throw new Error('Cannot create MuSig2 session with zero signers');
17
+ }
18
+ if (!message || message.length === 0) {
19
+ throw new Error('Cannot create MuSig2 session with empty message');
20
+ }
21
+ const keyAggContext = musigKeyAgg(signers);
22
+ const myPubKey = myPrivateKey.publicKey;
23
+ const myIndex = keyAggContext.pubkeys.findIndex(signer => signer.toString() === myPubKey.toString());
24
+ if (myIndex === -1) {
25
+ throw new Error('Private key does not correspond to any signer in the session');
26
+ }
27
+ const sessionId = this._generateSessionId(keyAggContext.pubkeys, message);
28
+ const now = Date.now();
29
+ const session = {
30
+ sessionId,
31
+ signers: keyAggContext.pubkeys,
32
+ myIndex,
33
+ keyAggContext,
34
+ message,
35
+ metadata,
36
+ receivedPublicNonces: new Map(),
37
+ receivedPartialSigs: new Map(),
38
+ phase: MuSigSessionPhase.INIT,
39
+ createdAt: now,
40
+ updatedAt: now,
41
+ };
42
+ return session;
43
+ }
44
+ generateNonces(session, privateKey, extraInput) {
45
+ if (session.phase !== MuSigSessionPhase.INIT) {
46
+ throw new Error(`Cannot generate nonces in phase ${session.phase}. Must be in INIT phase.`);
47
+ }
48
+ if (session.mySecretNonce || session.myPublicNonce) {
49
+ throw new Error('Nonces already generated for this session. NEVER reuse nonces!');
50
+ }
51
+ const entropy = extraInput !== undefined ? extraInput : Random.getRandomBuffer(32);
52
+ const nonce = musigNonceGen(privateKey, session.keyAggContext.aggregatedPubKey, session.message, entropy);
53
+ session.mySecretNonce = nonce;
54
+ session.myPublicNonce = nonce.publicNonces;
55
+ session.phase = MuSigSessionPhase.NONCE_EXCHANGE;
56
+ session.updatedAt = Date.now();
57
+ if (this.hasAllNonces(session)) {
58
+ this._aggregateNonces(session);
59
+ }
60
+ return nonce.publicNonces;
61
+ }
62
+ receiveNonces(session, signerIndex, publicNonces) {
63
+ if (session.phase !== MuSigSessionPhase.NONCE_EXCHANGE &&
64
+ session.phase !== MuSigSessionPhase.INIT) {
65
+ throw new Error(`Cannot receive nonces in phase ${session.phase}. Must be in INIT or NONCE_EXCHANGE phase.`);
66
+ }
67
+ if (signerIndex < 0 || signerIndex >= session.signers.length) {
68
+ throw new Error(`Invalid signer index: ${signerIndex}`);
69
+ }
70
+ if (signerIndex === session.myIndex) {
71
+ throw new Error('Cannot receive nonce from self');
72
+ }
73
+ if (session.receivedPublicNonces.has(signerIndex)) {
74
+ throw new Error(`Already received nonce from signer ${signerIndex}. Possible equivocation!`);
75
+ }
76
+ try {
77
+ publicNonces[0].validate();
78
+ publicNonces[1].validate();
79
+ }
80
+ catch (error) {
81
+ throw new Error(`Invalid public nonce from signer ${signerIndex}: ${error}`);
82
+ }
83
+ session.receivedPublicNonces.set(signerIndex, publicNonces);
84
+ session.updatedAt = Date.now();
85
+ if (this.hasAllNonces(session)) {
86
+ this._aggregateNonces(session);
87
+ }
88
+ }
89
+ createPartialSignature(session, privateKey) {
90
+ if (!session.aggregatedNonce) {
91
+ throw new Error('Cannot create partial signature: nonces not yet aggregated. Wait for all nonces.');
92
+ }
93
+ if (!session.mySecretNonce) {
94
+ throw new Error('Cannot create partial signature: secret nonce not found');
95
+ }
96
+ if (session.phase !== MuSigSessionPhase.NONCE_EXCHANGE &&
97
+ session.phase !== MuSigSessionPhase.PARTIAL_SIG_EXCHANGE) {
98
+ throw new Error(`Cannot create partial signature in phase ${session.phase}. Must be in NONCE_EXCHANGE or PARTIAL_SIG_EXCHANGE.`);
99
+ }
100
+ const partialSig = musigPartialSign(session.mySecretNonce, privateKey, session.keyAggContext, session.myIndex, session.aggregatedNonce, session.message);
101
+ session.myPartialSig = partialSig;
102
+ session.phase = MuSigSessionPhase.PARTIAL_SIG_EXCHANGE;
103
+ session.updatedAt = Date.now();
104
+ this._clearSecretNonce(session);
105
+ return partialSig;
106
+ }
107
+ receivePartialSignature(session, signerIndex, partialSig) {
108
+ if (session.phase !== MuSigSessionPhase.PARTIAL_SIG_EXCHANGE) {
109
+ throw new Error(`Cannot receive partial signatures in phase ${session.phase}`);
110
+ }
111
+ if (signerIndex < 0 || signerIndex >= session.signers.length) {
112
+ throw new Error(`Invalid signer index: ${signerIndex}`);
113
+ }
114
+ if (signerIndex === session.myIndex) {
115
+ throw new Error('Cannot receive partial signature from self');
116
+ }
117
+ if (session.receivedPartialSigs.has(signerIndex)) {
118
+ throw new Error(`Already received partial signature from signer ${signerIndex}`);
119
+ }
120
+ const publicNonce = session.receivedPublicNonces.get(signerIndex);
121
+ if (!publicNonce) {
122
+ throw new Error(`No public nonce found for signer ${signerIndex}. Cannot verify.`);
123
+ }
124
+ let isValid;
125
+ if (session.metadata?.inputScriptType === 'taproot') {
126
+ const merkleRoot = Buffer.alloc(32);
127
+ const tweak = calculateTapTweak(session.keyAggContext.aggregatedPubKey, merkleRoot);
128
+ isValid = verifyTaprootKeyPathMuSigPartial(partialSig, publicNonce, session.signers[signerIndex], session.keyAggContext, signerIndex, session.aggregatedNonce, session.message, tweak);
129
+ }
130
+ else {
131
+ isValid = musigPartialSigVerify(partialSig, publicNonce, session.signers[signerIndex], session.keyAggContext, signerIndex, session.aggregatedNonce, session.message);
132
+ }
133
+ if (!isValid) {
134
+ this._abortSession(session, `Invalid partial signature from signer ${signerIndex}`);
135
+ throw new Error(`Invalid partial signature from signer ${signerIndex}. Session aborted.`);
136
+ }
137
+ session.receivedPartialSigs.set(signerIndex, partialSig);
138
+ session.updatedAt = Date.now();
139
+ if (this.hasAllPartialSignatures(session)) {
140
+ this._finalizeSignature(session);
141
+ }
142
+ }
143
+ getFinalSignature(session) {
144
+ if (session.phase !== MuSigSessionPhase.COMPLETE) {
145
+ throw new Error(`Cannot get final signature: session is in phase ${session.phase}`);
146
+ }
147
+ if (!session.finalSignature) {
148
+ throw new Error('Final signature not found');
149
+ }
150
+ return session.finalSignature;
151
+ }
152
+ abortSession(session, reason) {
153
+ this._abortSession(session, reason);
154
+ }
155
+ getSessionStatus(session) {
156
+ const noncesTotal = session.signers.length;
157
+ const noncesCollected = session.receivedPublicNonces.size + (session.myPublicNonce ? 1 : 0);
158
+ const partialSigsTotal = session.signers.length;
159
+ const partialSigsCollected = session.receivedPartialSigs.size + (session.myPartialSig ? 1 : 0);
160
+ return {
161
+ phase: session.phase,
162
+ noncesCollected,
163
+ noncesTotal,
164
+ partialSigsCollected,
165
+ partialSigsTotal,
166
+ isComplete: session.phase === MuSigSessionPhase.COMPLETE,
167
+ isAborted: session.phase === MuSigSessionPhase.ABORTED,
168
+ abortReason: session.abortReason,
169
+ };
170
+ }
171
+ _generateSessionId(signers, message, createdAt = Date.now(), entropy = Random.getRandomBuffer(16)) {
172
+ const signersHash = Hash.sha256(Buffer.concat(signers.map(s => s.toBuffer())));
173
+ const messageHash = Hash.sha256(message);
174
+ const timestampBuffer = Buffer.alloc(8);
175
+ timestampBuffer.writeBigInt64BE(BigInt(createdAt));
176
+ const combined = Buffer.concat([
177
+ signersHash,
178
+ messageHash,
179
+ timestampBuffer,
180
+ entropy,
181
+ ]);
182
+ return Hash.sha256(combined).toString('hex').slice(0, 32);
183
+ }
184
+ regenerateSessionId(session) {
185
+ return this._generateSessionId(session.signers, session.message, session.createdAt, Random.getRandomBuffer(16));
186
+ }
187
+ _transitionPhaseForTesting(session, newPhase) {
188
+ session.phase = newPhase;
189
+ session.updatedAt = Date.now();
190
+ }
191
+ _aggregateNonces(session) {
192
+ if (!session.myPublicNonce) {
193
+ throw new Error('My public nonce not set');
194
+ }
195
+ const allNonces = [];
196
+ for (let i = 0; i < session.signers.length; i++) {
197
+ if (i === session.myIndex) {
198
+ allNonces.push(session.myPublicNonce);
199
+ }
200
+ else {
201
+ const nonce = session.receivedPublicNonces.get(i);
202
+ if (!nonce) {
203
+ throw new Error(`Missing nonce from signer ${i}`);
204
+ }
205
+ allNonces.push(nonce);
206
+ }
207
+ }
208
+ session.aggregatedNonce = musigNonceAgg(allNonces);
209
+ session.updatedAt = Date.now();
210
+ }
211
+ _finalizeSignature(session) {
212
+ if (!session.myPartialSig) {
213
+ throw new Error('My partial signature not set');
214
+ }
215
+ if (!session.aggregatedNonce) {
216
+ throw new Error('Aggregated nonce not set');
217
+ }
218
+ const allPartialSigs = [];
219
+ for (let i = 0; i < session.signers.length; i++) {
220
+ if (i === session.myIndex) {
221
+ allPartialSigs.push(session.myPartialSig);
222
+ }
223
+ else {
224
+ const partialSig = session.receivedPartialSigs.get(i);
225
+ if (!partialSig) {
226
+ throw new Error(`Missing partial signature from signer ${i}`);
227
+ }
228
+ allPartialSigs.push(partialSig);
229
+ }
230
+ }
231
+ let pubKeyForAggregation = session.keyAggContext.aggregatedPubKey;
232
+ if (session.metadata?.inputScriptType === 'taproot') {
233
+ const merkleRoot = Buffer.alloc(32);
234
+ pubKeyForAggregation = tweakPublicKey(session.keyAggContext.aggregatedPubKey, merkleRoot);
235
+ }
236
+ const sighashType = session.metadata?.sighashType
237
+ ? session.metadata.sighashType
238
+ : session.metadata?.inputScriptType === 'taproot'
239
+ ? Signature.SIGHASH_ALL | Signature.SIGHASH_LOTUS
240
+ : undefined;
241
+ session.finalSignature = musigSigAgg(allPartialSigs, session.aggregatedNonce, session.message, pubKeyForAggregation, sighashType);
242
+ session.phase = MuSigSessionPhase.COMPLETE;
243
+ session.updatedAt = Date.now();
244
+ }
245
+ _clearSecretNonce(session) {
246
+ if (session.mySecretNonce) {
247
+ const [k1, k2] = session.mySecretNonce.secretNonces;
248
+ session.mySecretNonce = undefined;
249
+ }
250
+ }
251
+ _abortSession(session, reason) {
252
+ session.phase = MuSigSessionPhase.ABORTED;
253
+ session.abortReason = reason;
254
+ session.updatedAt = Date.now();
255
+ this._clearSecretNonce(session);
256
+ }
257
+ hasAllNonces(session) {
258
+ if (!session.receivedPublicNonces)
259
+ return false;
260
+ return session.receivedPublicNonces.size === session.signers.length - 1;
261
+ }
262
+ hasAllPartialSignatures(session) {
263
+ if (!session.receivedPartialSigs)
264
+ return false;
265
+ return session.receivedPartialSigs.size === session.signers.length - 1;
266
+ }
267
+ isCoordinator(session) {
268
+ if (session.coordinatorIndex === undefined)
269
+ return false;
270
+ return session.myIndex === session.coordinatorIndex;
271
+ }
272
+ validateBIP327Compliance(session) {
273
+ if (!this.areKeysSorted(session.signers)) {
274
+ throw new Error('Signers must be sorted lexicographically (BIP327 requirement)');
275
+ }
276
+ if (!session.keyAggContext) {
277
+ throw new Error('Key aggregation context required (BIP327)');
278
+ }
279
+ this.validateMuSig2Rounds(session);
280
+ }
281
+ areKeysSorted(signers) {
282
+ if (signers.length <= 1)
283
+ return true;
284
+ for (let i = 0; i < signers.length - 1; i++) {
285
+ const current = signers[i].toBuffer();
286
+ const next = signers[i + 1].toBuffer();
287
+ if (current.compare(next) > 0) {
288
+ return false;
289
+ }
290
+ }
291
+ return true;
292
+ }
293
+ validateMuSig2Rounds(session) {
294
+ const validPhases = [
295
+ MuSigSessionPhase.INIT,
296
+ MuSigSessionPhase.NONCE_EXCHANGE,
297
+ MuSigSessionPhase.PARTIAL_SIG_EXCHANGE,
298
+ MuSigSessionPhase.COMPLETE,
299
+ MuSigSessionPhase.ABORTED,
300
+ ];
301
+ if (!validPhases.includes(session.phase)) {
302
+ throw new Error(`Invalid session phase: ${session.phase}`);
303
+ }
304
+ switch (session.phase) {
305
+ case MuSigSessionPhase.NONCE_EXCHANGE:
306
+ if (!session.myPublicNonce && !session.mySecretNonce) {
307
+ throw new Error('NONCE_EXCHANGE phase requires nonces to be generated');
308
+ }
309
+ break;
310
+ case MuSigSessionPhase.PARTIAL_SIG_EXCHANGE:
311
+ if (!session.aggregatedNonce) {
312
+ throw new Error('PARTIAL_SIG_EXCHANGE phase requires aggregated nonce');
313
+ }
314
+ break;
315
+ case MuSigSessionPhase.COMPLETE:
316
+ if (!session.finalSignature) {
317
+ throw new Error('COMPLETE phase requires final signature');
318
+ }
319
+ break;
320
+ case MuSigSessionPhase.ABORTED:
321
+ if (!session.abortReason) {
322
+ throw new Error('ABORTED phase requires abort reason');
323
+ }
324
+ break;
325
+ }
326
+ }
327
+ initiateRound1(session, privateKey) {
328
+ try {
329
+ this.validateBIP327Compliance(session);
330
+ if (session.phase !== MuSigSessionPhase.INIT) {
331
+ return {
332
+ error: `Cannot start Round 1 in phase ${session.phase}. Must be in INIT phase.`,
333
+ };
334
+ }
335
+ const publicNonces = this.generateNonces(session, privateKey);
336
+ return {
337
+ shouldTransitionTo: MuSigSessionPhase.NONCE_EXCHANGE,
338
+ shouldRevealNonces: true,
339
+ broadcastNonces: publicNonces,
340
+ };
341
+ }
342
+ catch (error) {
343
+ return { error: error.message };
344
+ }
345
+ }
346
+ }
@@ -0,0 +1,61 @@
1
+ import { PrivateKey } from '../privatekey.js';
2
+ import { PublicKey } from '../publickey.js';
3
+ import { Signature } from '../crypto/signature.js';
4
+ import { Point } from '../crypto/point.js';
5
+ import { Script } from '../script.js';
6
+ import { Address } from '../address.js';
7
+ import { type MuSigKeyAggContext } from '../crypto/musig2.js';
8
+ import { MuSigSessionManager, type MuSigSession } from './session.js';
9
+ import { type MuSigTaprootKeyResult } from '../taproot/musig2.js';
10
+ import { Transaction } from '../transaction/transaction.js';
11
+ import { BN } from '../crypto/bn.js';
12
+ export interface MuSig2SignerConfig {
13
+ signers: PublicKey[];
14
+ myPrivateKey: PrivateKey;
15
+ extraInput?: Buffer;
16
+ }
17
+ export interface MuSig2PrepareResult {
18
+ keyAggContext: MuSigKeyAggContext;
19
+ myPublicNonces: [Point, Point];
20
+ mySecretNonces: [BN, BN];
21
+ myIndex: number;
22
+ sessionId?: string;
23
+ }
24
+ export interface MuSig2SignResult {
25
+ signature: Signature;
26
+ aggregatedPubKey: PublicKey;
27
+ isAggregator: boolean;
28
+ }
29
+ export interface MuSig2TaprootSignResult extends MuSig2SignResult {
30
+ commitment: PublicKey;
31
+ script: Script;
32
+ address: Address;
33
+ }
34
+ export declare class MuSig2Signer {
35
+ private config;
36
+ private sessionManager?;
37
+ constructor(config: MuSig2SignerConfig);
38
+ prepare(message: Buffer | string, useSession?: boolean): MuSig2PrepareResult;
39
+ createPartialSignature(prepare: MuSig2PrepareResult, allPublicNonces: Array<[Point, Point]>, message: Buffer | string): BN;
40
+ verifyPartialSignature(partialSig: BN, publicNonce: [Point, Point], publicKey: PublicKey, signerIndex: number, prepare: MuSig2PrepareResult, allPublicNonces: Array<[Point, Point]>, message: Buffer | string): boolean;
41
+ sign(prepare: MuSig2PrepareResult, allPublicNonces: Array<[Point, Point]>, message: Buffer | string, allPartialSigs: BN[]): MuSig2SignResult;
42
+ prepareTaproot(state?: Buffer): MuSigTaprootKeyResult & {
43
+ keyAggContext: MuSigKeyAggContext;
44
+ };
45
+ signTaprootInput(prepare: MuSigTaprootKeyResult & {
46
+ keyAggContext: MuSigKeyAggContext;
47
+ }, allPublicNonces: Array<[Point, Point]>, transaction: Transaction, inputIndex: number, amount: number, sighashType?: number): BN;
48
+ completeTaprootSigning(prepare: MuSigTaprootKeyResult & {
49
+ keyAggContext: MuSigKeyAggContext;
50
+ }, allPublicNonces: Array<[Point, Point]>, allPartialSigs: BN[], transaction: Transaction, inputIndex: number, amount: number, sighashType?: number): Signature;
51
+ createSession(message: Buffer | string, metadata?: Record<string, unknown>): {
52
+ manager: MuSigSessionManager;
53
+ session: MuSigSession;
54
+ };
55
+ get myPublicKey(): PublicKey;
56
+ get allSigners(): PublicKey[];
57
+ get myIndex(): number;
58
+ private _normalizeMessage;
59
+ }
60
+ export declare function createMuSig2Signer(signers: PublicKey[], myPrivateKey: PrivateKey): MuSig2Signer;
61
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../../lib/bitcore/musig2/signer.ts"],"names":[],"mappings":"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"}