@bsv/sdk 1.1.13 → 1.1.15
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/dist/cjs/package.json +1 -1
- package/dist/cjs/src/compat/BIP39.js +272 -0
- package/dist/cjs/src/compat/BIP39.js.map +1 -0
- package/dist/cjs/src/index.js +5 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/primitives/Polynomial.js +81 -0
- package/dist/cjs/src/primitives/Polynomial.js.map +1 -0
- package/dist/cjs/src/primitives/PrivateKey.js +165 -0
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/index.js +5 -1
- package/dist/cjs/src/primitives/index.js.map +1 -1
- package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
- package/dist/cjs/src/script/templates/P2PKHT.js +99 -0
- package/dist/cjs/src/script/templates/P2PKHT.js.map +1 -0
- package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/cjs/src/totp/converters.js +14 -0
- package/dist/cjs/src/totp/converters.js.map +1 -0
- package/dist/cjs/src/totp/pike-totp.js +75 -0
- package/dist/cjs/src/totp/pike-totp.js.map +1 -0
- package/dist/cjs/src/totp/types.js +3 -0
- package/dist/cjs/src/totp/types.js.map +1 -0
- package/dist/cjs/src/transaction/broadcasters/ARC.js +4 -4
- package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/BRC22.js +25 -0
- package/dist/cjs/src/transaction/broadcasters/BRC22.js.map +1 -0
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +3 -3
- package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +2 -2
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js +2 -2
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/FetchHttpClient.js +2 -2
- package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js +2 -2
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/index.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/compat/BIP39.js +272 -0
- package/dist/esm/src/compat/BIP39.js.map +1 -0
- package/dist/esm/src/primitives/Polynomial.js +77 -0
- package/dist/esm/src/primitives/Polynomial.js.map +1 -0
- package/dist/esm/src/primitives/PrivateKey.js +143 -0
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
- package/dist/esm/src/primitives/index.js +2 -1
- package/dist/esm/src/primitives/index.js.map +1 -1
- package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
- package/dist/esm/src/script/templates/P2PKHT.js +96 -0
- package/dist/esm/src/script/templates/P2PKHT.js.map +1 -0
- package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/esm/src/totp/converters.js +9 -0
- package/dist/esm/src/totp/converters.js.map +1 -0
- package/dist/esm/src/totp/pike-totp.js +67 -0
- package/dist/esm/src/totp/pike-totp.js.map +1 -0
- package/dist/esm/src/totp/types.js +2 -0
- package/dist/esm/src/totp/types.js.map +1 -0
- package/dist/esm/src/transaction/broadcasters/ARC.js +7 -7
- package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js +1 -1
- package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +4 -4
- package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js +1 -1
- package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js +2 -2
- package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/FetchHttpClient.js +2 -2
- package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/NodejsHttpClient.js +2 -2
- package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/index.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/compat/BIP39.d.ts +132 -0
- package/dist/types/src/compat/BIP39.d.ts.map +1 -0
- package/dist/types/src/primitives/Polynomial.d.ts +32 -0
- package/dist/types/src/primitives/Polynomial.d.ts.map +1 -0
- package/dist/types/src/primitives/PrivateKey.d.ts +72 -0
- package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
- package/dist/types/src/primitives/index.d.ts +2 -1
- package/dist/types/src/primitives/index.d.ts.map +1 -1
- package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
- package/dist/types/src/script/templates/P2PKHT.d.ts +37 -0
- package/dist/types/src/script/templates/P2PKHT.d.ts.map +1 -0
- package/dist/types/src/totp/converters.d.ts +3 -0
- package/dist/types/src/totp/converters.d.ts.map +1 -0
- package/dist/types/src/totp/pike-totp.d.ts +25 -0
- package/dist/types/src/totp/pike-totp.d.ts.map +1 -0
- package/dist/types/src/totp/types.d.ts +11 -0
- package/dist/types/src/totp/types.d.ts.map +1 -0
- package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
- package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts +1 -1
- package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts +1 -1
- package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts +1 -1
- package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts +2 -2
- package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
- package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
- package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/FetchHttpClient.d.ts +7 -9
- package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/HttpClient.d.ts +5 -5
- package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +5 -6
- package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/index.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/docs/primitives.md +231 -16
- package/docs/transaction.md +38 -37
- package/package.json +1 -1
- package/src/compat/__tests/BSM.test.ts +37 -37
- package/src/compat/__tests/ECIES.test.ts +71 -71
- package/src/compat/__tests/HD.test.ts +362 -362
- package/src/compat/__tests/Mnemonic.test.ts +147 -148
- package/src/compat/__tests/Mnemonic.vectors.ts +170 -170
- package/src/messages/__tests/EncryptedMessage.test.ts +16 -16
- package/src/primitives/Point.ts +29 -10
- package/src/primitives/Polynomial.ts +89 -0
- package/src/primitives/PrivateKey.ts +147 -1
- package/src/primitives/PublicKey.ts +17 -2
- package/src/primitives/__tests/AESGCM.test.ts +20 -20
- package/src/primitives/__tests/Hash.test.ts +2 -2
- package/src/primitives/__tests/PBKDF2.vectors.ts +93 -93
- package/src/primitives/__tests/PrivateKey.split.test.ts +70 -0
- package/src/primitives/__tests/PublicKey.test.ts +14 -1
- package/src/primitives/__tests/bug-31.test.ts +24 -26
- package/src/primitives/__tests/utils.test.ts +13 -13
- package/src/primitives/index.ts +2 -1
- package/src/script/__tests/Script.test.ts +1 -1
- package/src/script/__tests/SpendComplex.test.ts +6 -6
- package/src/script/__tests/script.invalid.vectors.ts +1464 -1464
- package/src/script/__tests/script.valid.vectors.ts +1962 -1962
- package/src/script/__tests/spend.valid.vectors.ts +1369 -1369
- package/src/script/templates/P2PKH.ts +6 -6
- package/src/script/templates/RPuzzle.ts +1 -1
- package/src/transaction/__tests/Transaction.test.ts +5 -5
- package/src/transaction/__tests/bump.invalid.vectors.ts +1 -1
- package/src/transaction/__tests/bump.valid.vectors.ts +3 -3
- package/src/transaction/broadcasters/ARC.ts +20 -21
- package/src/transaction/broadcasters/DefaultBroadcaster.ts +3 -3
- package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +10 -10
- package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +7 -10
- package/src/transaction/chaintrackers/DefaultChainTracker.ts +3 -3
- package/src/transaction/chaintrackers/WhatsOnChain.ts +10 -12
- package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +13 -17
- package/src/transaction/fee-models/SatoshisPerKilobyte.ts +2 -2
- package/src/transaction/http/DefaultHttpClient.ts +13 -13
- package/src/transaction/http/FetchHttpClient.ts +14 -16
- package/src/transaction/http/HttpClient.ts +22 -23
- package/src/transaction/http/NodejsHttpClient.ts +23 -25
- package/src/transaction/http/index.ts +6 -6
|
@@ -5,6 +5,57 @@ import { sign, verify } from './ECDSA.js';
|
|
|
5
5
|
import { sha256, sha256hmac } from './Hash.js';
|
|
6
6
|
import Random from './Random.js';
|
|
7
7
|
import { fromBase58Check, toArray, toBase58Check } from './utils.js';
|
|
8
|
+
import Polynomial, { PointInFiniteField } from './Polynomial.js';
|
|
9
|
+
/**
|
|
10
|
+
* @class KeyShares
|
|
11
|
+
*
|
|
12
|
+
* This class is used to store the shares of a private key.
|
|
13
|
+
*
|
|
14
|
+
* @param shares - An array of shares
|
|
15
|
+
* @param threshold - The number of shares required to recombine the private key
|
|
16
|
+
*
|
|
17
|
+
* @returns KeyShares
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const key = PrivateKey.fromShares(shares)
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
export class KeyShares {
|
|
24
|
+
points;
|
|
25
|
+
threshold;
|
|
26
|
+
integrity;
|
|
27
|
+
constructor(points, threshold, integrity) {
|
|
28
|
+
this.points = points;
|
|
29
|
+
this.threshold = threshold;
|
|
30
|
+
this.integrity = integrity;
|
|
31
|
+
}
|
|
32
|
+
static fromBackupFormat(shares) {
|
|
33
|
+
let threshold = 0;
|
|
34
|
+
let integrity = '';
|
|
35
|
+
const points = shares.map((share, idx) => {
|
|
36
|
+
const shareParts = share.split('.');
|
|
37
|
+
if (shareParts.length !== 4)
|
|
38
|
+
throw Error('Invalid share format in share ' + idx + '. Expected format: "x.y.t.i" - received ' + share);
|
|
39
|
+
const [x, y, t, i] = shareParts;
|
|
40
|
+
if (!t)
|
|
41
|
+
throw Error('Threshold not found in share ' + idx);
|
|
42
|
+
if (!i)
|
|
43
|
+
throw Error('Integrity not found in share ' + idx);
|
|
44
|
+
const tInt = parseInt(t);
|
|
45
|
+
if (idx !== 0 && threshold !== tInt)
|
|
46
|
+
throw Error('Threshold mismatch in share ' + idx);
|
|
47
|
+
if (idx !== 0 && integrity !== i)
|
|
48
|
+
throw Error('Integrity mismatch in share ' + idx);
|
|
49
|
+
threshold = tInt;
|
|
50
|
+
integrity = i;
|
|
51
|
+
return PointInFiniteField.fromString([x, y].join('.'));
|
|
52
|
+
});
|
|
53
|
+
return new KeyShares(points, threshold, integrity);
|
|
54
|
+
}
|
|
55
|
+
toBackupFormat() {
|
|
56
|
+
return this.points.map(share => share.toString() + '.' + this.threshold + '.' + this.integrity);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
8
59
|
/**
|
|
9
60
|
* Represents a Private Key, which is a secret that can be used to generate signatures in a cryptographic system.
|
|
10
61
|
*
|
|
@@ -238,5 +289,97 @@ export default class PrivateKey extends BigNumber {
|
|
|
238
289
|
const curve = new Curve();
|
|
239
290
|
return new PrivateKey(this.add(new BigNumber(hmac)).mod(curve.n).toArray());
|
|
240
291
|
}
|
|
292
|
+
/**
|
|
293
|
+
* Splits the private key into shares using Shamir's Secret Sharing Scheme.
|
|
294
|
+
*
|
|
295
|
+
* @param threshold The minimum number of shares required to reconstruct the private key.
|
|
296
|
+
* @param totalShares The total number of shares to generate.
|
|
297
|
+
* @param prime The prime number to be used in Shamir's Secret Sharing Scheme.
|
|
298
|
+
* @returns An array of shares.
|
|
299
|
+
*
|
|
300
|
+
* @example
|
|
301
|
+
* const key = PrivateKey.fromRandom()
|
|
302
|
+
* const shares = key.toKeyShares(2, 5)
|
|
303
|
+
*/
|
|
304
|
+
toKeyShares(threshold, totalShares) {
|
|
305
|
+
if (typeof threshold !== 'number' || typeof totalShares !== 'number')
|
|
306
|
+
throw new Error('threshold and totalShares must be numbers');
|
|
307
|
+
if (threshold < 2)
|
|
308
|
+
throw new Error('threshold must be at least 2');
|
|
309
|
+
if (totalShares < 2)
|
|
310
|
+
throw new Error('totalShares must be at least 2');
|
|
311
|
+
if (threshold > totalShares)
|
|
312
|
+
throw new Error('threshold should be less than or equal to totalShares');
|
|
313
|
+
const poly = Polynomial.fromPrivateKey(this, threshold);
|
|
314
|
+
const points = [];
|
|
315
|
+
for (let i = 0; i < totalShares; i++) {
|
|
316
|
+
const x = new BigNumber(PrivateKey.fromRandom().toArray());
|
|
317
|
+
const y = poly.valueAt(x);
|
|
318
|
+
points.push(new PointInFiniteField(x, y));
|
|
319
|
+
}
|
|
320
|
+
const integrity = this.toPublicKey().toHash('hex').slice(0, 8);
|
|
321
|
+
return new KeyShares(points, threshold, integrity);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* @method toBackupShares
|
|
325
|
+
*
|
|
326
|
+
* Creates a backup of the private key by splitting it into shares.
|
|
327
|
+
*
|
|
328
|
+
*
|
|
329
|
+
* @param threshold The number of shares which will be required to reconstruct the private key.
|
|
330
|
+
* @param totalShares The number of shares to generate for distribution.
|
|
331
|
+
* @returns
|
|
332
|
+
*/
|
|
333
|
+
toBackupShares(threshold, totalShares) {
|
|
334
|
+
return this.toKeyShares(threshold, totalShares).toBackupFormat();
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
*
|
|
338
|
+
* @method fromBackupShares
|
|
339
|
+
*
|
|
340
|
+
* Creates a private key from backup shares.
|
|
341
|
+
*
|
|
342
|
+
* @param shares
|
|
343
|
+
* @returns PrivateKey
|
|
344
|
+
*/
|
|
345
|
+
static fromBackupShares(shares) {
|
|
346
|
+
return PrivateKey.fromKeyShares(KeyShares.fromBackupFormat(shares));
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Combines shares to reconstruct the private key.
|
|
350
|
+
*
|
|
351
|
+
* @param shares An array of points (shares) to be used to reconstruct the private key.
|
|
352
|
+
* @param threshold The minimum number of shares required to reconstruct the private key.
|
|
353
|
+
*
|
|
354
|
+
* @returns The reconstructed private key.
|
|
355
|
+
*
|
|
356
|
+
* @example
|
|
357
|
+
* const share1 = '2NWeap6SDBTL5jVnvk9yUxyfLqNrDs2Bw85KNDfLJwRT.4yLtSm327NApsbuP7QXVW3CWDuBRgmS6rRiFkAkTukic'
|
|
358
|
+
* const share2 = '7NbgGA8iAsxg2s6mBLkLFtGKQrnc4aCbooHJJV31cWs4.GUgXtudthawE3Eevc1waT3Atr1Ft7j1XxdUguVo3B7x3'
|
|
359
|
+
* const reconstructedKey = PrivateKey.fromKeyShares({ shares: [share1, share2], threshold: 2, integrity: '23409547' })
|
|
360
|
+
*
|
|
361
|
+
**/
|
|
362
|
+
static fromKeyShares(keyShares) {
|
|
363
|
+
const { points, threshold, integrity } = keyShares;
|
|
364
|
+
if (threshold < 2 || threshold > 99)
|
|
365
|
+
throw new Error('threshold should be between 2 and 99');
|
|
366
|
+
if (points.length < threshold)
|
|
367
|
+
throw new Error(`At least ${threshold} shares are required to reconstruct the private key`);
|
|
368
|
+
// check to see if two points have the same x value
|
|
369
|
+
for (let i = 0; i < threshold; i++) {
|
|
370
|
+
for (let j = i + 1; j < threshold; j++) {
|
|
371
|
+
if (points[i].x.eq(points[j].x)) {
|
|
372
|
+
throw new Error('Duplicate share detected, each must be unique.');
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const poly = new Polynomial(points, threshold);
|
|
377
|
+
const privateKey = new PrivateKey(poly.valueAt(new BigNumber(0)).toArray());
|
|
378
|
+
const integrityHash = privateKey.toPublicKey().toHash('hex').slice(0, 8);
|
|
379
|
+
if (integrityHash !== integrity) {
|
|
380
|
+
throw new Error('Integrity hash mismatch');
|
|
381
|
+
}
|
|
382
|
+
return privateKey;
|
|
383
|
+
}
|
|
241
384
|
}
|
|
242
385
|
//# sourceMappingURL=PrivateKey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrivateKey.js","sourceRoot":"","sources":["../../../../src/primitives/PrivateKey.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAEtC,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAEtC,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"PrivateKey.js","sourceRoot":"","sources":["../../../../src/primitives/PrivateKey.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,12 @@ export { default as Curve } from './Curve.js';
|
|
|
3
3
|
export { default as Point } from './Point.js';
|
|
4
4
|
export { default as PublicKey } from './PublicKey.js';
|
|
5
5
|
export { default as Signature } from './Signature.js';
|
|
6
|
-
export { default as PrivateKey } from './PrivateKey.js';
|
|
6
|
+
export { default as PrivateKey, KeyShares } from './PrivateKey.js';
|
|
7
7
|
export { default as SymmetricKey } from './SymmetricKey.js';
|
|
8
8
|
export * as ECDSA from './ECDSA.js';
|
|
9
9
|
export * as Utils from './utils.js';
|
|
10
10
|
export * as Hash from './Hash.js';
|
|
11
11
|
export { default as Random } from './Random.js';
|
|
12
12
|
export { default as TransactionSignature } from './TransactionSignature.js';
|
|
13
|
+
export { default as Polynomial, PointInFiniteField } from './Polynomial.js';
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/primitives/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"P2PKH.js","sourceRoot":"","sources":["../../../../../src/script/templates/P2PKH.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAC/C,OAAO,eAAe,MAAM,uBAAuB,CAAA;AAGnD,OAAO,oBAAoB,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAGjD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB;;;;;OAKG;IACH,IAAI,
|
|
1
|
+
{"version":3,"file":"P2PKH.js","sourceRoot":"","sources":["../../../../../src/script/templates/P2PKH.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import OP from '../OP.js';
|
|
2
|
+
import LockingScript from '../LockingScript.js';
|
|
3
|
+
import UnlockingScript from '../UnlockingScript.js';
|
|
4
|
+
import TransactionSignature from '../../primitives/TransactionSignature.js';
|
|
5
|
+
import { sha256 } from '../../primitives/Hash.js';
|
|
6
|
+
import { toArray } from '../../primitives/utils.js';
|
|
7
|
+
/**
|
|
8
|
+
* P2PKH (Pay To Public Key Hash) class implementing ScriptTemplate.
|
|
9
|
+
*
|
|
10
|
+
* This class provides methods to create Pay To Public Key Hash locking and unlocking scripts, including the unlocking of P2PKH UTXOs with the private key.
|
|
11
|
+
*/
|
|
12
|
+
export default class P2PKHT {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a P2PKH locking script for a given public key hash.
|
|
15
|
+
*
|
|
16
|
+
* @param {number[]} pubkeyhash - An array representing the public key hash.
|
|
17
|
+
* @returns {LockingScript} - A P2PKH locking script.
|
|
18
|
+
*/
|
|
19
|
+
lock(pubkeyhash) {
|
|
20
|
+
const time = toArray(Date.now().toString());
|
|
21
|
+
return new LockingScript([
|
|
22
|
+
{ op: time.length, data: time },
|
|
23
|
+
{ op: OP.OP_DROP },
|
|
24
|
+
{ op: OP.OP_DUP },
|
|
25
|
+
{ op: OP.OP_HASH160 },
|
|
26
|
+
{ op: pubkeyhash.length, data: pubkeyhash },
|
|
27
|
+
{ op: OP.OP_EQUALVERIFY },
|
|
28
|
+
{ op: OP.OP_CHECKSIG }
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Creates a function that generates a P2PKH unlocking script along with its signature and length estimation.
|
|
33
|
+
*
|
|
34
|
+
* The returned object contains:
|
|
35
|
+
* 1. `sign` - A function that, when invoked with a transaction and an input index,
|
|
36
|
+
* produces an unlocking script suitable for a P2PKH locked output.
|
|
37
|
+
* 2. `estimateLength` - A function that returns the estimated length of the unlocking script in bytes.
|
|
38
|
+
*
|
|
39
|
+
* @param {PrivateKey} privateKey - The private key used for signing the transaction.
|
|
40
|
+
* @param {'all'|'none'|'single'} signOutputs - The signature scope for outputs.
|
|
41
|
+
* @param {boolean} anyoneCanPay - Flag indicating if the signature allows for other inputs to be added later.
|
|
42
|
+
* @returns {Object} - An object containing the `sign` and `estimateLength` functions.
|
|
43
|
+
*/
|
|
44
|
+
unlock(privateKey, signOutputs = 'all', anyoneCanPay = false) {
|
|
45
|
+
return {
|
|
46
|
+
sign: async (tx, inputIndex) => {
|
|
47
|
+
let signatureScope = TransactionSignature.SIGHASH_FORKID;
|
|
48
|
+
if (signOutputs === 'all') {
|
|
49
|
+
signatureScope |= TransactionSignature.SIGHASH_ALL;
|
|
50
|
+
}
|
|
51
|
+
if (signOutputs === 'none') {
|
|
52
|
+
signatureScope |= TransactionSignature.SIGHASH_NONE;
|
|
53
|
+
}
|
|
54
|
+
if (signOutputs === 'single') {
|
|
55
|
+
signatureScope |= TransactionSignature.SIGHASH_SINGLE;
|
|
56
|
+
}
|
|
57
|
+
if (anyoneCanPay) {
|
|
58
|
+
signatureScope |= TransactionSignature.SIGHASH_ANYONECANPAY;
|
|
59
|
+
}
|
|
60
|
+
const otherInputs = [...tx.inputs];
|
|
61
|
+
const [input] = otherInputs.splice(inputIndex, 1);
|
|
62
|
+
if (typeof input.sourceTransaction !== 'object') {
|
|
63
|
+
// Question: Should the library support use-cases where the source transaction is not provided? This is to say, is it ever acceptable for someone to sign an input spending some output from a transaction they have not provided? Some elements (such as the satoshi value and output script) are always required. A merkle proof is also always required, and verifying it (while also verifying that the claimed output is contained within the claimed transaction) is also always required. This seems to require the entire input transaction.
|
|
64
|
+
throw new Error('The source transaction is needed for transaction signing.');
|
|
65
|
+
}
|
|
66
|
+
const preimage = TransactionSignature.format({
|
|
67
|
+
sourceTXID: input.sourceTransaction.id('hex'),
|
|
68
|
+
sourceOutputIndex: input.sourceOutputIndex,
|
|
69
|
+
sourceSatoshis: input.sourceTransaction.outputs[input.sourceOutputIndex].satoshis,
|
|
70
|
+
transactionVersion: tx.version,
|
|
71
|
+
otherInputs,
|
|
72
|
+
inputIndex,
|
|
73
|
+
outputs: tx.outputs,
|
|
74
|
+
inputSequence: input.sequence,
|
|
75
|
+
subscript: input.sourceTransaction.outputs[input.sourceOutputIndex].lockingScript,
|
|
76
|
+
lockTime: tx.lockTime,
|
|
77
|
+
scope: signatureScope
|
|
78
|
+
});
|
|
79
|
+
const rawSignature = privateKey.sign(sha256(preimage));
|
|
80
|
+
const sig = new TransactionSignature(rawSignature.r, rawSignature.s, signatureScope);
|
|
81
|
+
const sigForScript = sig.toChecksigFormat();
|
|
82
|
+
const pubkeyForScript = privateKey.toPublicKey().encode(true);
|
|
83
|
+
return new UnlockingScript([
|
|
84
|
+
{ op: sigForScript.length, data: sigForScript },
|
|
85
|
+
{ op: pubkeyForScript.length, data: pubkeyForScript }
|
|
86
|
+
]);
|
|
87
|
+
},
|
|
88
|
+
estimateLength: async () => {
|
|
89
|
+
// public key (1+33) + signature (1+71)
|
|
90
|
+
// Note: We add 1 to each element's length because of the associated OP_PUSH
|
|
91
|
+
return 106;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=P2PKHT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"P2PKHT.js","sourceRoot":"","sources":["../../../../../src/script/templates/P2PKHT.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAC/C,OAAO,eAAe,MAAM,uBAAuB,CAAA;AAGnD,OAAO,oBAAoB,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEnD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB;;;;;OAKG;IACH,IAAI,CAAE,UAAoB;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC3C,OAAO,IAAI,aAAa,CAAC;YACvB,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;YAC/B,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE;YAClB,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE;YACjB,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,EAAE;YACrB,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;YAC3C,EAAE,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE;YACzB,EAAE,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE;SACvB,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CACJ,UAAsB,EACtB,cAAyC,KAAK,EAC9C,eAAwB,KAAK;QAK7B,OAAO;YACL,IAAI,EAAE,KAAK,EAAE,EAAe,EAAE,UAAkB,EAAE,EAAE;gBAClD,IAAI,cAAc,GAAG,oBAAoB,CAAC,cAAc,CAAA;gBACxD,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;oBAC1B,cAAc,IAAI,oBAAoB,CAAC,WAAW,CAAA;gBACpD,CAAC;gBACD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;oBAC3B,cAAc,IAAI,oBAAoB,CAAC,YAAY,CAAA;gBACrD,CAAC;gBACD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC7B,cAAc,IAAI,oBAAoB,CAAC,cAAc,CAAA;gBACvD,CAAC;gBACD,IAAI,YAAY,EAAE,CAAC;oBACjB,cAAc,IAAI,oBAAoB,CAAC,oBAAoB,CAAA;gBAC7D,CAAC;gBACD,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;gBAClC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;gBACjD,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;oBAChD,ohBAAohB;oBACphB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAA;gBACH,CAAC;gBACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC;oBAC3C,UAAU,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAW;oBACvD,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ;oBACjF,kBAAkB,EAAE,EAAE,CAAC,OAAO;oBAC9B,WAAW;oBACX,UAAU;oBACV,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,aAAa,EAAE,KAAK,CAAC,QAAQ;oBAC7B,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,aAAa;oBACjF,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,KAAK,EAAE,cAAc;iBACtB,CAAC,CAAA;gBACF,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACtD,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAClC,YAAY,CAAC,CAAC,EACd,YAAY,CAAC,CAAC,EACd,cAAc,CACf,CAAA;gBACD,MAAM,YAAY,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAA;gBAC3C,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAa,CAAA;gBACzE,OAAO,IAAI,eAAe,CAAC;oBACzB,EAAE,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;oBAC/C,EAAE,EAAE,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE;iBACtD,CAAC,CAAA;YACJ,CAAC;YACD,cAAc,EAAE,KAAK,IAAI,EAAE;gBACzB,uCAAuC;gBACvC,4EAA4E;gBAC5E,OAAO,GAAG,CAAA;YACZ,CAAC;SACF,CAAA;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RPuzzle.js","sourceRoot":"","sources":["../../../../../src/script/templates/RPuzzle.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RPuzzle.js","sourceRoot":"","sources":["../../../../../src/script/templates/RPuzzle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAC/C,OAAO,eAAe,MAAM,uBAAuB,CAAA;AAEnD,OAAO,UAAU,MAAM,gCAAgC,CAAA;AACvD,OAAO,oBAAoB,MAAM,0CAA0C,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAIjD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B,IAAI,GAAoE,KAAK,CAAA;IAE7E;;;;;OAKG;IACH,YAAa,OAAwE,KAAK;QACxF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAE,KAAe;QACnB,MAAM,MAAM,GAAkB;YAC5B,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE;YAClB,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE;YACf,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;YACnB,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE;YACjB,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE;YACf,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;YACnB,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE;YAClB,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;YACnB,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE;SACnB,CAAA;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;YACvB,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;aAC1B,CAAC,CAAA;SACH;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,CAAA;QACtC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;QACnC,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CACJ,CAAY,EACZ,UAAsB,EACtB,cAAyC,KAAK,EAC9C,eAAwB,KAAK;QAK7B,OAAO;YACL,IAAI,EAAE,KAAK,EAAE,EAAe,EAAE,UAAkB,EAAE,EAAE;gBAClD,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;oBACrC,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,CAAA;iBACrC;gBACD,IAAI,cAAc,GAAG,oBAAoB,CAAC,cAAc,CAAA;gBACxD,IAAI,WAAW,KAAK,KAAK,EAAE;oBACzB,cAAc,IAAI,oBAAoB,CAAC,WAAW,CAAA;iBACnD;gBACD,IAAI,WAAW,KAAK,MAAM,EAAE;oBAC1B,cAAc,IAAI,oBAAoB,CAAC,YAAY,CAAA;iBACpD;gBACD,IAAI,WAAW,KAAK,QAAQ,EAAE;oBAC5B,cAAc,IAAI,oBAAoB,CAAC,cAAc,CAAA;iBACtD;gBACD,IAAI,YAAY,EAAE;oBAChB,cAAc,IAAI,oBAAoB,CAAC,oBAAoB,CAAA;iBAC5D;gBACD,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;gBAClC,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;gBACjD,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,EAAE;oBAC/C,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAA;iBACF;gBACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC;oBAC3C,UAAU,EAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC;oBAC7C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;oBAC1C,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ;oBACjF,kBAAkB,EAAE,EAAE,CAAC,OAAO;oBAC9B,WAAW;oBACX,UAAU;oBACV,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,aAAa,EAAE,KAAK,CAAC,QAAQ;oBAC7B,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,aAAa;oBACjF,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,KAAK,EAAE,cAAc;iBACtB,CAAC,CAAA;gBACF,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC1E,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAClC,YAAY,CAAC,CAAC,EACd,YAAY,CAAC,CAAC,EACd,cAAc,CACf,CAAA;gBACD,MAAM,YAAY,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAA;gBAC3C,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAa,CAAA;gBACzE,OAAO,IAAI,eAAe,CAAC;oBACzB,EAAE,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;oBAC/C,EAAE,EAAE,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE;iBACtD,CAAC,CAAA;YACJ,CAAC;YACD,cAAc,EAAE,KAAK,IAAI,EAAE;gBACzB,uCAAuC;gBACvC,4EAA4E;gBAC5E,OAAO,GAAG,CAAA;YACZ,CAAC;SACF,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const hex2dec = (hex) => {
|
|
2
|
+
return parseInt(hex, 16);
|
|
3
|
+
};
|
|
4
|
+
export const dec2hex = (dec) => {
|
|
5
|
+
const rounded = Math.round(dec);
|
|
6
|
+
const prefix = rounded <= 0xf ? '0' : ''; // ensure that single-digit numbers are padded with a leading zero
|
|
7
|
+
return prefix + rounded.toString(16);
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=converters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converters.js","sourceRoot":"","sources":["../../../../src/totp/converters.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE;IAC7C,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC/B,MAAM,MAAM,GAAG,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA,CAAC,kEAAkE;IAC3G,OAAO,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AACtC,CAAC,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import HD from '../compat/HD.js';
|
|
2
|
+
import PublicKey from '../primitives/PublicKey.js';
|
|
3
|
+
import { TOTP } from './totp.js';
|
|
4
|
+
import { hexToUint8Array } from './converters.js';
|
|
5
|
+
/*
|
|
6
|
+
Basic flow:
|
|
7
|
+
Alice generates passcodeForBob with (sharedSecret+(contact.Paymail as bobPaymail))
|
|
8
|
+
Alice sends passcodeForBob to Bob (e.g. via email)
|
|
9
|
+
Bob validates passcodeForBob with (sharedSecret+(requesterPaymail as bobPaymail))
|
|
10
|
+
The (sharedSecret+paymail) is a "directedSecret". This ensures that passcodeForBob-from-Alice != passcodeForAlice-from-Bob.
|
|
11
|
+
The flow looks the same for Bob generating passcodeForAlice.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Generates a TOTP for a given contact
|
|
15
|
+
*
|
|
16
|
+
* @param clientXPriv - The client xpriv
|
|
17
|
+
* @param contact - The Contact
|
|
18
|
+
* @param period - The TOTP period (default: 30)
|
|
19
|
+
* @param digits - The number of TOTP digits (default: 2)
|
|
20
|
+
* @returns The generated TOTP as a string
|
|
21
|
+
*/
|
|
22
|
+
export const generateTotpForContact = (clientXPriv, contact, period, digits) => {
|
|
23
|
+
const sharedSecret = makeSharedSecret(contact, clientXPriv);
|
|
24
|
+
const secret = directedSecret(sharedSecret, contact.paymail);
|
|
25
|
+
return TOTP.generate(secret, getTotpOps(period, digits));
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Validates a TOTP for a given contact
|
|
29
|
+
*
|
|
30
|
+
* @param clientXPriv - The client xpriv
|
|
31
|
+
* @param contact - The Contact
|
|
32
|
+
* @param passcode - The TOTP passcode to validate
|
|
33
|
+
* @param requesterPaymail - The paymail of the requester
|
|
34
|
+
* @param period - The TOTP period (default: 30)
|
|
35
|
+
* @param digits - The number of TOTP digits (default: 2)
|
|
36
|
+
* @returns A boolean indicating whether the TOTP is valid
|
|
37
|
+
*/
|
|
38
|
+
export const validateTotpForContact = (clientXPriv, contact, passcode, requesterPaymail, period, digits) => {
|
|
39
|
+
const sharedSecret = makeSharedSecret(contact, clientXPriv);
|
|
40
|
+
const secret = directedSecret(sharedSecret, requesterPaymail);
|
|
41
|
+
return TOTP.validate(secret, passcode, getTotpOps(period, digits));
|
|
42
|
+
};
|
|
43
|
+
const getTotpOps = (period, digits) => ({
|
|
44
|
+
digits,
|
|
45
|
+
period,
|
|
46
|
+
algorithm: 'SHA-1'
|
|
47
|
+
});
|
|
48
|
+
const makeSharedSecret = (contact, clientXPriv) => {
|
|
49
|
+
const xprivKey = HD.fromString(clientXPriv.toString());
|
|
50
|
+
const pubKey = PublicKey.fromString(contact.pubKey);
|
|
51
|
+
// PKI derivation path: m/0/0/0
|
|
52
|
+
// NOTICE: we currently do not support PKI rotation; however, adjustments will be made if and when we decide to implement it
|
|
53
|
+
const hd = xprivKey.derive('m/0/0/0');
|
|
54
|
+
const privKey = hd.privKey;
|
|
55
|
+
const ss = privKey.deriveSharedSecret(pubKey);
|
|
56
|
+
return ss.getX().toHex(32);
|
|
57
|
+
};
|
|
58
|
+
const directedSecret = (sharedSecret, paymail) => {
|
|
59
|
+
const paymailEncoded = Uint8Array.from(paymail, (c) => c.charCodeAt(0));
|
|
60
|
+
const sharedSecretEncoded = hexToUint8Array(sharedSecret);
|
|
61
|
+
// Concatenate sharedSecretEncoded and paymailEncoded
|
|
62
|
+
const concatenated = new Uint8Array(sharedSecretEncoded.length + paymailEncoded.length);
|
|
63
|
+
concatenated.set(sharedSecretEncoded, 0);
|
|
64
|
+
concatenated.set(paymailEncoded, sharedSecretEncoded.length);
|
|
65
|
+
return concatenated;
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=pike-totp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pike-totp.js","sourceRoot":"","sources":["../../../../src/totp/pike-totp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAChC,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,IAAI,EAAe,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD;;;;;;;EAOE;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,WAAe,EACf,OAAgB,EAChB,MAAc,EACd,MAAc,EACN,EAAE;IACV,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAE5D,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,WAAe,EACf,OAAgB,EAChB,QAAgB,EAChB,gBAAwB,EACxB,MAAc,EACd,MAAc,EACL,EAAE;IACX,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;IAE7D,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,MAAc,EAAe,EAAE,CAAC,CAAC;IACnE,MAAM;IACN,MAAM;IACN,SAAS,EAAE,OAAO;CACnB,CAAC,CAAA;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,WAAe,EAAE,EAAE;IAC7D,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEtD,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEnD,+BAA+B;IAC/B,4HAA4H;IAC5H,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAA;IAC1B,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC7C,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,YAAoB,EAAE,OAAe,EAAc,EAAE;IAC3E,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACvE,MAAM,mBAAmB,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;IAEzD,qDAAqD;IACrD,MAAM,YAAY,GAAG,IAAI,UAAU,CACjC,mBAAmB,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CACnD,CAAA;IACD,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAA;IACxC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAE5D,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/totp/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defaultHttpClient } from
|
|
2
|
-
import Random from
|
|
3
|
-
import { toHex } from
|
|
1
|
+
import { defaultHttpClient } from '../http/DefaultHttpClient.js';
|
|
2
|
+
import Random from '../../primitives/Random.js';
|
|
3
|
+
import { toHex } from '../../primitives/utils.js';
|
|
4
4
|
function defaultDeploymentId() {
|
|
5
5
|
return `ts-sdk-${toHex(Random(16))}`;
|
|
6
6
|
}
|
|
@@ -64,7 +64,7 @@ export default class ARC {
|
|
|
64
64
|
const { txid, extraInfo, txStatus } = response.data;
|
|
65
65
|
return {
|
|
66
66
|
status: 'success',
|
|
67
|
-
txid
|
|
67
|
+
txid,
|
|
68
68
|
message: `${txStatus} ${extraInfo}`
|
|
69
69
|
};
|
|
70
70
|
}
|
|
@@ -107,10 +107,10 @@ export default class ARC {
|
|
|
107
107
|
requestHeaders() {
|
|
108
108
|
const headers = {
|
|
109
109
|
'Content-Type': 'application/json',
|
|
110
|
-
'XDeployment-ID': this.deploymentId
|
|
110
|
+
'XDeployment-ID': this.deploymentId
|
|
111
111
|
};
|
|
112
112
|
if (this.apiKey) {
|
|
113
|
-
headers
|
|
113
|
+
headers.Authorization = `Bearer ${this.apiKey}`;
|
|
114
114
|
}
|
|
115
115
|
if (this.callbackUrl) {
|
|
116
116
|
headers['X-CallbackUrl'] = this.callbackUrl;
|
|
@@ -118,7 +118,7 @@ export default class ARC {
|
|
|
118
118
|
if (this.callbackToken) {
|
|
119
119
|
headers['X-CallbackToken'] = this.callbackToken;
|
|
120
120
|
}
|
|
121
|
-
if (
|
|
121
|
+
if (this.headers) {
|
|
122
122
|
for (const key in this.headers) {
|
|
123
123
|
headers[key] = this.headers[key];
|
|
124
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ARC.js","sourceRoot":"","sources":["../../../../../src/transaction/broadcasters/ARC.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"ARC.js","sourceRoot":"","sources":["../../../../../src/transaction/broadcasters/ARC.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultBroadcaster.js","sourceRoot":"","sources":["../../../../../src/transaction/broadcasters/DefaultBroadcaster.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"DefaultBroadcaster.js","sourceRoot":"","sources":["../../../../../src/transaction/broadcasters/DefaultBroadcaster.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,UAAU,CAAA;AAE1B,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defaultHttpClient } from
|
|
1
|
+
import { defaultHttpClient } from '../http/DefaultHttpClient.js';
|
|
2
2
|
/**
|
|
3
3
|
* Represents an WhatsOnChain transaction broadcaster.
|
|
4
4
|
*/
|
|
@@ -24,12 +24,12 @@ export default class WhatsOnChainBroadcaster {
|
|
|
24
24
|
* @returns {Promise<BroadcastResponse | BroadcastFailure>} A promise that resolves to either a success or failure response.
|
|
25
25
|
*/
|
|
26
26
|
async broadcast(tx) {
|
|
27
|
-
|
|
27
|
+
const rawTx = tx.toHex();
|
|
28
28
|
const requestOptions = {
|
|
29
29
|
method: 'POST',
|
|
30
30
|
headers: {
|
|
31
31
|
'Content-Type': 'application/json',
|
|
32
|
-
|
|
32
|
+
Accept: 'text/plain'
|
|
33
33
|
},
|
|
34
34
|
data: { txhex: rawTx }
|
|
35
35
|
};
|
|
@@ -39,7 +39,7 @@ export default class WhatsOnChainBroadcaster {
|
|
|
39
39
|
const txid = response.data;
|
|
40
40
|
return {
|
|
41
41
|
status: 'success',
|
|
42
|
-
txid
|
|
42
|
+
txid,
|
|
43
43
|
message: 'broadcast successful'
|
|
44
44
|
};
|
|
45
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WhatsOnChainBroadcaster.js","sourceRoot":"","sources":["../../../../../src/transaction/broadcasters/WhatsOnChainBroadcaster.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"WhatsOnChainBroadcaster.js","sourceRoot":"","sources":["../../../../../src/transaction/broadcasters/WhatsOnChainBroadcaster.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,uBAAuB;IACjC,OAAO,CAAQ;IACP,GAAG,CAAQ;IACX,UAAU,CAAY;IAEvC;;;;;OAKG;IACH,YAAa,UAAmC,MAAM,EAAE,aAAyB,iBAAiB,EAAE;QAClG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,uCAAuC,OAAO,SAAS,CAAA;QAClE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAE,EAAe;QAC9B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA;QAExB,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,YAAY;aACrB;YACD,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;SACvB,CAAA;QAED,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAS,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;YAChF,IAAI,QAAQ,CAAC,EAAE,EAAE;gBACf,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAA;gBAC1B,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,IAAI;oBACJ,OAAO,EAAE,sBAAsB;iBAChC,CAAA;aACF;iBAAM;gBACL,OAAO;oBACL,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,aAAa;oBACjD,WAAW,EAAE,QAAQ,CAAC,IAAI,IAAI,eAAe;iBAC9C,CAAA;aACF;SACF;QAAC,OAAO,KAAK,EAAE;YACd,OAAO;gBACL,MAAM,EAAE,OAAO;gBACf,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;oBAC5C,CAAC,CAAC,KAAK,CAAC,OAAO;oBACf,CAAC,CAAC,uBAAuB;aAC5B,CAAA;SACF;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultChainTracker.js","sourceRoot":"","sources":["../../../../../src/transaction/chaintrackers/DefaultChainTracker.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"DefaultChainTracker.js","sourceRoot":"","sources":["../../../../../src/transaction/chaintrackers/DefaultChainTracker.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAG5C,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,YAAY,EAAE,CAAA;AAC3B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defaultHttpClient } from
|
|
1
|
+
import { defaultHttpClient } from '../http/DefaultHttpClient.js';
|
|
2
2
|
/**
|
|
3
3
|
* Represents a chain tracker based on What's On Chain .
|
|
4
4
|
*/
|
|
@@ -39,10 +39,10 @@ export default class WhatsOnChain {
|
|
|
39
39
|
}
|
|
40
40
|
getHeaders() {
|
|
41
41
|
const headers = {
|
|
42
|
-
|
|
42
|
+
Accept: 'application/json'
|
|
43
43
|
};
|
|
44
44
|
if (this.apiKey) {
|
|
45
|
-
headers
|
|
45
|
+
headers.Authorization = this.apiKey;
|
|
46
46
|
}
|
|
47
47
|
return headers;
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WhatsOnChain.js","sourceRoot":"","sources":["../../../../../src/transaction/chaintrackers/WhatsOnChain.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"WhatsOnChain.js","sourceRoot":"","sources":["../../../../../src/transaction/chaintrackers/WhatsOnChain.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAchE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IACtB,OAAO,CAAQ;IACf,MAAM,CAAQ;IACN,GAAG,CAAQ;IACX,UAAU,CAAY;IAEvC;;;;;OAKG;IACH,YAAa,UAAmC,MAAM,EAAE,SAA6B,EAAE;QACrF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,uCAAuC,OAAO,EAAE,CAAA;QAC3D,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,iBAAiB,EAAE,CAAA;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAE,IAAY,EAAE,MAAc;QACtD,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;SAC3B,CAAA;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAA0B,GAAG,IAAI,CAAC,GAAG,UAAU,MAAM,SAAS,EAAE,cAAc,CAAC,CAAA;QAC7H,IAAI,QAAQ,CAAC,EAAE,EAAE;YACf,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAA;YACpC,OAAO,UAAU,KAAK,IAAI,CAAA;SAC3B;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAClC,OAAO,KAAK,CAAA;SACb;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,yBAAyB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAC3H;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,OAAO,GAA2B;YACtC,MAAM,EAAE,kBAAkB;SAC3B,CAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAA;SACpC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SatoshisPerKilobyte.js","sourceRoot":"","sources":["../../../../../src/transaction/fee-models/SatoshisPerKilobyte.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC;;;OAGG;IACH,KAAK,CAAQ;IAEb;;;;OAIG;IACH,
|
|
1
|
+
{"version":3,"file":"SatoshisPerKilobyte.js","sourceRoot":"","sources":["../../../../../src/transaction/fee-models/SatoshisPerKilobyte.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC;;;OAGG;IACH,KAAK,CAAQ;IAEb;;;;OAIG;IACH,YAAa,KAAa;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAE,EAAe;QAC/B,MAAM,aAAa,GAAG,CAAC,CAAS,EAAU,EAAE;YAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;gBACf,OAAO,CAAC,CAAA;aACT;iBAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;gBACtB,OAAO,CAAC,CAAA;aACT;iBAAM,IAAI,CAAC,GAAG,GAAG,EAAE;gBAClB,OAAO,CAAC,CAAA;aACT;iBAAM;gBACL,OAAO,CAAC,CAAA;aACT;QACH,CAAC,CAAA;QACD,8DAA8D;QAC9D,IAAI,IAAI,GAAG,CAAC,CAAA,CAAC,UAAU;QACvB,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA,CAAC,mBAAmB;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC1B,IAAI,IAAI,EAAE,CAAA,CAAC,sCAAsC;YACjD,IAAI,YAAoB,CAAA;YACxB,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,QAAQ,EAAE;gBAC7C,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA;aACvD;iBAAM,IAAI,OAAO,KAAK,CAAC,uBAAuB,KAAK,QAAQ,EAAE;gBAC5D,YAAY,GAAG,MAAM,KAAK,CAAC,uBAAuB,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;aACzE;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAA;aACxH;YACD,IAAI,IAAI,aAAa,CAAC,YAAY,CAAC,CAAA,CAAC,0BAA0B;YAC9D,IAAI,IAAI,YAAY,CAAA,CAAC,mBAAmB;SACzC;QACD,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA,CAAC,oBAAoB;QAC7D,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,OAAO,EAAE;YAC5B,IAAI,IAAI,CAAC,CAAA,CAAC,WAAW;YACrB,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA;YAClD,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA,CAAC,gBAAgB;YAC9C,IAAI,IAAI,MAAM,CAAA,CAAC,SAAS;SACzB;QACD,IAAI,IAAI,CAAC,CAAA,CAAC,YAAY;QACtB,kEAAkE;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QACjD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
|
|
@@ -7,9 +7,9 @@ import { FetchHttpClient } from './FetchHttpClient.js';
|
|
|
7
7
|
*/
|
|
8
8
|
export function defaultHttpClient() {
|
|
9
9
|
const noHttpClient = {
|
|
10
|
-
request(..._) {
|
|
10
|
+
async request(..._) {
|
|
11
11
|
throw new Error('No method available to perform HTTP request');
|
|
12
|
-
}
|
|
12
|
+
}
|
|
13
13
|
};
|
|
14
14
|
if (typeof window !== 'undefined' && typeof window.fetch === 'function') {
|
|
15
15
|
// Use fetch in a browser environment
|