utxo-lib 1.1.2 → 1.1.4

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 (40) hide show
  1. package/README.md +16 -19
  2. package/dist/src/bitgo/PsbtUtil.d.ts +0 -5
  3. package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -1
  4. package/dist/src/bitgo/PsbtUtil.js +2 -15
  5. package/dist/src/bitgo/UtxoPsbt.d.ts +0 -9
  6. package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
  7. package/dist/src/bitgo/UtxoPsbt.js +12 -42
  8. package/dist/src/bitgo/index.d.ts +0 -1
  9. package/dist/src/bitgo/index.d.ts.map +1 -1
  10. package/dist/src/bitgo/index.js +2 -3
  11. package/dist/src/bitgo/parseInput.js +2 -2
  12. package/dist/src/bitgo/wallet/Psbt.d.ts +0 -14
  13. package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
  14. package/dist/src/bitgo/wallet/Psbt.js +3 -71
  15. package/dist/src/bitgo/wallet/WalletOutput.d.ts +1 -17
  16. package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
  17. package/dist/src/bitgo/wallet/WalletOutput.js +23 -64
  18. package/dist/src/bitgo/wallet/chains.d.ts +1 -1
  19. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +1 -0
  20. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
  21. package/dist/src/bitgo/zcash/ZcashPsbt.js +12 -3
  22. package/dist/src/testutil/keys.d.ts +0 -3
  23. package/dist/src/testutil/keys.d.ts.map +1 -1
  24. package/dist/src/testutil/keys.js +2 -17
  25. package/dist/src/testutil/psbt.d.ts +5 -23
  26. package/dist/src/testutil/psbt.d.ts.map +1 -1
  27. package/dist/src/testutil/psbt.js +13 -16
  28. package/dist/src/testutil/transaction.d.ts +5 -14
  29. package/dist/src/testutil/transaction.d.ts.map +1 -1
  30. package/dist/src/testutil/transaction.js +9 -9
  31. package/package.json +5 -5
  32. package/dist/src/base_crypto.d.ts +0 -14
  33. package/dist/src/base_crypto.d.ts.map +0 -1
  34. package/dist/src/base_crypto.js +0 -215
  35. package/dist/src/bitgo/legacysafe/index.d.ts +0 -15
  36. package/dist/src/bitgo/legacysafe/index.d.ts.map +0 -1
  37. package/dist/src/bitgo/legacysafe/index.js +0 -61
  38. package/dist/src/musig.d.ts +0 -390
  39. package/dist/src/musig.d.ts.map +0 -1
  40. package/dist/src/musig.js +0 -447
@@ -1,390 +0,0 @@
1
- export interface MuSig {
2
- /**
3
- * Gets the X-only public key associated with this context.
4
- *
5
- * @param ctx the key gen context or a signing session key
6
- * @returns the X-only public key associated with this context
7
- */
8
- getXOnlyPubkey(ctx: KeyGenContext | SessionKey): Uint8Array;
9
- /**
10
- * Gets the plain public key associated with this context.
11
- *
12
- * @param ctx the key gen context or a signing session key
13
- * @returns plain public key associated with this context in compressed DER format
14
- */
15
- getPlainPubkey(ctx: KeyGenContext | SessionKey): Uint8Array;
16
- /**
17
- * Sorts compressed DER format public keys lexicographically.
18
- *
19
- * @param publicKeys array of compressed DER encoded public keys to aggregate
20
- * @returns sorted public keys (in a new array)
21
- */
22
- keySort(publicKeys: Uint8Array[]): Uint8Array[];
23
- /**
24
- * Performs MuSig key aggregation on 1+ x-only public keys.
25
- *
26
- * @param publicKeys array of compressed DER encoded public keys to aggregate
27
- * @param tweaks tweaks (0 < tweak < n) to apply to the aggregate key,
28
- * and optionally booleans to indicate x-only tweaking
29
- * @returns an opaque key gen context for use with other MuSig operations
30
- */
31
- keyAgg(publicKeys: Uint8Array[], ...tweaks: Tweak[]): KeyGenContext;
32
- /**
33
- * Apply one or more x-only or ordinary tweaks to an aggregate public key.
34
- *
35
- * @param ctx the key generation context, as returned from `keyAgg`.
36
- * @param tweaks tweaks (0 < tweak < n) to apply to the aggregate key,
37
- * and optionally booleans to indicate x-only tweaking
38
- * @returns an opaque key gen context for use with other MuSig operations
39
- */
40
- addTweaks(ctx: KeyGenContext, ...tweaks: Tweak[]): KeyGenContext;
41
- /**
42
- * Generate a MuSig nonce pair based on the provided values.
43
- *
44
- * The caller must not use the same sessionId for multiple calls to nonceGen
45
- * with other parameters held constant.
46
- *
47
- * The secret nonce (97 bytes) is cached internally, and will be deleted
48
- * from the cache prior to use in a signature. The secret nonce will also be
49
- * deleted if the returned public nonce is deleted.
50
- *
51
- * @param sessionId if no secret key is provided, uniformly 32-bytes of
52
- * random data, otherwise a value guaranteed not to repeat for the secret
53
- * key. If no sessionId is provided a reasonably high quality random one will
54
- * be generated.
55
- * @param secretKey the secret key which will eventually sign with this nonce
56
- * @param publicKey the public key for which this nonce will be signed (required)
57
- * @param xOnlyPublicKey the x-coordinate of the aggregate public key that this
58
- * nonce will be signing a part of
59
- * @param msg the message which will eventually be signed with this nonce
60
- * (any possible Uint8Array length)
61
- * @param extraInput additional input which will contribute to the generated
62
- * nonce (0 <= extraInput.length <= 2^32-1)
63
- * @return the generated public nonce (66 bytes)
64
- */
65
- nonceGen(args: {
66
- sessionId?: Uint8Array;
67
- secretKey?: Uint8Array;
68
- publicKey: Uint8Array;
69
- xOnlyPublicKey?: Uint8Array;
70
- msg?: Uint8Array;
71
- extraInput?: Uint8Array;
72
- }): Uint8Array;
73
- /**
74
- * Add an externally generated nonce to the cache.
75
- *
76
- * NOT RECOMMENDED, but useful in testing at least.
77
- * @param publicNonce 66-byte public nonce (2 points in compressed DER)
78
- * @param secretNonce 97-byte secret nonce (2 32-byte scalars, and the public
79
- * key which will sign for this nonce in compressed DER)
80
- */
81
- addExternalNonce(publicNonce: Uint8Array, secretNonce: Uint8Array): void;
82
- /**
83
- * Combine public nonces from all signers into a single aggregate public nonce.
84
- *
85
- * Per the spec, this function prefers to succeed with an invalid nonce at
86
- * infinity than to fail, to enable a dishonest signer to be detected later.
87
- *
88
- * This can be run by an untrusted node without breaking the security of the
89
- * protocol. An untrusted aggregator can cause the protocol to fail, but not
90
- * forge a signature.
91
- *
92
- * @param nonces n-signers public nonces (66-bytes each)
93
- * @return the aggregate public nonce (66-bytes)
94
- */
95
- nonceAgg(nonces: Uint8Array[]): Uint8Array;
96
- /**
97
- * Creates an opaque signing session for used in partial signing, partial
98
- * verification, or signature aggregation. This may be saved by a
99
- * participant, but may not be provided by an untrusted party.
100
- *
101
- * @param aggNonce this signing session's aggregate nonce
102
- * @param msg the 32-byte message to sign for, most commonly a transaction hash.
103
- * @param publicKeys array of compressed DER encoded public keys to aggregate
104
- * @param tweaks tweaks (0 < tweak < n) to apply to the aggregate key,
105
- * and optionally booleans to indicate x-only tweaking
106
- * @return session key for `partialSign`, `partialVerify` and `signAgg`
107
- */
108
- startSigningSession(aggNonce: Uint8Array, msg: Uint8Array, publicKeys: Uint8Array[], ...tweaks: Tweak[]): SessionKey;
109
- /**
110
- * Creates a MuSig partial signature for the given values.
111
- *
112
- * Verifies the resulting partial signature by default, as recommended in the
113
- * specification.
114
- *
115
- * Note: Calling `partialSign` with the same `publicNonce` more than once
116
- * will not work, as the corresponding secret nonce is deleted. Generate a
117
- * new public nonce and try again.
118
- *
119
- * @param secretKey signer's secret key
120
- * @param publicNonce signer's public nonce
121
- * @param sessionKey signing session key (from startSigningSession)
122
- * @param verify if false, don't verify partial signature
123
- * @return resulting signature
124
- */
125
- partialSign(args: {
126
- secretKey: Uint8Array;
127
- publicNonce: Uint8Array;
128
- sessionKey: SessionKey;
129
- verify?: boolean;
130
- }): Uint8Array;
131
- /**
132
- * Verifies a MuSig partial signature for the given values.
133
- *
134
- * @param sig the 32-byte MuSig partial signature to verify
135
- * @param msg the 32-byte message to sign for, most commonly a transaction hash
136
- * @param publicKey signer's public key
137
- * @param publicNonce signer's public nonce
138
- * @param aggNonce this signing session's aggregate nonce
139
- * @param sessionKey signing session key (from startSigningSession)
140
- * @return true if the partial signature is valid, otherwise false
141
- */
142
- partialVerify(args: {
143
- sig: Uint8Array;
144
- publicKey: Uint8Array;
145
- publicNonce: Uint8Array;
146
- sessionKey: SessionKey;
147
- }): boolean;
148
- /**
149
- * Aggregates MuSig partial signatures. May be run by an untrusted party.
150
- *
151
- * @param sigs array of 32-bytes MuSig partial signatures.
152
- * @param sessionKey signing session key (from startSigningSession)
153
- * @return the resulting aggregate signature.
154
- */
155
- signAgg(sigs: Uint8Array[], sessionKey: SessionKey): Uint8Array;
156
- /**
157
- * Deterministically generate nonces and partially sign for a MuSig key.
158
- * The security of this method depends on its being run after all other
159
- * parties have provided their nonces.
160
- *
161
- * @param secretKey signer's secret key
162
- * @param aggOtherNonce the result of calling `nonceAgg` on all other signing
163
- * parties' nonces
164
- * @param publicKeys array of compressed DER encoded public keys to aggregate
165
- * @param tweaks tweaks (0 < tweak < n) to apply to the aggregate key,
166
- * and optionally booleans to indicate x-only tweaking
167
- * @param msg the 32-byte message to sign for, most commonly a transaction hash.
168
- * @param rand optional additional randomness for nonce generation
169
- * @param verify if false, don't verify partial signature
170
- * @return resulting signature, session key (for signature aggregation), and
171
- * public nonce (for partial verification)
172
- */
173
- deterministicSign(args: {
174
- secretKey: Uint8Array;
175
- aggOtherNonce: Uint8Array;
176
- publicKeys: Uint8Array[];
177
- tweaks?: Tweak[];
178
- msg: Uint8Array;
179
- rand?: Uint8Array;
180
- verify?: boolean;
181
- }): {
182
- sig: Uint8Array;
183
- sessionKey: SessionKey;
184
- publicNonce: Uint8Array;
185
- };
186
- /**
187
- * Deterministically generate nonces. This is identical to deterministicSign,
188
- * except that it aborts after nonce generation and before signing, and
189
- * returns only the public nonce. This security of this method of nonce
190
- * generation depends on its being run after all other parties have provided
191
- * their nonces.
192
- *
193
- * A public nonce generated in this way cannot be directly used for signing
194
- * (no secret nonce is saved), but a matching partial signature can be
195
- * generated by subsequently calling deterministicSign with the same
196
- * arguments as the call to deterministicNonceGen.
197
- *
198
- * This can be useful in a case where a stateless signer only wants to
199
- * provide its partial signature after seeing valid partial signatures from
200
- * other parties.
201
- *
202
- * @param secretKey signer's secret key
203
- * @param aggOtherNonce the result of calling `nonceAgg` on all other signing
204
- * parties' nonces
205
- * @param publicKeys array of compressed DER encoded public keys to aggregate
206
- * @param tweaks tweaks (0 < tweak < n) to apply to the aggregate key,
207
- * and optionally booleans to indicate x-only tweaking
208
- * @param msg the 32-byte message to sign for, most commonly a transaction hash.
209
- * @param rand optional additional randomness for nonce generation
210
- * @param verify if false, don't verify partial signature
211
- * @return public nonce
212
- */
213
- deterministicNonceGen(args: {
214
- secretKey: Uint8Array;
215
- aggOtherNonce: Uint8Array;
216
- publicKeys: Uint8Array[];
217
- tweaks?: Tweak[];
218
- msg: Uint8Array;
219
- rand?: Uint8Array;
220
- }): {
221
- publicNonce: Uint8Array;
222
- };
223
- }
224
- export interface Crypto {
225
- /**
226
- * Adds a tweak to a point.
227
- *
228
- * @param p A point, compressed or uncompressed
229
- * @param t A tweak, 0 < t < n
230
- * @param compressed Whether the resulting point should be compressed.
231
- * @returns The tweaked point, compressed or uncompressed, null if the result
232
- * is the point at infinity.
233
- */
234
- pointAddTweak(p: Uint8Array, t: Uint8Array, compressed: boolean): Uint8Array | null;
235
- /**
236
- * Adds two points.
237
- *
238
- * @param a An addend point, compressed or uncompressed
239
- * @param b An addend point, compressed or uncompressed
240
- * @param compressed Whether the resulting point should be compressed.
241
- * @returns The sum point, compressed or uncompressed, null if the result is
242
- * the point at infinity.
243
- */
244
- pointAdd(a: Uint8Array, b: Uint8Array, compressed: boolean): Uint8Array | null;
245
- /**
246
- * Multiplies a point by a scalar.
247
- * This function may use non-constant time operations, as no secret
248
- * information is processed.
249
- *
250
- * @param p A point multiplicand, compressed or uncompressed
251
- * @param a The multiplier, 0 < a < n
252
- * @param compressed Whether the resulting point should be compressed.
253
- * @returns The product point, compressed or uncompressed, null if the result
254
- * is the point at infinity.
255
- */
256
- pointMultiplyUnsafe(p: Uint8Array, a: Uint8Array, compressed: boolean): Uint8Array | null;
257
- /**
258
- * Multiplies point 1 by a scalar and adds it to point 2.
259
- * This function may use non-constant time operations, as no secret
260
- * information is processed.
261
- *
262
- * @param p1 point multiplicand, compressed or uncompressed
263
- * @param a The multiplier, 0 < a < n
264
- * @param p2 point addend, compressed or uncompressed
265
- * @param compressed Whether the resulting point should be compressed.
266
- * @returns The product/sum point, compressed or uncompressed, null if the
267
- * result is the point at infinity.
268
- */
269
- pointMultiplyAndAddUnsafe(p1: Uint8Array, a: Uint8Array, p2: Uint8Array, compressed: boolean): Uint8Array | null;
270
- /**
271
- * Negates a point, ie. returns the point with the opposite parity.
272
- *
273
- * @param p A point to negate, compressed or uncompressed
274
- * @returns The negated point, with same compression as input.
275
- */
276
- pointNegate(p: Uint8Array): Uint8Array;
277
- /**
278
- * Compresses a point.
279
- *
280
- * @param p A point, compressed or uncompressed
281
- * @param compress [default=true] if false, uncompress the point
282
- * @returns The point, compressed if compress is true, or uncompressed if false.
283
- */
284
- pointCompress(p: Uint8Array, compress?: boolean): Uint8Array;
285
- /**
286
- * Adds one value to another, mod n.
287
- *
288
- * @param a An addend, 0 <= a < n
289
- * @param b An addend, 0 <= b < n
290
- * @returns The sum, 0 <= sum < n
291
- */
292
- scalarAdd(a: Uint8Array, b: Uint8Array): Uint8Array;
293
- /**
294
- * Multiply one value by another, mod n.
295
- *
296
- * @param a The multiplicand, 0 <= a < n
297
- * @param b The multiplier, 0 <= b < n
298
- * @returns The product, 0 <= product < n
299
- */
300
- scalarMultiply(a: Uint8Array, b: Uint8Array): Uint8Array;
301
- /**
302
- * Negates a value, mod n.
303
- *
304
- * @param a The value to negate, 0 <= a < n
305
- * @returns The negated value, 0 <= negated < n
306
- */
307
- scalarNegate(a: Uint8Array): Uint8Array;
308
- /**
309
- * @param a The value to reduce
310
- * @returns a mod n
311
- */
312
- scalarMod(a: Uint8Array): Uint8Array;
313
- /**
314
- * @param s A buffer to check against the curve order
315
- * @returns true if s is a 32-byte array 0 <= s < n
316
- */
317
- isScalar(s: Uint8Array): boolean;
318
- /**
319
- * @param s A buffer to check against the curve order
320
- * @returns true if s is a 32-byte array 0 < s < n
321
- */
322
- isSecret(s: Uint8Array): boolean;
323
- /**
324
- * @param p A buffer to check against the curve equation, compressed or
325
- * uncompressed.
326
- * @returns true if p is a valid point on secp256k1, false otherwise
327
- */
328
- isPoint(p: Uint8Array): boolean;
329
- /**
330
- * @param p A buffer to check against the curve equation.
331
- * @returns true if p is the x coordinate of a valid point on secp256k1,
332
- * false otherwise
333
- */
334
- isXOnlyPoint(p: Uint8Array): boolean;
335
- /**
336
- * @param p an x coordinate
337
- * @returns the xy, uncompressed point if p is on the curve, otherwise null.
338
- */
339
- liftX(p: Uint8Array): Uint8Array | null;
340
- /**
341
- * @param p x-only, compressed or uncompressed
342
- * @returns the x coordinate of p
343
- */
344
- pointX(p: Uint8Array): Uint8Array;
345
- /**
346
- * @param p a point, compressed or uncompressed
347
- * @returns true if p has an even y coordinate, false otherwise
348
- */
349
- hasEvenY(p: Uint8Array): boolean;
350
- /**
351
- * Gets a public key for secret key.
352
- *
353
- * @param s Secret key
354
- * @param compressed Whether the resulting point should be compressed.
355
- * @returns The public key, compressed or uncompressed
356
- */
357
- getPublicKey(s: Uint8Array, compressed: boolean): Uint8Array | null;
358
- /**
359
- * Performs a BIP340-style tagged hash.
360
- *
361
- * @param tag
362
- * @param messages Array of data to hash.
363
- * @return The 32-byte BIP340-style tagged hash.
364
- */
365
- taggedHash(tag: string, ...messages: Uint8Array[]): Uint8Array;
366
- /**
367
- * SHA256 hash.
368
- *
369
- * @param messages Array of data to hash.
370
- * @return The 32-byte SHA256 digest.
371
- */
372
- sha256(...messages: Uint8Array[]): Uint8Array;
373
- }
374
- export declare type Tweak = TypedTweak | Uint8Array;
375
- export interface TypedTweak {
376
- tweak: Uint8Array;
377
- xOnly?: boolean;
378
- }
379
- export interface KeyGenContext {
380
- aggPublicKey: Uint8Array;
381
- gacc: Uint8Array;
382
- tacc: Uint8Array;
383
- }
384
- export interface SessionKey {
385
- publicKey: Uint8Array;
386
- aggNonce: Uint8Array;
387
- msg: Uint8Array;
388
- }
389
- export declare function MuSigFactory(ecc: Crypto): MuSig;
390
- //# sourceMappingURL=musig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"musig.d.ts","sourceRoot":"","sources":["../../src/musig.ts"],"names":[],"mappings":"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"}