@bitgo/sdk-coin-iota 1.3.1 → 1.3.3
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/src/lib/constants.d.ts +3 -3
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +5 -5
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +5 -4
- package/dist/test/resources/iota.d.ts +5 -0
- package/dist/test/resources/iota.d.ts.map +1 -0
- package/dist/test/resources/iota.js +15 -0
- package/dist/test/unit/index.d.ts +2 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +16 -0
- package/dist/test/unit/iota.d.ts +2 -0
- package/dist/test/unit/iota.d.ts.map +1 -0
- package/dist/test/unit/iota.js +111 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +71 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +82 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +12 -8
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -38
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const IOTA_ADDRESS_LENGTH = 64;
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const IOTA_SIGNATURE_LENGTH =
|
|
2
|
+
export declare const IOTA_TRANSACTION_DIGEST_LENGTH = 32;
|
|
3
|
+
export declare const IOTA_BLOCK_DIGEST_LENGTH = 32;
|
|
4
|
+
export declare const IOTA_SIGNATURE_LENGTH = 64;
|
|
5
5
|
export declare const ADDRESS_BYTES_LENGTH = 32;
|
|
6
6
|
export declare const AMOUNT_BYTES_LENGTH = 8;
|
|
7
7
|
export declare const SECONDS_PER_WEEK: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,gBAAgB,QAAmB,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SECONDS_PER_WEEK = exports.AMOUNT_BYTES_LENGTH = exports.ADDRESS_BYTES_LENGTH = exports.IOTA_SIGNATURE_LENGTH = exports.
|
|
3
|
+
exports.SECONDS_PER_WEEK = exports.AMOUNT_BYTES_LENGTH = exports.ADDRESS_BYTES_LENGTH = exports.IOTA_SIGNATURE_LENGTH = exports.IOTA_BLOCK_DIGEST_LENGTH = exports.IOTA_TRANSACTION_DIGEST_LENGTH = exports.IOTA_ADDRESS_LENGTH = void 0;
|
|
4
4
|
exports.IOTA_ADDRESS_LENGTH = 64;
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
7
|
-
exports.IOTA_SIGNATURE_LENGTH =
|
|
5
|
+
exports.IOTA_TRANSACTION_DIGEST_LENGTH = 32;
|
|
6
|
+
exports.IOTA_BLOCK_DIGEST_LENGTH = 32;
|
|
7
|
+
exports.IOTA_SIGNATURE_LENGTH = 64;
|
|
8
8
|
exports.ADDRESS_BYTES_LENGTH = 32;
|
|
9
9
|
exports.AMOUNT_BYTES_LENGTH = 8;
|
|
10
10
|
exports.SECONDS_PER_WEEK = 7 * 24 * 60 * 60; // 1 week in seconds
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFDekIsUUFBQSw4QkFBOEIsR0FBRyxFQUFFLENBQUM7QUFDcEMsUUFBQSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFDOUIsUUFBQSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUFDM0IsUUFBQSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDMUIsUUFBQSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7QUFDeEIsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSU9UQV9BRERSRVNTX0xFTkdUSCA9IDY0O1xuZXhwb3J0IGNvbnN0IElPVEFfVFJBTlNBQ1RJT05fRElHRVNUX0xFTkdUSCA9IDMyO1xuZXhwb3J0IGNvbnN0IElPVEFfQkxPQ0tfRElHRVNUX0xFTkdUSCA9IDMyO1xuZXhwb3J0IGNvbnN0IElPVEFfU0lHTkFUVVJFX0xFTkdUSCA9IDY0O1xuZXhwb3J0IGNvbnN0IEFERFJFU1NfQllURVNfTEVOR1RIID0gMzI7XG5leHBvcnQgY29uc3QgQU1PVU5UX0JZVEVTX0xFTkdUSCA9IDg7XG5leHBvcnQgY29uc3QgU0VDT05EU19QRVJfV0VFSyA9IDcgKiAyNCAqIDYwICogNjA7IC8vIDEgd2VlayBpbiBzZWNvbmRzXG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA8D,MAAM,iBAAiB,CAAC;AAUxG,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlD,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAInD;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
|
package/dist/src/lib/utils.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.Utils = void 0;
|
|
|
4
4
|
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
6
|
const ed25519_1 = require("@iota/iota-sdk/keypairs/ed25519");
|
|
7
|
+
const bcs_1 = require("@iota/bcs");
|
|
7
8
|
class Utils {
|
|
8
9
|
/** @inheritdoc */
|
|
9
10
|
isValidAddress(address) {
|
|
@@ -11,7 +12,7 @@ class Utils {
|
|
|
11
12
|
}
|
|
12
13
|
/** @inheritdoc */
|
|
13
14
|
isValidBlockId(hash) {
|
|
14
|
-
return
|
|
15
|
+
return (0, sdk_core_1.isBase58)(hash, constants_1.IOTA_BLOCK_DIGEST_LENGTH);
|
|
15
16
|
}
|
|
16
17
|
/** @inheritdoc */
|
|
17
18
|
isValidPrivateKey(key) {
|
|
@@ -23,11 +24,11 @@ class Utils {
|
|
|
23
24
|
}
|
|
24
25
|
/** @inheritdoc */
|
|
25
26
|
isValidSignature(signature) {
|
|
26
|
-
return
|
|
27
|
+
return (0, bcs_1.fromBase64)(signature).length === constants_1.IOTA_SIGNATURE_LENGTH;
|
|
27
28
|
}
|
|
28
29
|
/** @inheritdoc */
|
|
29
30
|
isValidTransactionId(txId) {
|
|
30
|
-
return
|
|
31
|
+
return (0, sdk_core_1.isBase58)(txId, constants_1.IOTA_TRANSACTION_DIGEST_LENGTH);
|
|
31
32
|
}
|
|
32
33
|
isValidHex(value, length) {
|
|
33
34
|
const regex = new RegExp(`^(0x|0X)[a-fA-F0-9]{${length}}$`);
|
|
@@ -41,4 +42,4 @@ class Utils {
|
|
|
41
42
|
exports.Utils = Utils;
|
|
42
43
|
const utils = new Utils();
|
|
43
44
|
exports.default = utils;
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUF3RztBQUN4RywyQ0FLcUI7QUFDckIsNkRBQW1FO0FBQ25FLG1DQUF1QztBQUV2QyxNQUFhLEtBQUs7SUFDaEIsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsK0JBQW1CLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBQSxtQkFBUSxFQUFDLElBQUksRUFBRSxvQ0FBd0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLENBQUMsR0FBVztRQUMzQixPQUFPLElBQUEsa0NBQXVCLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxHQUFXO1FBQzFCLE9BQU8sSUFBQSxrQ0FBdUIsRUFBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGdCQUFnQixDQUFDLFNBQWlCO1FBQ2hDLE9BQU8sSUFBQSxnQkFBVSxFQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxpQ0FBcUIsQ0FBQztJQUNoRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG9CQUFvQixDQUFDLElBQVk7UUFDL0IsT0FBTyxJQUFBLG1CQUFRLEVBQUMsSUFBSSxFQUFFLDBDQUE4QixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhLEVBQUUsTUFBYztRQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELHVCQUF1QixDQUFDLFNBQWlCO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksMEJBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRSxPQUFPLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUF4Q0Qsc0JBd0NDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVXRpbHMsIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5LCBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleSwgaXNCYXNlNTggfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgSU9UQV9BRERSRVNTX0xFTkdUSCxcbiAgSU9UQV9CTE9DS19ESUdFU1RfTEVOR1RILFxuICBJT1RBX1NJR05BVFVSRV9MRU5HVEgsXG4gIElPVEFfVFJBTlNBQ1RJT05fRElHRVNUX0xFTkdUSCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRWQyNTUxOVB1YmxpY0tleSB9IGZyb20gJ0Bpb3RhL2lvdGEtc2RrL2tleXBhaXJzL2VkMjU1MTknO1xuaW1wb3J0IHsgZnJvbUJhc2U2NCB9IGZyb20gJ0Bpb3RhL2Jjcyc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSGV4KGFkZHJlc3MsIElPVEFfQUREUkVTU19MRU5HVEgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0Jhc2U1OChoYXNoLCBJT1RBX0JMT0NLX0RJR0VTVF9MRU5HVEgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5KGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZnJvbUJhc2U2NChzaWduYXR1cmUpLmxlbmd0aCA9PT0gSU9UQV9TSUdOQVRVUkVfTEVOR1RIO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0Jhc2U1OCh0eElkLCBJT1RBX1RSQU5TQUNUSU9OX0RJR0VTVF9MRU5HVEgpO1xuICB9XG5cbiAgaXNWYWxpZEhleCh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXigweHwwWClbYS1mQS1GMC05XXske2xlbmd0aH19JGApO1xuICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuXG4gIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBpb3RhUHVibGljS2V5ID0gbmV3IEVkMjU1MTlQdWJsaWNLZXkoQnVmZmVyLmZyb20ocHVibGljS2V5LCAnaGV4JykpO1xuICAgIHJldHVybiBpb3RhUHVibGljS2V5LnRvSW90YUFkZHJlc3MoKTtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iota.d.ts","sourceRoot":"","sources":["../../../test/resources/iota.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;CAUrB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addresses = void 0;
|
|
4
|
+
exports.addresses = {
|
|
5
|
+
validAddresses: [
|
|
6
|
+
'0xda97e166d40fa6a0c949b6aeb862e391c29139b563ae0430b2419c589a02a6e0',
|
|
7
|
+
'0x0502b39ec0b82c10c64a07e969ee1140e67d8e0c0fc0c0f6319fe7e47dbb0ab5',
|
|
8
|
+
],
|
|
9
|
+
invalidAddresses: [
|
|
10
|
+
'randomString',
|
|
11
|
+
'0xc4173a804406a365e69dfb297ddfgsdcvf',
|
|
12
|
+
'5ne7phA48Jrvpn39AtupB8ZkCCAy8gLTfpGihZPuDqen',
|
|
13
|
+
],
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvcmVzb3VyY2VzL2lvdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxTQUFTLEdBQUc7SUFDdkIsY0FBYyxFQUFFO1FBQ2Qsb0VBQW9FO1FBQ3BFLG9FQUFvRTtLQUNyRTtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLGNBQWM7UUFDZCxzQ0FBc0M7UUFDdEMsOENBQThDO0tBQy9DO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBhZGRyZXNzZXMgPSB7XG4gIHZhbGlkQWRkcmVzc2VzOiBbXG4gICAgJzB4ZGE5N2UxNjZkNDBmYTZhMGM5NDliNmFlYjg2MmUzOTFjMjkxMzliNTYzYWUwNDMwYjI0MTljNTg5YTAyYTZlMCcsXG4gICAgJzB4MDUwMmIzOWVjMGI4MmMxMGM2NGEwN2U5NjllZTExNDBlNjdkOGUwYzBmYzBjMGY2MzE5ZmU3ZTQ3ZGJiMGFiNScsXG4gIF0sXG4gIGludmFsaWRBZGRyZXNzZXM6IFtcbiAgICAncmFuZG9tU3RyaW5nJyxcbiAgICAnMHhjNDE3M2E4MDQ0MDZhMzY1ZTY5ZGZiMjk3ZGRmZ3NkY3ZmJyxcbiAgICAnNW5lN3BoQTQ4SnJ2cG4zOUF0dXBCOFprQ0NBeThnTFRmcEdpaFpQdURxZW4nLFxuICBdLFxufTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/unit/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("should");
|
|
4
|
+
const sdk_test_1 = require("@bitgo/sdk-test");
|
|
5
|
+
const sdk_api_1 = require("@bitgo/sdk-api");
|
|
6
|
+
const src_1 = require("../../src");
|
|
7
|
+
describe('Iota:', function () {
|
|
8
|
+
let bitgo;
|
|
9
|
+
before(function () {
|
|
10
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
|
|
11
|
+
bitgo.safeRegister('iota', src_1.Iota.createInstance);
|
|
12
|
+
bitgo.safeRegister('tiota', src_1.Iota.createInstance);
|
|
13
|
+
bitgo.initializeTestVars();
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQkFBZ0I7QUFDaEIsOENBQTBEO0FBQzFELDRDQUEwQztBQUMxQyxtQ0FBaUM7QUFFakMsUUFBUSxDQUFDLE9BQU8sRUFBRTtJQUNoQixJQUFJLEtBQW1CLENBQUM7SUFFeEIsTUFBTSxDQUFDO1FBQ0wsS0FBSyxHQUFHLG9CQUFTLENBQUMsUUFBUSxDQUFDLGtCQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEQsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsVUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pELEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzdCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IElvdGEgfSBmcm9tICcuLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnSW90YTonLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbzogVGVzdEJpdEdvQVBJO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCdpb3RhJywgSW90YS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0aW90YScsIElvdGEuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iota.d.ts","sourceRoot":"","sources":["../../../test/unit/iota.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
require("should");
|
|
7
|
+
const sdk_test_1 = require("@bitgo/sdk-test");
|
|
8
|
+
const sdk_api_1 = require("@bitgo/sdk-api");
|
|
9
|
+
const src_1 = require("../../src");
|
|
10
|
+
const assert_1 = __importDefault(require("assert"));
|
|
11
|
+
const statics_1 = require("@bitgo/statics");
|
|
12
|
+
describe('IOTA:', function () {
|
|
13
|
+
let bitgo;
|
|
14
|
+
let basecoin;
|
|
15
|
+
before(function () {
|
|
16
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
|
|
17
|
+
bitgo.safeRegister('iota', src_1.Iota.createInstance);
|
|
18
|
+
bitgo.safeRegister('tiota', src_1.Iota.createInstance);
|
|
19
|
+
bitgo.initializeTestVars();
|
|
20
|
+
basecoin = bitgo.coin('tiota');
|
|
21
|
+
});
|
|
22
|
+
it('should return the right info', function () {
|
|
23
|
+
const iota = bitgo.coin('iota');
|
|
24
|
+
const tiota = bitgo.coin('tiota');
|
|
25
|
+
const iotaStatics = statics_1.coins.get('iota');
|
|
26
|
+
const tiotaStatics = statics_1.coins.get('tiota');
|
|
27
|
+
iota.getChain().should.equal('iota');
|
|
28
|
+
iota.getFamily().should.equal('iota');
|
|
29
|
+
iota.getFullName().should.equal('Iota');
|
|
30
|
+
iota.getBaseFactor().should.equal(1e9);
|
|
31
|
+
tiota.getChain().should.equal('tiota');
|
|
32
|
+
tiota.getFamily().should.equal('iota');
|
|
33
|
+
tiota.getFullName().should.equal('Testnet Iota');
|
|
34
|
+
tiota.getBaseFactor().should.equal(1e9);
|
|
35
|
+
iotaStatics.gasTankLowBalanceAlertFactor.should.equal(80);
|
|
36
|
+
tiotaStatics.gasTankLowBalanceAlertFactor.should.equal(80);
|
|
37
|
+
iotaStatics.gasTankMinBalanceRecommendationFactor.should.equal(200);
|
|
38
|
+
tiotaStatics.gasTankMinBalanceRecommendationFactor.should.equal(200);
|
|
39
|
+
});
|
|
40
|
+
it('is valid pub', function () {
|
|
41
|
+
// with 0x prefix
|
|
42
|
+
basecoin.isValidPub('0x9b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb07').should.equal(false);
|
|
43
|
+
// without 0x prefix
|
|
44
|
+
basecoin.isValidPub('9b4e96086d111500259f9b38680b0509a405c1904da18976455a20c691d3bb07').should.equal(true);
|
|
45
|
+
});
|
|
46
|
+
describe('Address Validation', () => {
|
|
47
|
+
let keychains;
|
|
48
|
+
let commonKeychain;
|
|
49
|
+
before(function () {
|
|
50
|
+
commonKeychain =
|
|
51
|
+
'19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781';
|
|
52
|
+
keychains = [
|
|
53
|
+
{
|
|
54
|
+
id: '6424c353eaf78d000766e95949868468',
|
|
55
|
+
source: 'user',
|
|
56
|
+
type: 'tss',
|
|
57
|
+
commonKeychain: '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781',
|
|
58
|
+
encryptedPrv: '{"iv":"cZd5i7L4RxtwrALW2rK7UA==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"5zgoH1Bd3Fw=","ct":"9vVlnXFRtrM9FVEo+d2chbGHlM9lFZemueBuAs3BIkPo33Fo7jzwwNK/kIWkEyg+NmEBd5IaqAS157nvvvwzzsmMWlQdUz9qbmXNv3pg987cXFR08exS+4uhwP1YNOjJTRvRNcO9ZqHb46d4fmyJ/yC9/susCge7r/EsbaN5C3afv1dzybuq912FwaQElZLYYp5BICudFOMZ9k0UDMfKM/PMDkH7WexoGHr9GKq/bgCH2B39TZZyHKU6Uy47lXep2s6h0DrMwHOrnmiL3DZjOj88Ynvphlzxuo4eOlD2UHia2+nvIaISYs29Pr0DAvREutchvcBpExj1kWWPv7hQYrv8F0NAdatsbWl3w+xKyfiMKo1USlrwyJviypGtQtXOJyw0XPN0rv2+L5lW8BbjpzHfYYN13fJTedlGTFhhkzVtbbPAKE02kx7zCJcjYaiexdSTsrDLScYNT9/Jhdt27KpsooehwVohLfSKz4vbFfRu2MPZw3/+c/hfiJNgtz6esWbnxGrcE8U2IwPYCaK+Ghk4DcqWNIni59RI5B5kAsQOToII40qPN510uTgxBSPO7q7MHgkxdd4CqBq+ojr9j0P7oao8E5Y+CBDJrojDoCh1oCCDW9vo2dXlVcD8SIbw7U/9AfvEbA4xyE/5md1M7CIwLnWs2Ynv0YtaKoqhdS9x6FmHlMDhN/DKHinrwmowtrTT82fOkpO5g9saSmgU7Qy3gLt8t+VwdEyeFeQUKRSyci8qgqXQaZIg4+aXgaSOnlCFMtmB8ekYxEhTY5uzRfrNgS4s1QeqFBpNtUF+Ydi297pbVXnJoXAN+SVWd80GCx+yI2dpVC89k3rOWK9WeyqlnzuLJWp2RIOB9cdW8GFv/fN+QAJpYeVxOE4+nZDsKnsj8nKcg9t4Dlx1G6gLM1/Vq9YxNLbuzuRC0asUYvdMnoMvszmpm++TxndYisgNYscpZSoz7wvcazJNEPfhPVjEkd6tUUuN4GM35H0DmKCUQNT+a6B6hmHlTZvjxiyGAg5bY59hdjvJ+22QduazlEEC6LI3HrA7uK0TpplWzS1tCIFvTMUhj65DEZmNJ2+ZY9bQ4vsMf+DRR3OOG4t+DMlNfjOd3zNv3QoY95BjfWpryFwPzDq7bCP67JDsoj7j2TY5FRSrRkD77H0Ewlux2cWfjRTwcMHcdQxxuV0OP0aNjGDjybFN"}',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: '6424c353eaf78d000766e96137d4404b',
|
|
62
|
+
source: 'backup',
|
|
63
|
+
type: 'tss',
|
|
64
|
+
commonKeychain: '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781',
|
|
65
|
+
encryptedPrv: '{"iv":"vi0dPef/Rx7kG/pRySQi6Q==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"9efhQsiEvVs=","ct":"Gw6atvf6gxKzsjtl3xseipO3rAxp1mAz7Yu1ihFsi5/lf2vMZegApgZx+pyILFS9KKLHbNF3U6WgSYdrr2t4vzdLsXkH1WIxfHS+cd2C5N59yADZDnPJBT6pv/IRvaYelP0Ck3nIYQ2hSMm8op+VOWC/SzHeh7slYDqwEHTGan0Wigfvk1yRd7CCJTaEAomnc/4eFi2NY3X3gt/3opy9IAgknnwUFohn96EWpEQ0F6pbzH/Z8VF6gF+DUcrrByAxExUPnHQZiFk3YHU/vVV4FxBU/mVAE8xBsBn5ul5e5SUMPfc7TBuJWv4BByTNg9xDShF/91Yx2nbfUm5d9QmM8lpKgzzQvcK8POAPk87gRCuKnsGh5vNS0UppkHc+ocfzRQlGA6jze7QyyQO0rMj5Ly8kWjwk2vISvKYHYS1NR7VU549UIXo7NXjatunKSc3+IreoRUHIshiaLg6hl+pxCCuc0qQ43V0mdIfCjTN8gkGWLNk8R7tAGPz9jyapQPcPEGHgEz0ATIi6yMNWCsibS2eLiE1uVEJONoM4lk6FPl3Q2CHbW2MeEbqjY8hbaw18mNb2xSBH/Fwpiial+Tvi2imqgnCO4ZpO9bllKftZPcQy0stN+eGBlb5ufyflKkDSiChHYroGjEpmiFicdde48cJszF52uKNnf1q67fA9/S2FAHQab3EXojxH2Gbk+kkV2h/TYKFFZSWC3vi4e8mO+vjMUcR0AdsgPFyEIz0SCGuba3CnTLNdEuZwsauAeHkx2vUTnRgJPVgNeeuXmsVG76Sy2ggJHuals0Hj8U2Xda0qO1RuFfoCWfss9wn6HGRwPPkhSB/8oNguAqmRVGKkd8Zwt3IvrTd9fk0/rFFDJKGz7WyNHkYgUmNiGcItD12v0jx7FZ52EJzl3Av1RyJUQK18+8EYPh3SGiU9dt7VX0aF0uo6JouKhOeldUvMP+AugQz8fUclwTQsbboVg27Yxo0DyATVwThW5a56R6Qf5ZiQJluFuzs5y98rq0S5q046lE6o3vVmJpEdwjeSCJoET5CL4nTgkXyWvhm4eB8u/e66l3o0qbaSx8q9YYmT9EpRcl5TP4ThLBKETYdzVvg4exjQfektMatk5EyUpEIhZPXh5vXpJZesdfO9LJ8zTaHBsBjDPU7cdNgQMbebpataRi8A0el2/IJXl+E+olgAz5zC4i2O1Q=="}',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: '6424c353eaf78d000766e9510b125fba',
|
|
69
|
+
source: 'bitgo',
|
|
70
|
+
type: 'tss',
|
|
71
|
+
commonKeychain: '19bdfe2a4b498a05511381235a8892d54267807c4a3f654e310b938b8b424ff4adedbe92f4c146de641c67508a961324c8504cdf8e0c0acbb68d6104ccccd781',
|
|
72
|
+
verifiedVssProof: true,
|
|
73
|
+
isBitGo: true,
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
});
|
|
77
|
+
it('should return true when validating a well formatted address prefixed with 0x', async function () {
|
|
78
|
+
const address = '0xf941ae3cbe5645dccc15da8346b533f7f91f202089a5521653c062b2ff10b304';
|
|
79
|
+
basecoin.isValidAddress(address).should.equal(true);
|
|
80
|
+
});
|
|
81
|
+
it('should return false when validating an old address', async function () {
|
|
82
|
+
const address = '0x2959bfc3fdb7dc23fed8deba2fafb70f3e606a59';
|
|
83
|
+
basecoin.isValidAddress(address).should.equal(false);
|
|
84
|
+
});
|
|
85
|
+
it('should return false when validating an incorrectly formatted', async function () {
|
|
86
|
+
const address = 'wrongaddress';
|
|
87
|
+
basecoin.isValidAddress(address).should.equal(false);
|
|
88
|
+
});
|
|
89
|
+
it('should return true for isWalletAddress with valid address for index 4', async function () {
|
|
90
|
+
const newAddress = '0x3f4b2a95d9b696989814f02f899cee491b4d600b1b918e979caec307af4b8dfc';
|
|
91
|
+
const index = 4;
|
|
92
|
+
const params = { commonKeychain, address: newAddress, index, keychains };
|
|
93
|
+
(await basecoin.isWalletAddress(params)).should.equal(true);
|
|
94
|
+
});
|
|
95
|
+
it('should throw error for isWalletAddress when keychains is missing', async function () {
|
|
96
|
+
const address = '0x2959bfc3fdb7dc23fed8deba2fafb70f3e606a59';
|
|
97
|
+
const index = 0;
|
|
98
|
+
const params = { commonKeychain, address, index };
|
|
99
|
+
await assert_1.default.rejects(async () => basecoin.isWalletAddress(params));
|
|
100
|
+
});
|
|
101
|
+
it('should throw error for isWalletAddress when new address is invalid', async function () {
|
|
102
|
+
const wrongAddress = 'badAddress';
|
|
103
|
+
const index = 0;
|
|
104
|
+
const params = { commonKeychain, address: wrongAddress, index };
|
|
105
|
+
await assert_1.default.rejects(async () => basecoin.isWalletAddress(params), {
|
|
106
|
+
message: `invalid address: ${wrongAddress}`,
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9pb3RhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0JBQWdCO0FBQ2hCLDhDQUEwRDtBQUMxRCw0Q0FBMEM7QUFDMUMsbUNBQWlDO0FBQ2pDLG9EQUE0QjtBQUM1Qiw0Q0FBMkQ7QUFFM0QsUUFBUSxDQUFDLE9BQU8sRUFBRTtJQUNoQixJQUFJLEtBQW1CLENBQUM7SUFDeEIsSUFBSSxRQUFRLENBQUM7SUFFYixNQUFNLENBQUM7UUFDTCxLQUFLLEdBQUcsb0JBQVMsQ0FBQyxRQUFRLENBQUMsa0JBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxVQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUU7UUFDakMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUF1QixDQUFDO1FBQzVELE1BQU0sWUFBWSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUF1QixDQUFDO1FBRTlELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxD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QUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2hFLE1BQU0sZ0JBQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNqRSxPQUFPLEVBQUUsb0JBQW9CLFlBQVksRUFBRTthQUM1QyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBUZXN0Qml0R28sIFRlc3RCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCB7IElvdGEgfSBmcm9tICcuLi8uLi9zcmMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgY29pbnMsIEdhc1RhbmtBY2NvdW50Q29pbiB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcblxuZGVzY3JpYmUoJ0lPVEE6JywgZnVuY3Rpb24gKCkge1xuICBsZXQgYml0Z286IFRlc3RCaXRHb0FQSTtcbiAgbGV0IGJhc2Vjb2luO1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAnbW9jaycgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCdpb3RhJywgSW90YS5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCd0aW90YScsIElvdGEuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIGJhc2Vjb2luID0gYml0Z28uY29pbigndGlvdGEnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHJpZ2h0IGluZm8nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgaW90YSA9IGJpdGdvLmNvaW4oJ2lvdGEnKTtcbiAgICBjb25zdCB0aW90YSA9IGJpdGdvLmNvaW4oJ3Rpb3RhJyk7XG4gICAgY29uc3QgaW90YVN0YXRpY3MgPSBjb2lucy5nZXQoJ2lvdGEnKSBhcyBHYXNUYW5rQWNjb3VudENvaW47XG4gICAgY29uc3QgdGlvdGFTdGF0aWNzID0gY29pbnMuZ2V0KCd0aW90YScpIGFzIEdhc1RhbmtBY2NvdW50Q29pbjtcblxuICAgIGlvdGEuZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoJ2lvdGEnKTtcbiAgICBpb3RhLmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnaW90YScpO1xuICAgIGlvdGEuZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ0lvdGEnKTtcbiAgICBpb3RhLmdldEJhc2VGYWN0b3IoKS5zaG91bGQuZXF1YWwoMWU5KTtcblxuICAgIHRpb3RhLmdldENoYWluKCkuc2hvdWxkLmVxdWFsKCd0aW90YScpO1xuICAgIHRpb3RhLmdldEZhbWlseSgpLnNob3VsZC5lcXVhbCgnaW90YScpO1xuICAgIHRpb3RhLmdldEZ1bGxOYW1lKCkuc2hvdWxkLmVxdWFsKCdUZXN0bmV0IElvdGEnKTtcbiAgICB0aW90YS5nZXRCYXNlRmFjdG9yKCkuc2hvdWxkLmVxdWFsKDFlOSk7XG5cbiAgICBpb3RhU3RhdGljcy5nYXNUYW5rTG93QmFsYW5jZUFsZXJ0RmFjdG9yLnNob3VsZC5lcXVhbCg4MCk7XG4gICAgdGlvdGFTdGF0aWNzLmdhc1RhbmtMb3dCYWxhbmNlQWxlcnRGYWN0b3Iuc2hvdWxkLmVxdWFsKDgwKTtcbiAgICBpb3RhU3RhdGljcy5nYXNUYW5rTWluQmFsYW5jZVJlY29tbWVuZGF0aW9uRmFjdG9yLnNob3VsZC5lcXVhbCgyMDApO1xuICAgIHRpb3RhU3RhdGljcy5nYXNUYW5rTWluQmFsYW5jZVJlY29tbWVuZGF0aW9uRmFjdG9yLnNob3VsZC5lcXVhbCgyMDApO1xuICB9KTtcblxuICBpdCgnaXMgdmFsaWQgcHViJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIHdpdGggMHggcHJlZml4XG4gICAgYmFzZWNvaW4uaXNWYWxpZFB1YignMHg5YjRlOTYwODZkMTExNTAwMjU5ZjliMzg2ODBiMDUwOWE0MDVjMTkwNGRhMTg5NzY0NTVhMjBjNjkxZDNiYjA3Jykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICAvLyB3aXRob3V0IDB4IHByZWZpeFxuICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoJzliNGU5NjA4NmQxMTE1MDAyNTlmOWIzODY4MGIwNTA5YTQwNWMxOTA0ZGExODk3NjQ1NWEyMGM2OTFkM2JiMDcnKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdBZGRyZXNzIFZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgbGV0IGtleWNoYWlucztcbiAgICBsZXQgY29tbW9uS2V5Y2hhaW47XG5cbiAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgY29tbW9uS2V5Y2hhaW4gPVxuICAgICAgICAnMTliZGZlMmE0YjQ5OGEwNTUxMTM4MTIzNWE4ODkyZDU0MjY3ODA3YzRhM2Y2NTRlMzEwYjkzOGI4YjQyNGZmNGFkZWRiZTkyZjRjMTQ2ZGU2NDFjNjc1MDhhOTYxMzI0Yzg1MDRjZGY4ZTBjMGFjYmI2OGQ2MTA0Y2NjY2Q3ODEnO1xuICAgICAga2V5Y2hhaW5zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICc2NDI0YzM1M2VhZjc4ZDAwMDc2NmU5NTk0OTg2ODQ2OCcsXG4gICAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgICAgdHlwZTogJ3RzcycsXG4gICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAnMTliZGZlMmE0YjQ5OGEwNTUxMTM4MTIzNWE4ODkyZDU0MjY3ODA3YzRhM2Y2NTRlMzEwYjkzOGI4YjQyNGZmNGFkZWRiZTkyZjRjMTQ2ZGU2NDFjNjc1MDhhOTYxMzI0Yzg1MDRjZGY4ZTBjMGFjYmI2OGQ2MTA0Y2NjY2Q3ODEnLFxuICAgICAgICAgIGVuY3J5cHRlZFBydjpcbiAgICAgICAgICAgICd7XCJpdlwiOlwiY1pkNWk3TDRSeHR3ckFMVzJySzdVQT09XCIsXCJ2XCI6MSxcIml0ZXJcIjoxMDAwMCxcImtzXCI6MjU2LFwidHNcIjo2NCxcIm1vZGVcIjpcImNjbVwiLFwiYWRhdGFcIjpcIlwiLFwiY2lwaGVyXCI6XCJhZXNcIixcInNhbHRcIjpcIjV6Z29IMUJkM0Z3PVwiLFwiY3RcIjpcIjl2VmxuWEZSdHJNOUZWRW8rZDJjaGJHSGxNOWxGWmVtdWVCdUFzM0JJa1BvMzNGbzdqend3Tksva0lXa0V5ZytObUVCZDVJYXFBUzE1N252dnZ3enpzbU1XbFFkVXo5cWJtWE52M3BnOTg3Y1hGUjA4ZXhTKzR1aHdQMVlOT2pKVFJ2Uk5jTzlacUhiNDZkNGZteUoveUM5L3N1c0NnZTdyL0VzYmFONUMzYWZ2MWR6eWJ1cTkxMkZ3YVFFbFpMWVlwNUJJQ3VkRk9NWjlrMFVETWZLTS9QTURrSDdXZXhvR0hyOUdLcS9iZ0NIMkIzOVRaWnlIS1U2VXk0N2xYZXAyczZoMERyTXdIT3JubWlMM0Raak9qODhZbnZwaGx6eHVvNGVPbEQyVUhpYTIrbnZJYUlTWXMyOVByMERBdlJFdXRjaHZjQnBFeGoxa1dXUHY3aFFZcnY4RjBOQWRhdHNiV2wzdyt4S3lmaU1LbzFVU2xyd3lKdml5cEd0UXRYT0p5dzBYUE4wcnYyK0w1bFc4QmJqcHpIZllZTjEzZkpUZWRsR1RGaGhrelZ0YmJQQUtFMDJreDd6Q0pjallhaWV4ZFNUc3JETFNjWU5UOS9KaGR0MjdLcHNvb2Vod1ZvaExmU0t6NHZiRmZSdTJNUFp3My8rYy9oZmlKTmd0ejZlc1dibnhHcmNFOFUySXdQWUNhSytHaGs0RGNxV05Jbmk1OVJJNUI1a0FzUU9Ub0lJNDBxUE41MTB1VGd4QlNQTzdxN01IZ2t4ZGQ0Q3FCcStvanI5ajBQN29hbzhFNVkrQ0JESnJvakRvQ2gxb0NDRFc5dm8yZFhsVmNEOFNJYnc3VS85QWZ2RWJBNHh5RS81bWQxTTdDSXdMbldzMlludjBZdGFLb3FoZFM5eDZGbUhsTURoTi9ES0hpbnJ3bW93dHJUVDgyZk9rcE81ZzlzYVNtZ1U3UXkzZ0x0OHQrVndkRXllRmVRVUtSU3ljaThxZ3FYUWFaSWc0K2FYZ2FTT25sQ0ZNdG1COGVrWXhFaFRZNXV6UmZyTmdTNHMxUWVxRkJwTnRVRitZZGkyOTdwYlZYbkpvWEFOK1NWV2Q4MEdDeCt5STJkcFZDODlrM3JPV0s5V2V5cWxuenVMSldwMlJJT0I5Y2RXOEdGdi9mTitRQUpwWWVWeE9FNCtuWkRzS25zajhuS2NnOXQ0RGx4MUc2Z0xNMS9WcTlZeE5MYnV6dVJDMGFzVVl2ZE1ub012c3ptcG0rK1R4bmRZaXNnTllzY3BaU296N3d2Y2F6Sk5FUGZoUFZqRWtkNnRVVXVONEdNMzVIMERtS0NVUU5UK2E2QjZobUhsVFp2anhpeUdBZzViWTU5aGRqdkorMjJRZHVhemxFRUM2TEkzSHJBN3VLMFRwcGxXelMxdENJRnZUTVVoajY1REVabU5KMitaWTliUTR2c01mK0RSUjNPT0c0dCtETWxOZmpPZDN6TnYzUW9ZOTVCamZXcHJ5RndQekRxN2JDUDY3SkRzb2o3ajJUWTVGUlNyUmtENzdIMEV3bHV4MmNXZmpSVHdjTUhjZFF4eHVWME9QMGFOakdEanliRk5cIn0nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICc2NDI0YzM1M2VhZjc4ZDAwMDc2NmU5NjEzN2Q0NDA0YicsXG4gICAgICAgICAgc291cmNlOiAnYmFja3VwJyxcbiAgICAgICAgICB0eXBlOiAndHNzJyxcbiAgICAgICAgICBjb21tb25LZXljaGFpbjpcbiAgICAgICAgICAgICcxOWJkZmUyYTRiNDk4YTA1NTExMzgxMjM1YTg4OTJkNTQyNjc4MDdjNGEzZjY1NGUzMTBiOTM4YjhiNDI0ZmY0YWRlZGJlOTJmNGMxNDZkZTY0MWM2NzUwOGE5NjEzMjRjODUwNGNkZjhlMGMwYWNiYjY4ZDYxMDRjY2NjZDc4MScsXG4gICAgICAgICAgZW5jcnlwdGVkUHJ2OlxuICAgICAgICAgICAgJ3tcIml2XCI6XCJ2aTBkUGVmL1J4N2tHL3BSeVNRaTZRPT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiOWVmaFFzaUV2VnM9XCIsXCJjdFwiOlwiR3c2YXR2ZjZneEt6c2p0bDN4c2VpcE8zckF4cDFtQXo3WXUxaWhGc2k1L2xmMnZNWmVnQXBnWngrcHlJTEZTOUtLTEhiTkYzVTZXZ1NZZHJyMnQ0dnpkTHNYa0gxV0l4ZkhTK2NkMkM1TjU5eUFEWkRuUEpCVDZwdi9JUnZhWWVsUDBDazNuSVlRMmhTTW04b3ArVk9XQy9TekhlaDdzbFlEcXdFSFRHYW4wV2lnZnZrMXlSZDdDQ0pUYUVBb21uYy80ZUZpMk5ZM1gzZ3QvM29weTlJQWdrbm53VUZvaG45NkVXcEVRMEY2cGJ6SC9aOFZGNmdGK0RVY3JyQnlBeEV4VVBuSFFaaUZrM1lIVS92VlY0RnhCVS9tVkFFOHhCc0JuNXVsNWU1U1VNUGZjN1RCdUpXdjRCQnlUTmc5eERTaEYvOTFZeDJuYmZVbTVkOVFtTThscEtnenpRdmNLOFBPQVBrODdnUkN1S25zR2g1dk5TMFVwcGtIYytvY2Z6UlFsR0E2anplN1F5eVFPMHJNajVMeThrV2p3azJ2SVN2S1lIWVMxTlI3VlU1NDlVSVhvN05YamF0dW5LU2MzK0lyZW9SVUhJc2hpYUxnNmhsK3B4Q0N1YzBxUTQzVjBtZElmQ2pUTjhna0dXTE5rOFI3dEFHUHo5anlhcFFQY1BFR0hnRXowQVRJaTZ5TU5XQ3NpYlMyZUxpRTF1VkVKT05vTTRsazZGUGwzUTJDSGJXMk1lRWJxalk4aGJhdzE4bU5iMnhTQkgvRndwaWlhbCtUdmkyaW1xZ25DTzRacE85YmxsS2Z0WlBjUXkwc3ROK2VHQmxiNXVmeWZsS2tEU2lDaEhZcm9HakVwbWlGaWNkZGU0OGNKc3pGNTJ1S05uZjFxNjdmQTkvUzJGQUhRYWIzRVhvanhIMkdiaytra1YyaC9UWUtGRlpTV0Mzdmk0ZThtTyt2ak1VY1IwQWRzZ1BGeUVJejBTQ0d1YmEzQ25UTE5kRXVad3NhdUFlSGt4MnZVVG5SZ0pQVmdOZWV1WG1zVkc3NlN5MmdnSkh1YWxzMEhqOFUyWGRhMHFPMVJ1RmZvQ1dmc3M5d242SEdSd1BQa2hTQi84b05ndUFxbVJWR0trZDhad3QzSXZyVGQ5ZmswL3JGRkRKS0d6N1d5TkhrWWdVbU5pR2NJdEQxMnYwang3Rlo1MkVKemwzQXYxUnlKVVFLMTgrOEVZUGgzU0dpVTlkdDdWWDBhRjB1bzZKb3VLaE9lbGRVdk1QK0F1Z1F6OGZVY2x3VFFzYmJvVmcyN1l4bzBEeUFUVndUaFc1YTU2UjZRZjVaaVFKbHVGdXpzNXk5OHJxMFM1cTA0NmxFNm8zdlZtSnBFZHdqZVNDSm9FVDVDTDRuVGdrWHlXdmhtNGVCOHUvZTY2bDNvMHFiYVN4OHE5WVltVDlFcFJjbDVUUDRUaExCS0VUWWR6VnZnNGV4alFmZWt0TWF0azVFeVVwRUloWlBYaDV2WHBKWmVzZGZPOUxKOHpUYUhCc0JqRFBVN2NkTmdRTWJlYnBhdGFSaThBMGVsMi9JSlhsK0Urb2xnQXo1ekM0aTJPMVE9PVwifScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJzY0MjRjMzUzZWFmNzhkMDAwNzY2ZTk1MTBiMTI1ZmJhJyxcbiAgICAgICAgICBzb3VyY2U6ICdiaXRnbycsXG4gICAgICAgICAgdHlwZTogJ3RzcycsXG4gICAgICAgICAgY29tbW9uS2V5Y2hhaW46XG4gICAgICAgICAgICAnMTliZGZlMmE0YjQ5OGEwNTUxMTM4MTIzNWE4ODkyZDU0MjY3ODA3YzRhM2Y2NTRlMzEwYjkzOGI4YjQyNGZmNGFkZWRiZTkyZjRjMTQ2ZGU2NDFjNjc1MDhhOTYxMzI0Yzg1MDRjZGY4ZTBjMGFjYmI2OGQ2MTA0Y2NjY2Q3ODEnLFxuICAgICAgICAgIHZlcmlmaWVkVnNzUHJvb2Y6IHRydWUsXG4gICAgICAgICAgaXNCaXRHbzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsaWRhdGluZyBhIHdlbGwgZm9ybWF0dGVkIGFkZHJlc3MgcHJlZml4ZWQgd2l0aCAweCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnMHhmOTQxYWUzY2JlNTY0NWRjY2MxNWRhODM0NmI1MzNmN2Y5MWYyMDIwODlhNTUyMTY1M2MwNjJiMmZmMTBiMzA0JztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsaWRhdGluZyBhbiBvbGQgYWRkcmVzcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFkZHJlc3MgPSAnMHgyOTU5YmZjM2ZkYjdkYzIzZmVkOGRlYmEyZmFmYjcwZjNlNjA2YTU5JztcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbGlkYXRpbmcgYW4gaW5jb3JyZWN0bHkgZm9ybWF0dGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWRkcmVzcyA9ICd3cm9uZ2FkZHJlc3MnO1xuICAgICAgYmFzZWNvaW4uaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIGlzV2FsbGV0QWRkcmVzcyB3aXRoIHZhbGlkIGFkZHJlc3MgZm9yIGluZGV4IDQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBuZXdBZGRyZXNzID0gJzB4M2Y0YjJhOTVkOWI2OTY5ODk4MTRmMDJmODk5Y2VlNDkxYjRkNjAwYjFiOTE4ZTk3OWNhZWMzMDdhZjRiOGRmYyc7XG4gICAgICBjb25zdCBpbmRleCA9IDQ7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY29tbW9uS2V5Y2hhaW4sIGFkZHJlc3M6IG5ld0FkZHJlc3MsIGluZGV4LCBrZXljaGFpbnMgfTtcbiAgICAgIChhd2FpdCBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaXNXYWxsZXRBZGRyZXNzIHdoZW4ga2V5Y2hhaW5zIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBhZGRyZXNzID0gJzB4Mjk1OWJmYzNmZGI3ZGMyM2ZlZDhkZWJhMmZhZmI3MGYzZTYwNmE1OSc7XG4gICAgICBjb25zdCBpbmRleCA9IDA7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHsgY29tbW9uS2V5Y2hhaW4sIGFkZHJlc3MsIGluZGV4IH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpc1dhbGxldEFkZHJlc3Mgd2hlbiBuZXcgYWRkcmVzcyBpcyBpbnZhbGlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd3JvbmdBZGRyZXNzID0gJ2JhZEFkZHJlc3MnO1xuICAgICAgY29uc3QgaW5kZXggPSAwO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7IGNvbW1vbktleWNoYWluLCBhZGRyZXNzOiB3cm9uZ0FkZHJlc3MsIGluZGV4IH07XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhhc3luYyAoKSA9PiBiYXNlY29pbi5pc1dhbGxldEFkZHJlc3MocGFyYW1zKSwge1xuICAgICAgICBtZXNzYWdlOiBgaW52YWxpZCBhZGRyZXNzOiAke3dyb25nQWRkcmVzc31gLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../test/unit/keyPair.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const src_1 = require("../../src");
|
|
8
|
+
const utils_1 = __importDefault(require("../../src/lib/utils"));
|
|
9
|
+
const should_1 = __importDefault(require("should"));
|
|
10
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
11
|
+
const sdk_lib_mpc_1 = require("@bitgo/sdk-lib-mpc");
|
|
12
|
+
const sdk_test_1 = require("@bitgo/sdk-test");
|
|
13
|
+
const sdk_api_1 = require("@bitgo/sdk-api");
|
|
14
|
+
describe('Iota KeyPair', function () {
|
|
15
|
+
let rootKeychain;
|
|
16
|
+
let rootPublicKey;
|
|
17
|
+
let MPC;
|
|
18
|
+
let hdTree;
|
|
19
|
+
let bitgo;
|
|
20
|
+
let basecoin;
|
|
21
|
+
before(async () => {
|
|
22
|
+
hdTree = await sdk_lib_mpc_1.Ed25519Bip32HdTree.initialize();
|
|
23
|
+
MPC = await sdk_core_1.Eddsa.initialize(hdTree);
|
|
24
|
+
const A = MPC.keyShare(1, 2, 3);
|
|
25
|
+
const B = MPC.keyShare(2, 2, 3);
|
|
26
|
+
const C = MPC.keyShare(3, 2, 3);
|
|
27
|
+
const A_combine = MPC.keyCombine(A.uShare, [B.yShares[1], C.yShares[1]]);
|
|
28
|
+
const commonKeychain = A_combine.pShare.y + A_combine.pShare.chaincode;
|
|
29
|
+
rootKeychain = MPC.deriveUnhardened(commonKeychain, 'm/0');
|
|
30
|
+
rootPublicKey = Buffer.from(rootKeychain, 'hex').slice(0, 32).toString('hex');
|
|
31
|
+
bitgo = sdk_test_1.TestBitGo.decorate(sdk_api_1.BitGoAPI, { env: 'mock' });
|
|
32
|
+
bitgo.safeRegister('tiota', src_1.Iota.createInstance);
|
|
33
|
+
basecoin = bitgo.coin('tiota');
|
|
34
|
+
});
|
|
35
|
+
describe('should create a valid KeyPair', () => {
|
|
36
|
+
it('from an empty value', async () => {
|
|
37
|
+
const keyPair = new src_1.KeyPair();
|
|
38
|
+
should_1.default.exists(keyPair.getKeys().prv);
|
|
39
|
+
should_1.default.exists(keyPair.getKeys().pub);
|
|
40
|
+
const address = await utils_1.default.getAddressFromPublicKey(keyPair.getKeys().pub);
|
|
41
|
+
console.log('address:', address);
|
|
42
|
+
should_1.default.exists(address);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('Keypair from derived Public Key', () => {
|
|
46
|
+
it('should create keypair with just derived public key', () => {
|
|
47
|
+
const keyPair = new src_1.KeyPair({ pub: rootPublicKey });
|
|
48
|
+
keyPair.getKeys().pub.should.equal(rootPublicKey);
|
|
49
|
+
});
|
|
50
|
+
it('should derived ed25519 public key should be valid', () => {
|
|
51
|
+
utils_1.default.isValidPublicKey(rootPublicKey).should.be.true();
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('Keypair from random seed', () => {
|
|
55
|
+
it('should generate a keypair from random seed', function () {
|
|
56
|
+
const keyPair = basecoin.generateKeyPair();
|
|
57
|
+
keyPair.should.have.property('pub');
|
|
58
|
+
keyPair.should.have.property('prv');
|
|
59
|
+
basecoin.isValidPub(keyPair.pub).should.equal(true);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('should fail to create a KeyPair', function () {
|
|
63
|
+
it('from an invalid public key', () => {
|
|
64
|
+
const source = {
|
|
65
|
+
pub: '01D63D',
|
|
66
|
+
};
|
|
67
|
+
assert_1.default.throws(() => new src_1.KeyPair(source));
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1DQUEwQztBQUMxQyxnRUFBd0M7QUFDeEMsb0RBQTRCO0FBQzVCLDhDQUF3QztBQUN4QyxvREFBZ0U7QUFDaEUsOENBQTBEO0FBQzFELDRDQUEwQztBQUUxQyxRQUFRLENBQUMsY0FBYyxFQUFFO0lBQ3ZCLElBQUksWUFBWSxDQUFDO0lBQ2pCLElBQUksYUFBYSxDQUFDO0lBQ2xCLElBQUksR0FBVSxDQUFDO0lBQ2YsSUFBSSxNQUFjLENBQUM7SUFDbkIsSUFBSSxLQUFtQixDQUFDO0lBQ3hCLElBQUksUUFBUSxDQUFDO0lBRWIsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2hCLE1BQU0sR0FBRyxNQUFNLGdDQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLEdBQUcsR0FBRyxNQUFNLGdCQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekUsTUFBTSxjQUFj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QUFFLFFBQVE7YUFDZCxDQUFDO1lBRUYsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxhQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBLZXlQYWlyLCBJb3RhIH0gZnJvbSAnLi4vLi4vc3JjJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IEVkZHNhIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEVkMjU1MTlCaXAzMkhkVHJlZSwgSERUcmVlIH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCB7IFRlc3RCaXRHbywgVGVzdEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnQGJpdGdvL3Nkay1hcGknO1xuXG5kZXNjcmliZSgnSW90YSBLZXlQYWlyJywgZnVuY3Rpb24gKCkge1xuICBsZXQgcm9vdEtleWNoYWluO1xuICBsZXQgcm9vdFB1YmxpY0tleTtcbiAgbGV0IE1QQzogRWRkc2E7XG4gIGxldCBoZFRyZWU6IEhEVHJlZTtcbiAgbGV0IGJpdGdvOiBUZXN0Qml0R29BUEk7XG4gIGxldCBiYXNlY29pbjtcblxuICBiZWZvcmUoYXN5bmMgKCkgPT4ge1xuICAgIGhkVHJlZSA9IGF3YWl0IEVkMjU1MTlCaXAzMkhkVHJlZS5pbml0aWFsaXplKCk7XG4gICAgTVBDID0gYXdhaXQgRWRkc2EuaW5pdGlhbGl6ZShoZFRyZWUpO1xuICAgIGNvbnN0IEEgPSBNUEMua2V5U2hhcmUoMSwgMiwgMyk7XG4gICAgY29uc3QgQiA9IE1QQy5rZXlTaGFyZSgyLCAyLCAzKTtcbiAgICBjb25zdCBDID0gTVBDLmtleVNoYXJlKDMsIDIsIDMpO1xuXG4gICAgY29uc3QgQV9jb21iaW5lID0gTVBDLmtleUNvbWJpbmUoQS51U2hhcmUsIFtCLnlTaGFyZXNbMV0sIEMueVNoYXJlc1sxXV0pO1xuXG4gICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPSBBX2NvbWJpbmUucFNoYXJlLnkgKyBBX2NvbWJpbmUucFNoYXJlLmNoYWluY29kZTtcbiAgICByb290S2V5Y2hhaW4gPSBNUEMuZGVyaXZlVW5oYXJkZW5lZChjb21tb25LZXljaGFpbiwgJ20vMCcpO1xuICAgIHJvb3RQdWJsaWNLZXkgPSBCdWZmZXIuZnJvbShyb290S2V5Y2hhaW4sICdoZXgnKS5zbGljZSgwLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIGJpdGdvID0gVGVzdEJpdEdvLmRlY29yYXRlKEJpdEdvQVBJLCB7IGVudjogJ21vY2snIH0pO1xuICAgIGJpdGdvLnNhZmVSZWdpc3RlcigndGlvdGEnLCBJb3RhLmNyZWF0ZUluc3RhbmNlKTtcbiAgICBiYXNlY29pbiA9IGJpdGdvLmNvaW4oJ3Rpb3RhJyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgY3JlYXRlIGEgdmFsaWQgS2V5UGFpcicsICgpID0+IHtcbiAgICBpdCgnZnJvbSBhbiBlbXB0eSB2YWx1ZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcigpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wcnYpO1xuICAgICAgc2hvdWxkLmV4aXN0cyhrZXlQYWlyLmdldEtleXMoKS5wdWIpO1xuICAgICAgY29uc3QgYWRkcmVzcyA9IGF3YWl0IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGtleVBhaXIuZ2V0S2V5cygpLnB1Yik7XG4gICAgICBjb25zb2xlLmxvZygnYWRkcmVzczonLCBhZGRyZXNzKTtcbiAgICAgIHNob3VsZC5leGlzdHMoYWRkcmVzcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdLZXlwYWlyIGZyb20gZGVyaXZlZCBQdWJsaWMgS2V5JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY3JlYXRlIGtleXBhaXIgd2l0aCBqdXN0IGRlcml2ZWQgcHVibGljIGtleScsICgpID0+IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHB1Yjogcm9vdFB1YmxpY0tleSB9KTtcbiAgICAgIGtleVBhaXIuZ2V0S2V5cygpLnB1Yi5zaG91bGQuZXF1YWwocm9vdFB1YmxpY0tleSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRlcml2ZWQgZWQyNTUxOSBwdWJsaWMga2V5IHNob3VsZCBiZSB2YWxpZCcsICgpID0+IHtcbiAgICAgIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocm9vdFB1YmxpY0tleSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0tleXBhaXIgZnJvbSByYW5kb20gc2VlZCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEga2V5cGFpciBmcm9tIHJhbmRvbSBzZWVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qga2V5UGFpciA9IGJhc2Vjb2luLmdlbmVyYXRlS2V5UGFpcigpO1xuICAgICAga2V5UGFpci5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHViJyk7XG4gICAgICBrZXlQYWlyLnNob3VsZC5oYXZlLnByb3BlcnR5KCdwcnYnKTtcbiAgICAgIGJhc2Vjb2luLmlzVmFsaWRQdWIoa2V5UGFpci5wdWIpLnNob3VsZC5lcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBmYWlsIHRvIGNyZWF0ZSBhIEtleVBhaXInLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2Zyb20gYW4gaW52YWxpZCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlID0ge1xuICAgICAgICBwdWI6ICcwMUQ2M0QnLFxuICAgICAgfTtcblxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgS2V5UGFpcihzb3VyY2UpKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const testData = __importStar(require("../resources/iota"));
|
|
40
|
+
const should_1 = __importDefault(require("should"));
|
|
41
|
+
const utils_1 = __importDefault(require("../../src/lib/utils"));
|
|
42
|
+
describe('Iota util library', function () {
|
|
43
|
+
describe('isValidAddress', function () {
|
|
44
|
+
it('should succeed to validate addresses', function () {
|
|
45
|
+
for (const address of testData.addresses.validAddresses) {
|
|
46
|
+
should_1.default.equal(utils_1.default.isValidAddress(address), true);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
it('should fail to validate invalid addresses', function () {
|
|
50
|
+
for (const address of testData.addresses.invalidAddresses) {
|
|
51
|
+
should_1.default.doesNotThrow(() => utils_1.default.isValidAddress(address));
|
|
52
|
+
should_1.default.equal(utils_1.default.isValidAddress(address), false);
|
|
53
|
+
}
|
|
54
|
+
// @ts-expect-error Testing for missing param, should not throw an error
|
|
55
|
+
should_1.default.doesNotThrow(() => utils_1.default.isValidAddress(undefined));
|
|
56
|
+
// @ts-expect-error Testing for missing param, should return false
|
|
57
|
+
should_1.default.equal(utils_1.default.isValidAddress(undefined), false);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
it('is valid public key', function () {
|
|
61
|
+
// with 0x prefix
|
|
62
|
+
should_1.default.equal(false, utils_1.default.isValidPublicKey('0x413f7fa8beb54459e1e9ede3af3b12e5a4a3550390bb616da30dd72017701263'));
|
|
63
|
+
// without 0x prefix
|
|
64
|
+
should_1.default.equal(true, utils_1.default.isValidPublicKey('b2051899478edeb36a79d1d16dfec56dc3a6ebd29fbbbb4a4ef2dfaf46043355'));
|
|
65
|
+
});
|
|
66
|
+
it('is valid tx id', function () {
|
|
67
|
+
should_1.default.equal(false, utils_1.default.isValidTransactionId('0xff86b121181a43d03df52e8930785af3dda944ec87654cdba3a378ff518cd75b'));
|
|
68
|
+
should_1.default.equal(false, utils_1.default.isValidTransactionId('BftEk3BeKUWTj9uzVGntd4Ka16QZG8hUnr6KsAb7q7b53t'));
|
|
69
|
+
should_1.default.equal(true, utils_1.default.isValidTransactionId('BftEk3BeKUWTj9uzVGntd4Ka16QZG8hUnr6KsAb7q7bt'));
|
|
70
|
+
});
|
|
71
|
+
it('is valid block id', function () {
|
|
72
|
+
should_1.default.equal(false, utils_1.default.isValidBlockId('0x9ac6a0c313c4a0563a169dad29f1d018647683be54a314ed229a2693293dfc98'));
|
|
73
|
+
should_1.default.equal(false, utils_1.default.isValidBlockId('GZXZvvLS3ZnuE4E9CxQJJ2ij5xeNsvUXdAK56VrPCQKrPz'));
|
|
74
|
+
should_1.default.equal(true, utils_1.default.isValidBlockId('GZXZvvLS3ZnuE4E9CxQJJ2ij5xeNsvUXdAKVrPCQKrPz'));
|
|
75
|
+
});
|
|
76
|
+
it('is valid signature', function () {
|
|
77
|
+
should_1.default.equal(false, utils_1.default.isValidSignature('0x9ac6a0c313c4a0563a169dad29f1d018647683be54a314ed229a2693293dfc98'));
|
|
78
|
+
should_1.default.equal(false, utils_1.default.isValidSignature('goppBTDgLuBbcU5tP90n3igvZGHmcE23HCoxLfdJwOCcbyztVh9r0TPacJRXmjZ6'));
|
|
79
|
+
should_1.default.equal(true, utils_1.default.isValidSignature('iXrcUjgQgpYUsa7O90KZicdTmIdJSjB99+tJW6l6wPCqI/lUTou6sQ2sLoZgC0n4qQKX+vFDz+lBIXl7J/ZgCg=='));
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0REFBOEM7QUFDOUMsb0RBQTRCO0FBQzVCLGdFQUF3QztBQUV4QyxRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsUUFBUSxDQUFDLGdCQUFnQixFQUFFO1FBQ3pCLEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRTtZQUN6QyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3hELGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDJDQUEyQyxFQUFFO1lBQzlDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxRCxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELHdFQUF3RTtZQUN4RSxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDM0Qsa0VBQWtFO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxxQkFBcUIsRUFBRTtRQUN4QixpQkFBaUI7UUFDakIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDLENBQUM7UUFDbEgsb0JBQW9CO1FBQ3BCLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFLLENBQUMsZ0JBQWdCLENBQUMsa0VBQWtFLENBQUMsQ0FBQyxDQUFDO0lBQ2pILENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdCQUFnQixFQUFFO1FBQ25CLGdCQUFNLENBQUMsS0FBSyxDQUNWLEtBQUssRUFDTCxlQUFLLENBQUMsb0JBQW9CLENBQUMsb0VBQW9FLENBQUMsQ0FDakcsQ0FBQztRQUNGLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxlQUFLLENBQUMsb0JBQW9CLENBQUMsZ0RBQWdELENBQUMsQ0FBQyxDQUFDO1FBQ2xHLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFLLENBQUMsb0JBQW9CLENBQUMsOENBQThDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1CQUFtQixFQUFFO1FBQ3RCLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxlQUFLLENBQUMsY0FBYyxDQUFDLG9FQUFvRSxDQUFDLENBQUMsQ0FBQztRQUNoSCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBSyxDQUFDLGNBQWMsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDLENBQUM7UUFDNUYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGVBQUssQ0FBQyxjQUFjLENBQUMsOENBQThDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9CQUFvQixFQUFFO1FBQ3ZCLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxlQUFLLENBQUMsZ0JBQWdCLENBQUMsb0VBQW9FLENBQUMsQ0FBQyxDQUFDO1FBQ2xILGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxlQUFLLENBQUMsZ0JBQWdCLENBQUMsa0VBQWtFLENBQUMsQ0FBQyxDQUFDO1FBQ2hILGdCQUFNLENBQUMsS0FBSyxDQUNWLElBQUksRUFDSixlQUFLLENBQUMsZ0JBQWdCLENBQUMsMEZBQTBGLENBQUMsQ0FDbkgsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvaW90YSc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmRlc2NyaWJlKCdJb3RhIHV0aWwgbGlicmFyeScsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ2lzVmFsaWRBZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc3VjY2VlZCB0byB2YWxpZGF0ZSBhZGRyZXNzZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2YgdGVzdERhdGEuYWRkcmVzc2VzLnZhbGlkQWRkcmVzc2VzKSB7XG4gICAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZhaWwgdG8gdmFsaWRhdGUgaW52YWxpZCBhZGRyZXNzZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2YgdGVzdERhdGEuYWRkcmVzc2VzLmludmFsaWRBZGRyZXNzZXMpIHtcbiAgICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKSwgZmFsc2UpO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUZXN0aW5nIGZvciBtaXNzaW5nIHBhcmFtLCBzaG91bGQgbm90IHRocm93IGFuIGVycm9yXG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHV0aWxzLmlzVmFsaWRBZGRyZXNzKHVuZGVmaW5lZCkpO1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUZXN0aW5nIGZvciBtaXNzaW5nIHBhcmFtLCBzaG91bGQgcmV0dXJuIGZhbHNlXG4gICAgICBzaG91bGQuZXF1YWwodXRpbHMuaXNWYWxpZEFkZHJlc3ModW5kZWZpbmVkKSwgZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnaXMgdmFsaWQgcHVibGljIGtleScsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyB3aXRoIDB4IHByZWZpeFxuICAgIHNob3VsZC5lcXVhbChmYWxzZSwgdXRpbHMuaXNWYWxpZFB1YmxpY0tleSgnMHg0MTNmN2ZhOGJlYjU0NDU5ZTFlOWVkZTNhZjNiMTJlNWE0YTM1NTAzOTBiYjYxNmRhMzBkZDcyMDE3NzAxMjYzJykpO1xuICAgIC8vIHdpdGhvdXQgMHggcHJlZml4XG4gICAgc2hvdWxkLmVxdWFsKHRydWUsIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoJ2IyMDUxODk5NDc4ZWRlYjM2YTc5ZDFkMTZkZmVjNTZkYzNhNmViZDI5ZmJiYmI0YTRlZjJkZmFmNDYwNDMzNTUnKSk7XG4gIH0pO1xuXG4gIGl0KCdpcyB2YWxpZCB0eCBpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBzaG91bGQuZXF1YWwoXG4gICAgICBmYWxzZSxcbiAgICAgIHV0aWxzLmlzVmFsaWRUcmFuc2FjdGlvbklkKCcweGZmODZiMTIxMTgxYTQzZDAzZGY1MmU4OTMwNzg1YWYzZGRhOTQ0ZWM4NzY1NGNkYmEzYTM3OGZmNTE4Y2Q3NWInKVxuICAgICk7XG4gICAgc2hvdWxkLmVxdWFsKGZhbHNlLCB1dGlscy5pc1ZhbGlkVHJhbnNhY3Rpb25JZCgnQmZ0RWszQmVLVVdUajl1elZHbnRkNEthMTZRWkc4aFVucjZLc0FiN3E3YjUzdCcpKTtcbiAgICBzaG91bGQuZXF1YWwodHJ1ZSwgdXRpbHMuaXNWYWxpZFRyYW5zYWN0aW9uSWQoJ0JmdEVrM0JlS1VXVGo5dXpWR250ZDRLYTE2UVpHOGhVbnI2S3NBYjdxN2J0JykpO1xuICB9KTtcblxuICBpdCgnaXMgdmFsaWQgYmxvY2sgaWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgc2hvdWxkLmVxdWFsKGZhbHNlLCB1dGlscy5pc1ZhbGlkQmxvY2tJZCgnMHg5YWM2YTBjMzEzYzRhMDU2M2ExNjlkYWQyOWYxZDAxODY0NzY4M2JlNTRhMzE0ZWQyMjlhMjY5MzI5M2RmYzk4JykpO1xuICAgIHNob3VsZC5lcXVhbChmYWxzZSwgdXRpbHMuaXNWYWxpZEJsb2NrSWQoJ0daWFp2dkxTM1pudUU0RTlDeFFKSjJpajV4ZU5zdlVYZEFLNTZWclBDUUtyUHonKSk7XG4gICAgc2hvdWxkLmVxdWFsKHRydWUsIHV0aWxzLmlzVmFsaWRCbG9ja0lkKCdHWlhadnZMUzNabnVFNEU5Q3hRSkoyaWo1eGVOc3ZVWGRBS1ZyUENRS3JQeicpKTtcbiAgfSk7XG5cbiAgaXQoJ2lzIHZhbGlkIHNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgICBzaG91bGQuZXF1YWwoZmFsc2UsIHV0aWxzLmlzVmFsaWRTaWduYXR1cmUoJzB4OWFjNmEwYzMxM2M0YTA1NjNhMTY5ZGFkMjlmMWQwMTg2NDc2ODNiZTU0YTMxNGVkMjI5YTI2OTMyOTNkZmM5OCcpKTtcbiAgICBzaG91bGQuZXF1YWwoZmFsc2UsIHV0aWxzLmlzVmFsaWRTaWduYXR1cmUoJ2dvcHBCVERnTHVCYmNVNXRQOTBuM2lndlpHSG1jRTIzSENveExmZEp3T0NjYnl6dFZoOXIwVFBhY0pSWG1qWjYnKSk7XG4gICAgc2hvdWxkLmVxdWFsKFxuICAgICAgdHJ1ZSxcbiAgICAgIHV0aWxzLmlzVmFsaWRTaWduYXR1cmUoJ2lYcmNVamdRZ3BZVXNhN085MEtaaWNkVG1JZEpTakI5OSt0Slc2bDZ3UENxSS9sVVRvdTZzUTJzTG9aZ0MwbjRxUUtYK3ZGRHorbEJJWGw3Si9aZ0NnPT0nKVxuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=
|