@bitgo/sdk-core 36.40.0 → 36.41.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 (113) hide show
  1. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +2 -2
  2. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  3. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  4. package/dist/src/bitgo/bitgoBase.d.ts +1 -0
  5. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
  6. package/dist/src/bitgo/bitgoBase.js +1 -1
  7. package/dist/src/bitgo/environments.d.ts +1 -0
  8. package/dist/src/bitgo/environments.d.ts.map +1 -1
  9. package/dist/src/bitgo/environments.js +9 -1
  10. package/dist/src/bitgo/keychain/iKeychains.d.ts +7 -0
  11. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  12. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  13. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  14. package/dist/src/bitgo/keychain/keychains.js +11 -19
  15. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  16. package/dist/src/bitgo/pendingApproval/pendingApproval.js +8 -3
  17. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +11 -0
  18. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -1
  19. package/dist/src/bitgo/tss/bitgoPubKeys.js +15 -1
  20. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  21. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +8 -3
  22. package/dist/src/bitgo/utils/codecs.d.ts +11 -0
  23. package/dist/src/bitgo/utils/codecs.d.ts.map +1 -0
  24. package/dist/src/bitgo/utils/codecs.js +59 -0
  25. package/dist/src/bitgo/utils/index.d.ts +1 -0
  26. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  27. package/dist/src/bitgo/utils/index.js +2 -1
  28. package/dist/src/bitgo/utils/opengpgUtils.d.ts +1 -0
  29. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  30. package/dist/src/bitgo/utils/opengpgUtils.js +11 -2
  31. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +7 -2
  32. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  33. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +16 -6
  34. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -0
  35. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  36. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  37. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +3 -2
  38. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  39. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +5 -2
  40. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts +19 -0
  41. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts.map +1 -0
  42. package/dist/src/bitgo/utils/tss/eddsa/base.js +67 -0
  43. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  44. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +3 -7
  45. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +22 -0
  46. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  47. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +215 -0
  48. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +6 -0
  49. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -0
  50. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +13 -0
  51. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +3 -0
  52. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
  53. package/dist/src/bitgo/utils/tss/eddsa/index.js +7 -1
  54. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +40 -0
  55. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -0
  56. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +44 -0
  57. package/dist/src/bitgo/wallet/iWallet.d.ts +2 -2
  58. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  59. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  60. package/dist/src/bitgo/wallet/iWallets.d.ts +13 -6
  61. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  62. package/dist/src/bitgo/wallet/iWallets.js +1 -1
  63. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  64. package/dist/src/bitgo/wallet/wallet.js +8 -3
  65. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  66. package/dist/src/bitgo/wallet/wallets.js +15 -1
  67. package/dist/src/coins/fiat.d.ts +45 -0
  68. package/dist/src/coins/fiat.d.ts.map +1 -0
  69. package/dist/src/coins/fiat.js +94 -0
  70. package/dist/src/coins/index.d.ts +1 -12
  71. package/dist/src/coins/index.d.ts.map +1 -1
  72. package/dist/src/coins/index.js +2 -13
  73. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts +2 -0
  74. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts.map +1 -0
  75. package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +197 -0
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/package.json +5 -5
  78. package/dist/src/coins/fiataed.d.ts +0 -32
  79. package/dist/src/coins/fiataed.d.ts.map +0 -1
  80. package/dist/src/coins/fiataed.js +0 -61
  81. package/dist/src/coins/fiateur.d.ts +0 -32
  82. package/dist/src/coins/fiateur.d.ts.map +0 -1
  83. package/dist/src/coins/fiateur.js +0 -61
  84. package/dist/src/coins/fiatgbp.d.ts +0 -32
  85. package/dist/src/coins/fiatgbp.d.ts.map +0 -1
  86. package/dist/src/coins/fiatgbp.js +0 -61
  87. package/dist/src/coins/fiatinr.d.ts +0 -32
  88. package/dist/src/coins/fiatinr.d.ts.map +0 -1
  89. package/dist/src/coins/fiatinr.js +0 -61
  90. package/dist/src/coins/fiatsgd.d.ts +0 -32
  91. package/dist/src/coins/fiatsgd.d.ts.map +0 -1
  92. package/dist/src/coins/fiatsgd.js +0 -61
  93. package/dist/src/coins/fiatusd.d.ts +0 -32
  94. package/dist/src/coins/fiatusd.d.ts.map +0 -1
  95. package/dist/src/coins/fiatusd.js +0 -61
  96. package/dist/src/coins/tfiataed.d.ts +0 -11
  97. package/dist/src/coins/tfiataed.d.ts.map +0 -1
  98. package/dist/src/coins/tfiataed.js +0 -17
  99. package/dist/src/coins/tfiateur.d.ts +0 -11
  100. package/dist/src/coins/tfiateur.d.ts.map +0 -1
  101. package/dist/src/coins/tfiateur.js +0 -17
  102. package/dist/src/coins/tfiatgbp.d.ts +0 -11
  103. package/dist/src/coins/tfiatgbp.d.ts.map +0 -1
  104. package/dist/src/coins/tfiatgbp.js +0 -17
  105. package/dist/src/coins/tfiatinr.d.ts +0 -11
  106. package/dist/src/coins/tfiatinr.d.ts.map +0 -1
  107. package/dist/src/coins/tfiatinr.js +0 -17
  108. package/dist/src/coins/tfiatsgd.d.ts +0 -11
  109. package/dist/src/coins/tfiatsgd.d.ts.map +0 -1
  110. package/dist/src/coins/tfiatsgd.js +0 -17
  111. package/dist/src/coins/tfiatusd.d.ts +0 -11
  112. package/dist/src/coins/tfiatusd.d.ts.map +0 -1
  113. package/dist/src/coins/tfiatusd.js +0 -17
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, CoinConstructor, KeyPair, ParsedTransaction, ParseTransactionOptions, SignedTransaction, SignTransactionOptions, VerifyAddressOptions, VerifyTransactionOptions } from '../';
5
+ export interface FiatCoinConfig {
6
+ chain: string;
7
+ fullName: string;
8
+ baseFactor: number;
9
+ }
10
+ export declare class Fiat extends BaseCoin {
11
+ private readonly config;
12
+ constructor(bitgo: BitGoBase, config: FiatCoinConfig);
13
+ static createConstructor(config: FiatCoinConfig): CoinConstructor;
14
+ getBaseFactor(): number;
15
+ getChain(): string;
16
+ getFamily(): string;
17
+ getFullName(): string;
18
+ isValidMofNSetup({ m, n }: {
19
+ m: number;
20
+ n: number;
21
+ }): boolean;
22
+ isValidAddress(address: string): boolean;
23
+ generateKeyPair(seed?: Buffer): KeyPair;
24
+ isValidPub(pub: string): boolean;
25
+ parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction>;
26
+ isWalletAddress(params: VerifyAddressOptions): Promise<boolean>;
27
+ verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
28
+ signTransaction(params?: SignTransactionOptions): Promise<SignedTransaction>;
29
+ /** @inheritDoc */
30
+ auditDecryptedKey(params: AuditDecryptedKeyParams): void;
31
+ }
32
+ /**
33
+ * Configuration for all fiat currencies.
34
+ * To add a new fiat currency, just add an entry here — registration is automatic.
35
+ */
36
+ export declare const fiatCoins: FiatCoinConfig[];
37
+ /**
38
+ * Testnet configs derived automatically from mainnet configs.
39
+ */
40
+ export declare const testnetFiatCoins: FiatCoinConfig[];
41
+ /**
42
+ * All fiat coin configs (mainnet + testnet).
43
+ */
44
+ export declare const allFiatCoins: FiatCoinConfig[];
45
+ //# sourceMappingURL=fiat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiat.d.ts","sourceRoot":"","sources":["../../../src/coins/fiat.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,eAAe,EACf,OAAO,EAEP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,KAAK,CAAC;AAEb,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,IAAK,SAAQ,QAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc;IAKpD,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAIjE,aAAa;IAIb,QAAQ;IAIR,SAAS;IAIT,WAAW;IAIX,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAInD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAIvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI1B,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrE,eAAe,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAItF,kBAAkB;IAClB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;CAGzD;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,cAAc,EAmBrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAI1C,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,cAAc,EAAwC,CAAC"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allFiatCoins = exports.testnetFiatCoins = exports.fiatCoins = exports.Fiat = void 0;
4
+ /**
5
+ * @prettier
6
+ */
7
+ const __1 = require("../");
8
+ class Fiat extends __1.BaseCoin {
9
+ constructor(bitgo, config) {
10
+ super(bitgo);
11
+ this.config = config;
12
+ }
13
+ static createConstructor(config) {
14
+ return (bitgo) => new Fiat(bitgo, config);
15
+ }
16
+ getBaseFactor() {
17
+ return this.config.baseFactor;
18
+ }
19
+ getChain() {
20
+ return this.config.chain;
21
+ }
22
+ getFamily() {
23
+ return 'fiat';
24
+ }
25
+ getFullName() {
26
+ return this.config.fullName;
27
+ }
28
+ isValidMofNSetup({ m, n }) {
29
+ return m === 0 && n === 0;
30
+ }
31
+ isValidAddress(address) {
32
+ throw new __1.MethodNotImplementedError();
33
+ }
34
+ generateKeyPair(seed) {
35
+ throw new __1.MethodNotImplementedError();
36
+ }
37
+ isValidPub(pub) {
38
+ throw new __1.MethodNotImplementedError();
39
+ }
40
+ async parseTransaction(params) {
41
+ return {};
42
+ }
43
+ async isWalletAddress(params) {
44
+ throw new __1.MethodNotImplementedError();
45
+ }
46
+ async verifyTransaction(params) {
47
+ return true;
48
+ }
49
+ async signTransaction(params = {}) {
50
+ throw new __1.MethodNotImplementedError();
51
+ }
52
+ /** @inheritDoc */
53
+ auditDecryptedKey(params) {
54
+ throw new __1.MethodNotImplementedError();
55
+ }
56
+ }
57
+ exports.Fiat = Fiat;
58
+ /**
59
+ * Configuration for all fiat currencies.
60
+ * To add a new fiat currency, just add an entry here — registration is automatic.
61
+ */
62
+ exports.fiatCoins = [
63
+ { chain: 'fiataed', fullName: 'United Arab Emirates Dirham', baseFactor: 1e2 },
64
+ { chain: 'fiataud', fullName: 'Australian Dollar', baseFactor: 1e2 },
65
+ { chain: 'fiatcad', fullName: 'Canadian Dollar', baseFactor: 1e2 },
66
+ { chain: 'fiatchf', fullName: 'Swiss Franc', baseFactor: 1e2 },
67
+ { chain: 'fiatcny', fullName: 'Chinese Yuan', baseFactor: 1e2 },
68
+ { chain: 'fiateur', fullName: 'European Union Euro', baseFactor: 1e2 },
69
+ { chain: 'fiatgbp', fullName: 'British Pound Sterling', baseFactor: 1e2 },
70
+ { chain: 'fiathkd', fullName: 'Hong Kong Dollar', baseFactor: 1e2 },
71
+ { chain: 'fiatidr', fullName: 'Indonesian Rupiah', baseFactor: 1e2 },
72
+ { chain: 'fiatinr', fullName: 'Indian Rupee', baseFactor: 1e2 },
73
+ { chain: 'fiatjpy', fullName: 'Japanese Yen', baseFactor: 1 },
74
+ { chain: 'fiatkrw', fullName: 'South Korean Won', baseFactor: 1 },
75
+ { chain: 'fiatnok', fullName: 'Norwegian Krone', baseFactor: 1e2 },
76
+ { chain: 'fiatnzd', fullName: 'New Zealand Dollar', baseFactor: 1e2 },
77
+ { chain: 'fiatsek', fullName: 'Swedish Krona', baseFactor: 1e2 },
78
+ { chain: 'fiatsgd', fullName: 'Singapore Dollar', baseFactor: 1e2 },
79
+ { chain: 'fiatusd', fullName: 'USD Dollar', baseFactor: 1e2 },
80
+ { chain: 'fiatzar', fullName: 'South African Rand', baseFactor: 1e2 },
81
+ ];
82
+ /**
83
+ * Testnet configs derived automatically from mainnet configs.
84
+ */
85
+ exports.testnetFiatCoins = exports.fiatCoins.map((c) => ({
86
+ chain: `t${c.chain}`,
87
+ fullName: `Testnet ${c.fullName}`,
88
+ baseFactor: c.baseFactor,
89
+ }));
90
+ /**
91
+ * All fiat coin configs (mainnet + testnet).
92
+ */
93
+ exports.allFiatCoins = [...exports.fiatCoins, ...exports.testnetFiatCoins];
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2lucy9maWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsMkJBYWE7QUFRYixNQUFhLElBQUssU0FBUSxZQUFRO0lBR2hDLFlBQVksS0FBZ0IsRUFBRSxNQUFzQjtRQUNsRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE1BQXNCO1FBQzdDLE9BQU8sQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUE0QjtRQUNqRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWU7UUFDNUIsTUFBTSxJQUFJLDZCQUF5QixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFhO1FBQzNCLE1BQU0sSUFBSSw2QkFBeUIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixNQUFNLElBQUksNkJBQXlCLEVBQUUsQ0FBQztJQUN4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QUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7SUFDcEIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNqQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVU7Q0FDekIsQ0FBQyxDQUFDLENBQUM7QUFFSjs7R0FFRztBQUNVLFFBQUEsWUFBWSxHQUFxQixDQUFDLEdBQUcsaUJBQVMsRUFBRSxHQUFHLHdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgQ29pbkNvbnN0cnVjdG9yLFxuICBLZXlQYWlyLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICcuLi8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpYXRDb2luQ29uZmlnIHtcbiAgY2hhaW46IHN0cmluZztcbiAgZnVsbE5hbWU6IHN0cmluZztcbiAgYmFzZUZhY3RvcjogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgRmlhdCBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IEZpYXRDb2luQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGNvbmZpZzogRmlhdENvaW5Db25maWcpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlQ29uc3RydWN0b3IoY29uZmlnOiBGaWF0Q29pbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgRmlhdChiaXRnbywgY29uZmlnKTtcbiAgfVxuXG4gIGdldEJhc2VGYWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmJhc2VGYWN0b3I7XG4gIH1cblxuICBnZXRDaGFpbigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY2hhaW47XG4gIH1cblxuICBnZXRGYW1pbHkoKSB7XG4gICAgcmV0dXJuICdmaWF0JztcbiAgfVxuXG4gIGdldEZ1bGxOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5mdWxsTmFtZTtcbiAgfVxuXG4gIGlzVmFsaWRNb2ZOU2V0dXAoeyBtLCBuIH06IHsgbTogbnVtYmVyOyBuOiBudW1iZXIgfSkge1xuICAgIHJldHVybiBtID09PSAwICYmIG4gPT09IDA7XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgYXN5bmMgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVmVyaWZ5QWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgPSB7fSk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHBhcmFtczogQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYWxsIGZpYXQgY3VycmVuY2llcy5cbiAqIFRvIGFkZCBhIG5ldyBmaWF0IGN1cnJlbmN5LCBqdXN0IGFkZCBhbiBlbnRyeSBoZXJlIOKAlCByZWdpc3RyYXRpb24gaXMgYXV0b21hdGljLlxuICovXG5leHBvcnQgY29uc3QgZmlhdENvaW5zOiBGaWF0Q29pbkNvbmZpZ1tdID0gW1xuICB7IGNoYWluOiAnZmlhdGFlZCcsIGZ1bGxOYW1lOiAnVW5pdGVkIEFyYWIgRW1pcmF0ZXMgRGlyaGFtJywgYmFzZUZhY3RvcjogMWUyIH0sXG4gIHsgY2hhaW46ICdmaWF0YXVkJywgZnVsbE5hbWU6ICdBdXN0cmFsaWFuIERvbGxhcicsIGJhc2VGYWN0b3I6IDFlMiB9LFxuICB7IGNoYWluOiAnZmlhdGNhZCcsIGZ1bGxOYW1lOiAnQ2FuYWRpYW4gRG9sbGFyJywgYmFzZUZhY3RvcjogMWUyIH0sXG4gIHsgY2hhaW46ICdmaWF0Y2hmJywgZnVsbE5hbWU6ICdTd2lzcyBGcmFuYycsIGJhc2VGYWN0b3I6IDFlMiB9LFxuICB7IGNoYWluOiAnZmlhdGNueScsIGZ1bGxOYW1lOiAnQ2hpbmVzZSBZdWFuJywgYmFzZUZhY3RvcjogMWUyIH0sXG4gIHsgY2hhaW46ICdmaWF0ZXVyJywgZnVsbE5hbWU6ICdFdXJvcGVhbiBVbmlvbiBFdXJvJywgYmFzZUZhY3RvcjogMWUyIH0sXG4gIHsgY2hhaW46ICdmaWF0Z2JwJywgZnVsbE5hbWU6ICdCcml0aXNoIFBvdW5kIFN0ZXJsaW5nJywgYmFzZUZhY3RvcjogMWUyIH0sXG4gIHsgY2hhaW46ICdmaWF0aGtkJywgZnVsbE5hbWU6ICdIb25nIEtvbmcgRG9sbGFyJywgYmFzZUZhY3RvcjogMWUyIH0sXG4gIHsgY2hhaW46ICdmaWF0aWRyJywgZnVsbE5hbWU6ICdJbmRvbmVzaWFuIFJ1cGlhaCcsIGJhc2VGYWN0b3I6IDFlMiB9LFxuICB7IGNoYWluOiAnZmlhdGlucicsIGZ1bGxOYW1lOiAnSW5kaWFuIFJ1cGVlJywgYmFzZUZhY3RvcjogMWUyIH0sXG4gIHsgY2hhaW46ICdmaWF0anB5JywgZnVsbE5hbWU6ICdKYXBhbmVzZSBZZW4nLCBiYXNlRmFjdG9yOiAxIH0sXG4gIHsgY2hhaW46ICdmaWF0a3J3JywgZnVsbE5hbWU6ICdTb3V0aCBLb3JlYW4gV29uJywgYmFzZUZhY3RvcjogMSB9LFxuICB7IGNoYWluOiAnZmlhdG5vaycsIGZ1bGxOYW1lOiAnTm9yd2VnaWFuIEtyb25lJywgYmFzZUZhY3RvcjogMWUyIH0sXG4gIHsgY2hhaW46ICdmaWF0bnpkJywgZnVsbE5hbWU6ICdOZXcgWmVhbGFuZCBEb2xsYXInLCBiYXNlRmFjdG9yOiAxZTIgfSxcbiAgeyBjaGFpbjogJ2ZpYXRzZWsnLCBmdWxsTmFtZTogJ1N3ZWRpc2ggS3JvbmEnLCBiYXNlRmFjdG9yOiAxZTIgfSxcbiAgeyBjaGFpbjogJ2ZpYXRzZ2QnLCBmdWxsTmFtZTogJ1NpbmdhcG9yZSBEb2xsYXInLCBiYXNlRmFjdG9yOiAxZTIgfSxcbiAgeyBjaGFpbjogJ2ZpYXR1c2QnLCBmdWxsTmFtZTogJ1VTRCBEb2xsYXInLCBiYXNlRmFjdG9yOiAxZTIgfSxcbiAgeyBjaGFpbjogJ2ZpYXR6YXInLCBmdWxsTmFtZTogJ1NvdXRoIEFmcmljYW4gUmFuZCcsIGJhc2VGYWN0b3I6IDFlMiB9LFxuXTtcblxuLyoqXG4gKiBUZXN0bmV0IGNvbmZpZ3MgZGVyaXZlZCBhdXRvbWF0aWNhbGx5IGZyb20gbWFpbm5ldCBjb25maWdzLlxuICovXG5leHBvcnQgY29uc3QgdGVzdG5ldEZpYXRDb2luczogRmlhdENvaW5Db25maWdbXSA9IGZpYXRDb2lucy5tYXAoKGMpID0+ICh7XG4gIGNoYWluOiBgdCR7Yy5jaGFpbn1gLFxuICBmdWxsTmFtZTogYFRlc3RuZXQgJHtjLmZ1bGxOYW1lfWAsXG4gIGJhc2VGYWN0b3I6IGMuYmFzZUZhY3Rvcixcbn0pKTtcblxuLyoqXG4gKiBBbGwgZmlhdCBjb2luIGNvbmZpZ3MgKG1haW5uZXQgKyB0ZXN0bmV0KS5cbiAqL1xuZXhwb3J0IGNvbnN0IGFsbEZpYXRDb2luczogRmlhdENvaW5Db25maWdbXSA9IFsuLi5maWF0Q29pbnMsIC4uLnRlc3RuZXRGaWF0Q29pbnNdO1xuIl19
@@ -1,15 +1,4 @@
1
- export * from './fiataed';
2
- export * from './tfiataed';
3
- export * from './fiatsgd';
4
- export * from './tfiatsgd';
5
- export * from './fiateur';
6
- export * from './tfiateur';
7
- export * from './fiatgbp';
8
- export * from './tfiatgbp';
9
- export * from './fiatinr';
10
- export * from './tfiatinr';
11
- export * from './fiatusd';
12
- export * from './tfiatusd';
1
+ export * from './fiat';
13
2
  export * from './ofc';
14
3
  export * from './ofcToken';
15
4
  export * from './susd';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/coins/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/coins/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
@@ -14,20 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./fiataed"), exports);
18
- __exportStar(require("./tfiataed"), exports);
19
- __exportStar(require("./fiatsgd"), exports);
20
- __exportStar(require("./tfiatsgd"), exports);
21
- __exportStar(require("./fiateur"), exports);
22
- __exportStar(require("./tfiateur"), exports);
23
- __exportStar(require("./fiatgbp"), exports);
24
- __exportStar(require("./tfiatgbp"), exports);
25
- __exportStar(require("./fiatinr"), exports);
26
- __exportStar(require("./tfiatinr"), exports);
27
- __exportStar(require("./fiatusd"), exports);
28
- __exportStar(require("./tfiatusd"), exports);
17
+ __exportStar(require("./fiat"), exports);
29
18
  __exportStar(require("./ofc"), exports);
30
19
  __exportStar(require("./ofcToken"), exports);
31
20
  __exportStar(require("./susd"), exports);
32
21
  __exportStar(require("./tsusd"), exports);
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29pbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUEwQjtBQUMxQiw2Q0FBMkI7QUFDM0IsNENBQTBCO0FBQzFCLDZDQUEyQjtBQUMzQiw0Q0FBMEI7QUFDMUIsNkNBQTJCO0FBQzNCLDRDQUEwQjtBQUMxQiw2Q0FBMkI7QUFDM0IsNENBQTBCO0FBQzFCLDZDQUEyQjtBQUMzQiw0Q0FBMEI7QUFDMUIsNkNBQTJCO0FBQzNCLHdDQUFzQjtBQUN0Qiw2Q0FBMkI7QUFDM0IseUNBQXVCO0FBQ3ZCLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmlhdGFlZCc7XG5leHBvcnQgKiBmcm9tICcuL3RmaWF0YWVkJztcbmV4cG9ydCAqIGZyb20gJy4vZmlhdHNnZCc7XG5leHBvcnQgKiBmcm9tICcuL3RmaWF0c2dkJztcbmV4cG9ydCAqIGZyb20gJy4vZmlhdGV1cic7XG5leHBvcnQgKiBmcm9tICcuL3RmaWF0ZXVyJztcbmV4cG9ydCAqIGZyb20gJy4vZmlhdGdicCc7XG5leHBvcnQgKiBmcm9tICcuL3RmaWF0Z2JwJztcbmV4cG9ydCAqIGZyb20gJy4vZmlhdGlucic7XG5leHBvcnQgKiBmcm9tICcuL3RmaWF0aW5yJztcbmV4cG9ydCAqIGZyb20gJy4vZmlhdHVzZCc7XG5leHBvcnQgKiBmcm9tICcuL3RmaWF0dXNkJztcbmV4cG9ydCAqIGZyb20gJy4vb2ZjJztcbmV4cG9ydCAqIGZyb20gJy4vb2ZjVG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zdXNkJztcbmV4cG9ydCAqIGZyb20gJy4vdHN1c2QnO1xuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29pbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2Qix3Q0FBc0I7QUFDdEIsNkNBQTJCO0FBQzNCLHlDQUF1QjtBQUN2QiwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9vZmMnO1xuZXhwb3J0ICogZnJvbSAnLi9vZmNUb2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3N1c2QnO1xuZXhwb3J0ICogZnJvbSAnLi90c3VzZCc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=walletsWebauthn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletsWebauthn.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/wallet/walletsWebauthn.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const assert = __importStar(require("assert"));
37
+ const sinon = __importStar(require("sinon"));
38
+ require("should");
39
+ const wallets_1 = require("../../../../src/bitgo/wallet/wallets");
40
+ describe('Wallets - WebAuthn wallet creation', function () {
41
+ let wallets;
42
+ let mockBitGo;
43
+ let mockBaseCoin;
44
+ let mockKeychains;
45
+ const userPrv = 'xprvSomeUserPrivateKey';
46
+ const userPub = 'xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8';
47
+ const backupPub = 'xpub661MyMwAqRbcGczjuMoRm6dXaLDEhW1u34gKenbeYqAix21mdUKJyuyu5F1rzYGVxyL6tmgBUAEPrEz92mBXjByMRiJdba9wpnN37RLLAXa';
48
+ const bitgoPub = 'xpub661MyMwAqRbcEYS8w7XLSVeEsBXy79zSzH1J8vCdxAZningWLdN3zgtU6LBpB85b3D2yc8sfvZU521AAwdZafEz7mnzBBsz4wKY5fTtTQBm';
49
+ beforeEach(function () {
50
+ mockKeychains = {
51
+ create: sinon.stub().returns({ pub: userPub, prv: userPrv }),
52
+ add: sinon.stub().resolves({ id: 'user-key-id', pub: userPub, encryptedPrv: 'encrypted-prv' }),
53
+ createBackup: sinon.stub().resolves({ id: 'backup-key-id', pub: backupPub }),
54
+ createBitGo: sinon.stub().resolves({ id: 'bitgo-key-id', pub: bitgoPub }),
55
+ };
56
+ const mockWalletData = { id: 'wallet-id', keys: ['user-key-id', 'backup-key-id', 'bitgo-key-id'] };
57
+ mockBitGo = {
58
+ post: sinon.stub().returns({
59
+ send: sinon.stub().returns({
60
+ result: sinon.stub().resolves(mockWalletData),
61
+ }),
62
+ }),
63
+ encrypt: sinon
64
+ .stub()
65
+ .callsFake(({ password, input }) => `encrypted:${password}:${input}`),
66
+ setRequestTracer: sinon.stub(),
67
+ };
68
+ mockBaseCoin = {
69
+ isEVM: sinon.stub().returns(false),
70
+ supportsTss: sinon.stub().returns(false),
71
+ getFamily: sinon.stub().returns('btc'),
72
+ getDefaultMultisigType: sinon.stub().returns('onchain'),
73
+ keychains: sinon.stub().returns(mockKeychains),
74
+ url: sinon.stub().returns('/test/url'),
75
+ isValidMofNSetup: sinon.stub().returns(true),
76
+ getConfig: sinon.stub().returns({ features: [] }),
77
+ supplementGenerateWallet: sinon.stub().callsFake((params) => Promise.resolve(params)),
78
+ signMessage: sinon.stub().resolves(Buffer.from('aabbcc', 'hex')),
79
+ };
80
+ wallets = new wallets_1.Wallets(mockBitGo, mockBaseCoin);
81
+ });
82
+ afterEach(function () {
83
+ sinon.restore();
84
+ });
85
+ describe('generateWallet with webauthnInfo', function () {
86
+ it('should add webauthnDevices to keychain params when webauthnInfo is provided', async function () {
87
+ const webauthnInfo = {
88
+ otpDeviceId: 'device-123',
89
+ prfSalt: 'salt-abc',
90
+ passphrase: 'prf-derived-passphrase',
91
+ };
92
+ await wallets.generateWallet({
93
+ label: 'Test Wallet',
94
+ passphrase: 'wallet-passphrase',
95
+ webauthnInfo,
96
+ });
97
+ assert.strictEqual(mockKeychains.add.calledOnce, true);
98
+ const addParams = mockKeychains.add.firstCall.args[0];
99
+ addParams.should.have.property('webauthnDevices');
100
+ addParams.webauthnDevices.should.have.length(1);
101
+ addParams.webauthnDevices[0].should.have.property('otpDeviceId', webauthnInfo.otpDeviceId);
102
+ addParams.webauthnDevices[0].should.have.property('prfSalt', webauthnInfo.prfSalt);
103
+ addParams.webauthnDevices[0].should.have.property('encryptedPrv');
104
+ });
105
+ it('should encrypt user private key with the webauthn passphrase', async function () {
106
+ const webauthnPassphrase = 'prf-derived-passphrase';
107
+ await wallets.generateWallet({
108
+ label: 'Test Wallet',
109
+ passphrase: 'wallet-passphrase',
110
+ webauthnInfo: {
111
+ otpDeviceId: 'device-123',
112
+ prfSalt: 'salt-abc',
113
+ passphrase: webauthnPassphrase,
114
+ },
115
+ });
116
+ const addParams = mockKeychains.add.firstCall.args[0];
117
+ const expectedEncryptedPrv = `encrypted:${webauthnPassphrase}:${userPrv}`;
118
+ addParams.webauthnDevices[0].should.have.property('encryptedPrv', expectedEncryptedPrv);
119
+ });
120
+ it('should also encrypt user private key with wallet passphrase when webauthnInfo is provided', async function () {
121
+ const walletPassphrase = 'wallet-passphrase';
122
+ await wallets.generateWallet({
123
+ label: 'Test Wallet',
124
+ passphrase: walletPassphrase,
125
+ webauthnInfo: {
126
+ otpDeviceId: 'device-123',
127
+ prfSalt: 'salt-abc',
128
+ passphrase: 'prf-derived-passphrase',
129
+ },
130
+ });
131
+ const addParams = mockKeychains.add.firstCall.args[0];
132
+ const expectedEncryptedPrv = `encrypted:${walletPassphrase}:${userPrv}`;
133
+ addParams.should.have.property('encryptedPrv', expectedEncryptedPrv);
134
+ });
135
+ it('should use separate encrypt calls for wallet passphrase and webauthn passphrase', async function () {
136
+ const walletPassphrase = 'wallet-passphrase';
137
+ const webauthnPassphrase = 'prf-derived-passphrase';
138
+ await wallets.generateWallet({
139
+ label: 'Test Wallet',
140
+ passphrase: walletPassphrase,
141
+ webauthnInfo: {
142
+ otpDeviceId: 'device-123',
143
+ prfSalt: 'salt-abc',
144
+ passphrase: webauthnPassphrase,
145
+ },
146
+ });
147
+ const encryptCalls = mockBitGo.encrypt.getCalls();
148
+ const passwordsUsed = encryptCalls.map((call) => call.args[0].password);
149
+ passwordsUsed.should.containEql(walletPassphrase);
150
+ passwordsUsed.should.containEql(webauthnPassphrase);
151
+ });
152
+ it('should not add webauthnDevices when webauthnInfo is not provided', async function () {
153
+ await wallets.generateWallet({
154
+ label: 'Test Wallet',
155
+ passphrase: 'wallet-passphrase',
156
+ });
157
+ assert.strictEqual(mockKeychains.add.calledOnce, true);
158
+ const addParams = mockKeychains.add.firstCall.args[0];
159
+ addParams.should.not.have.property('webauthnDevices');
160
+ });
161
+ it('should not add webauthnDevices when userKey is explicitly provided (no prv available)', async function () {
162
+ // When a user-provided public key is used, there is no private key to encrypt, so webauthnDevices is skipped
163
+ await wallets.generateWallet({
164
+ label: 'Test Wallet',
165
+ userKey: userPub,
166
+ backupXpub: backupPub,
167
+ webauthnInfo: {
168
+ otpDeviceId: 'device-123',
169
+ prfSalt: 'salt-abc',
170
+ passphrase: 'prf-derived-passphrase',
171
+ },
172
+ });
173
+ // add is called for both user keychain (pub-only) and backup keychain - neither should have webauthnDevices
174
+ const allAddCalls = mockKeychains.add.getCalls();
175
+ assert.ok(allAddCalls.length > 0, 'expected keychains().add to be called at least once');
176
+ for (const call of allAddCalls) {
177
+ call.args[0].should.not.have.property('webauthnDevices');
178
+ }
179
+ });
180
+ it('should return wallet with keychains when webauthnInfo is provided', async function () {
181
+ const result = await wallets.generateWallet({
182
+ label: 'Test Wallet',
183
+ passphrase: 'wallet-passphrase',
184
+ webauthnInfo: {
185
+ otpDeviceId: 'device-123',
186
+ prfSalt: 'salt-abc',
187
+ passphrase: 'prf-derived-passphrase',
188
+ },
189
+ });
190
+ result.should.have.property('wallet');
191
+ result.should.have.property('userKeychain');
192
+ result.should.have.property('backupKeychain');
193
+ result.should.have.property('bitgoKeychain');
194
+ });
195
+ });
196
+ });
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0c1dlYmF1dGhuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3dhbGxldC93YWxsZXRzV2ViYXV0aG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLGtCQUFnQjtBQUNoQixrRUFBK0Q7QUFFL0QsUUFBUSxDQUFDLG9DQUFvQyxFQUFFO0lBQzdDLElBQUksT0FBZ0IsQ0FBQztJQUNyQixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFlBQWlCLENBQUM7SUFDdEIsSUFBSSxhQUFrQixDQUFDO0lBRXZCLE1BQU0sT0FBTyxHQUFHLHdCQUF3QixDQUFDO0lBQ3pDLE1BQU0sT0FBTyxHQUNYLGlIQUFpSCxDQUFDO0lBQ3BILE1BQU0sU0FBUyxHQUNiLGlIQUFpSCxDQUFDO0lBQ3BILE1BQU0sUUFBUSxHQUNaLGlIQUFpSCxDQUFDO0lBRXBILFVBQVUsQ0FBQztRQUNULGFBQWEsR0FBRztZQUNkLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUQsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQzlGLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDNUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVB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QyxRQUFRLEVBQUUsQ0FBQztZQUNqRCxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLHFEQUFxRCxDQUFDLENBQUM7WUFDekYsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsbUVBQW1FLEVBQUUsS0FBSztZQUMzRSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxjQUFjLENBQUM7Z0JBQzFDLEtBQUssRUFBRSxhQUFhO2dCQUNwQixVQUFVLEVBQUUsbUJBQW1CO2dCQUMvQixZQUFZLEVBQUU7b0JBQ1osV0FBVyxFQUFFLFlBQVk7b0JBQ3pCLE9BQU8sRUFBRSxVQUFVO29CQUNuQixVQUFVLEVBQUUsd0JBQXdCO2lCQUNyQzthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDOUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgV2FsbGV0cyB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvd2FsbGV0cyc7XG5cbmRlc2NyaWJlKCdXYWxsZXRzIC0gV2ViQXV0aG4gd2FsbGV0IGNyZWF0aW9uJywgZnVuY3Rpb24gKCkge1xuICBsZXQgd2FsbGV0czogV2FsbGV0cztcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgbW9ja0Jhc2VDb2luOiBhbnk7XG4gIGxldCBtb2NrS2V5Y2hhaW5zOiBhbnk7XG5cbiAgY29uc3QgdXNlclBydiA9ICd4cHJ2U29tZVVzZXJQcml2YXRlS2V5JztcbiAgY29uc3QgdXNlclB1YiA9XG4gICAgJ3hwdWI2NjFNeU13QXFSYmNGdFhnUzVzWUpBQnFxRzlZTG1DNFExUmRhcDlnU0U4TnF0d3liR2hlUFkyZ1oyOUVTRmpxSm9DdTFSdXBqZThZdEdxc2VmRDI2NVRNZzd1c1VERmRwNlcxRUdNY2V0OCc7XG4gIGNvbnN0IGJhY2t1cFB1YiA9XG4gICAgJ3hwdWI2NjFNeU13QXFSYmNHY3pqdU1vUm02ZFhhTERFaFcxdTM0Z0tlbmJlWXFBaXgyMW1kVUtKeXV5dTVGMXJ6WUdWeHlMNnRtZ0JVQUVQckV6OTJtQlhqQnlNUmlKZGJhOXdwbk4zN1JMTEFYYSc7XG4gIGNvbnN0IGJpdGdvUHViID1cbiAgICAneHB1YjY2MU15TXdBcVJiY0VZUzh3N1hMU1ZlRXNCWHk3OXpTekgxSjh2Q2R4QVpuaW5nV0xkTjN6Z3RVNkxCcEI4NWIzRDJ5YzhzZnZaVTUyMUFBd2RaYWZFejdtbnpCQnN6NHdLWTVmVHRUUUJtJztcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrS2V5Y2hhaW5zID0ge1xuICAgICAgY3JlYXRlOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHB1YjogdXNlclB1YiwgcHJ2OiB1c2VyUHJ2IH0pLFxuICAgICAgYWRkOiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBpZDogJ3VzZXIta2V5LWlkJywgcHViOiB1c2VyUHViLCBlbmNyeXB0ZWRQcnY6ICdlbmNyeXB0ZWQtcHJ2JyB9KSxcbiAgICAgIGNyZWF0ZUJhY2t1cDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6ICdiYWNrdXAta2V5LWlkJywgcHViOiBiYWNrdXBQdWIgfSksXG4gICAgICBjcmVhdGVCaXRHbzogc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6ICdiaXRnby1rZXktaWQnLCBwdWI6IGJpdGdvUHViIH0pLFxuICAgIH07XG5cbiAgICBjb25zdCBtb2NrV2FsbGV0RGF0YSA9IHsgaWQ6ICd3YWxsZXQtaWQnLCBrZXlzOiBbJ3VzZXIta2V5LWlkJywgJ2JhY2t1cC1rZXktaWQnLCAnYml0Z28ta2V5LWlkJ10gfTtcblxuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIHBvc3Q6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgc2VuZDogc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKG1vY2tXYWxsZXREYXRhKSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICAgIGVuY3J5cHQ6IHNpbm9uXG4gICAgICAgIC5zdHViKClcbiAgICAgICAgLmNhbGxzRmFrZSgoeyBwYXNzd29yZCwgaW5wdXQgfTogeyBwYXNzd29yZDogc3RyaW5nOyBpbnB1dDogc3RyaW5nIH0pID0+IGBlbmNyeXB0ZWQ6JHtwYXNzd29yZH06JHtpbnB1dH1gKSxcbiAgICAgIHNldFJlcXVlc3RUcmFjZXI6IHNpbm9uLnN0dWIoKSxcbiAgICB9O1xuXG4gICAgbW9ja0Jhc2VDb2luID0ge1xuICAgICAgaXNFVk06IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKSxcbiAgICAgIHN1cHBvcnRzVHNzOiBzaW5vbi5zdHViKCkucmV0dXJucyhmYWxzZSksXG4gICAgICBnZXRGYW1pbHk6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCdidGMnKSxcbiAgICAgIGdldERlZmF1bHRNdWx0aXNpZ1R5cGU6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCdvbmNoYWluJyksXG4gICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tLZXljaGFpbnMpLFxuICAgICAgdXJsOiBzaW5vbi5zdHViKCkucmV0dXJucygnL3Rlc3QvdXJsJyksXG4gICAgICBpc1ZhbGlkTW9mTlNldHVwOiBzaW5vbi5zdHViKCkucmV0dXJucyh0cnVlKSxcbiAgICAgIGdldENvbmZpZzogc2lub24uc3R1YigpLnJldHVybnMoeyBmZWF0dXJlczogW10gfSksXG4gICAgICBzdXBwbGVtZW50R2VuZXJhdGVXYWxsZXQ6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhcmFtczogYW55KSA9PiBQcm9taXNlLnJlc29sdmUocGFyYW1zKSksXG4gICAgICBzaWduTWVzc2FnZTogc2lub24uc3R1YigpLnJlc29sdmVzKEJ1ZmZlci5mcm9tKCdhYWJiY2MnLCAnaGV4JykpLFxuICAgIH07XG5cbiAgICB3YWxsZXRzID0gbmV3IFdhbGxldHMobW9ja0JpdEdvLCBtb2NrQmFzZUNvaW4pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dlbmVyYXRlV2FsbGV0IHdpdGggd2ViYXV0aG5JbmZvJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYWRkIHdlYmF1dGhuRGV2aWNlcyB0byBrZXljaGFpbiBwYXJhbXMgd2hlbiB3ZWJhdXRobkluZm8gaXMgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3ZWJhdXRobkluZm8gPSB7XG4gICAgICAgIG90cERldmljZUlkOiAnZGV2aWNlLTEyMycsXG4gICAgICAgIHByZlNhbHQ6ICdzYWx0LWFiYycsXG4gICAgICAgIHBhc3NwaHJhc2U6ICdwcmYtZGVyaXZlZC1wYXNzcGhyYXNlJyxcbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHdhbGxldHMuZ2VuZXJhdGVXYWxsZXQoe1xuICAgICAgICBsYWJlbDogJ1Rlc3QgV2FsbGV0JyxcbiAgICAgICAgcGFzc3BocmFzZTogJ3dhbGxldC1wYXNzcGhyYXNlJyxcbiAgICAgICAgd2ViYXV0aG5JbmZvLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChtb2NrS2V5Y2hhaW5zLmFkZC5jYWxsZWRPbmNlLCB0cnVlKTtcbiAgICAgIGNvbnN0IGFkZFBhcmFtcyA9IG1vY2tLZXljaGFpbnMuYWRkLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgICAgYWRkUGFyYW1zLnNob3VsZC5oYXZlLnByb3BlcnR5KCd3ZWJhdXRobkRldmljZXMnKTtcbiAgICAgIGFkZFBhcmFtcy53ZWJhdXRobkRldmljZXMuc2hvdWxkLmhhdmUubGVuZ3RoKDEpO1xuICAgICAgYWRkUGFyYW1zLndlYmF1dGhuRGV2aWNlc1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnb3RwRGV2aWNlSWQnLCB3ZWJhdXRobkluZm8ub3RwRGV2aWNlSWQpO1xuICAgICAgYWRkUGFyYW1zLndlYmF1dGhuRGV2aWNlc1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHJmU2FsdCcsIHdlYmF1dGhuSW5mby5wcmZTYWx0KTtcbiAgICAgIGFkZFBhcmFtcy53ZWJhdXRobkRldmljZXNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2VuY3J5cHRlZFBydicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBlbmNyeXB0IHVzZXIgcHJpdmF0ZSBrZXkgd2l0aCB0aGUgd2ViYXV0aG4gcGFzc3BocmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdlYmF1dGhuUGFzc3BocmFzZSA9ICdwcmYtZGVyaXZlZC1wYXNzcGhyYXNlJztcblxuICAgICAgYXdhaXQgd2FsbGV0cy5nZW5lcmF0ZVdhbGxldCh7XG4gICAgICAgIGxhYmVsOiAnVGVzdCBXYWxsZXQnLFxuICAgICAgICBwYXNzcGhyYXNlOiAnd2FsbGV0LXBhc3NwaHJhc2UnLFxuICAgICAgICB3ZWJhdXRobkluZm86IHtcbiAgICAgICAgICBvdHBEZXZpY2VJZDogJ2RldmljZS0xMjMnLFxuICAgICAgICAgIHByZlNhbHQ6ICdzYWx0LWFiYycsXG4gICAgICAgICAgcGFzc3BocmFzZTogd2ViYXV0aG5QYXNzcGhyYXNlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGFkZFBhcmFtcyA9IG1vY2tLZXljaGFpbnMuYWRkLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgICAgY29uc3QgZXhwZWN0ZWRFbmNyeXB0ZWRQcnYgPSBgZW5jcnlwdGVkOiR7d2ViYXV0aG5QYXNzcGhyYXNlfToke3VzZXJQcnZ9YDtcbiAgICAgIGFkZFBhcmFtcy53ZWJhdXRobkRldmljZXNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2VuY3J5cHRlZFBydicsIGV4cGVjdGVkRW5jcnlwdGVkUHJ2KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxzbyBlbmNyeXB0IHVzZXIgcHJpdmF0ZSBrZXkgd2l0aCB3YWxsZXQgcGFzc3BocmFzZSB3aGVuIHdlYmF1dGhuSW5mbyBpcyBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdhbGxldFBhc3NwaHJhc2UgPSAnd2FsbGV0LXBhc3NwaHJhc2UnO1xuXG4gICAgICBhd2FpdCB3YWxsZXRzLmdlbmVyYXRlV2FsbGV0KHtcbiAgICAgICAgbGFiZWw6ICdUZXN0IFdhbGxldCcsXG4gICAgICAgIHBhc3NwaHJhc2U6IHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHdlYmF1dGhuSW5mbzoge1xuICAgICAgICAgIG90cERldmljZUlkOiAnZGV2aWNlLTEyMycsXG4gICAgICAgICAgcHJmU2FsdDogJ3NhbHQtYWJjJyxcbiAgICAgICAgICBwYXNzcGhyYXNlOiAncHJmLWRlcml2ZWQtcGFzc3BocmFzZScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgYWRkUGFyYW1zID0gbW9ja0tleWNoYWlucy5hZGQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgICBjb25zdCBleHBlY3RlZEVuY3J5cHRlZFBydiA9IGBlbmNyeXB0ZWQ6JHt3YWxsZXRQYXNzcGhyYXNlfToke3VzZXJQcnZ9YDtcbiAgICAgIGFkZFBhcmFtcy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZW5jcnlwdGVkUHJ2JywgZXhwZWN0ZWRFbmNyeXB0ZWRQcnYpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2Ugc2VwYXJhdGUgZW5jcnlwdCBjYWxscyBmb3Igd2FsbGV0IHBhc3NwaHJhc2UgYW5kIHdlYmF1dGhuIHBhc3NwaHJhc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3dhbGxldC1wYXNzcGhyYXNlJztcbiAgICAgIGNvbnN0IHdlYmF1dGhuUGFzc3BocmFzZSA9ICdwcmYtZGVyaXZlZC1wYXNzcGhyYXNlJztcblxuICAgICAgYXdhaXQgd2FsbGV0cy5nZW5lcmF0ZVdhbGxldCh7XG4gICAgICAgIGxhYmVsOiAnVGVzdCBXYWxsZXQnLFxuICAgICAgICBwYXNzcGhyYXNlOiB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICB3ZWJhdXRobkluZm86IHtcbiAgICAgICAgICBvdHBEZXZpY2VJZDogJ2RldmljZS0xMjMnLFxuICAgICAgICAgIHByZlNhbHQ6ICdzYWx0LWFiYycsXG4gICAgICAgICAgcGFzc3BocmFzZTogd2ViYXV0aG5QYXNzcGhyYXNlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGVuY3J5cHRDYWxscyA9IG1vY2tCaXRHby5lbmNyeXB0LmdldENhbGxzKCk7XG4gICAgICBjb25zdCBwYXNzd29yZHNVc2VkID0gZW5jcnlwdENhbGxzLm1hcCgoY2FsbDogc2lub24uU2lub25TcHlDYWxsKSA9PiBjYWxsLmFyZ3NbMF0ucGFzc3dvcmQpO1xuICAgICAgcGFzc3dvcmRzVXNlZC5zaG91bGQuY29udGFpbkVxbCh3YWxsZXRQYXNzcGhyYXNlKTtcbiAgICAgIHBhc3N3b3Jkc1VzZWQuc2hvdWxkLmNvbnRhaW5FcWwod2ViYXV0aG5QYXNzcGhyYXNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGFkZCB3ZWJhdXRobkRldmljZXMgd2hlbiB3ZWJhdXRobkluZm8gaXMgbm90IHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgd2FsbGV0cy5nZW5lcmF0ZVdhbGxldCh7XG4gICAgICAgIGxhYmVsOiAnVGVzdCBXYWxsZXQnLFxuICAgICAgICBwYXNzcGhyYXNlOiAnd2FsbGV0LXBhc3NwaHJhc2UnLFxuICAgICAgfSk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChtb2NrS2V5Y2hhaW5zLmFkZC5jYWxsZWRPbmNlLCB0cnVlKTtcbiAgICAgIGNvbnN0IGFkZFBhcmFtcyA9IG1vY2tLZXljaGFpbnMuYWRkLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgICAgYWRkUGFyYW1zLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnd2ViYXV0aG5EZXZpY2VzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBhZGQgd2ViYXV0aG5EZXZpY2VzIHdoZW4gdXNlcktleSBpcyBleHBsaWNpdGx5IHByb3ZpZGVkIChubyBwcnYgYXZhaWxhYmxlKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdoZW4gYSB1c2VyLXByb3ZpZGVkIHB1YmxpYyBrZXkgaXMgdXNlZCwgdGhlcmUgaXMgbm8gcHJpdmF0ZSBrZXkgdG8gZW5jcnlwdCwgc28gd2ViYXV0aG5EZXZpY2VzIGlzIHNraXBwZWRcbiAgICAgIGF3YWl0IHdhbGxldHMuZ2VuZXJhdGVXYWxsZXQoe1xuICAgICAgICBsYWJlbDogJ1Rlc3QgV2FsbGV0JyxcbiAgICAgICAgdXNlcktleTogdXNlclB1YixcbiAgICAgICAgYmFja3VwWHB1YjogYmFja3VwUHViLFxuICAgICAgICB3ZWJhdXRobkluZm86IHtcbiAgICAgICAgICBvdHBEZXZpY2VJZDogJ2RldmljZS0xMjMnLFxuICAgICAgICAgIHByZlNhbHQ6ICdzYWx0LWFiYycsXG4gICAgICAgICAgcGFzc3BocmFzZTogJ3ByZi1kZXJpdmVkLXBhc3NwaHJhc2UnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIGFkZCBpcyBjYWxsZWQgZm9yIGJvdGggdXNlciBrZXljaGFpbiAocHViLW9ubHkpIGFuZCBiYWNrdXAga2V5Y2hhaW4gLSBuZWl0aGVyIHNob3VsZCBoYXZlIHdlYmF1dGhuRGV2aWNlc1xuICAgICAgY29uc3QgYWxsQWRkQ2FsbHMgPSBtb2NrS2V5Y2hhaW5zLmFkZC5nZXRDYWxscygpO1xuICAgICAgYXNzZXJ0Lm9rKGFsbEFkZENhbGxzLmxlbmd0aCA+IDAsICdleHBlY3RlZCBrZXljaGFpbnMoKS5hZGQgdG8gYmUgY2FsbGVkIGF0IGxlYXN0IG9uY2UnKTtcbiAgICAgIGZvciAoY29uc3QgY2FsbCBvZiBhbGxBZGRDYWxscykge1xuICAgICAgICBjYWxsLmFyZ3NbMF0uc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCd3ZWJhdXRobkRldmljZXMnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHdhbGxldCB3aXRoIGtleWNoYWlucyB3aGVuIHdlYmF1dGhuSW5mbyBpcyBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHdhbGxldHMuZ2VuZXJhdGVXYWxsZXQoe1xuICAgICAgICBsYWJlbDogJ1Rlc3QgV2FsbGV0JyxcbiAgICAgICAgcGFzc3BocmFzZTogJ3dhbGxldC1wYXNzcGhyYXNlJyxcbiAgICAgICAgd2ViYXV0aG5JbmZvOiB7XG4gICAgICAgICAgb3RwRGV2aWNlSWQ6ICdkZXZpY2UtMTIzJyxcbiAgICAgICAgICBwcmZTYWx0OiAnc2FsdC1hYmMnLFxuICAgICAgICAgIHBhc3NwaHJhc2U6ICdwcmYtZGVyaXZlZC1wYXNzcGhyYXNlJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3dhbGxldCcpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd1c2VyS2V5Y2hhaW4nKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnYmFja3VwS2V5Y2hhaW4nKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnYml0Z29LZXljaGFpbicpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19