@bitgo/account-lib 27.11.1 → 27.11.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/test/resources/ed25519Deriver.d.ts +15 -0
- package/dist/test/resources/ed25519Deriver.d.ts.map +1 -0
- package/dist/test/resources/ed25519Deriver.js +18 -0
- package/dist/test/resources/testTransaction.d.ts +11 -0
- package/dist/test/resources/testTransaction.d.ts.map +1 -0
- package/dist/test/resources/testTransaction.js +19 -0
- package/dist/test/resources/testTransactionBuilder.d.ts +26 -0
- package/dist/test/resources/testTransactionBuilder.d.ts.map +1 -0
- package/dist/test/resources/testTransactionBuilder.js +47 -0
- package/dist/test/unit/coin/baseCoin/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/coin/baseCoin/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/coin/baseCoin/transactionBuilder.js +135 -0
- package/dist/test/unit/fixtures.d.ts +16 -0
- package/dist/test/unit/fixtures.d.ts.map +1 -0
- package/dist/test/unit/fixtures.js +43 -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 +13 -0
- package/dist/test/unit/keyPair/index.d.ts +2 -0
- package/dist/test/unit/keyPair/index.d.ts.map +1 -0
- package/dist/test/unit/keyPair/index.js +132 -0
- package/dist/test/unit/messageFactory.d.ts +2 -0
- package/dist/test/unit/messageFactory.d.ts.map +1 -0
- package/dist/test/unit/messageFactory.js +52 -0
- package/dist/test/unit/mpc/tss/ecdsa/ecdsa.d.ts +2 -0
- package/dist/test/unit/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
- package/dist/test/unit/mpc/tss/ecdsa/ecdsa.js +333 -0
- package/dist/test/unit/mpc/tss/eddsa/eddsa.d.ts +5 -0
- package/dist/test/unit/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
- package/dist/test/unit/mpc/tss/eddsa/eddsa.js +322 -0
- package/dist/test/unit/mpc/tss/fixtures/ecdsa.d.ts +130 -0
- package/dist/test/unit/mpc/tss/fixtures/ecdsa.d.ts.map +1 -0
- package/dist/test/unit/mpc/tss/fixtures/ecdsa.js +283 -0
- package/dist/test/unit/utils/crypto.d.ts +2 -0
- package/dist/test/unit/utils/crypto.d.ts.map +1 -0
- package/dist/test/unit/utils/crypto.js +60 -0
- package/dist/test/unit/utils/ed25519KeyDeriver.d.ts +2 -0
- package/dist/test/unit/utils/ed25519KeyDeriver.d.ts.map +1 -0
- package/dist/test/unit/utils/ed25519KeyDeriver.js +23 -0
- package/dist/test/unit/utils/index.d.ts +2 -0
- package/dist/test/unit/utils/index.d.ts.map +1 -0
- package/dist/test/unit/utils/index.js +61 -0
- package/dist/test/unit/utils/messages/index.d.ts +2 -0
- package/dist/test/unit/utils/messages/index.d.ts.map +1 -0
- package/dist/test/unit/utils/messages/index.js +51 -0
- package/dist/test/unit/verifyMessage.d.ts +2 -0
- package/dist/test/unit/verifyMessage.d.ts.map +1 -0
- package/dist/test/unit/verifyMessage.js +96 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +66 -63
- package/.mocharc.js +0 -10
- package/CHANGELOG.md +0 -1687
- package/DEVELOPER.md +0 -93
- package/resources/README.md +0 -17
- package/resources/cspr/contract/keys-manager.wasm +0 -0
- package/resources/dot/index.ts +0 -2
- package/resources/dot/mainnet.ts +0 -2
- package/resources/dot/westend.ts +0 -2
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const keys: {
|
|
2
|
+
testVec1: {
|
|
3
|
+
seed: string;
|
|
4
|
+
path: string;
|
|
5
|
+
chainCode: string;
|
|
6
|
+
prv: string;
|
|
7
|
+
};
|
|
8
|
+
testVec2: {
|
|
9
|
+
seed: string;
|
|
10
|
+
path: string;
|
|
11
|
+
chainCode: string;
|
|
12
|
+
prv: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=ed25519Deriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ed25519Deriver.d.ts","sourceRoot":"","sources":["../../../test/resources/ed25519Deriver.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI;;;;;;;;;;;;;CAahB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.keys = void 0;
|
|
4
|
+
exports.keys = {
|
|
5
|
+
testVec1: {
|
|
6
|
+
seed: '000102030405060708090a0b0c0d0e0f',
|
|
7
|
+
path: `m/0'/1'/2'/2'/1000000000'`,
|
|
8
|
+
chainCode: '68789923a0cac2cd5a29172a475fe9e0fb14cd6adb5ad98a3fa70333e7afa230',
|
|
9
|
+
prv: '8f94d394a8e8fd6b1bc2f3f49f5c47e385281d5c17e65324b0f62483e37e8793',
|
|
10
|
+
},
|
|
11
|
+
testVec2: {
|
|
12
|
+
seed: 'fffcf9f6f3f0edeae7e4e1dedbd8d5d2cfccc9c6c3c0bdbab7b4b1aeaba8a5a29f9c999693908d8a8784817e7b7875726f6c696663605d5a5754514e4b484542',
|
|
13
|
+
path: `m/0'/2147483647'/1'/2147483646'/2'`,
|
|
14
|
+
chainCode: '5d70af781f3a37b829f0d060924d5e960bdc02e85423494afc0b1a41bbe196d4',
|
|
15
|
+
prv: '551d333177df541ad876a60ea71f00447931c0a9da16f227c11ea080d7391b8d',
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWQyNTUxOURlcml2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3Jlc291cmNlcy9lZDI1NTE5RGVyaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLElBQUksR0FBRztJQUNsQixRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsa0NBQWtDO1FBQ3hDLElBQUksRUFBRSwyQkFBMkI7UUFDakMsU0FBUyxFQUFFLGtFQUFrRTtRQUM3RSxHQUFHLEVBQUUsa0VBQWtFO0tBQ3hFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLGtJQUFrSTtRQUN4SSxJQUFJLEVBQUUsb0NBQW9DO1FBQzFDLFNBQVMsRUFBRSxrRUFBa0U7UUFDN0UsR0FBRyxFQUFFLGtFQUFrRTtLQUN4RTtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qga2V5cyA9IHtcbiAgdGVzdFZlYzE6IHtcbiAgICBzZWVkOiAnMDAwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYnLFxuICAgIHBhdGg6IGBtLzAnLzEnLzInLzInLzEwMDAwMDAwMDAnYCxcbiAgICBjaGFpbkNvZGU6ICc2ODc4OTkyM2EwY2FjMmNkNWEyOTE3MmE0NzVmZTllMGZiMTRjZDZhZGI1YWQ5OGEzZmE3MDMzM2U3YWZhMjMwJyxcbiAgICBwcnY6ICc4Zjk0ZDM5NGE4ZThmZDZiMWJjMmYzZjQ5ZjVjNDdlMzg1MjgxZDVjMTdlNjUzMjRiMGY2MjQ4M2UzN2U4NzkzJyxcbiAgfSxcbiAgdGVzdFZlYzI6IHtcbiAgICBzZWVkOiAnZmZmY2Y5ZjZmM2YwZWRlYWU3ZTRlMWRlZGJkOGQ1ZDJjZmNjYzljNmMzYzBiZGJhYjdiNGIxYWVhYmE4YTVhMjlmOWM5OTk2OTM5MDhkOGE4Nzg0ODE3ZTdiNzg3NTcyNmY2YzY5NjY2MzYwNWQ1YTU3NTQ1MTRlNGI0ODQ1NDInLFxuICAgIHBhdGg6IGBtLzAnLzIxNDc0ODM2NDcnLzEnLzIxNDc0ODM2NDYnLzInYCxcbiAgICBjaGFpbkNvZGU6ICc1ZDcwYWY3ODFmM2EzN2I4MjlmMGQwNjA5MjRkNWU5NjBiZGMwMmU4NTQyMzQ5NGFmYzBiMWE0MWJiZTE5NmQ0JyxcbiAgICBwcnY6ICc1NTFkMzMzMTc3ZGY1NDFhZDg3NmE2MGVhNzFmMDA0NDc5MzFjMGE5ZGExNmYyMjdjMTFlYTA4MGQ3MzkxYjhkJyxcbiAgfSxcbn07XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseKey, BaseTransaction } from '@bitgo/sdk-core';
|
|
2
|
+
/**
|
|
3
|
+
* The purpose of this coin is to provide a mock to use for the test runner since there is no easy
|
|
4
|
+
* way to mock abstract methods with sinon.
|
|
5
|
+
*/
|
|
6
|
+
export declare class TestTransaction extends BaseTransaction {
|
|
7
|
+
canSign(key: BaseKey): boolean;
|
|
8
|
+
toJson(): any;
|
|
9
|
+
toBroadcastFormat(): any;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=testTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testTransaction.d.ts","sourceRoot":"","sources":["../../../test/resources/testTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAK9B,MAAM,IAAI,GAAG;IAGb,iBAAiB,IAAI,GAAG;CACzB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestTransaction = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
|
+
/**
|
|
6
|
+
* The purpose of this coin is to provide a mock to use for the test runner since there is no easy
|
|
7
|
+
* way to mock abstract methods with sinon.
|
|
8
|
+
*/
|
|
9
|
+
class TestTransaction extends sdk_core_1.BaseTransaction {
|
|
10
|
+
canSign(key) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
14
|
+
toJson() { }
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
16
|
+
toBroadcastFormat() { }
|
|
17
|
+
}
|
|
18
|
+
exports.TestTransaction = TestTransaction;
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9yZXNvdXJjZXMvdGVzdFRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUEyRDtBQUUzRDs7O0dBR0c7QUFDSCxNQUFhLGVBQWdCLFNBQVEsMEJBQWU7SUFDbEQsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0VBQWdFO0lBQ2hFLE1BQU0sS0FBUyxDQUFDO0lBRWhCLGdFQUFnRTtJQUNoRSxpQkFBaUIsS0FBUyxDQUFDO0NBQzVCO0FBVkQsMENBVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlS2V5LCBCYXNlVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG4vKipcbiAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgY29pbiBpcyB0byBwcm92aWRlIGEgbW9jayB0byB1c2UgZm9yIHRoZSB0ZXN0IHJ1bm5lciBzaW5jZSB0aGVyZSBpcyBubyBlYXN5XG4gKiB3YXkgdG8gbW9jayBhYnN0cmFjdCBtZXRob2RzIHdpdGggc2lub24uXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXN0VHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB0b0pzb24oKTogYW55IHt9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBhbnkge31cbn1cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import BigNumber from 'bignumber.js';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
+
import { BaseAddress, BaseKey, BaseTransaction, BaseTransactionBuilder } from '@bitgo/sdk-core';
|
|
4
|
+
import { TestTransaction } from './testTransaction';
|
|
5
|
+
/**
|
|
6
|
+
* The purpose of this coin is a mock to use for the test runner since there is no easy way to mock
|
|
7
|
+
* an interface with sinon without providing the mandatory fields/methods.
|
|
8
|
+
* Use it along with sinon by stubbing its methods.
|
|
9
|
+
*/
|
|
10
|
+
export declare class TestTransactionBuilder extends BaseTransactionBuilder {
|
|
11
|
+
_transaction: TestTransaction;
|
|
12
|
+
_coinConfig: Readonly<CoinConfig>;
|
|
13
|
+
constructor();
|
|
14
|
+
displayName(): string;
|
|
15
|
+
validateAddress(address: BaseAddress, addressFormat?: string): void;
|
|
16
|
+
validateValue(value: BigNumber): boolean;
|
|
17
|
+
validateKey(key: BaseKey): void;
|
|
18
|
+
fromImplementation(rawTransaction: any): any;
|
|
19
|
+
protected signImplementation(privateKey: BaseKey): TestTransaction;
|
|
20
|
+
buildImplementation(): Promise<BaseTransaction>;
|
|
21
|
+
protected get transaction(): BaseTransaction;
|
|
22
|
+
protected set transaction(transaction: BaseTransaction);
|
|
23
|
+
validateRawTransaction(rawTransaction: any): void;
|
|
24
|
+
validateTransaction(transaction: BaseTransaction): void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=testTransactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../test/resources/testTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAS,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,sBAAsB;IAChE,YAAY,EAAE,eAAe,CAAC;IAC9B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;;IAO3B,WAAW,IAAI,MAAM;IAKrB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM;IAE5D,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAKxC,WAAW,CAAC,GAAG,EAAE,OAAO;IAExB,kBAAkB,CAAC,cAAc,EAAE,GAAG;IAI7C,SAAS,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO;IAInC,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC;IAI5D,SAAS,KAAK,WAAW,IAAI,eAAe,CAE3C;IAED,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,eAAe,EAErD;IAGD,sBAAsB,CAAC,cAAc,EAAE,GAAG;IAG1C,mBAAmB,CAAC,WAAW,EAAE,eAAe;CACjD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TestTransactionBuilder = void 0;
|
|
4
|
+
const statics_1 = require("@bitgo/statics");
|
|
5
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
6
|
+
/**
|
|
7
|
+
* The purpose of this coin is a mock to use for the test runner since there is no easy way to mock
|
|
8
|
+
* an interface with sinon without providing the mandatory fields/methods.
|
|
9
|
+
* Use it along with sinon by stubbing its methods.
|
|
10
|
+
*/
|
|
11
|
+
class TestTransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(statics_1.coins.get('ttrx'));
|
|
14
|
+
this._coinConfig = statics_1.coins.get('ttrx');
|
|
15
|
+
}
|
|
16
|
+
displayName() {
|
|
17
|
+
return 'Test';
|
|
18
|
+
}
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
20
|
+
validateAddress(address, addressFormat) { }
|
|
21
|
+
validateValue(value) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
25
|
+
validateKey(key) { }
|
|
26
|
+
fromImplementation(rawTransaction) {
|
|
27
|
+
return rawTransaction;
|
|
28
|
+
}
|
|
29
|
+
signImplementation(privateKey) {
|
|
30
|
+
return this._transaction;
|
|
31
|
+
}
|
|
32
|
+
async buildImplementation() {
|
|
33
|
+
return Promise.resolve(this._transaction);
|
|
34
|
+
}
|
|
35
|
+
get transaction() {
|
|
36
|
+
return this._transaction;
|
|
37
|
+
}
|
|
38
|
+
set transaction(transaction) {
|
|
39
|
+
this._transaction = transaction;
|
|
40
|
+
}
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
42
|
+
validateRawTransaction(rawTransaction) { }
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
44
|
+
validateTransaction(transaction) { }
|
|
45
|
+
}
|
|
46
|
+
exports.TestTransactionBuilder = TestTransactionBuilder;
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdFRyYW5zYWN0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvcmVzb3VyY2VzL3Rlc3RUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNENBQStEO0FBQy9ELDhDQUFnRztBQUdoRzs7OztHQUlHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxpQ0FBc0I7SUFJaEU7UUFDRSxLQUFLLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsZ0VBQWdFO0lBQ3pELGVBQWUsQ0FBQyxPQUFvQixFQUFFLGFBQXNCLElBQUcsQ0FBQztJQUVoRSxhQUFhLENBQUMsS0FBZ0I7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsZ0VBQWdFO0lBQ3pELFdBQVcsQ0FBQyxHQUFZLElBQUcsQ0FBQztJQUU1QixrQkFBa0IsQ0FBQyxjQUFtQjtRQUMzQyxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRVMsa0JBQWtCLENBQUMsVUFBbUI7UUFDOUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLLENBQUMsbUJBQW1CO1FBQzlCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQWMsV0FBVyxDQUFDLFdBQTRCO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsc0JBQXNCLENBQUMsY0FBbUIsSUFBRyxDQUFDO0lBRTlDLGdFQUFnRTtJQUNoRSxtQkFBbUIsQ0FBQyxXQUE0QixJQUFHLENBQUM7Q0FDckQ7QUFoREQsd0RBZ0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZywgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlQWRkcmVzcywgQmFzZUtleSwgQmFzZVRyYW5zYWN0aW9uLCBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRlc3RUcmFuc2FjdGlvbiB9IGZyb20gJy4vdGVzdFRyYW5zYWN0aW9uJztcblxuLyoqXG4gKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvaW4gaXMgYSBtb2NrIHRvIHVzZSBmb3IgdGhlIHRlc3QgcnVubmVyIHNpbmNlIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIG1vY2tcbiAqIGFuIGludGVyZmFjZSB3aXRoIHNpbm9uIHdpdGhvdXQgcHJvdmlkaW5nIHRoZSBtYW5kYXRvcnkgZmllbGRzL21ldGhvZHMuXG4gKiBVc2UgaXQgYWxvbmcgd2l0aCBzaW5vbiBieSBzdHViYmluZyBpdHMgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlc3RUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgX3RyYW5zYWN0aW9uOiBUZXN0VHJhbnNhY3Rpb247XG4gIF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihjb2lucy5nZXQoJ3R0cngnKSk7XG4gICAgdGhpcy5fY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndHRyeCcpO1xuICB9XG5cbiAgcHVibGljIGRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdUZXN0JztcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHVibGljIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZykge31cblxuICBwdWJsaWMgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpIHt9XG5cbiAgcHVibGljIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogYW55KSB7XG4gICAgcmV0dXJuIHJhd1RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihwcml2YXRlS2V5OiBCYXNlS2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxCYXNlVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX3RyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogQmFzZVRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBCYXNlVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBhbnkpIHt9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBCYXNlVHJhbnNhY3Rpb24pIHt9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/coin/baseCoin/transactionBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,135 @@
|
|
|
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 sinon_1 = __importDefault(require("sinon"));
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const should_1 = __importDefault(require("should"));
|
|
9
|
+
const testTransactionBuilder_1 = require("../../../resources/testTransactionBuilder");
|
|
10
|
+
const testTransaction_1 = require("../../../resources/testTransaction");
|
|
11
|
+
describe('Transaction builder', () => {
|
|
12
|
+
let txBuilder;
|
|
13
|
+
let sandbox;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
sandbox = sinon_1.default.createSandbox();
|
|
16
|
+
txBuilder = new testTransactionBuilder_1.TestTransactionBuilder();
|
|
17
|
+
});
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
sandbox.restore();
|
|
20
|
+
});
|
|
21
|
+
it('should sign a transaction that is valid', () => {
|
|
22
|
+
const testTx = sinon_1.default.createStubInstance(testTransaction_1.TestTransaction);
|
|
23
|
+
testTx.canSign.returns(true);
|
|
24
|
+
const validateKey = sinon_1.default.spy(txBuilder, 'validateKey');
|
|
25
|
+
txBuilder.from(testTx);
|
|
26
|
+
txBuilder.sign({ key: 'validKey' });
|
|
27
|
+
sandbox.assert.calledOnce(validateKey);
|
|
28
|
+
});
|
|
29
|
+
it('should sign a transaction with an invalid signature', () => {
|
|
30
|
+
const testTx = sinon_1.default.createStubInstance(testTransaction_1.TestTransaction);
|
|
31
|
+
testTx.canSign.returns(false);
|
|
32
|
+
const validateKey = sinon_1.default.spy(txBuilder, 'validateKey');
|
|
33
|
+
txBuilder.from(testTx);
|
|
34
|
+
assert_1.default.throws(() => txBuilder.sign({ key: 'invalidKey' }));
|
|
35
|
+
sandbox.assert.calledOnce(validateKey);
|
|
36
|
+
});
|
|
37
|
+
it('should parse a valid transaction', () => {
|
|
38
|
+
const testTx = sinon_1.default.createStubInstance(testTransaction_1.TestTransaction);
|
|
39
|
+
testTx.canSign.returns(true);
|
|
40
|
+
const validateRawTransaction = sinon_1.default.spy(txBuilder, 'validateRawTransaction');
|
|
41
|
+
const fromImplementation = sinon_1.default.spy(txBuilder, 'fromImplementation');
|
|
42
|
+
txBuilder.from(testTx);
|
|
43
|
+
sandbox.assert.calledOnce(validateRawTransaction);
|
|
44
|
+
sandbox.assert.calledOnce(fromImplementation);
|
|
45
|
+
});
|
|
46
|
+
it('should build a valid transaction', () => {
|
|
47
|
+
const testTx = sinon_1.default.createStubInstance(testTransaction_1.TestTransaction);
|
|
48
|
+
testTx.canSign.returns(true);
|
|
49
|
+
const validateTransaction = sinon_1.default.spy(txBuilder, 'validateTransaction');
|
|
50
|
+
const buildImplementation = sinon_1.default.spy(txBuilder, 'buildImplementation');
|
|
51
|
+
txBuilder.from(testTx);
|
|
52
|
+
txBuilder.build();
|
|
53
|
+
sandbox.assert.calledOnce(validateTransaction);
|
|
54
|
+
sandbox.assert.calledOnce(buildImplementation);
|
|
55
|
+
});
|
|
56
|
+
it('should verify validity window params', () => {
|
|
57
|
+
const testTx = sinon_1.default.createStubInstance(testTransaction_1.TestTransaction);
|
|
58
|
+
testTx.canSign.returns(true);
|
|
59
|
+
txBuilder.from(testTx);
|
|
60
|
+
txBuilder.build();
|
|
61
|
+
let validityWindow;
|
|
62
|
+
let params = {};
|
|
63
|
+
(0, should_1.default)(() => txBuilder.getValidityWindow(params)).throwError('Unit parameter must be specified as blockheight or timestamp');
|
|
64
|
+
params = {
|
|
65
|
+
unit: 'wrongUnit',
|
|
66
|
+
};
|
|
67
|
+
(0, should_1.default)(() => txBuilder.getValidityWindow(params)).throwError('Unit parameter must be specified as blockheight or timestamp');
|
|
68
|
+
params = {
|
|
69
|
+
firstValid: 10,
|
|
70
|
+
lastValid: 23,
|
|
71
|
+
minDuration: 10,
|
|
72
|
+
maxDuration: 20,
|
|
73
|
+
unit: '',
|
|
74
|
+
};
|
|
75
|
+
(0, should_1.default)(() => txBuilder.getValidityWindow(params)).throwError('Unit parameter must be specified as blockheight or timestamp');
|
|
76
|
+
params = {
|
|
77
|
+
firstValid: 10,
|
|
78
|
+
lastValid: 23,
|
|
79
|
+
minDuration: 10,
|
|
80
|
+
maxDuration: 5,
|
|
81
|
+
unit: 'blockheight',
|
|
82
|
+
};
|
|
83
|
+
(0, should_1.default)(() => txBuilder.getValidityWindow(params)).throwError(`Expected maxDuration (5) to be grather than minDuration (10)`);
|
|
84
|
+
params = {
|
|
85
|
+
firstValid: 10,
|
|
86
|
+
lastValid: 11,
|
|
87
|
+
minDuration: 10,
|
|
88
|
+
maxDuration: 20,
|
|
89
|
+
unit: 'timestamp',
|
|
90
|
+
};
|
|
91
|
+
validityWindow = txBuilder.getValidityWindow(params);
|
|
92
|
+
validityWindow.should.have.properties(['firstValid', 'lastValid', 'minDuration', 'maxDuration', 'unit']);
|
|
93
|
+
validityWindow.firstValid.should.be.equal(10);
|
|
94
|
+
validityWindow.lastValid.should.be.equal(30);
|
|
95
|
+
validityWindow.minDuration.should.be.equal(10);
|
|
96
|
+
validityWindow.maxDuration.should.be.equal(20);
|
|
97
|
+
validityWindow.unit.should.be.equal('timestamp');
|
|
98
|
+
params = {
|
|
99
|
+
firstValid: 10,
|
|
100
|
+
lastValid: 23,
|
|
101
|
+
minDuration: 10,
|
|
102
|
+
maxDuration: 11,
|
|
103
|
+
unit: 'blockheight',
|
|
104
|
+
};
|
|
105
|
+
validityWindow = txBuilder.getValidityWindow(params);
|
|
106
|
+
validityWindow.should.have.properties(['firstValid', 'lastValid', 'minDuration', 'maxDuration', 'unit']);
|
|
107
|
+
validityWindow.firstValid.should.be.equal(10);
|
|
108
|
+
validityWindow.lastValid.should.be.equal(21);
|
|
109
|
+
validityWindow.minDuration.should.be.equal(10);
|
|
110
|
+
validityWindow.maxDuration.should.be.equal(11);
|
|
111
|
+
validityWindow.unit.should.be.equal('blockheight');
|
|
112
|
+
params = {
|
|
113
|
+
unit: 'timestamp',
|
|
114
|
+
};
|
|
115
|
+
const dateNow = Date.now();
|
|
116
|
+
validityWindow = txBuilder.getValidityWindow(params);
|
|
117
|
+
validityWindow.should.have.properties(['firstValid', 'lastValid', 'minDuration', 'maxDuration', 'unit']);
|
|
118
|
+
validityWindow.firstValid.should.be.greaterThanOrEqual(dateNow);
|
|
119
|
+
validityWindow.lastValid.should.be.equal(validityWindow.firstValid + 31536000000);
|
|
120
|
+
validityWindow.minDuration.should.be.equal(0);
|
|
121
|
+
validityWindow.maxDuration.should.be.equal(31536000000);
|
|
122
|
+
validityWindow.unit.should.be.equal('timestamp');
|
|
123
|
+
params = {
|
|
124
|
+
unit: 'blockheight',
|
|
125
|
+
};
|
|
126
|
+
validityWindow = txBuilder.getValidityWindow(params);
|
|
127
|
+
validityWindow.should.have.properties(['firstValid', 'lastValid', 'minDuration', 'maxDuration', 'unit']);
|
|
128
|
+
validityWindow.firstValid.should.be.equal(0);
|
|
129
|
+
validityWindow.lastValid.should.be.equal(1000000);
|
|
130
|
+
validityWindow.minDuration.should.be.equal(0);
|
|
131
|
+
validityWindow.maxDuration.should.be.equal(1000000);
|
|
132
|
+
validityWindow.unit.should.be.equal('blockheight');
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2NvaW4vYmFzZUNvaW4vdHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLG9EQUE0QjtBQUM1QixvREFBNEI7QUFDNUIsc0ZBQW1GO0FBQ25GLHdFQUFxRTtBQUVyRSxRQUFRLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFO0lBQ25DLElBQUksU0FBUyxDQUFDO0lBQ2QsSUFBSSxPQUEyQixDQUFDO0lBRWhDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEdBQUcsZUFBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hDLFNBQVMsR0FBRyxJQUFJLCtDQUFzQixFQUFFLENBQUM7SUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtRQUNqRCxNQUFNLE1BQU0sR0FBRyxlQUFLLENBQUMsa0JBQWtCLENBQUMsaUNBQWUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sV0FBVyxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRXhELFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkIsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBRUgs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QUFjLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEQsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUZXN0VHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RUcmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVGVzdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RUcmFuc2FjdGlvbic7XG5cbmRlc2NyaWJlKCdUcmFuc2FjdGlvbiBidWlsZGVyJywgKCkgPT4ge1xuICBsZXQgdHhCdWlsZGVyO1xuICBsZXQgc2FuZGJveDogc2lub24uU2lub25TYW5kYm94O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHNhbmRib3ggPSBzaW5vbi5jcmVhdGVTYW5kYm94KCk7XG4gICAgdHhCdWlsZGVyID0gbmV3IFRlc3RUcmFuc2FjdGlvbkJ1aWxkZXIoKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzaWduIGEgdHJhbnNhY3Rpb24gdGhhdCBpcyB2YWxpZCcsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0VHggPSBzaW5vbi5jcmVhdGVTdHViSW5zdGFuY2UoVGVzdFRyYW5zYWN0aW9uKTtcbiAgICB0ZXN0VHguY2FuU2lnbi5yZXR1cm5zKHRydWUpO1xuICAgIGNvbnN0IHZhbGlkYXRlS2V5ID0gc2lub24uc3B5KHR4QnVpbGRlciwgJ3ZhbGlkYXRlS2V5Jyk7XG5cbiAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0VHgpO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiAndmFsaWRLZXknIH0pO1xuXG4gICAgc2FuZGJveC5hc3NlcnQuY2FsbGVkT25jZSh2YWxpZGF0ZUtleSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2lnbiBhIHRyYW5zYWN0aW9uIHdpdGggYW4gaW52YWxpZCBzaWduYXR1cmUnLCAoKSA9PiB7XG4gICAgY29uc3QgdGVzdFR4ID0gc2lub24uY3JlYXRlU3R1Ykluc3RhbmNlKFRlc3RUcmFuc2FjdGlvbik7XG4gICAgdGVzdFR4LmNhblNpZ24ucmV0dXJucyhmYWxzZSk7XG4gICAgY29uc3QgdmFsaWRhdGVLZXkgPSBzaW5vbi5zcHkodHhCdWlsZGVyLCAndmFsaWRhdGVLZXknKTtcblxuICAgIHR4QnVpbGRlci5mcm9tKHRlc3RUeCk7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eEJ1aWxkZXIuc2lnbih7IGtleTogJ2ludmFsaWRLZXknIH0pKTtcblxuICAgIHNhbmRib3guYXNzZXJ0LmNhbGxlZE9uY2UodmFsaWRhdGVLZXkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhcnNlIGEgdmFsaWQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3QgdGVzdFR4ID0gc2lub24uY3JlYXRlU3R1Ykluc3RhbmNlKFRlc3RUcmFuc2FjdGlvbik7XG4gICAgdGVzdFR4LmNhblNpZ24ucmV0dXJucyh0cnVlKTtcbiAgICBjb25zdCB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uID0gc2lub24uc3B5KHR4QnVpbGRlciwgJ3ZhbGlkYXRlUmF3VHJhbnNhY3Rpb24nKTtcbiAgICBjb25zdCBmcm9tSW1wbGVtZW50YXRpb24gPSBzaW5vbi5zcHkodHhCdWlsZGVyLCAnZnJvbUltcGxlbWVudGF0aW9uJyk7XG5cbiAgICB0eEJ1aWxkZXIuZnJvbSh0ZXN0VHgpO1xuXG4gICAgc2FuZGJveC5hc3NlcnQuY2FsbGVkT25jZSh2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKTtcbiAgICBzYW5kYm94LmFzc2VydC5jYWxsZWRPbmNlKGZyb21JbXBsZW1lbnRhdGlvbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYnVpbGQgYSB2YWxpZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0VHggPSBzaW5vbi5jcmVhdGVTdHViSW5zdGFuY2UoVGVzdFRyYW5zYWN0aW9uKTtcbiAgICB0ZXN0VHguY2FuU2lnbi5yZXR1cm5zKHRydWUpO1xuICAgIGNvbnN0IHZhbGlkYXRlVHJhbnNhY3Rpb24gPSBzaW5vbi5zcHkodHhCdWlsZGVyLCAndmFsaWRhdGVUcmFuc2FjdGlvbicpO1xuICAgIGNvbnN0IGJ1aWxkSW1wbGVtZW50YXRpb24gPSBzaW5vbi5zcHkodHhCdWlsZGVyLCAnYnVpbGRJbXBsZW1lbnRhdGlvbicpO1xuXG4gICAgdHhCdWlsZGVyLmZyb20odGVzdFR4KTtcbiAgICB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHNhbmRib3guYXNzZXJ0LmNhbGxlZE9uY2UodmFsaWRhdGVUcmFuc2FjdGlvbik7XG4gICAgc2FuZGJveC5hc3NlcnQuY2FsbGVkT25jZShidWlsZEltcGxlbWVudGF0aW9uKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB2ZXJpZnkgdmFsaWRpdHkgd2luZG93IHBhcmFtcycsICgpID0+IHtcbiAgICBjb25zdCB0ZXN0VHggPSBzaW5vbi5jcmVhdGVTdHViSW5zdGFuY2UoVGVzdFRyYW5zYWN0aW9uKTtcbiAgICB0ZXN0VHguY2FuU2lnbi5yZXR1cm5zKHRydWUpO1xuICAgIHR4QnVpbGRlci5mcm9tKHRlc3RUeCk7XG4gICAgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgbGV0IHZhbGlkaXR5V2luZG93O1xuXG4gICAgbGV0IHBhcmFtcyA9IHt9O1xuICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuZ2V0VmFsaWRpdHlXaW5kb3cocGFyYW1zKSkudGhyb3dFcnJvcihcbiAgICAgICdVbml0IHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCBhcyBibG9ja2hlaWdodCBvciB0aW1lc3RhbXAnLFxuICAgICk7XG5cbiAgICBwYXJhbXMgPSB7XG4gICAgICB1bml0OiAnd3JvbmdVbml0JyxcbiAgICB9O1xuICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuZ2V0VmFsaWRpdHlXaW5kb3cocGFyYW1zKSkudGhyb3dFcnJvcihcbiAgICAgICdVbml0IHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCBhcyBibG9ja2hlaWdodCBvciB0aW1lc3RhbXAnLFxuICAgICk7XG5cbiAgICBwYXJhbXMgPSB7XG4gICAgICBmaXJzdFZhbGlkOiAxMCxcbiAgICAgIGxhc3RWYWxpZDogMjMsXG4gICAgICBtaW5EdXJhdGlvbjogMTAsXG4gICAgICBtYXhEdXJhdGlvbjogMjAsXG4gICAgICB1bml0OiAnJyxcbiAgICB9O1xuICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuZ2V0VmFsaWRpdHlXaW5kb3cocGFyYW1zKSkudGhyb3dFcnJvcihcbiAgICAgICdVbml0IHBhcmFtZXRlciBtdXN0IGJlIHNwZWNpZmllZCBhcyBibG9ja2hlaWdodCBvciB0aW1lc3RhbXAnLFxuICAgICk7XG5cbiAgICBwYXJhbXMgPSB7XG4gICAgICBmaXJzdFZhbGlkOiAxMCxcbiAgICAgIGxhc3RWYWxpZDogMjMsXG4gICAgICBtaW5EdXJhdGlvbjogMTAsXG4gICAgICBtYXhEdXJhdGlvbjogNSxcbiAgICAgIHVuaXQ6ICdibG9ja2hlaWdodCcsXG4gICAgfTtcbiAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLmdldFZhbGlkaXR5V2luZG93KHBhcmFtcykpLnRocm93RXJyb3IoXG4gICAgICBgRXhwZWN0ZWQgbWF4RHVyYXRpb24gKDUpIHRvIGJlIGdyYXRoZXIgdGhhbiBtaW5EdXJhdGlvbiAoMTApYCxcbiAgICApO1xuXG4gICAgcGFyYW1zID0ge1xuICAgICAgZmlyc3RWYWxpZDogMTAsXG4gICAgICBsYXN0VmFsaWQ6IDExLFxuICAgICAgbWluRHVyYXRpb246IDEwLFxuICAgICAgbWF4RHVyYXRpb246IDIwLFxuICAgICAgdW5pdDogJ3RpbWVzdGFtcCcsXG4gICAgfTtcbiAgICB2YWxpZGl0eVdpbmRvdyA9IHR4QnVpbGRlci5nZXRWYWxpZGl0eVdpbmRvdyhwYXJhbXMpO1xuICAgIHZhbGlkaXR5V2luZG93LnNob3VsZC5oYXZlLnByb3BlcnRpZXMoWydmaXJzdFZhbGlkJywgJ2xhc3RWYWxpZCcsICdtaW5EdXJhdGlvbicsICdtYXhEdXJhdGlvbicsICd1bml0J10pO1xuICAgIHZhbGlkaXR5V2luZG93LmZpcnN0VmFsaWQuc2hvdWxkLmJlLmVxdWFsKDEwKTtcbiAgICB2YWxpZGl0eVdpbmRvdy5sYXN0VmFsaWQuc2hvdWxkLmJlLmVxdWFsKDMwKTtcbiAgICB2YWxpZGl0eVdpbmRvdy5taW5EdXJhdGlvbi5zaG91bGQuYmUuZXF1YWwoMTApO1xuICAgIHZhbGlkaXR5V2luZG93Lm1heER1cmF0aW9uLnNob3VsZC5iZS5lcXVhbCgyMCk7XG4gICAgdmFsaWRpdHlXaW5kb3cudW5pdC5zaG91bGQuYmUuZXF1YWwoJ3RpbWVzdGFtcCcpO1xuXG4gICAgcGFyYW1zID0ge1xuICAgICAgZmlyc3RWYWxpZDogMTAsXG4gICAgICBsYXN0VmFsaWQ6IDIzLFxuICAgICAgbWluRHVyYXRpb246IDEwLFxuICAgICAgbWF4RHVyYXRpb246IDExLFxuICAgICAgdW5pdDogJ2Jsb2NraGVpZ2h0JyxcbiAgICB9O1xuICAgIHZhbGlkaXR5V2luZG93ID0gdHhCdWlsZGVyLmdldFZhbGlkaXR5V2luZG93KHBhcmFtcyk7XG4gICAgdmFsaWRpdHlXaW5kb3cuc2hvdWxkLmhhdmUucHJvcGVydGllcyhbJ2ZpcnN0VmFsaWQnLCAnbGFzdFZhbGlkJywgJ21pbkR1cmF0aW9uJywgJ21heER1cmF0aW9uJywgJ3VuaXQnXSk7XG4gICAgdmFsaWRpdHlXaW5kb3cuZmlyc3RWYWxpZC5zaG91bGQuYmUuZXF1YWwoMTApO1xuICAgIHZhbGlkaXR5V2luZG93Lmxhc3RWYWxpZC5zaG91bGQuYmUuZXF1YWwoMjEpO1xuICAgIHZhbGlkaXR5V2luZG93Lm1pbkR1cmF0aW9uLnNob3VsZC5iZS5lcXVhbCgxMCk7XG4gICAgdmFsaWRpdHlXaW5kb3cubWF4RHVyYXRpb24uc2hvdWxkLmJlLmVxdWFsKDExKTtcbiAgICB2YWxpZGl0eVdpbmRvdy51bml0LnNob3VsZC5iZS5lcXVhbCgnYmxvY2toZWlnaHQnKTtcblxuICAgIHBhcmFtcyA9IHtcbiAgICAgIHVuaXQ6ICd0aW1lc3RhbXAnLFxuICAgIH07XG4gICAgY29uc3QgZGF0ZU5vdyA9IERhdGUubm93KCk7XG4gICAgdmFsaWRpdHlXaW5kb3cgPSB0eEJ1aWxkZXIuZ2V0VmFsaWRpdHlXaW5kb3cocGFyYW1zKTtcbiAgICB2YWxpZGl0eVdpbmRvdy5zaG91bGQuaGF2ZS5wcm9wZXJ0aWVzKFsnZmlyc3RWYWxpZCcsICdsYXN0VmFsaWQnLCAnbWluRHVyYXRpb24nLCAnbWF4RHVyYXRpb24nLCAndW5pdCddKTtcbiAgICB2YWxpZGl0eVdpbmRvdy5maXJzdFZhbGlkLnNob3VsZC5iZS5ncmVhdGVyVGhhbk9yRXF1YWwoZGF0ZU5vdyk7XG4gICAgdmFsaWRpdHlXaW5kb3cubGFzdFZhbGlkLnNob3VsZC5iZS5lcXVhbCh2YWxpZGl0eVdpbmRvdy5maXJzdFZhbGlkICsgMzE1MzYwMDAwMDApO1xuICAgIHZhbGlkaXR5V2luZG93Lm1pbkR1cmF0aW9uLnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICB2YWxpZGl0eVdpbmRvdy5tYXhEdXJhdGlvbi5zaG91bGQuYmUuZXF1YWwoMzE1MzYwMDAwMDApO1xuICAgIHZhbGlkaXR5V2luZG93LnVuaXQuc2hvdWxkLmJlLmVxdWFsKCd0aW1lc3RhbXAnKTtcblxuICAgIHBhcmFtcyA9IHtcbiAgICAgIHVuaXQ6ICdibG9ja2hlaWdodCcsXG4gICAgfTtcbiAgICB2YWxpZGl0eVdpbmRvdyA9IHR4QnVpbGRlci5nZXRWYWxpZGl0eVdpbmRvdyhwYXJhbXMpO1xuICAgIHZhbGlkaXR5V2luZG93LnNob3VsZC5oYXZlLnByb3BlcnRpZXMoWydmaXJzdFZhbGlkJywgJ2xhc3RWYWxpZCcsICdtaW5EdXJhdGlvbicsICdtYXhEdXJhdGlvbicsICd1bml0J10pO1xuICAgIHZhbGlkaXR5V2luZG93LmZpcnN0VmFsaWQuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIHZhbGlkaXR5V2luZG93Lmxhc3RWYWxpZC5zaG91bGQuYmUuZXF1YWwoMTAwMDAwMCk7XG4gICAgdmFsaWRpdHlXaW5kb3cubWluRHVyYXRpb24uc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIHZhbGlkaXR5V2luZG93Lm1heER1cmF0aW9uLnNob3VsZC5iZS5lcXVhbCgxMDAwMDAwKTtcbiAgICB2YWxpZGl0eVdpbmRvdy51bml0LnNob3VsZC5iZS5lcXVhbCgnYmxvY2toZWlnaHQnKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseCoin } from '@bitgo/statics';
|
|
2
|
+
import { BaseMessage, BaseMessageBuilder, BaseMessageBuilderFactory, IMessage, IMessageBuilder, MessageOptions, MessageStandardType } from '@bitgo/sdk-core';
|
|
3
|
+
export declare class MockMessageBuilderFactory extends BaseMessageBuilderFactory {
|
|
4
|
+
constructor(coinConfig: Readonly<BaseCoin>);
|
|
5
|
+
getMessageBuilder(type: MessageStandardType): IMessageBuilder;
|
|
6
|
+
}
|
|
7
|
+
export declare class MockMessageBuilder extends BaseMessageBuilder {
|
|
8
|
+
constructor(coinConfig: Readonly<BaseCoin>, type?: MessageStandardType);
|
|
9
|
+
buildMessage(options: MessageOptions): Promise<IMessage>;
|
|
10
|
+
fromBroadcastFormat(broadcastMessage: any): Promise<IMessage>;
|
|
11
|
+
}
|
|
12
|
+
export declare class MockMessage extends BaseMessage {
|
|
13
|
+
constructor(options: MessageOptions);
|
|
14
|
+
getSignablePayload(): Promise<string | Buffer>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../test/unit/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,yBAAyB,EACzB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,qBAAa,yBAA0B,SAAQ,yBAAyB;gBAC1D,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAI1C,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,eAAe;CAG9D;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB;gBAC5C,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAE,mBAAiD;IAI7F,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIxD,mBAAmB,CAAC,gBAAgB,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;CAUpE;AAED,qBAAa,WAAY,SAAQ,WAAW;gBAC9B,OAAO,EAAE,cAAc;IAI7B,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;CAIrD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MockMessage = exports.MockMessageBuilder = exports.MockMessageBuilderFactory = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
5
|
+
class MockMessageBuilderFactory extends sdk_core_1.BaseMessageBuilderFactory {
|
|
6
|
+
constructor(coinConfig) {
|
|
7
|
+
super(coinConfig);
|
|
8
|
+
}
|
|
9
|
+
getMessageBuilder(type) {
|
|
10
|
+
return new MockMessageBuilder(this.coinConfig, type);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.MockMessageBuilderFactory = MockMessageBuilderFactory;
|
|
14
|
+
class MockMessageBuilder extends sdk_core_1.BaseMessageBuilder {
|
|
15
|
+
constructor(coinConfig, type = sdk_core_1.MessageStandardType.UNKNOWN) {
|
|
16
|
+
super(coinConfig, type);
|
|
17
|
+
}
|
|
18
|
+
async buildMessage(options) {
|
|
19
|
+
return new MockMessage(options);
|
|
20
|
+
}
|
|
21
|
+
async fromBroadcastFormat(broadcastMessage) {
|
|
22
|
+
this.setType(broadcastMessage.type);
|
|
23
|
+
this.setPayload(broadcastMessage.payload);
|
|
24
|
+
this.setSignatures(broadcastMessage.signatures || []);
|
|
25
|
+
this.setSigners(broadcastMessage.signers || []);
|
|
26
|
+
if (broadcastMessage.metadata) {
|
|
27
|
+
this.setMetadata(broadcastMessage.metadata);
|
|
28
|
+
}
|
|
29
|
+
return this.build();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.MockMessageBuilder = MockMessageBuilder;
|
|
33
|
+
class MockMessage extends sdk_core_1.BaseMessage {
|
|
34
|
+
constructor(options) {
|
|
35
|
+
super(options);
|
|
36
|
+
}
|
|
37
|
+
async getSignablePayload() {
|
|
38
|
+
this.signablePayload = Buffer.from(this.payload);
|
|
39
|
+
return this.signablePayload;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.MockMessage = MockMessage;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvZml4dHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsOENBUXlCO0FBRXpCLE1BQWEseUJBQTBCLFNBQVEsb0NBQXlCO0lBQ3RFLFlBQVksVUFBOEI7UUFDeEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUF5QjtRQUN6QyxPQUFPLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0NBQ0Y7QUFSRCw4REFRQztBQUVELE1BQWEsa0JBQW1CLFNBQVEsNkJBQWtCO0lBQ3hELFlBQVksVUFBOEIsRUFBRSxPQUE0Qiw4QkFBbUIsQ0FBQyxPQUFPO1FBQ2pHLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBdUI7UUFDeEMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixDQUFDLGdCQUFxQjtRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0NBQ0Y7QUFuQkQsZ0RBbUJDO0FBRUQsTUFBYSxXQUFZLFNBQVEsc0JBQVc7SUFDMUMsWUFBWSxPQUF1QjtRQUNqQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBVEQsa0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEJhc2VNZXNzYWdlLFxuICBCYXNlTWVzc2FnZUJ1aWxkZXIsXG4gIEJhc2VNZXNzYWdlQnVpbGRlckZhY3RvcnksXG4gIElNZXNzYWdlLFxuICBJTWVzc2FnZUJ1aWxkZXIsXG4gIE1lc3NhZ2VPcHRpb25zLFxuICBNZXNzYWdlU3RhbmRhcmRUeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5leHBvcnQgY2xhc3MgTW9ja01lc3NhZ2VCdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VNZXNzYWdlQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VCdWlsZGVyKHR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUpOiBJTWVzc2FnZUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgTW9ja01lc3NhZ2VCdWlsZGVyKHRoaXMuY29pbkNvbmZpZywgdHlwZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1vY2tNZXNzYWdlQnVpbGRlciBleHRlbmRzIEJhc2VNZXNzYWdlQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PEJhc2VDb2luPiwgdHlwZTogTWVzc2FnZVN0YW5kYXJkVHlwZSA9IE1lc3NhZ2VTdGFuZGFyZFR5cGUuVU5LTk9XTikge1xuICAgIHN1cGVyKGNvaW5Db25maWcsIHR5cGUpO1xuICB9XG5cbiAgYXN5bmMgYnVpbGRNZXNzYWdlKG9wdGlvbnM6IE1lc3NhZ2VPcHRpb25zKTogUHJvbWlzZTxJTWVzc2FnZT4ge1xuICAgIHJldHVybiBuZXcgTW9ja01lc3NhZ2Uob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBmcm9tQnJvYWRjYXN0Rm9ybWF0KGJyb2FkY2FzdE1lc3NhZ2U6IGFueSk6IFByb21pc2U8SU1lc3NhZ2U+IHtcbiAgICB0aGlzLnNldFR5cGUoYnJvYWRjYXN0TWVzc2FnZS50eXBlKTtcbiAgICB0aGlzLnNldFBheWxvYWQoYnJvYWRjYXN0TWVzc2FnZS5wYXlsb2FkKTtcbiAgICB0aGlzLnNldFNpZ25hdHVyZXMoYnJvYWRjYXN0TWVzc2FnZS5zaWduYXR1cmVzIHx8IFtdKTtcbiAgICB0aGlzLnNldFNpZ25lcnMoYnJvYWRjYXN0TWVzc2FnZS5zaWduZXJzIHx8IFtdKTtcbiAgICBpZiAoYnJvYWRjYXN0TWVzc2FnZS5tZXRhZGF0YSkge1xuICAgICAgdGhpcy5zZXRNZXRhZGF0YShicm9hZGNhc3RNZXNzYWdlLm1ldGFkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVpbGQoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTW9ja01lc3NhZ2UgZXh0ZW5kcyBCYXNlTWVzc2FnZSB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE1lc3NhZ2VPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBnZXRTaWduYWJsZVBheWxvYWQoKTogUHJvbWlzZTxzdHJpbmcgfCBCdWZmZXI+IHtcbiAgICB0aGlzLnNpZ25hYmxlUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHRoaXMucGF5bG9hZCk7XG4gICAgcmV0dXJuIHRoaXMuc2lnbmFibGVQYXlsb2FkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/unit/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
describe('Coin factory', () => {
|
|
9
|
+
it('should fail to instantiate an unsupported coin', () => {
|
|
10
|
+
assert_1.default.throws(() => (0, src_1.getBuilder)('fakeUnsupported'));
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsbUNBQXVDO0FBRXZDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzVCLEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7UUFDeEQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSxnQkFBVSxFQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgZ2V0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdDb2luIGZhY3RvcnknLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgZmFpbCB0byBpbnN0YW50aWF0ZSBhbiB1bnN1cHBvcnRlZCBjb2luJywgKCkgPT4ge1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZ2V0QnVpbGRlcignZmFrZVVuc3VwcG9ydGVkJykpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../test/unit/keyPair/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,132 @@
|
|
|
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
|
+
/**
|
|
40
|
+
* @prettier
|
|
41
|
+
*/
|
|
42
|
+
const assert_1 = __importDefault(require("assert"));
|
|
43
|
+
const keyPair_1 = require("../../../src/keyPair");
|
|
44
|
+
const coinModules = __importStar(require("../../../src"));
|
|
45
|
+
const statics_1 = require("@bitgo/statics");
|
|
46
|
+
describe('Key Pair Factory', () => {
|
|
47
|
+
describe('coinToKey map initialization', function () {
|
|
48
|
+
const supportedCoinsExceptTestnet = Object.keys(coinModules)
|
|
49
|
+
// TODO(BG-40990): temporarily disable eth2 from the test for bls not initialized error
|
|
50
|
+
.filter((k) => coinModules[k].KeyPair && !['eth2', 'evmcoin', 'cosmossharedcoin', 'stt'].includes(k.trim().toLowerCase()));
|
|
51
|
+
supportedCoinsExceptTestnet.forEach((coinName) => {
|
|
52
|
+
it(`should initialize a ${coinName} keyPair map`, () => {
|
|
53
|
+
const keyPair = (0, keyPair_1.register)(coinName);
|
|
54
|
+
(typeof keyPair.getKeys).should.equal('function');
|
|
55
|
+
(typeof keyPair.getAddress).should.equal('function');
|
|
56
|
+
(typeof keyPair.recordKeysFromPrivateKey).should.equal('function');
|
|
57
|
+
(typeof keyPair.recordKeysFromPublicKey).should.equal('function');
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
it('should fail to instantiate an unsupported coin', () => {
|
|
61
|
+
assert_1.default.throws(() => (0, keyPair_1.register)('fakeUnsupported'));
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe('secp256k1 generation', function () {
|
|
65
|
+
it('should initialize eth keyPair map', () => {
|
|
66
|
+
const eth = statics_1.coins.get('eth');
|
|
67
|
+
const keyPair = (0, keyPair_1.register)(eth.name);
|
|
68
|
+
(typeof keyPair.getKeys).should.equal('function');
|
|
69
|
+
(typeof keyPair.getAddress).should.equal('function');
|
|
70
|
+
(typeof keyPair.getPublicKey).should.equal('function');
|
|
71
|
+
});
|
|
72
|
+
it('should initialize eth keyPair map with arguments', () => {
|
|
73
|
+
const eth = statics_1.coins.get('eth');
|
|
74
|
+
const uncompressedPub = '04D63D9FD9FD772A989C5B90EDB37716406356E98273E5F98FE07652247A3A827503E948A2FDBF74A981D4E0054F10EDA7042C2D469F44473D3C7791E0E326E355';
|
|
75
|
+
const pubKey = { pub: uncompressedPub };
|
|
76
|
+
const keyPair = (0, keyPair_1.register)(eth.name, pubKey);
|
|
77
|
+
(typeof keyPair.getKeys).should.equal('function');
|
|
78
|
+
(typeof keyPair.getAddress).should.equal('function');
|
|
79
|
+
(typeof keyPair.getPublicKey).should.equal('function');
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe('ed25519 generation', function () {
|
|
83
|
+
const fixedKeyPair = {
|
|
84
|
+
prv: 'e349d47cd4af4644afbc05b8463c0d0d19a0cc742be5c1646af2e7be8aafbd50',
|
|
85
|
+
};
|
|
86
|
+
const givenSignature = new Uint8Array(Buffer.from('b2e775827f6b3c9050524a7d2f5344db73eb92044d8e42c38357a30686a9ce3a19b8fbf8c9d1edb0f3c5232441d34b63af92805aed77097ee50076f696eaff0f', 'hex'));
|
|
87
|
+
['dot', 'tdot', 'algo', 'talgo', 'hbar', 'thbar', 'sol', 'tsol'].forEach((coinName) => {
|
|
88
|
+
describe(`${coinName} keyPair`, function () {
|
|
89
|
+
const kp = (0, keyPair_1.register)(coinName, fixedKeyPair);
|
|
90
|
+
it(`should initialize ${coinName} keyPair map`, () => {
|
|
91
|
+
const keyPair = (0, keyPair_1.register)(coinName);
|
|
92
|
+
(typeof keyPair.getKeys).should.equal('function');
|
|
93
|
+
(typeof keyPair.getAddress).should.equal('function');
|
|
94
|
+
(typeof keyPair.verifySignature).should.equal('function');
|
|
95
|
+
(typeof keyPair.signMessage).should.equal('function');
|
|
96
|
+
});
|
|
97
|
+
it(`should initialize ${coinName} keyPair map with arguments`, () => {
|
|
98
|
+
const keyPair = (0, keyPair_1.register)(coinName, fixedKeyPair);
|
|
99
|
+
(typeof keyPair.getKeys).should.equal('function');
|
|
100
|
+
(typeof keyPair.getAddress).should.equal('function');
|
|
101
|
+
(typeof keyPair.verifySignature).should.equal('function');
|
|
102
|
+
(typeof keyPair.signMessage).should.equal('function');
|
|
103
|
+
});
|
|
104
|
+
it('should get same signature from same message', () => {
|
|
105
|
+
// When
|
|
106
|
+
const signature = kp.signMessage('message');
|
|
107
|
+
// Then
|
|
108
|
+
signature.should.deepEqual(givenSignature);
|
|
109
|
+
});
|
|
110
|
+
it('should get different signature form different message', () => {
|
|
111
|
+
// When
|
|
112
|
+
const signature = kp.signMessage('wrong message');
|
|
113
|
+
// Then
|
|
114
|
+
signature.should.not.deepEqual(givenSignature);
|
|
115
|
+
});
|
|
116
|
+
it('should be verified correctly', () => {
|
|
117
|
+
// When
|
|
118
|
+
const verifyResult = kp.verifySignature('message', givenSignature);
|
|
119
|
+
// Then
|
|
120
|
+
verifyResult.should.be.True();
|
|
121
|
+
});
|
|
122
|
+
it('should not be verified wrong message', () => {
|
|
123
|
+
// When
|
|
124
|
+
const verifyResult = kp.verifySignature('wrong message', givenSignature);
|
|
125
|
+
// Then
|
|
126
|
+
verifyResult.should.be.False();
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQva2V5UGFpci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsb0RBQTRCO0FBQzVCLGtEQUFnRDtBQUNoRCwwREFBNEM7QUFDNUMsNENBQXVDO0FBSXZDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUU7SUFDaEMsUUFBUSxDQUFDLDhCQUE4QixFQUFFO1FBQ3ZDLE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDMUQsdUZBQXVGO2FBQ3RGLE1BQU0sQ0FDTCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQzdHLENBQUM7UUFFSiwyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMvQyxFQUFFLENBQUMsdUJBQXVCLFFBQVEsY0FBYyxFQUFFLEdBQUcsRUFBRTtnQkFDckQsTUFBTSxPQUFPLEdBQUcsSUFBQSxrQkFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2xELENBQUMsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDckQsQ0FBQyxPQUFPLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLE1BQU0s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O2dCQUM3QyxDQUFDLENBQUMsQ0FBQztnQkFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO29CQUMvRCxPQUFPO29CQUNQLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ2xELE9BQU87b0JBQ1AsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLENBQUMsQ0FBQztnQkFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO29CQUN0QyxPQUFPO29CQUNQLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUNuRSxPQUFPO29CQUNQLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQztnQkFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO29CQUM5QyxPQUFPO29CQUNQLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUN6RSxPQUFPO29CQUNQLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMva2V5UGFpcic7XG5pbXBvcnQgKiBhcyBjb2luTW9kdWxlcyBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBLZXlQYWlyIGFzIEV0aEtleVBhaXIgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXRoJztcbmltcG9ydCB7IEVkMjU1MTlLZXlQYWlyIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuZGVzY3JpYmUoJ0tleSBQYWlyIEZhY3RvcnknLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdjb2luVG9LZXkgbWFwIGluaXRpYWxpemF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHN1cHBvcnRlZENvaW5zRXhjZXB0VGVzdG5ldCA9IE9iamVjdC5rZXlzKGNvaW5Nb2R1bGVzKVxuICAgICAgLy8gVE9ETyhCRy00MDk5MCk6IHRlbXBvcmFyaWx5IGRpc2FibGUgZXRoMiBmcm9tIHRoZSB0ZXN0IGZvciBibHMgbm90IGluaXRpYWxpemVkIGVycm9yXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoaykgPT5cbiAgICAgICAgICBjb2luTW9kdWxlc1trXS5LZXlQYWlyICYmICFbJ2V0aDInLCAnZXZtY29pbicsICdjb3Ntb3NzaGFyZWRjb2luJywgJ3N0dCddLmluY2x1ZGVzKGsudHJpbSgpLnRvTG93ZXJDYXNlKCkpLFxuICAgICAgKTtcblxuICAgIHN1cHBvcnRlZENvaW5zRXhjZXB0VGVzdG5ldC5mb3JFYWNoKChjb2luTmFtZSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBpbml0aWFsaXplIGEgJHtjb2luTmFtZX0ga2V5UGFpciBtYXBgLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleVBhaXIgPSByZWdpc3Rlcihjb2luTmFtZSk7XG4gICAgICAgICh0eXBlb2Yga2V5UGFpci5nZXRLZXlzKS5zaG91bGQuZXF1YWwoJ2Z1bmN0aW9uJyk7XG4gICAgICAgICh0eXBlb2Yga2V5UGFpci5nZXRBZGRyZXNzKS5zaG91bGQuZXF1YWwoJ2Z1bmN0aW9uJyk7XG4gICAgICAgICh0eXBlb2Yga2V5UGFpci5yZWNvcmRLZXlzRnJvbVByaXZhdGVLZXkpLnNob3VsZC5lcXVhbCgnZnVuY3Rpb24nKTtcbiAgICAgICAgKHR5cGVvZiBrZXlQYWlyLnJlY29yZEtleXNGcm9tUHVibGljS2V5KS5zaG91bGQuZXF1YWwoJ2Z1bmN0aW9uJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmFpbCB0byBpbnN0YW50aWF0ZSBhbiB1bnN1cHBvcnRlZCBjb2luJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiByZWdpc3RlcignZmFrZVVuc3VwcG9ydGVkJykpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2VjcDI1NmsxIGdlbmVyYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBpbml0aWFsaXplIGV0aCBrZXlQYWlyIG1hcCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGV0aCA9IGNvaW5zLmdldCgnZXRoJyk7XG4gICAgICBjb25zdCBrZXlQYWlyID0gcmVnaXN0ZXIoZXRoLm5hbWUpIGFzIEV0aEtleVBhaXI7XG4gICAgICAodHlwZW9mIGtleVBhaXIuZ2V0S2V5cykuc2hvdWxkLmVxdWFsKCdmdW5jdGlvbicpO1xuICAgICAgKHR5cGVvZiBrZXlQYWlyLmdldEFkZHJlc3MpLnNob3VsZC5lcXVhbCgnZnVuY3Rpb24nKTtcbiAgICAgICh0eXBlb2Yga2V5UGFpci5nZXRQdWJsaWNLZXkpLnNob3VsZC5lcXVhbCgnZnVuY3Rpb24nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW5pdGlhbGl6ZSBldGgga2V5UGFpciBtYXAgd2l0aCBhcmd1bWVudHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBldGggPSBjb2lucy5nZXQoJ2V0aCcpO1xuICAgICAgY29uc3QgdW5jb21wcmVzc2VkUHViID1cbiAgICAgICAgJzA0RDYzRDlGRDlGRDc3MkE5ODlDNUI5MEVEQjM3NzE2NDA2MzU2RTk4MjczRTVGOThGRTA3NjUyMjQ3QTNBODI3NTAzRTk0OEEyRkRCRjc0QTk4MUQ0RTAwNTRGMTBFREE3MDQyQzJENDY5RjQ0NDczRDNDNzc5MUUwRTMyNkUzNTUnO1xuICAgICAgY29uc3QgcHViS2V5ID0geyBwdWI6IHVuY29tcHJlc3NlZFB1YiB9O1xuICAgICAgY29uc3Qga2V5UGFpciA9IHJlZ2lzdGVyKGV0aC5uYW1lLCBwdWJLZXkpIGFzIEV0aEtleVBhaXI7XG4gICAgICAodHlwZW9mIGtleVBhaXIuZ2V0S2V5cykuc2hvdWxkLmVxdWFsKCdmdW5jdGlvbicpO1xuICAgICAgKHR5cGVvZiBrZXlQYWlyLmdldEFkZHJlc3MpLnNob3VsZC5lcXVhbCgnZnVuY3Rpb24nKTtcbiAgICAgICh0eXBlb2Yga2V5UGFpci5nZXRQdWJsaWNLZXkpLnNob3VsZC5lcXVhbCgnZnVuY3Rpb24nKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2VkMjU1MTkgZ2VuZXJhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBmaXhlZEtleVBhaXIgPSB7XG4gICAgICBwcnY6ICdlMzQ5ZDQ3Y2Q0YWY0NjQ0YWZiYzA1Yjg0NjNjMGQwZDE5YTBjYzc0MmJlNWMxNjQ2YWYyZTdiZThhYWZiZDUwJyxcbiAgICB9O1xuICAgIGNvbnN0IGdpdmVuU2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICBCdWZmZXIuZnJvbShcbiAgICAgICAgJ2IyZTc3NTgyN2Y2YjNjOTA1MDUyNGE3ZDJmNTM0NGRiNzNlYjkyMDQ0ZDhlNDJjMzgzNTdhMzA2ODZhOWNlM2ExOWI4ZmJmOGM5ZDFlZGIwZjNjNTIzMjQ0MWQzNGI2M2FmOTI4MDVhZWQ3NzA5N2VlNTAwNzZmNjk2ZWFmZjBmJyxcbiAgICAgICAgJ2hleCcsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBbJ2RvdCcsICd0ZG90JywgJ2FsZ28nLCAndGFsZ28nLCAnaGJhcicsICd0aGJhcicsICdzb2wnLCAndHNvbCddLmZvckVhY2goKGNvaW5OYW1lKSA9PiB7XG4gICAgICBkZXNjcmliZShgJHtjb2luTmFtZX0ga2V5UGFpcmAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qga3AgPSByZWdpc3Rlcihjb2luTmFtZSwgZml4ZWRLZXlQYWlyKSBhcyBFZDI1NTE5S2V5UGFpcjtcblxuICAgICAgICBpdChgc2hvdWxkIGluaXRpYWxpemUgJHtjb2luTmFtZX0ga2V5UGFpciBtYXBgLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5UGFpciA9IHJlZ2lzdGVyKGNvaW5OYW1lKSBhcyBFZDI1NTE5S2V5UGFpcjtcbiAgICAgICAgICAodHlwZW9mIGtleVBhaXIuZ2V0S2V5cykuc2hvdWxkLmVxdWFsKCdmdW5jdGlvbicpO1xuICAgICAgICAgICh0eXBlb2Yga2V5UGFpci5nZXRBZGRyZXNzKS5zaG91bGQuZXF1YWwoJ2Z1bmN0aW9uJyk7XG4gICAgICAgICAgKHR5cGVvZiBrZXlQYWlyLnZlcmlmeVNpZ25hdHVyZSkuc2hvdWxkLmVxdWFsKCdmdW5jdGlvbicpO1xuICAgICAgICAgICh0eXBlb2Yga2V5UGFpci5zaWduTWVzc2FnZSkuc2hvdWxkLmVxdWFsKCdmdW5jdGlvbicpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdChgc2hvdWxkIGluaXRpYWxpemUgJHtjb2luTmFtZX0ga2V5UGFpciBtYXAgd2l0aCBhcmd1bWVudHNgLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qga2V5UGFpciA9IHJlZ2lzdGVyKGNvaW5OYW1lLCBmaXhlZEtleVBhaXIpIGFzIEVkMjU1MTlLZXlQYWlyO1xuICAgICAgICAgICh0eXBlb2Yga2V5UGFpci5nZXRLZXlzKS5zaG91bGQuZXF1YWwoJ2Z1bmN0aW9uJyk7XG4gICAgICAgICAgKHR5cGVvZiBrZXlQYWlyLmdldEFkZHJlc3MpLnNob3VsZC5lcXVhbCgnZnVuY3Rpb24nKTtcbiAgICAgICAgICAodHlwZW9mIGtleVBhaXIudmVyaWZ5U2lnbmF0dXJlKS5zaG91bGQuZXF1YWwoJ2Z1bmN0aW9uJyk7XG4gICAgICAgICAgKHR5cGVvZiBrZXlQYWlyLnNpZ25NZXNzYWdlKS5zaG91bGQuZXF1YWwoJ2Z1bmN0aW9uJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgZ2V0IHNhbWUgc2lnbmF0dXJlIGZyb20gc2FtZSBtZXNzYWdlJywgKCkgPT4ge1xuICAgICAgICAgIC8vIFdoZW5cbiAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBrcC5zaWduTWVzc2FnZSgnbWVzc2FnZScpO1xuICAgICAgICAgIC8vIFRoZW5cbiAgICAgICAgICBzaWduYXR1cmUuc2hvdWxkLmRlZXBFcXVhbChnaXZlblNpZ25hdHVyZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgZ2V0IGRpZmZlcmVudCBzaWduYXR1cmUgZm9ybSBkaWZmZXJlbnQgbWVzc2FnZScsICgpID0+IHtcbiAgICAgICAgICAvLyBXaGVuXG4gICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0ga3Auc2lnbk1lc3NhZ2UoJ3dyb25nIG1lc3NhZ2UnKTtcbiAgICAgICAgICAvLyBUaGVuXG4gICAgICAgICAgc2lnbmF0dXJlLnNob3VsZC5ub3QuZGVlcEVxdWFsKGdpdmVuU2lnbmF0dXJlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBiZSB2ZXJpZmllZCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgICAgICAgLy8gV2hlblxuICAgICAgICAgIGNvbnN0IHZlcmlmeVJlc3VsdCA9IGtwLnZlcmlmeVNpZ25hdHVyZSgnbWVzc2FnZScsIGdpdmVuU2lnbmF0dXJlKTtcbiAgICAgICAgICAvLyBUaGVuXG4gICAgICAgICAgdmVyaWZ5UmVzdWx0LnNob3VsZC5iZS5UcnVlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgbm90IGJlIHZlcmlmaWVkIHdyb25nIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgLy8gV2hlblxuICAgICAgICAgIGNvbnN0IHZlcmlmeVJlc3VsdCA9IGtwLnZlcmlmeVNpZ25hdHVyZSgnd3JvbmcgbWVzc2FnZScsIGdpdmVuU2lnbmF0dXJlKTtcbiAgICAgICAgICAvLyBUaGVuXG4gICAgICAgICAgdmVyaWZ5UmVzdWx0LnNob3VsZC5iZS5GYWxzZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageFactory.d.ts","sourceRoot":"","sources":["../../../test/unit/messageFactory.ts"],"names":[],"mappings":""}
|