@bitgo/sdk-core 29.0.0 → 31.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -1
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +9 -9
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +4 -4
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +2 -3
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +0 -10
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +1 -15
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +0 -2
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
- package/dist/src/bitgo/config.d.ts.map +1 -1
- package/dist/src/bitgo/config.js +2 -5
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +11 -3
- package/dist/src/bitgo/index.d.ts +1 -0
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +4 -2
- package/dist/src/bitgo/utils/opengpgUtils.js +7 -7
- package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/base.js +9 -5
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +22 -22
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +9 -1
- package/dist/src/bitgo/wallet/iWallet.d.ts +8 -1
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.js +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -9
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,48 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [31.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@28.25.0...@bitgo/sdk-core@31.0.0) (2025-03-04)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- dependency fixes for secp256 lib ([826db0b](https://github.com/BitGo/BitGoJS/commit/826db0b5481435bb38b251e8bb5ba8ce9f78d017))
|
|
11
|
+
- enable tokens for cold wallet ([544733c](https://github.com/BitGo/BitGoJS/commit/544733cdfb3bb64cd283c3f7e4f1f96d2bf9ba3c))
|
|
12
|
+
- fix the atom public rest endpoint ([e6973d4](https://github.com/BitGo/BitGoJS/commit/e6973d442b6bb5f887747d8b231155f40bb3f3c0))
|
|
13
|
+
- **root:** replace elliptic with noble/curves/secp256k1 ([50a208d](https://github.com/BitGo/BitGoJS/commit/50a208d68d8b313ccb9b8e638212f61617daf92a))
|
|
14
|
+
- **sdk-core:** ed tss bug fix ([e424f44](https://github.com/BitGo/BitGoJS/commit/e424f447ec9966e77ee8fc34f8535996b30bbb29))
|
|
15
|
+
- **sdk-lib-mpc:** fix time warp during decrypting comms in MPCv2 ([c060690](https://github.com/BitGo/BitGoJS/commit/c060690105001cb9c532d39461d175b109f11a71))
|
|
16
|
+
- updating coredao api url ([9f79847](https://github.com/BitGo/BitGoJS/commit/9f79847f2f961be1b0bf9d9ef85267f1893b5899))
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
- **abstract-lightning:** move lnv2 logic from sdk-core ([5c9114d](https://github.com/BitGo/BitGoJS/commit/5c9114d6a4dbdd5a130bde7cb897ff6f1f8132e0))
|
|
21
|
+
- add support to create lightning payments ([ffa5e71](https://github.com/BitGo/BitGoJS/commit/ffa5e71f12b640d9e5bffd41fd47cc144858d09d))
|
|
22
|
+
- remove requirement fee for keyternal ([4b3c1e6](https://github.com/BitGo/BitGoJS/commit/4b3c1e6c8f54dd72a6061c91ac67e2c61e3ccefc))
|
|
23
|
+
- **sdk-coin-apt:** recommend min gas tank balance for next 1000 txns ([74071ab](https://github.com/BitGo/BitGoJS/commit/74071aba4c0754242fc96f7334cec74edba6c73b))
|
|
24
|
+
|
|
25
|
+
### BREAKING CHANGES
|
|
26
|
+
|
|
27
|
+
- **abstract-lightning:** Lightning v2
|
|
28
|
+
|
|
29
|
+
# [30.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@28.25.0...@bitgo/sdk-core@30.0.0) (2025-02-26)
|
|
30
|
+
|
|
31
|
+
### Bug Fixes
|
|
32
|
+
|
|
33
|
+
- fix the atom public rest endpoint ([e6973d4](https://github.com/BitGo/BitGoJS/commit/e6973d442b6bb5f887747d8b231155f40bb3f3c0))
|
|
34
|
+
- **root:** replace elliptic with noble/curves/secp256k1 ([50a208d](https://github.com/BitGo/BitGoJS/commit/50a208d68d8b313ccb9b8e638212f61617daf92a))
|
|
35
|
+
- **sdk-core:** ed tss bug fix ([e424f44](https://github.com/BitGo/BitGoJS/commit/e424f447ec9966e77ee8fc34f8535996b30bbb29))
|
|
36
|
+
- **sdk-lib-mpc:** fix time warp during decrypting comms in MPCv2 ([c060690](https://github.com/BitGo/BitGoJS/commit/c060690105001cb9c532d39461d175b109f11a71))
|
|
37
|
+
- updating coredao api url ([9f79847](https://github.com/BitGo/BitGoJS/commit/9f79847f2f961be1b0bf9d9ef85267f1893b5899))
|
|
38
|
+
|
|
39
|
+
### Features
|
|
40
|
+
|
|
41
|
+
- **abstract-lightning:** move lnv2 logic from sdk-core ([5c9114d](https://github.com/BitGo/BitGoJS/commit/5c9114d6a4dbdd5a130bde7cb897ff6f1f8132e0))
|
|
42
|
+
- **sdk-coin-apt:** recommend min gas tank balance for next 1000 txns ([74071ab](https://github.com/BitGo/BitGoJS/commit/74071aba4c0754242fc96f7334cec74edba6c73b))
|
|
43
|
+
|
|
44
|
+
### BREAKING CHANGES
|
|
45
|
+
|
|
46
|
+
- **abstract-lightning:** Lightning v2
|
|
47
|
+
|
|
6
48
|
# [29.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-core@28.25.0...@bitgo/sdk-core@29.0.0) (2025-02-20)
|
|
7
49
|
|
|
8
50
|
### Bug Fixes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BIP32Interface, ECPairInterface } from '@bitgo/
|
|
1
|
+
import { BIP32Interface, ECPairInterface } from '@bitgo/secp256k1';
|
|
2
2
|
import { KeyPairOptions, ExtendedKeys } from './iface';
|
|
3
3
|
import { BaseKeyPair } from './baseKeyPair';
|
|
4
4
|
import { AddressFormat } from './enum';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secp256k1ExtendedKeyPair.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/secp256k1ExtendedKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAU,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"secp256k1ExtendedKeyPair.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/baseCoin/secp256k1ExtendedKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,cAAc,EAAU,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC;;GAEG;AACH,8BAAsB,wBAAyB,YAAW,WAAW;IACnE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAUzD,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;IACnC,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC;;;;;OAKG;IACH,SAAS,aAAa,MAAM,CAAC,EAAE,cAAc;IAI7C;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAI7D;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC;;;;OAIG;IACH,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW3C;;;;OAIG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1C;;;;;OAKG;IACH,eAAe,IAAI,YAAY;IAc/B,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM;IAI1C,OAAO,IAAI,GAAG;CAGf"}
|
|
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.Secp256k1ExtendedKeyPair = void 0;
|
|
37
|
-
const
|
|
37
|
+
const secp256k1_1 = require("@bitgo/secp256k1");
|
|
38
38
|
const Crypto = __importStar(require("../util/crypto"));
|
|
39
39
|
const errors_1 = require("./errors");
|
|
40
40
|
/**
|
|
@@ -43,10 +43,10 @@ const errors_1 = require("./errors");
|
|
|
43
43
|
class Secp256k1ExtendedKeyPair {
|
|
44
44
|
static toKeyPair(hdNode) {
|
|
45
45
|
if (hdNode.privateKey) {
|
|
46
|
-
return
|
|
46
|
+
return secp256k1_1.ECPair.fromPrivateKey(hdNode.privateKey);
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
|
-
return
|
|
49
|
+
return secp256k1_1.ECPair.fromPublicKey(hdNode.publicKey);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
/**
|
|
@@ -63,7 +63,7 @@ class Secp256k1ExtendedKeyPair {
|
|
|
63
63
|
* @return Buffer 33 bytes if `compressed` is set, 65 bytes otherwise. Standard libsecp256k1 format.
|
|
64
64
|
*/
|
|
65
65
|
getPublicKey({ compressed }) {
|
|
66
|
-
return
|
|
66
|
+
return secp256k1_1.ECPair.fromPublicKey(this.keyPair?.publicKey, { compressed }).publicKey;
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
69
|
* @return Buffer 32 bytes in standard libsecp256k1 format
|
|
@@ -78,11 +78,11 @@ class Secp256k1ExtendedKeyPair {
|
|
|
78
78
|
*/
|
|
79
79
|
recordKeysFromPrivateKey(prv) {
|
|
80
80
|
if (Crypto.isValidXprv(prv)) {
|
|
81
|
-
this.hdNode =
|
|
81
|
+
this.hdNode = secp256k1_1.bip32.fromBase58(prv);
|
|
82
82
|
}
|
|
83
83
|
else if (Crypto.isValidPrv(prv)) {
|
|
84
84
|
// Cannot create the HD node without the chain code, so create a regular Key Chain
|
|
85
|
-
this.keyPair =
|
|
85
|
+
this.keyPair = secp256k1_1.ECPair.fromPrivateKey(Buffer.from(prv, 'hex'));
|
|
86
86
|
}
|
|
87
87
|
else {
|
|
88
88
|
throw new Error('Unsupported private key');
|
|
@@ -95,11 +95,11 @@ class Secp256k1ExtendedKeyPair {
|
|
|
95
95
|
*/
|
|
96
96
|
recordKeysFromPublicKey(pub) {
|
|
97
97
|
if (Crypto.isValidXpub(pub)) {
|
|
98
|
-
this.hdNode =
|
|
98
|
+
this.hdNode = secp256k1_1.bip32.fromBase58(pub);
|
|
99
99
|
}
|
|
100
100
|
else if (Crypto.isValidPub(pub)) {
|
|
101
101
|
// Cannot create an HD node without the chain code, so create a regular Key Chain
|
|
102
|
-
this.keyPair =
|
|
102
|
+
this.keyPair = secp256k1_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
|
|
103
103
|
}
|
|
104
104
|
else {
|
|
105
105
|
throw new Error('Unsupported public key: ' + pub);
|
|
@@ -132,4 +132,4 @@ class Secp256k1ExtendedKeyPair {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
exports.Secp256k1ExtendedKeyPair = Secp256k1ExtendedKeyPair;
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL2Jhc2VDb2luL3NlY3AyNTZrMUV4dGVuZGVkS2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0Y7QUFDbEYsdURBQXlDO0FBSXpDLHFDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQXNCLHdCQUF3QjtJQUM1QyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQXNCO1FBQ3JDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sa0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxrQkFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFPRDs7Ozs7T0FLRztJQUNILFlBQXNCLE1BQXVCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsRUFBRSxVQUFVLEVBQTJCO1FBQ2xELE9BQU8sa0JBQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHdCQUF3QixDQUFDLEdBQVc7UUFDbEMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsa0ZBQWtGO1lBQ2xGLElBQUksQ0FBQyxPQUFPLEdBQUcsa0JBQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx1QkFBdUIsQ0FBQyxHQUFXO1FBQ2pDLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLGlGQUFpRjtZQUNqRixJQUFJLENBQUMsT0FBTyxHQUFHLGtCQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFpQjtZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7U0FDeEMsQ0FBQztRQUNGLHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFzQjtRQUMvQixNQUFNLElBQUksNEJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sSUFBSSw0QkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQWxHRCw0REFrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiaXAzMiwgQklQMzJJbnRlcmZhY2UsIEVDUGFpciwgRUNQYWlySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgKiBhcyBDcnlwdG8gZnJvbSAnLi4vdXRpbC9jcnlwdG8nO1xuaW1wb3J0IHsgS2V5UGFpck9wdGlvbnMsIEV4dGVuZGVkS2V5cyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQmFzZUtleVBhaXIgfSBmcm9tICcuL2Jhc2VLZXlQYWlyJztcbmltcG9ydCB7IEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuL2VudW0nO1xuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBTRUNQMjU2SzEgZXh0ZW5kZWQga2V5cGFpcnMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIgaW1wbGVtZW50cyBCYXNlS2V5UGFpciB7XG4gIHN0YXRpYyB0b0tleVBhaXIoaGROb2RlOiBCSVAzMkludGVyZmFjZSk6IEVDUGFpckludGVyZmFjZSB7XG4gICAgaWYgKGhkTm9kZS5wcml2YXRlS2V5KSB7XG4gICAgICByZXR1cm4gRUNQYWlyLmZyb21Qcml2YXRlS2V5KGhkTm9kZS5wcml2YXRlS2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIEVDUGFpci5mcm9tUHVibGljS2V5KGhkTm9kZS5wdWJsaWNLZXkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudGF0aW9uIG9mIHRoZSBIRCBwcm90b2NvbCAoQklQMzIpLiBPbmx5IGF2YWlsYWJsZSB3aGVuIGNyZWF0aW5nIGEgS2V5UGFpciBmcm9tIGEgc2VlZCxcbiAgLy8gb3IgZXh0ZW5kZWQga2V5c1xuICBwcm90ZWN0ZWQgaGROb2RlPzogQklQMzJJbnRlcmZhY2U7XG4gIHByb3RlY3RlZCBrZXlQYWlyOiBFQ1BhaXJJbnRlcmZhY2U7XG4gIHByb3RlY3RlZCBzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucztcbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci4gQnkgZGVmYXVsdCwgY3JlYXRlcyBhIGtleSBwYWlyIHdpdGggYSByYW5kb20gbWFzdGVyIHNlZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpck9wdGlvbnN9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSAoZXh0ZW5kZWQgb3IgcmF3KSwgb3IgYSBwdWJsaWMga2V5XG4gICAqICAgICAoZXh0ZW5kZWQsIGNvbXByZXNzZWQsIG9yIHVuY29tcHJlc3NlZClcbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjb21wcmVzc2VkXG4gICAqIEByZXR1cm4gQnVmZmVyIDMzIGJ5dGVzIGlmIGBjb21wcmVzc2VkYCBpcyBzZXQsIDY1IGJ5dGVzIG90aGVyd2lzZS4gU3RhbmRhcmQgbGlic2VjcDI1NmsxIGZvcm1hdC5cbiAgICovXG4gIGdldFB1YmxpY0tleSh7IGNvbXByZXNzZWQgfTogeyBjb21wcmVzc2VkOiBib29sZWFuIH0pOiBCdWZmZXIge1xuICAgIHJldHVybiBFQ1BhaXIuZnJvbVB1YmxpY0tleSh0aGlzLmtleVBhaXI/LnB1YmxpY0tleSwgeyBjb21wcmVzc2VkIH0pLnB1YmxpY0tleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIEJ1ZmZlciAzMiBieXRlcyBpbiBzdGFuZGFyZCBsaWJzZWNwMjU2azEgZm9ybWF0XG4gICAqL1xuICBnZXRQcml2YXRlS2V5KCk6IEJ1ZmZlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMua2V5UGFpcj8ucHJpdmF0ZUtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIEhpZXJhcmNoaWNhbCBEZXRlcm1pbmlzdGljIG5vZGUgb3IgYW4gRUNQYWlyIGZyb20gYSBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBBbiBleHRlbmRlZCBvciByYXcgcHJpdmF0ZSBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChDcnlwdG8uaXNWYWxpZFhwcnYocHJ2KSkge1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tQmFzZTU4KHBydik7XG4gICAgfSBlbHNlIGlmIChDcnlwdG8uaXNWYWxpZFBydihwcnYpKSB7XG4gICAgICAvLyBDYW5ub3QgY3JlYXRlIHRoZSBIRCBub2RlIHdpdGhvdXQgdGhlIGNoYWluIGNvZGUsIHNvIGNyZWF0ZSBhIHJlZ3VsYXIgS2V5IENoYWluXG4gICAgICB0aGlzLmtleVBhaXIgPSBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LCAnaGV4JykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgSGllcmFyY2hpY2FsIERldGVybWluaXN0aWMgbm9kZSBvciBhbiBFQ1BhaXIgZnJvbSBhIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgLSBBbiBleHRlbmRlZCwgY29tcHJlc3NlZCwgb3IgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlcbiAgICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5KHB1Yjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKENyeXB0by5pc1ZhbGlkWHB1YihwdWIpKSB7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21CYXNlNTgocHViKTtcbiAgICB9IGVsc2UgaWYgKENyeXB0by5pc1ZhbGlkUHViKHB1YikpIHtcbiAgICAgIC8vIENhbm5vdCBjcmVhdGUgYW4gSEQgbm9kZSB3aXRob3V0IHRoZSBjaGFpbiBjb2RlLCBzbyBjcmVhdGUgYSByZWd1bGFyIEtleSBDaGFpblxuICAgICAgdGhpcy5rZXlQYWlyID0gRUNQYWlyLmZyb21QdWJsaWNLZXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHB1YmxpYyBrZXk6ICcgKyBwdWIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGV4dGVuZGVkIHB1YmxpYyBrZXksIGFuZCB0aGUgcHJpdmF0ZSBrZXkgaWYgb25lIGlzIGF2YWlsYWJsZS4gVGhpcyBpcyBvbmx5IHBvc3NpYmxlXG4gICAqIHdoZW4gdGhlIGtleSBwYWlyIHdhcyBjcmVhdGVkIGZyb20gYSBzZWVkIG9yIGV4dGVuZGVkIGtleXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtFeHRlbmRlZEtleXN9IFRoZSBFeHRlbmRlZCBrZXlzIG9iamVjdFxuICAgKi9cbiAgZ2V0RXh0ZW5kZWRLZXlzKCk6IEV4dGVuZGVkS2V5cyB7XG4gICAgaWYgKCF0aGlzLmhkTm9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZ2V0IGV4dGVuZGVkIGtleXMnKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0OiBFeHRlbmRlZEtleXMgPSB7XG4gICAgICB4cHViOiB0aGlzLmhkTm9kZS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gICAgfTtcbiAgICAvLyBBIG5ldXRlcmVkIEhEIG5vZGUgbWVhbnMgaXQgb25seSBjb250YWlucyB0aGUgcHVibGljIGtleSBpbmZvcm1hdGlvblxuICAgIGlmICghdGhpcy5oZE5vZGUuaXNOZXV0ZXJlZCgpKSB7XG4gICAgICByZXN1bHQueHBydiA9IHRoaXMuaGROb2RlLnRvQmFzZTU4KCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRBZGRyZXNzKGZvcm1hdD86IEFkZHJlc3NGb3JtYXQpOiBzdHJpbmcge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdnZXRBZGRyZXNzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0S2V5cygpOiBhbnkge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdnZXRLZXlzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG4iXX0=
|