@bitgo/sdk-core 36.41.0 → 36.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/pendingApproval.js +4 -2
- package/dist/src/bitgo/trading/iTradingAccount.d.ts +6 -1
- package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
- package/dist/src/bitgo/trading/network/network.d.ts +1 -1
- package/dist/src/bitgo/trading/network/network.d.ts.map +1 -1
- package/dist/src/bitgo/trading/network/network.js +3 -5
- package/dist/src/bitgo/trading/network/types.d.ts +1 -1
- package/dist/src/bitgo/trading/network/types.d.ts.map +1 -1
- package/dist/src/bitgo/trading/network/types.js +1 -1
- package/dist/src/bitgo/trading/tradingAccount.d.ts +13 -1
- package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/tradingAccount.js +32 -2
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +2 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +3 -3
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +5 -3
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +5 -3
- package/dist/src/bitgo/utils/tss/eddsa/base.d.ts +1 -2
- package/dist/src/bitgo/utils/tss/eddsa/base.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/base.js +4 -7
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +11 -11
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +20 -0
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/recipientUtils.js +46 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts +1 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +11 -3
- package/dist/src/coins/ofc.d.ts +15 -1
- package/dist/src/coins/ofc.d.ts.map +1 -1
- package/dist/src/coins/ofc.js +8 -1
- package/dist/src/coins/ofcToken.d.ts +5 -3
- package/dist/src/coins/ofcToken.d.ts.map +1 -1
- package/dist/src/coins/ofcToken.js +14 -4
- package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
- package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
- package/dist/test/unit/bitgo/trading/tradingAccount.js +113 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +137 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +70 -0
- package/dist/test/unit/coins/ofc.d.ts +2 -0
- package/dist/test/unit/coins/ofc.d.ts.map +1 -0
- package/dist/test/unit/coins/ofc.js +124 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
package/dist/src/coins/ofc.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, KeyPair, ParsedTransaction, ParseTransactionOptions, SignedTransaction, SignTransactionOptions, VerifyAddressOptions, VerifyTransactionOptions } from '../';
|
|
1
|
+
import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, KeyPair, ParsedTransaction, ParseTransactionOptions, SignedTransaction, SignTransactionOptions, VerifyAddressOptions, VerifyTransactionOptions, Wallet } from '../';
|
|
2
2
|
export declare class Ofc extends BaseCoin {
|
|
3
3
|
constructor(bitgo: BitGoBase);
|
|
4
4
|
static createInstance(bitgo: BitGoBase): BaseCoin;
|
|
@@ -32,6 +32,20 @@ export declare class Ofc extends BaseCoin {
|
|
|
32
32
|
isWalletAddress(params: VerifyAddressOptions): Promise<boolean>;
|
|
33
33
|
verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
|
|
34
34
|
signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
|
|
35
|
+
/**
|
|
36
|
+
* Signs a message using a trading wallet's BitGo Key
|
|
37
|
+
* @param wallet - uses the BitGo key of this trading wallet to sign the message remotely in a KMS
|
|
38
|
+
* @param message
|
|
39
|
+
*/
|
|
40
|
+
signMessage(wallet: Wallet, message: string): Promise<Buffer>;
|
|
41
|
+
/**
|
|
42
|
+
* Signs a message using the private key
|
|
43
|
+
* @param key - uses the private key to sign the message
|
|
44
|
+
* @param message
|
|
45
|
+
*/
|
|
46
|
+
signMessage(key: {
|
|
47
|
+
prv: string;
|
|
48
|
+
}, message: string): Promise<Buffer>;
|
|
35
49
|
/** @inheritDoc */
|
|
36
50
|
auditDecryptedKey(params: AuditDecryptedKeyParams): void;
|
|
37
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ofc.d.ts","sourceRoot":"","sources":["../../../src/coins/ofc.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EAEP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"ofc.d.ts","sourceRoot":"","sources":["../../../src/coins/ofc.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EAEP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,MAAM,EACP,MAAM,KAAK,CAAC;AAEb,qBAAa,GAAI,SAAQ,QAAQ;gBACnB,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ;IAIjD,QAAQ;IAIR;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAevC,SAAS;IAIT,WAAW;IAIX;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAInD;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQhC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,aAAa,IAAI,MAAM,GAAG,MAAM;IAI1B,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrE,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIjF;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACnE;;;;OAIG;IACG,WAAW,CAAC,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASzE,kBAAkB;IAClB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB;CAGlD"}
|
package/dist/src/coins/ofc.js
CHANGED
|
@@ -81,10 +81,17 @@ class Ofc extends __1.BaseCoin {
|
|
|
81
81
|
async signTransaction(params) {
|
|
82
82
|
throw new __1.MethodNotImplementedError();
|
|
83
83
|
}
|
|
84
|
+
async signMessage(keyOrWallet, message) {
|
|
85
|
+
if (!(keyOrWallet instanceof __1.Wallet)) {
|
|
86
|
+
return super.signMessage(keyOrWallet, message);
|
|
87
|
+
}
|
|
88
|
+
const signatureHexString = await keyOrWallet.toTradingAccount().signPayload({ payload: message });
|
|
89
|
+
return Buffer.from(signatureHexString, 'hex');
|
|
90
|
+
}
|
|
84
91
|
/** @inheritDoc */
|
|
85
92
|
auditDecryptedKey(params) {
|
|
86
93
|
throw new __1.MethodNotImplementedError();
|
|
87
94
|
}
|
|
88
95
|
}
|
|
89
96
|
exports.Ofc = Ofc;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvaW5zL29mYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILG1DQUFxQztBQUNyQyw4Q0FBd0M7QUFDeEMsMkJBYWE7QUFFYixNQUFhLEdBQUksU0FBUSxZQUFRO0lBQy9CLFlBQVksS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLElBQWE7UUFDM0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsMEVBQTBFO1lBQzFFLDBFQUEwRTtZQUMxRSxrRUFBa0U7WUFDbEUsSUFBSSxHQUFHLElBQUEsb0JBQVcsRUFBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLGdCQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQyxPQUFPO1lBQ0wsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRTtTQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUE0QjtRQUNqRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUM7WUFDSCxPQUFPLGdCQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE1BQU0sSUFBSSw2QkFBeUIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQStCO1FBQ3BELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBNEI7UUFDaEQsTUFBTSxJQUFJLDZCQUF5QixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFnQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQThCO1FBQ2xELE1BQU0sSUFBSSw2QkFBeUIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFjRCxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQXFDLEVBQUUsT0FBZTtRQUN0RSxJQUFJLENBQUMsQ0FBQyxXQUFXLFlBQVksVUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbEcsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLENBQUMsTUFBK0I7UUFDL0MsTUFBTSxJQUFJLDZCQUF5QixFQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBL0dELGtCQStHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7XG4gIEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zLFxuICBCYXNlQ29pbixcbiAgQml0R29CYXNlLFxuICBLZXlQYWlyLFxuICBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBXYWxsZXQsXG59IGZyb20gJy4uLyc7XG5cbmV4cG9ydCBjbGFzcyBPZmMgZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSk6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IE9mYyhiaXRnbyk7XG4gIH1cblxuICBnZXRDaGFpbigpIHtcbiAgICByZXR1cm4gJ29mYyc7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc2VjcDI1NmsxIGtleSBwYWlyXG4gICAqXG4gICAqIEBwYXJhbSBzZWVkXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IG9iamVjdCB3aXRoIGdlbmVyYXRlZCBwdWIgYW5kIHBydlxuICAgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBpZiAoIXNlZWQpIHtcbiAgICAgIC8vIEFuIGV4dGVuZGVkIHByaXZhdGUga2V5IGhhcyBib3RoIGEgbm9ybWFsIDI1NiBiaXQgcHJpdmF0ZSBrZXkgYW5kIGEgMjU2XG4gICAgICAvLyBiaXQgY2hhaW4gY29kZSwgYm90aCBvZiB3aGljaCBtdXN0IGJlIHJhbmRvbS4gNTEyIGJpdHMgaXMgdGhlcmVmb3JlIHRoZVxuICAgICAgLy8gbWF4aW11bSBlbnRyb3B5IGFuZCBnaXZlcyB1cyBtYXhpbXVtIHNlY3VyaXR5IGFnYWluc3QgY3JhY2tpbmcuXG4gICAgICBzZWVkID0gcmFuZG9tQnl0ZXMoNTEyIC8gOCk7XG4gICAgfVxuICAgIGNvbnN0IGV4dGVuZGVkS2V5ID0gYmlwMzIuZnJvbVNlZWQoc2VlZCk7XG4gICAgY29uc3QgeHB1YiA9IGV4dGVuZGVkS2V5Lm5ldXRlcmVkKCkudG9CYXNlNTgoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcHViOiB4cHViLFxuICAgICAgcHJ2OiBleHRlbmRlZEtleS50b0Jhc2U1OCgpLFxuICAgIH07XG4gIH1cblxuICBnZXRGYW1pbHkoKSB7XG4gICAgcmV0dXJuICdvZmMnO1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKSB7XG4gICAgcmV0dXJuICdPZmZjaGFpbic7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG0gb2YgbiB3YWxsZXQgc2lnbmVycy8ga2V5IGFtb3VudHMgYXJlIHZhbGlkIGZvciB0aGUgY29pblxuICAgKi9cbiAgaXNWYWxpZE1vZk5TZXR1cCh7IG0sIG4gfTogeyBtOiBudW1iZXI7IG46IG51bWJlciB9KSB7XG4gICAgcmV0dXJuIG0gPT09IDEgJiYgbiA9PT0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgaW5wdXQgaXMgdmFsaWQgcHVibGljIGtleSBmb3IgdGhlIGNvaW4uXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwdWIgdGhlIHB1YiB0byBiZSBjaGVja2VkXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSBpcyBpdCB2YWxpZD9cbiAgICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGJpcDMyLmZyb21CYXNlNTgocHViKS5pc05ldXRlcmVkKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgYXN5bmMgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVmVyaWZ5QWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aHJvdyBuZXcgTWV0aG9kTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBhIG1lc3NhZ2UgdXNpbmcgYSB0cmFkaW5nIHdhbGxldCdzIEJpdEdvIEtleVxuICAgKiBAcGFyYW0gd2FsbGV0IC0gdXNlcyB0aGUgQml0R28ga2V5IG9mIHRoaXMgdHJhZGluZyB3YWxsZXQgdG8gc2lnbiB0aGUgbWVzc2FnZSByZW1vdGVseSBpbiBhIEtNU1xuICAgKiBAcGFyYW0gbWVzc2FnZVxuICAgKi9cbiAgYXN5bmMgc2lnbk1lc3NhZ2Uod2FsbGV0OiBXYWxsZXQsIG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPjtcbiAgLyoqXG4gICAqIFNpZ25zIGEgbWVzc2FnZSB1c2luZyB0aGUgcHJpdmF0ZSBrZXlcbiAgICogQHBhcmFtIGtleSAtIHVzZXMgdGhlIHByaXZhdGUga2V5IHRvIHNpZ24gdGhlIG1lc3NhZ2VcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICovXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogeyBwcnY6IHN0cmluZyB9LCBtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj47XG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleU9yV2FsbGV0OiB7IHBydjogc3RyaW5nIH0gfCBXYWxsZXQsIG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgaWYgKCEoa2V5T3JXYWxsZXQgaW5zdGFuY2VvZiBXYWxsZXQpKSB7XG4gICAgICByZXR1cm4gc3VwZXIuc2lnbk1lc3NhZ2Uoa2V5T3JXYWxsZXQsIG1lc3NhZ2UpO1xuICAgIH1cbiAgICBjb25zdCBzaWduYXR1cmVIZXhTdHJpbmcgPSBhd2FpdCBrZXlPcldhbGxldC50b1RyYWRpbmdBY2NvdW50KCkuc2lnblBheWxvYWQoeyBwYXlsb2FkOiBtZXNzYWdlIH0pO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzaWduYXR1cmVIZXhTdHJpbmcsICdoZXgnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhdWRpdERlY3J5cHRlZEtleShwYXJhbXM6IEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zKSB7XG4gICAgdGhyb3cgbmV3IE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxufVxuIl19
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* @prettier
|
|
3
3
|
*/
|
|
4
4
|
import { OfcTokenConfig } from '@bitgo/statics';
|
|
5
|
-
import { BitGoBase, CoinConstructor, SignTransactionOptions as BaseSignTransactionOptions, SignedTransaction, ITransactionRecipient } from '../';
|
|
5
|
+
import { BitGoBase, CoinConstructor, SignTransactionOptions as BaseSignTransactionOptions, SignedTransaction, ITransactionRecipient, Wallet } from '../';
|
|
6
6
|
import { Ofc } from './ofc';
|
|
7
7
|
export interface SignTransactionOptions extends BaseSignTransactionOptions {
|
|
8
8
|
txPrebuild: {
|
|
9
9
|
payload: string;
|
|
10
10
|
};
|
|
11
|
-
prv
|
|
11
|
+
prv?: string;
|
|
12
|
+
wallet?: Wallet;
|
|
12
13
|
}
|
|
13
14
|
export { OfcTokenConfig };
|
|
14
15
|
export declare class OfcToken extends Ofc {
|
|
@@ -31,7 +32,8 @@ export declare class OfcToken extends Ofc {
|
|
|
31
32
|
valuelessTransferAllowed(): boolean;
|
|
32
33
|
static createTokenConstructor(config: OfcTokenConfig): CoinConstructor;
|
|
33
34
|
/**
|
|
34
|
-
*
|
|
35
|
+
* Signs a half-signed OFC transaction.
|
|
36
|
+
* Signs the transaction remotely using the BitGo key if prv is not provided.
|
|
35
37
|
* @param params
|
|
36
38
|
* @returns {Promise<SignedTransaction>}
|
|
37
39
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ofcToken.d.ts","sourceRoot":"","sources":["../../../src/coins/ofcToken.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,SAAS,EACT,eAAe,EACf,sBAAsB,IAAI,0BAA0B,EACpD,iBAAiB,EACjB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"ofcToken.d.ts","sourceRoot":"","sources":["../../../src/coins/ofcToken.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,SAAS,EACT,eAAe,EACf,sBAAsB,IAAI,0BAA0B,EACpD,iBAAiB,EACjB,qBAAqB,EACrB,MAAM,EACP,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAI1B,qBAAa,QAAS,SAAQ,GAAG;IAC/B,SAAgB,WAAW,EAAE,cAAc,CAAC;gBAEhC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc;IAKzD,IAAI,IAAI,WAEP;IAED,IAAI,aAAa,WAEhB;IAED,IAAI,IAAI,WAEP;IAED,IAAI,WAAW,WAEd;IAED,IAAI,MAAM,YAET;IAED,QAAQ;IAIR,WAAW;IAIX,aAAa;IAIb,IAAW,IAAI,WAEd;IAED,cAAc,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI;IAyBtD;;;OAGG;IACH,wBAAwB;IAIxB,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe;IAItE;;;;;OAKG;IACG,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiBjF;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;CAkB1C"}
|
|
@@ -69,15 +69,25 @@ class OfcToken extends ofc_1.Ofc {
|
|
|
69
69
|
return (bitgo) => new OfcToken(bitgo, config);
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
72
|
+
* Signs a half-signed OFC transaction.
|
|
73
|
+
* Signs the transaction remotely using the BitGo key if prv is not provided.
|
|
73
74
|
* @param params
|
|
74
75
|
* @returns {Promise<SignedTransaction>}
|
|
75
76
|
*/
|
|
76
77
|
async signTransaction(params) {
|
|
77
78
|
const txPrebuild = params.txPrebuild;
|
|
78
79
|
const payload = txPrebuild.payload;
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
let signature;
|
|
81
|
+
if (params.wallet) {
|
|
82
|
+
signature = await params.wallet.toTradingAccount().signPayload({ payload, walletPassphrase: params.prv });
|
|
83
|
+
}
|
|
84
|
+
else if (params.prv) {
|
|
85
|
+
const signatureBuffer = (await this.signMessage({ prv: params.prv }, payload));
|
|
86
|
+
signature = signatureBuffer.toString('hex');
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
throw new Error('You must pass in either one of wallet or prv');
|
|
90
|
+
}
|
|
81
91
|
return { halfSigned: { payload, signature } };
|
|
82
92
|
}
|
|
83
93
|
/**
|
|
@@ -106,4 +116,4 @@ class OfcToken extends ofc_1.Ofc {
|
|
|
106
116
|
}
|
|
107
117
|
}
|
|
108
118
|
exports.OfcToken = OfcToken;
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29pbnMvb2ZjVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsbUNBQWtDO0FBUWxDLDRDQUErQztBQUUvQywrQkFBNEI7QUFXNUIsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUM7QUFFdkMsTUFBYSxRQUFTLFNBQVEsU0FBRztJQUcvQixZQUFZLEtBQWdCLEVBQUUsV0FBMkI7UUFDdkQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFD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O0NBQ0Y7QUF2SEQsNEJBdUhDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgT2ZjVG9rZW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBCaXRHb0Jhc2UsXG4gIENvaW5Db25zdHJ1Y3RvcixcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBhcyBCYXNlU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIElUcmFuc2FjdGlvblJlY2lwaWVudCxcbn0gZnJvbSAnLi4vJztcbmltcG9ydCB7IGlzQm9sdDExSW52b2ljZSB9IGZyb20gJy4uL2xpZ2h0bmluZyc7XG5cbmltcG9ydCB7IE9mYyB9IGZyb20gJy4vb2ZjJztcblxuZXhwb3J0IGludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiB7XG4gICAgcGF5bG9hZDogc3RyaW5nO1xuICB9O1xuICBwcnY6IHN0cmluZztcbn1cblxuZXhwb3J0IHsgT2ZjVG9rZW5Db25maWcgfTtcblxuY29uc3QgcHVibGljSWRSZWdleCA9IC9eW2EtZlxcZF17MzJ9JC9pO1xuXG5leHBvcnQgY2xhc3MgT2ZjVG9rZW4gZXh0ZW5kcyBPZmMge1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5Db25maWc6IE9mY1Rva2VuQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHRva2VuQ29uZmlnOiBPZmNUb2tlbkNvbmZpZykge1xuICAgIHN1cGVyKGJpdGdvKTtcbiAgICB0aGlzLnRva2VuQ29uZmlnID0gdG9rZW5Db25maWc7XG4gIH1cblxuICBnZXQgY29pbigpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5jb2luO1xuICB9XG5cbiAgZ2V0IGRlY2ltYWxQbGFjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcztcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLm5hbWU7XG4gIH1cblxuICBnZXQgYmFja2luZ0NvaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuYmFja2luZ0NvaW47XG4gIH1cblxuICBnZXQgaXNGaWF0KCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmlzRmlhdDtcbiAgfVxuXG4gIGdldENoYWluKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpIHtcbiAgICByZXR1cm4gU3RyaW5nKE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxQbGFjZXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgY2hlY2tSZWNpcGllbnQocmVjaXBpZW50OiBJVHJhbnNhY3Rpb25SZWNpcGllbnQpOiB2b2lkIHtcbiAgICBpZiAoaXNCb2x0MTFJbnZvaWNlKHJlY2lwaWVudC5hZGRyZXNzKSkge1xuICAgICAgLy8gc2hvdWxkIHRocm93IGVycm9yIGlmIHRoaXMgaXNudCBiaXRjb2luIChtYWlubmV0IG9yIHRlc3RuZXQpXG4gICAgICBpZiAodGhpcy5iYWNraW5nQ29pbiAhPT0gJ2J0YycgJiYgdGhpcy5iYWNraW5nQ29pbiAhPT0gJ3RidGMnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudCAtIGxpZ2h0bmluZyBpbnZvaWNlIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBiaXRjb2luYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGFtb3VudCBmb3IgYm9sdDExIGludm9pY2VzIG11c3QgYmUgYSBub24temVybyBiaWdpbnRcbiAgICAgIGxldCBhbW91bnQ6IGJpZ2ludDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFtb3VudCA9IEJpZ0ludChyZWNpcGllbnQuYW1vdW50KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBpbnZhbGlkIGFyZ3VtZW50ICR7cmVjaXBpZW50LmFtb3VudH0gZm9yIGFtb3VudCAtIGxpZ2h0bmluZyBpbnZvaWNlIGFtb3VudCBtdXN0IGJlIGEgbm9uLXplcm8gYmlnaW50YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGFtb3VudCA+IDBuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudCBmb3IgYW1vdW50IC0gbGlnaHRuaW5nIGludm9pY2UgYW1vdW50IG11c3QgYmUgYSBub24temVybyBiaWdpbnRgKTtcbiAgICB9XG5cbiAgICBzdXBlci5jaGVja1JlY2lwaWVudChyZWNpcGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgZm9yIHNlbmRpbmcgdmFsdWUgb2YgMFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBva2F5IHRvIHNlbmQgMCB2YWx1ZSwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICB2YWx1ZWxlc3NUcmFuc2ZlckFsbG93ZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3IoY29uZmlnOiBPZmNUb2tlbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgT2ZjVG9rZW4oYml0Z28sIGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQXNzZW1ibGUga2V5Y2hhaW4gYW5kIGhhbGYtc2lnbiBwcmVidWlsdCB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPn1cbiAgICovXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHhQcmVidWlsZCA9IHBhcmFtcy50eFByZWJ1aWxkO1xuICAgIGNvbnN0IHBheWxvYWQgPSB0eFByZWJ1aWxkLnBheWxvYWQ7XG4gICAgY29uc3Qgc2lnbmF0dXJlQnVmZmVyID0gKGF3YWl0IHRoaXMuc2lnbk1lc3NhZ2UocGFyYW1zLCBwYXlsb2FkKSkgYXMgYW55O1xuICAgIGNvbnN0IHNpZ25hdHVyZTogc3RyaW5nID0gc2lnbmF0dXJlQnVmZmVyLnRvU3RyaW5nKCdoZXgnKTtcbiAgICByZXR1cm4geyBoYWxmU2lnbmVkOiB7IHBheWxvYWQsIHNpZ25hdHVyZSB9IH0gYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFkZHJlc3MgaXMgdmFsaWQgZm9yIHRoaXMgb2ZjIHRva2VuLlxuICAgKlxuICAgKiBUaGVzZSBhZGRyZXNzZXMgYXJlIGVpdGhlciBiZy08cHVibGljaWQ+LCB3aGVyZSBwdWJsaWMgaWQgaXMgdGhlIGludGVybmFsIGFkZHJlc3MgdG8gc2VuZCB0byxcbiAgICogb3IgYXJlIGFuIGFkZHJlc3Mgd2hpY2ggaXMgdmFsaWQgb24gdGhlIGJhY2tpbmcgY29pbiBvZiB0aGlzIG9mYyB0b2tlbi5cbiAgICogQHBhcmFtIGFkZHJlc3MgYWRkcmVzcyB0byBjaGVjayBmb3IgdmFsaWRpdHlcbiAgICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzU3RyaW5nKGFkZHJlc3MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChhZGRyZXNzLnN0YXJ0c1dpdGgoJ2JnLScpKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGFkZHJlc3Muc3BsaXQoJy0nKTtcbiAgICAgIGNvbnN0IGFjY291bnRJZCA9IHBhcnRzWzFdO1xuICAgICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA9PT0gMiAmJiBwdWJsaWNJZFJlZ2V4LnRlc3QoYWNjb3VudElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYmFja2luZ0NvaW4gPSB0aGlzLmJpdGdvLmNvaW4odGhpcy5iYWNraW5nQ29pbik7XG4gICAgICBpZiAodGhpcy5iYWNraW5nQ29pbiA9PT0gJ2J0YycgfHwgdGhpcy5iYWNraW5nQ29pbiA9PT0gJ3RidGMnKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgYmFja2luZ0NvaW4gYXMgdW5rbm93biBhcyB7IGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgcGFyYW1zOiB7IGFsbG93TGlnaHRuaW5nOiBib29sZWFuIH0pOiBib29sZWFuIH1cbiAgICAgICAgKS5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLCB7IGFsbG93TGlnaHRuaW5nOiB0cnVlIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhY2tpbmdDb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29pbnMvb2ZjVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsbUNBQWtDO0FBU2xDLDRDQUErQztBQUUvQywrQkFBNEI7QUFZNUIsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUM7QUFFdkMsTUFBYSxRQUFTLFNBQVEsU0FBRztJQUcvQixZQUFZLEtBQWdCLEVBQUUsV0FBMkI7UUFDdkQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFD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QUM7UUFDN0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEQsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUM5RCxPQUNFLFdBQ0QsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUNELE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBaklELDRCQWlJQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7IE9mY1Rva2VuQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQml0R29CYXNlLFxuICBDb2luQ29uc3RydWN0b3IsXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgYXMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBJVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFdhbGxldCxcbn0gZnJvbSAnLi4vJztcbmltcG9ydCB7IGlzQm9sdDExSW52b2ljZSB9IGZyb20gJy4uL2xpZ2h0bmluZyc7XG5cbmltcG9ydCB7IE9mYyB9IGZyb20gJy4vb2ZjJztcblxuZXhwb3J0IGludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiB7XG4gICAgcGF5bG9hZDogc3RyaW5nO1xuICB9O1xuICBwcnY/OiBzdHJpbmc7XG4gIHdhbGxldD86IFdhbGxldDtcbn1cblxuZXhwb3J0IHsgT2ZjVG9rZW5Db25maWcgfTtcblxuY29uc3QgcHVibGljSWRSZWdleCA9IC9eW2EtZlxcZF17MzJ9JC9pO1xuXG5leHBvcnQgY2xhc3MgT2ZjVG9rZW4gZXh0ZW5kcyBPZmMge1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5Db25maWc6IE9mY1Rva2VuQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHRva2VuQ29uZmlnOiBPZmNUb2tlbkNvbmZpZykge1xuICAgIHN1cGVyKGJpdGdvKTtcbiAgICB0aGlzLnRva2VuQ29uZmlnID0gdG9rZW5Db25maWc7XG4gIH1cblxuICBnZXQgY29pbigpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5jb2luO1xuICB9XG5cbiAgZ2V0IGRlY2ltYWxQbGFjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcztcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLm5hbWU7XG4gIH1cblxuICBnZXQgYmFja2luZ0NvaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuYmFja2luZ0NvaW47XG4gIH1cblxuICBnZXQgaXNGaWF0KCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmlzRmlhdDtcbiAgfVxuXG4gIGdldENoYWluKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpIHtcbiAgICByZXR1cm4gU3RyaW5nKE1hdGgucG93KDEwLCB0aGlzLmRlY2ltYWxQbGFjZXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgY2hlY2tSZWNpcGllbnQocmVjaXBpZW50OiBJVHJhbnNhY3Rpb25SZWNpcGllbnQpOiB2b2lkIHtcbiAgICBpZiAoaXNCb2x0MTFJbnZvaWNlKHJlY2lwaWVudC5hZGRyZXNzKSkge1xuICAgICAgLy8gc2hvdWxkIHRocm93IGVycm9yIGlmIHRoaXMgaXNudCBiaXRjb2luIChtYWlubmV0IG9yIHRlc3RuZXQpXG4gICAgICBpZiAodGhpcy5iYWNraW5nQ29pbiAhPT0gJ2J0YycgJiYgdGhpcy5iYWNraW5nQ29pbiAhPT0gJ3RidGMnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudCAtIGxpZ2h0bmluZyBpbnZvaWNlIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBiaXRjb2luYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGFtb3VudCBmb3IgYm9sdDExIGludm9pY2VzIG11c3QgYmUgYSBub24temVybyBiaWdpbnRcbiAgICAgIGxldCBhbW91bnQ6IGJpZ2ludDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFtb3VudCA9IEJpZ0ludChyZWNpcGllbnQuYW1vdW50KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBpbnZhbGlkIGFyZ3VtZW50ICR7cmVjaXBpZW50LmFtb3VudH0gZm9yIGFtb3VudCAtIGxpZ2h0bmluZyBpbnZvaWNlIGFtb3VudCBtdXN0IGJlIGEgbm9uLXplcm8gYmlnaW50YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGFtb3VudCA+IDBuKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudCBmb3IgYW1vdW50IC0gbGlnaHRuaW5nIGludm9pY2UgYW1vdW50IG11c3QgYmUgYSBub24temVybyBiaWdpbnRgKTtcbiAgICB9XG5cbiAgICBzdXBlci5jaGVja1JlY2lwaWVudChyZWNpcGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgZm9yIHNlbmRpbmcgdmFsdWUgb2YgMFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBva2F5IHRvIHNlbmQgMCB2YWx1ZSwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICB2YWx1ZWxlc3NUcmFuc2ZlckFsbG93ZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3IoY29uZmlnOiBPZmNUb2tlbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgT2ZjVG9rZW4oYml0Z28sIGNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgYSBoYWxmLXNpZ25lZCBPRkMgdHJhbnNhY3Rpb24uXG4gICAqIFNpZ25zIHRoZSB0cmFuc2FjdGlvbiByZW1vdGVseSB1c2luZyB0aGUgQml0R28ga2V5IGlmIHBydiBpcyBub3QgcHJvdmlkZWQuXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHJldHVybnMge1Byb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+fVxuICAgKi9cbiAgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHBhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eFByZWJ1aWxkID0gcGFyYW1zLnR4UHJlYnVpbGQ7XG4gICAgY29uc3QgcGF5bG9hZCA9IHR4UHJlYnVpbGQucGF5bG9hZDtcblxuICAgIGxldCBzaWduYXR1cmU6IHN0cmluZztcbiAgICBpZiAocGFyYW1zLndhbGxldCkge1xuICAgICAgc2lnbmF0dXJlID0gYXdhaXQgcGFyYW1zLndhbGxldC50b1RyYWRpbmdBY2NvdW50KCkuc2lnblBheWxvYWQoeyBwYXlsb2FkLCB3YWxsZXRQYXNzcGhyYXNlOiBwYXJhbXMucHJ2IH0pO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zLnBydikge1xuICAgICAgY29uc3Qgc2lnbmF0dXJlQnVmZmVyID0gKGF3YWl0IHRoaXMuc2lnbk1lc3NhZ2UoeyBwcnY6IHBhcmFtcy5wcnYgfSwgcGF5bG9hZCkpIGFzIGFueTtcbiAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUJ1ZmZlci50b1N0cmluZygnaGV4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgcGFzcyBpbiBlaXRoZXIgb25lIG9mIHdhbGxldCBvciBwcnYnKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBoYWxmU2lnbmVkOiB7IHBheWxvYWQsIHNpZ25hdHVyZSB9IH0gYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGFkZHJlc3MgaXMgdmFsaWQgZm9yIHRoaXMgb2ZjIHRva2VuLlxuICAgKlxuICAgKiBUaGVzZSBhZGRyZXNzZXMgYXJlIGVpdGhlciBiZy08cHVibGljaWQ+LCB3aGVyZSBwdWJsaWMgaWQgaXMgdGhlIGludGVybmFsIGFkZHJlc3MgdG8gc2VuZCB0byxcbiAgICogb3IgYXJlIGFuIGFkZHJlc3Mgd2hpY2ggaXMgdmFsaWQgb24gdGhlIGJhY2tpbmcgY29pbiBvZiB0aGlzIG9mYyB0b2tlbi5cbiAgICogQHBhcmFtIGFkZHJlc3MgYWRkcmVzcyB0byBjaGVjayBmb3IgdmFsaWRpdHlcbiAgICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzU3RyaW5nKGFkZHJlc3MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChhZGRyZXNzLnN0YXJ0c1dpdGgoJ2JnLScpKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGFkZHJlc3Muc3BsaXQoJy0nKTtcbiAgICAgIGNvbnN0IGFjY291bnRJZCA9IHBhcnRzWzFdO1xuICAgICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA9PT0gMiAmJiBwdWJsaWNJZFJlZ2V4LnRlc3QoYWNjb3VudElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYmFja2luZ0NvaW4gPSB0aGlzLmJpdGdvLmNvaW4odGhpcy5iYWNraW5nQ29pbik7XG4gICAgICBpZiAodGhpcy5iYWNraW5nQ29pbiA9PT0gJ2J0YycgfHwgdGhpcy5iYWNraW5nQ29pbiA9PT0gJ3RidGMnKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgYmFja2luZ0NvaW4gYXMgdW5rbm93biBhcyB7IGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgcGFyYW1zOiB7IGFsbG93TGlnaHRuaW5nOiBib29sZWFuIH0pOiBib29sZWFuIH1cbiAgICAgICAgKS5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLCB7IGFsbG93TGlnaHRuaW5nOiB0cnVlIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhY2tpbmdDb2luLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tradingAccount.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/trading/tradingAccount.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
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
|
+
/**
|
|
7
|
+
* @prettier
|
|
8
|
+
*/
|
|
9
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
10
|
+
require("should");
|
|
11
|
+
const tradingAccount_1 = require("../../../../src/bitgo/trading/tradingAccount");
|
|
12
|
+
describe('TradingAccount', function () {
|
|
13
|
+
let tradingAccount;
|
|
14
|
+
let mockBitGo;
|
|
15
|
+
let mockWallet;
|
|
16
|
+
let mockBaseCoin;
|
|
17
|
+
const enterpriseId = 'test-enterprise-id';
|
|
18
|
+
const walletPassphrase = 'test-passphrase';
|
|
19
|
+
const encryptedPrv = 'encrypted-prv';
|
|
20
|
+
const decryptedPrv = 'decrypted-prv';
|
|
21
|
+
const signature = 'aabbccdd';
|
|
22
|
+
beforeEach(function () {
|
|
23
|
+
const postStub = sinon_1.default.stub();
|
|
24
|
+
postStub.returns({
|
|
25
|
+
send: sinon_1.default.stub().returns({
|
|
26
|
+
result: sinon_1.default.stub().resolves({ signature }),
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
mockBitGo = {
|
|
30
|
+
post: postStub,
|
|
31
|
+
decrypt: sinon_1.default.stub().returns(decryptedPrv),
|
|
32
|
+
};
|
|
33
|
+
mockBaseCoin = {
|
|
34
|
+
keychains: sinon_1.default.stub().returns({
|
|
35
|
+
get: sinon_1.default.stub().resolves({ encryptedPrv }),
|
|
36
|
+
}),
|
|
37
|
+
signMessage: sinon_1.default.stub().resolves(Buffer.from(signature, 'hex')),
|
|
38
|
+
};
|
|
39
|
+
mockWallet = {
|
|
40
|
+
id: sinon_1.default.stub().returns('test-wallet-id'),
|
|
41
|
+
keyIds: sinon_1.default.stub().returns(['user-key-id', 'backup-key-id', 'bitgo-key-id']),
|
|
42
|
+
url: sinon_1.default.stub().returns('https://example.com/wallet/test-wallet-id/tx/sign'),
|
|
43
|
+
toJSON: sinon_1.default.stub().returns({
|
|
44
|
+
id: 'test-wallet-id',
|
|
45
|
+
keys: ['user-key-id', 'backup-key-id', 'bitgo-key-id'],
|
|
46
|
+
userKeySigningRequired: undefined,
|
|
47
|
+
}),
|
|
48
|
+
baseCoin: mockBaseCoin,
|
|
49
|
+
bitgo: mockBitGo,
|
|
50
|
+
};
|
|
51
|
+
tradingAccount = new tradingAccount_1.TradingAccount(enterpriseId, mockWallet, mockBitGo);
|
|
52
|
+
});
|
|
53
|
+
afterEach(function () {
|
|
54
|
+
sinon_1.default.restore();
|
|
55
|
+
});
|
|
56
|
+
describe('signPayload', function () {
|
|
57
|
+
const payload = { data: 'test-payload' };
|
|
58
|
+
const payloadString = 'test-payload-string';
|
|
59
|
+
describe('without walletPassphrase (BitGo remote signing)', function () {
|
|
60
|
+
it('should sign using the BitGo key remotely when no passphrase is provided', async function () {
|
|
61
|
+
const result = await tradingAccount.signPayload({ payload });
|
|
62
|
+
mockWallet.toJSON.calledOnce.should.be.true();
|
|
63
|
+
mockWallet.url.calledWith('/tx/sign').should.be.true();
|
|
64
|
+
mockBitGo.post.calledOnce.should.be.true();
|
|
65
|
+
result.should.equal(signature);
|
|
66
|
+
});
|
|
67
|
+
it('should sign a string payload remotely when no passphrase is provided', async function () {
|
|
68
|
+
const result = await tradingAccount.signPayload({ payload: payloadString });
|
|
69
|
+
result.should.equal(signature);
|
|
70
|
+
});
|
|
71
|
+
it('should throw if userKeySigningRequired is set and no passphrase is provided', async function () {
|
|
72
|
+
mockWallet.toJSON.returns({
|
|
73
|
+
id: 'test-wallet-id',
|
|
74
|
+
keys: ['user-key-id', 'backup-key-id', 'bitgo-key-id'],
|
|
75
|
+
userKeySigningRequired: 'true',
|
|
76
|
+
});
|
|
77
|
+
await tradingAccount
|
|
78
|
+
.signPayload({ payload })
|
|
79
|
+
.should.be.rejectedWith('Wallet must use user key to sign ofc transaction, please provide the wallet passphrase or visit your wallet settings page to configure one.');
|
|
80
|
+
});
|
|
81
|
+
it('should throw if wallet has fewer than 2 keys and no passphrase is provided', async function () {
|
|
82
|
+
mockWallet.toJSON.returns({
|
|
83
|
+
id: 'test-wallet-id',
|
|
84
|
+
keys: ['user-key-id'],
|
|
85
|
+
userKeySigningRequired: undefined,
|
|
86
|
+
});
|
|
87
|
+
await tradingAccount
|
|
88
|
+
.signPayload({ payload })
|
|
89
|
+
.should.be.rejectedWith('Wallet does not support BitGo signing. Please reach out to support@bitgo.com to resolve this issue.');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('with walletPassphrase (local user key signing)', function () {
|
|
93
|
+
it('should decrypt the user key and sign the payload locally', async function () {
|
|
94
|
+
const result = await tradingAccount.signPayload({ payload, walletPassphrase });
|
|
95
|
+
mockBaseCoin.keychains().get.calledWith({ id: 'user-key-id' }).should.be.true();
|
|
96
|
+
mockBitGo.decrypt.calledWith({ input: encryptedPrv, password: walletPassphrase }).should.be.true();
|
|
97
|
+
mockBaseCoin.signMessage.calledOnce.should.be.true();
|
|
98
|
+
result.should.equal(Buffer.from(signature, 'hex').toString('hex'));
|
|
99
|
+
});
|
|
100
|
+
it('should stringify a Record payload before signing locally', async function () {
|
|
101
|
+
await tradingAccount.signPayload({ payload, walletPassphrase });
|
|
102
|
+
const signMessageCall = mockBaseCoin.signMessage.getCall(0);
|
|
103
|
+
signMessageCall.args[1].should.equal(JSON.stringify(payload));
|
|
104
|
+
});
|
|
105
|
+
it('should pass a string payload directly to signMessage', async function () {
|
|
106
|
+
await tradingAccount.signPayload({ payload: payloadString, walletPassphrase });
|
|
107
|
+
const signMessageCall = mockBaseCoin.signMessage.getCall(0);
|
|
108
|
+
signMessageCall.args[1].should.equal(payloadString);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZGluZ0FjY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdHJhZGluZy90cmFkaW5nQWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztHQUVHO0FBQ0gsa0RBQTBCO0FBQzFCLGtCQUFnQjtBQUNoQixpRkFBOEU7QUFFOUUsUUFBUSxDQUFDLGdCQUFnQixFQUFFO0lBQ3pCLElBQUksY0FBOEIsQ0FBQztJQUNuQyxJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFVBQWUsQ0FBQztJQUNwQixJQUFJLFlBQWlCLENBQUM7SUFFdEIsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLENBQUM7SUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQztJQUMzQyxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUM7SUFDckMsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFDO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztJQUU3QixVQUFVLENBQUM7UUFDVCxNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUNmLElBQUksRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUN6QixNQUFNLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDO2FBQzdDLENBQUM7U0FDSCxDQUFDLENBQUM7UUFFSCxTQUFTLEdBQUc7WUFDVixJQUFJLEVBQUUsUUFBUTtZQUNkLE9BQU8sRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztTQUM1QyxDQUFDO1FBRUYsWUFBWSxHQUFHO1lBQ2IsU0FBUyxFQUFFLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQzlCLEdBQUcsRUFB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QUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQywwREFBMEQsRUFBRSxLQUFLO2dCQUNsRSxNQUFNLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO2dCQUVoRSxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUQsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNoRSxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLO2dCQUM5RCxNQUFNLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztnQkFFL0UsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFkaW5nQWNjb3VudCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby90cmFkaW5nL3RyYWRpbmdBY2NvdW50JztcblxuZGVzY3JpYmUoJ1RyYWRpbmdBY2NvdW50JywgZnVuY3Rpb24gKCkge1xuICBsZXQgdHJhZGluZ0FjY291bnQ6IFRyYWRpbmdBY2NvdW50O1xuICBsZXQgbW9ja0JpdEdvOiBhbnk7XG4gIGxldCBtb2NrV2FsbGV0OiBhbnk7XG4gIGxldCBtb2NrQmFzZUNvaW46IGFueTtcblxuICBjb25zdCBlbnRlcnByaXNlSWQgPSAndGVzdC1lbnRlcnByaXNlLWlkJztcbiAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICd0ZXN0LXBhc3NwaHJhc2UnO1xuICBjb25zdCBlbmNyeXB0ZWRQcnYgPSAnZW5jcnlwdGVkLXBydic7XG4gIGNvbnN0IGRlY3J5cHRlZFBydiA9ICdkZWNyeXB0ZWQtcHJ2JztcbiAgY29uc3Qgc2lnbmF0dXJlID0gJ2FhYmJjY2RkJztcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwb3N0U3R1YiA9IHNpbm9uLnN0dWIoKTtcbiAgICBwb3N0U3R1Yi5yZXR1cm5zKHtcbiAgICAgIHNlbmQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzaWduYXR1cmUgfSksXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIHBvc3Q6IHBvc3RTdHViLFxuICAgICAgZGVjcnlwdDogc2lub24uc3R1YigpLnJldHVybnMoZGVjcnlwdGVkUHJ2KSxcbiAgICB9O1xuXG4gICAgbW9ja0Jhc2VDb2luID0ge1xuICAgICAga2V5Y2hhaW5zOiBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICAgIGdldDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgZW5jcnlwdGVkUHJ2IH0pLFxuICAgICAgfSksXG4gICAgICBzaWduTWVzc2FnZTogc2lub24uc3R1YigpLnJlc29sdmVzKEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSwgJ2hleCcpKSxcbiAgICB9O1xuXG4gICAgbW9ja1dhbGxldCA9IHtcbiAgICAgIGlkOiBzaW5vbi5zdHViKCkucmV0dXJucygndGVzdC13YWxsZXQtaWQnKSxcbiAgICAgIGtleUlkczogc2lub24uc3R1YigpLnJldHVybnMoWyd1c2VyLWtleS1pZCcsICdiYWNrdXAta2V5LWlkJywgJ2JpdGdvLWtleS1pZCddKSxcbiAgICAgIHVybDogc2lub24uc3R1YigpLnJldHVybnMoJ2h0dHBzOi8vZXhhbXBsZS5jb20vd2FsbGV0L3Rlc3Qtd2FsbGV0LWlkL3R4L3NpZ24nKSxcbiAgICAgIHRvSlNPTjogc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICBpZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICAgICAga2V5czogWyd1c2VyLWtleS1pZCcsICdiYWNrdXAta2V5LWlkJywgJ2JpdGdvLWtleS1pZCddLFxuICAgICAgICB1c2VyS2V5U2lnbmluZ1JlcXVpcmVkOiB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICAgIGJhc2VDb2luOiBtb2NrQmFzZUNvaW4sXG4gICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgIH07XG5cbiAgICB0cmFkaW5nQWNjb3VudCA9IG5ldyBUcmFkaW5nQWNjb3VudChlbnRlcnByaXNlSWQsIG1vY2tXYWxsZXQsIG1vY2tCaXRHbyk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2lnblBheWxvYWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHsgZGF0YTogJ3Rlc3QtcGF5bG9hZCcgfTtcbiAgICBjb25zdCBwYXlsb2FkU3RyaW5nID0gJ3Rlc3QtcGF5bG9hZC1zdHJpbmcnO1xuXG4gICAgZGVzY3JpYmUoJ3dpdGhvdXQgd2FsbGV0UGFzc3BocmFzZSAoQml0R28gcmVtb3RlIHNpZ25pbmcpJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBzaWduIHVzaW5nIHRoZSBCaXRHbyBrZXkgcmVtb3RlbHkgd2hlbiBubyBwYXNzcGhyYXNlIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFkaW5nQWNjb3VudC5zaWduUGF5bG9hZCh7IHBheWxvYWQgfSk7XG5cbiAgICAgICAgbW9ja1dhbGxldC50b0pTT04uY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBtb2NrV2FsbGV0LnVybC5jYWxsZWRXaXRoKCcvdHgvc2lnbicpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICAgIG1vY2tCaXRHby5wb3N0LmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgcmVzdWx0LnNob3VsZC5lcXVhbChzaWduYXR1cmUpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc2lnbiBhIHN0cmluZyBwYXlsb2FkIHJlbW90ZWx5IHdoZW4gbm8gcGFzc3BocmFzZSBpcyBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhZGluZ0FjY291bnQuc2lnblBheWxvYWQoeyBwYXlsb2FkOiBwYXlsb2FkU3RyaW5nIH0pO1xuXG4gICAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwoc2lnbmF0dXJlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHRocm93IGlmIHVzZXJLZXlTaWduaW5nUmVxdWlyZWQgaXMgc2V0IGFuZCBubyBwYXNzcGhyYXNlIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBtb2NrV2FsbGV0LnRvSlNPTi5yZXR1cm5zKHtcbiAgICAgICAgICBpZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICAgICAgICBrZXlzOiBbJ3VzZXIta2V5LWlkJywgJ2JhY2t1cC1rZXktaWQnLCAnYml0Z28ta2V5LWlkJ10sXG4gICAgICAgICAgdXNlcktleVNpZ25pbmdSZXF1aXJlZDogJ3RydWUnLFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCB0cmFkaW5nQWNjb3VudFxuICAgICAgICAgIC5zaWduUGF5bG9hZCh7IHBheWxvYWQgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAgICdXYWxsZXQgbXVzdCB1c2UgdXNlciBrZXkgdG8gc2lnbiBvZmMgdHJhbnNhY3Rpb24sIHBsZWFzZSBwcm92aWRlIHRoZSB3YWxsZXQgcGFzc3BocmFzZSBvciB2aXNpdCB5b3VyIHdhbGxldCBzZXR0aW5ncyBwYWdlIHRvIGNvbmZpZ3VyZSBvbmUuJ1xuICAgICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB3YWxsZXQgaGFzIGZld2VyIHRoYW4gMiBrZXlzIGFuZCBubyBwYXNzcGhyYXNlIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBtb2NrV2FsbGV0LnRvSlNPTi5yZXR1cm5zKHtcbiAgICAgICAgICBpZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICAgICAgICBrZXlzOiBbJ3VzZXIta2V5LWlkJ10sXG4gICAgICAgICAgdXNlcktleVNpZ25pbmdSZXF1aXJlZDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCB0cmFkaW5nQWNjb3VudFxuICAgICAgICAgIC5zaWduUGF5bG9hZCh7IHBheWxvYWQgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAgICdXYWxsZXQgZG9lcyBub3Qgc3VwcG9ydCBCaXRHbyBzaWduaW5nLiBQbGVhc2UgcmVhY2ggb3V0IHRvIHN1cHBvcnRAYml0Z28uY29tIHRvIHJlc29sdmUgdGhpcyBpc3N1ZS4nXG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3dpdGggd2FsbGV0UGFzc3BocmFzZSAobG9jYWwgdXNlciBrZXkgc2lnbmluZyknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIGRlY3J5cHQgdGhlIHVzZXIga2V5IGFuZCBzaWduIHRoZSBwYXlsb2FkIGxvY2FsbHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYWRpbmdBY2NvdW50LnNpZ25QYXlsb2FkKHsgcGF5bG9hZCwgd2FsbGV0UGFzc3BocmFzZSB9KTtcblxuICAgICAgICBtb2NrQmFzZUNvaW4ua2V5Y2hhaW5zKCkuZ2V0LmNhbGxlZFdpdGgoeyBpZDogJ3VzZXIta2V5LWlkJyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgICBtb2NrQml0R28uZGVjcnlwdC5jYWxsZWRXaXRoKHsgaW5wdXQ6IGVuY3J5cHRlZFBydiwgcGFzc3dvcmQ6IHdhbGxldFBhc3NwaHJhc2UgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgbW9ja0Jhc2VDb2luLnNpZ25NZXNzYWdlLmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgICAgcmVzdWx0LnNob3VsZC5lcXVhbChCdWZmZXIuZnJvbShzaWduYXR1cmUsICdoZXgnKS50b1N0cmluZygnaGV4JykpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc3RyaW5naWZ5IGEgUmVjb3JkIHBheWxvYWQgYmVmb3JlIHNpZ25pbmcgbG9jYWxseScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgdHJhZGluZ0FjY291bnQuc2lnblBheWxvYWQoeyBwYXlsb2FkLCB3YWxsZXRQYXNzcGhyYXNlIH0pO1xuXG4gICAgICAgIGNvbnN0IHNpZ25NZXNzYWdlQ2FsbCA9IG1vY2tCYXNlQ29pbi5zaWduTWVzc2FnZS5nZXRDYWxsKDApO1xuICAgICAgICBzaWduTWVzc2FnZUNhbGwuYXJnc1sxXS5zaG91bGQuZXF1YWwoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcGFzcyBhIHN0cmluZyBwYXlsb2FkIGRpcmVjdGx5IHRvIHNpZ25NZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCB0cmFkaW5nQWNjb3VudC5zaWduUGF5bG9hZCh7IHBheWxvYWQ6IHBheWxvYWRTdHJpbmcsIHdhbGxldFBhc3NwaHJhc2UgfSk7XG5cbiAgICAgICAgY29uc3Qgc2lnbk1lc3NhZ2VDYWxsID0gbW9ja0Jhc2VDb2luLnNpZ25NZXNzYWdlLmdldENhbGwoMCk7XG4gICAgICAgIHNpZ25NZXNzYWdlQ2FsbC5hcmdzWzFdLnNob3VsZC5lcXVhbChwYXlsb2FkU3RyaW5nKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipientUtils.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/bitgo/utils/tss/recipientUtils.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
require("should");
|
|
37
|
+
const assert = __importStar(require("assert"));
|
|
38
|
+
// Import directly from source so no top-level export change is needed
|
|
39
|
+
const getModule = () => require('../../../../../src/bitgo/utils/tss/recipientUtils');
|
|
40
|
+
function makeTxRequest(intentRecipients) {
|
|
41
|
+
return {
|
|
42
|
+
txRequestId: 'test-req-id',
|
|
43
|
+
intent: intentRecipients ? { intentType: 'contractCall', recipients: intentRecipients } : { intentType: 'payment' },
|
|
44
|
+
transactions: [],
|
|
45
|
+
unsignedTxs: [],
|
|
46
|
+
state: 'pendingUserSignature',
|
|
47
|
+
walletType: 'hot',
|
|
48
|
+
walletId: 'walletId',
|
|
49
|
+
policiesChecked: true,
|
|
50
|
+
version: 1,
|
|
51
|
+
userId: 'userId',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
describe('recipientUtils', function () {
|
|
55
|
+
describe('NO_RECIPIENT_TX_TYPES', function () {
|
|
56
|
+
it('contains exactly the 8 expected exempted types', function () {
|
|
57
|
+
const { NO_RECIPIENT_TX_TYPES } = getModule();
|
|
58
|
+
const expected = [
|
|
59
|
+
'acceleration',
|
|
60
|
+
'fillNonce',
|
|
61
|
+
'transferToken',
|
|
62
|
+
'tokenApproval',
|
|
63
|
+
'consolidate',
|
|
64
|
+
'bridgeFunds',
|
|
65
|
+
'enableToken',
|
|
66
|
+
'customTx',
|
|
67
|
+
];
|
|
68
|
+
expected.forEach((t) => assert.ok(NO_RECIPIENT_TX_TYPES.has(t), `${t} should be in NO_RECIPIENT_TX_TYPES`));
|
|
69
|
+
assert.strictEqual(NO_RECIPIENT_TX_TYPES.size, expected.length);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('resolveEffectiveTxParams', function () {
|
|
73
|
+
it('uses txParams.recipients when provided', function () {
|
|
74
|
+
const { resolveEffectiveTxParams } = getModule();
|
|
75
|
+
const txRequest = makeTxRequest();
|
|
76
|
+
const result = resolveEffectiveTxParams(txRequest, { recipients: [{ address: '0xabc', amount: '100' }] });
|
|
77
|
+
result.recipients[0].address.should.equal('0xabc');
|
|
78
|
+
result.recipients[0].amount.should.equal('100');
|
|
79
|
+
});
|
|
80
|
+
it('falls back to intent.recipients when txParams has no recipients', function () {
|
|
81
|
+
const { resolveEffectiveTxParams } = getModule();
|
|
82
|
+
const txRequest = makeTxRequest([{ address: { address: '0xintent' }, amount: { value: '500' } }]);
|
|
83
|
+
const result = resolveEffectiveTxParams(txRequest, {});
|
|
84
|
+
result.recipients[0].address.should.equal('0xintent');
|
|
85
|
+
result.recipients[0].amount.should.equal('500');
|
|
86
|
+
});
|
|
87
|
+
it('falls back to intent.recipients when txParams is undefined', function () {
|
|
88
|
+
const { resolveEffectiveTxParams } = getModule();
|
|
89
|
+
const txRequest = makeTxRequest([{ address: { address: '0xintent' }, amount: { value: '999' } }]);
|
|
90
|
+
const result = resolveEffectiveTxParams(txRequest, undefined);
|
|
91
|
+
result.recipients[0].address.should.equal('0xintent');
|
|
92
|
+
});
|
|
93
|
+
it('prefers txParams.recipients over intent.recipients when both present', function () {
|
|
94
|
+
const { resolveEffectiveTxParams } = getModule();
|
|
95
|
+
const txRequest = makeTxRequest([{ address: { address: '0xintent' }, amount: { value: '9999' } }]);
|
|
96
|
+
const result = resolveEffectiveTxParams(txRequest, { recipients: [{ address: '0xexplicit', amount: '1' }] });
|
|
97
|
+
result.recipients[0].address.should.equal('0xexplicit');
|
|
98
|
+
});
|
|
99
|
+
it('maps intent.data field through to the recipient', function () {
|
|
100
|
+
const { resolveEffectiveTxParams } = getModule();
|
|
101
|
+
const txRequest = makeTxRequest([
|
|
102
|
+
{ address: { address: '0xcontract' }, amount: { value: '0' }, data: '0xabcdef' },
|
|
103
|
+
]);
|
|
104
|
+
const result = resolveEffectiveTxParams(txRequest, undefined);
|
|
105
|
+
result.recipients[0].data.should.equal('0xabcdef');
|
|
106
|
+
});
|
|
107
|
+
it('throws InvalidTransactionError when no recipients and type is not exempted', function () {
|
|
108
|
+
const { resolveEffectiveTxParams } = getModule();
|
|
109
|
+
const txRequest = makeTxRequest();
|
|
110
|
+
assert.throws(() => resolveEffectiveTxParams(txRequest, {}), /Recipient details are required to verify this transaction before signing/);
|
|
111
|
+
});
|
|
112
|
+
it('throws when txParams is undefined and intent has no recipients', function () {
|
|
113
|
+
const { resolveEffectiveTxParams } = getModule();
|
|
114
|
+
const txRequest = makeTxRequest();
|
|
115
|
+
assert.throws(() => resolveEffectiveTxParams(txRequest, undefined), /Recipient details are required to verify this transaction before signing/);
|
|
116
|
+
});
|
|
117
|
+
const NO_RECIPIENT_TYPES = [
|
|
118
|
+
'acceleration',
|
|
119
|
+
'fillNonce',
|
|
120
|
+
'transferToken',
|
|
121
|
+
'tokenApproval',
|
|
122
|
+
'consolidate',
|
|
123
|
+
'bridgeFunds',
|
|
124
|
+
'enableToken', // TSS wallets do not populate recipients for token enablement
|
|
125
|
+
'customTx', // DeFi/WalletConnect smart contract interactions have no traditional recipients
|
|
126
|
+
];
|
|
127
|
+
NO_RECIPIENT_TYPES.forEach((type) => {
|
|
128
|
+
it(`allows empty recipients for no-recipient tx type: ${type}`, function () {
|
|
129
|
+
const { resolveEffectiveTxParams } = getModule();
|
|
130
|
+
const txRequest = makeTxRequest();
|
|
131
|
+
const result = resolveEffectiveTxParams(txRequest, { type });
|
|
132
|
+
result.type.should.equal(type);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0JBQWdCO0FBQ2hCLCtDQUFpQztBQUVqQyxzRUFBc0U7QUFDdEUsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7QUFFckYsU0FBUyxhQUFhLENBQ3BCLGdCQUErRjtJQUUvRixPQUFPO1FBQ0wsV0FBVyxFQUFFLGFBQWE7UUFDMUIsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtRQUNuSCxZQUFZLEVBQUUsRUFBRTtRQUNoQixXQUFXLEVBQUUsRUFBRTtRQUNmLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsVUFBVSxFQUFFLEtBQUs7UUFDakIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsZUFBZSxFQUFFLElBQUk7UUFDckIsT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLEVBQUUsUUFBUTtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixRQUFRLENBQUMsdUJBQXVCLEVBQUU7UUFDaEMsRUFBRSxDQUFDLGdEQUFnRCxFQUFFO1lBQ25ELE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO1lBQzlDLE1BQU0sUUFBUSxHQUFHO2dCQUNmLGNBQWM7Z0JBQ2QsV0FBVztnQkFDWCxlQUFlO2dCQUNmLGVBQWU7Z0JBQ2YsYUFBYTtnQkFDYixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2Is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QVMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUNwRCwwRUFBMEUsQ0FDM0UsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxrQkFBa0IsR0FBRztZQUN6QixjQUFjO1lBQ2QsV0FBVztZQUNYLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYTtZQUNiLGFBQWE7WUFDYixhQUFhLEVBQUUsOERBQThEO1lBQzdFLFVBQVUsRUFBRSxnRkFBZ0Y7U0FDN0YsQ0FBQztRQUVGLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xDLEVBQUUsQ0FBQyxxREFBcUQsSUFBSSxFQUFFLEVBQUU7Z0JBQzlELE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO2dCQUNqRCxNQUFNLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbi8vIEltcG9ydCBkaXJlY3RseSBmcm9tIHNvdXJjZSBzbyBubyB0b3AtbGV2ZWwgZXhwb3J0IGNoYW5nZSBpcyBuZWVkZWRcbmNvbnN0IGdldE1vZHVsZSA9ICgpID0+IHJlcXVpcmUoJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvcmVjaXBpZW50VXRpbHMnKTtcblxuZnVuY3Rpb24gbWFrZVR4UmVxdWVzdChcbiAgaW50ZW50UmVjaXBpZW50cz86IHsgYWRkcmVzczogeyBhZGRyZXNzOiBzdHJpbmcgfTsgYW1vdW50OiB7IHZhbHVlOiBzdHJpbmcgfTsgZGF0YT86IHN0cmluZyB9W11cbik6IGFueSB7XG4gIHJldHVybiB7XG4gICAgdHhSZXF1ZXN0SWQ6ICd0ZXN0LXJlcS1pZCcsXG4gICAgaW50ZW50OiBpbnRlbnRSZWNpcGllbnRzID8geyBpbnRlbnRUeXBlOiAnY29udHJhY3RDYWxsJywgcmVjaXBpZW50czogaW50ZW50UmVjaXBpZW50cyB9IDogeyBpbnRlbnRUeXBlOiAncGF5bWVudCcgfSxcbiAgICB0cmFuc2FjdGlvbnM6IFtdLFxuICAgIHVuc2lnbmVkVHhzOiBbXSxcbiAgICBzdGF0ZTogJ3BlbmRpbmdVc2VyU2lnbmF0dXJlJyxcbiAgICB3YWxsZXRUeXBlOiAnaG90JyxcbiAgICB3YWxsZXRJZDogJ3dhbGxldElkJyxcbiAgICBwb2xpY2llc0NoZWNrZWQ6IHRydWUsXG4gICAgdmVyc2lvbjogMSxcbiAgICB1c2VySWQ6ICd1c2VySWQnLFxuICB9O1xufVxuXG5kZXNjcmliZSgncmVjaXBpZW50VXRpbHMnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdOT19SRUNJUElFTlRfVFhfVFlQRVMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2NvbnRhaW5zIGV4YWN0bHkgdGhlIDggZXhwZWN0ZWQgZXhlbXB0ZWQgdHlwZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IE5PX1JFQ0lQSUVOVF9UWF9UWVBFUyB9ID0gZ2V0TW9kdWxlKCk7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IFtcbiAgICAgICAgJ2FjY2VsZXJhdGlvbicsXG4gICAgICAgICdmaWxsTm9uY2UnLFxuICAgICAgICAndHJhbnNmZXJUb2tlbicsXG4gICAgICAgICd0b2tlbkFwcHJvdmFsJyxcbiAgICAgICAgJ2NvbnNvbGlkYXRlJyxcbiAgICAgICAgJ2JyaWRnZUZ1bmRzJyxcbiAgICAgICAgJ2VuYWJsZVRva2VuJyxcbiAgICAgICAgJ2N1c3RvbVR4JyxcbiAgICAgIF07XG4gICAgICBleHBlY3RlZC5mb3JFYWNoKCh0KSA9PiBhc3NlcnQub2soTk9fUkVDSVBJRU5UX1RYX1RZUEVTLmhhcyh0KSwgYCR7dH0gc2hvdWxkIGJlIGluIE5PX1JFQ0lQSUVOVF9UWF9UWVBFU2ApKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChOT19SRUNJUElFTlRfVFhfVFlQRVMuc2l6ZSwgZXhwZWN0ZWQubGVuZ3RoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Jlc29sdmVFZmZlY3RpdmVUeFBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgndXNlcyB0eFBhcmFtcy5yZWNpcGllbnRzIHdoZW4gcHJvdmlkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyB9ID0gZ2V0TW9kdWxlKCk7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweGFiYycsIGFtb3VudDogJzEwMCcgfV0gfSk7XG4gICAgICByZXN1bHQucmVjaXBpZW50c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnMHhhYmMnKTtcbiAgICAgIHJlc3VsdC5yZWNpcGllbnRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwoJzEwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhbGxzIGJhY2sgdG8gaW50ZW50LnJlY2lwaWVudHMgd2hlbiB0eFBhcmFtcyBoYXMgbm8gcmVjaXBpZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHsgcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zIH0gPSBnZXRNb2R1bGUoKTtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoW3sgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhpbnRlbnQnIH0sIGFtb3VudDogeyB2YWx1ZTogJzUwMCcgfSB9XSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICByZXN1bHQucmVjaXBpZW50c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnMHhpbnRlbnQnKTtcbiAgICAgIHJlc3VsdC5yZWNpcGllbnRzWzBdLmFtb3VudC5zaG91bGQuZXF1YWwoJzUwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhbGxzIGJhY2sgdG8gaW50ZW50LnJlY2lwaWVudHMgd2hlbiB0eFBhcmFtcyBpcyB1bmRlZmluZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyB9ID0gZ2V0TW9kdWxlKCk7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KFt7IGFkZHJlc3M6IHsgYWRkcmVzczogJzB4aW50ZW50JyB9LCBhbW91bnQ6IHsgdmFsdWU6ICc5OTknIH0gfV0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdW5kZWZpbmVkKTtcbiAgICAgIHJlc3VsdC5yZWNpcGllbnRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCcweGludGVudCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZWZlcnMgdHhQYXJhbXMucmVjaXBpZW50cyBvdmVyIGludGVudC5yZWNpcGllbnRzIHdoZW4gYm90aCBwcmVzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgeyByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMgfSA9IGdldE1vZHVsZSgpO1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdChbeyBhZGRyZXNzOiB7IGFkZHJlc3M6ICcweGludGVudCcgfSwgYW1vdW50OiB7IHZhbHVlOiAnOTk5OScgfSB9XSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweGV4cGxpY2l0JywgYW1vdW50OiAnMScgfV0gfSk7XG4gICAgICByZXN1bHQucmVjaXBpZW50c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnMHhleHBsaWNpdCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hcHMgaW50ZW50LmRhdGEgZmllbGQgdGhyb3VnaCB0byB0aGUgcmVjaXBpZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgeyByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMgfSA9IGdldE1vZHVsZSgpO1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdChbXG4gICAgICAgIHsgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhjb250cmFjdCcgfSwgYW1vdW50OiB7IHZhbHVlOiAnMCcgfSwgZGF0YTogJzB4YWJjZGVmJyB9LFxuICAgICAgXSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB1bmRlZmluZWQpO1xuICAgICAgcmVzdWx0LnJlY2lwaWVudHNbMF0uZGF0YS5zaG91bGQuZXF1YWwoJzB4YWJjZGVmJyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIHdoZW4gbm8gcmVjaXBpZW50cyBhbmQgdHlwZSBpcyBub3QgZXhlbXB0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB7IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyB9ID0gZ2V0TW9kdWxlKCk7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSksXG4gICAgICAgIC9SZWNpcGllbnQgZGV0YWlscyBhcmUgcmVxdWlyZWQgdG8gdmVyaWZ5IHRoaXMgdHJhbnNhY3Rpb24gYmVmb3JlIHNpZ25pbmcvXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyB3aGVuIHR4UGFyYW1zIGlzIHVuZGVmaW5lZCBhbmQgaW50ZW50IGhhcyBubyByZWNpcGllbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgeyByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMgfSA9IGdldE1vZHVsZSgpO1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdW5kZWZpbmVkKSxcbiAgICAgICAgL1JlY2lwaWVudCBkZXRhaWxzIGFyZSByZXF1aXJlZCB0byB2ZXJpZnkgdGhpcyB0cmFuc2FjdGlvbiBiZWZvcmUgc2lnbmluZy9cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBOT19SRUNJUElFTlRfVFlQRVMgPSBbXG4gICAgICAnYWNjZWxlcmF0aW9uJyxcbiAgICAgICdmaWxsTm9uY2UnLFxuICAgICAgJ3RyYW5zZmVyVG9rZW4nLFxuICAgICAgJ3Rva2VuQXBwcm92YWwnLFxuICAgICAgJ2NvbnNvbGlkYXRlJyxcbiAgICAgICdicmlkZ2VGdW5kcycsXG4gICAgICAnZW5hYmxlVG9rZW4nLCAvLyBUU1Mgd2FsbGV0cyBkbyBub3QgcG9wdWxhdGUgcmVjaXBpZW50cyBmb3IgdG9rZW4gZW5hYmxlbWVudFxuICAgICAgJ2N1c3RvbVR4JywgLy8gRGVGaS9XYWxsZXRDb25uZWN0IHNtYXJ0IGNvbnRyYWN0IGludGVyYWN0aW9ucyBoYXZlIG5vIHRyYWRpdGlvbmFsIHJlY2lwaWVudHNcbiAgICBdO1xuXG4gICAgTk9fUkVDSVBJRU5UX1RZUEVTLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgIGl0KGBhbGxvd3MgZW1wdHkgcmVjaXBpZW50cyBmb3Igbm8tcmVjaXBpZW50IHR4IHR5cGU6ICR7dHlwZX1gLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHsgcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zIH0gPSBnZXRNb2R1bGUoKTtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGUgfSk7XG4gICAgICAgIHJlc3VsdC50eXBlLnNob3VsZC5lcXVhbCh0eXBlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ofcWalletSignTransaction.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/wallet/ofcWalletSignTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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
|
+
/**
|
|
7
|
+
* @prettier
|
|
8
|
+
*/
|
|
9
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
10
|
+
require("should");
|
|
11
|
+
const src_1 = require("../../../../src");
|
|
12
|
+
describe('Wallet - OFC signTransaction', function () {
|
|
13
|
+
let wallet;
|
|
14
|
+
let mockBitGo;
|
|
15
|
+
let mockBaseCoin;
|
|
16
|
+
let mockWalletData;
|
|
17
|
+
beforeEach(function () {
|
|
18
|
+
mockBitGo = {
|
|
19
|
+
url: sinon_1.default.stub().returns('https://test.bitgo.com'),
|
|
20
|
+
post: sinon_1.default.stub(),
|
|
21
|
+
get: sinon_1.default.stub(),
|
|
22
|
+
setRequestTracer: sinon_1.default.stub(),
|
|
23
|
+
};
|
|
24
|
+
mockBaseCoin = {
|
|
25
|
+
getFamily: sinon_1.default.stub().returns('ofc'),
|
|
26
|
+
url: sinon_1.default.stub().returns('https://test.bitgo.com/wallet'),
|
|
27
|
+
keychains: sinon_1.default.stub(),
|
|
28
|
+
supportsTss: sinon_1.default.stub().returns(false),
|
|
29
|
+
getMPCAlgorithm: sinon_1.default.stub(),
|
|
30
|
+
presignTransaction: sinon_1.default.stub().resolvesArg(0),
|
|
31
|
+
keyIdsForSigning: sinon_1.default.stub().returns([0]),
|
|
32
|
+
signTransaction: sinon_1.default.stub().resolves({ halfSigned: { payload: 'test', signature: 'aabbcc' } }),
|
|
33
|
+
};
|
|
34
|
+
mockWalletData = {
|
|
35
|
+
id: 'test-wallet-id',
|
|
36
|
+
coin: 'ofcusdt',
|
|
37
|
+
keys: ['user-key', 'backup-key', 'bitgo-key'],
|
|
38
|
+
multisigType: 'onchain',
|
|
39
|
+
enterprise: 'ent-id',
|
|
40
|
+
};
|
|
41
|
+
wallet = new src_1.Wallet(mockBitGo, mockBaseCoin, mockWalletData);
|
|
42
|
+
});
|
|
43
|
+
afterEach(function () {
|
|
44
|
+
sinon_1.default.restore();
|
|
45
|
+
});
|
|
46
|
+
it('should pass wallet instance to baseCoin.signTransaction', async function () {
|
|
47
|
+
const txPrebuild = { txInfo: { payload: '{"amount":"100"}' } };
|
|
48
|
+
const prv = 'test-prv';
|
|
49
|
+
await wallet.signTransaction({ txPrebuild, prv });
|
|
50
|
+
mockBaseCoin.signTransaction.calledOnce.should.be.true();
|
|
51
|
+
const callArgs = mockBaseCoin.signTransaction.getCall(0).args[0];
|
|
52
|
+
callArgs.wallet.should.equal(wallet);
|
|
53
|
+
});
|
|
54
|
+
it('should pass prv to baseCoin.signTransaction when provided directly', async function () {
|
|
55
|
+
const txPrebuild = { txInfo: { payload: '{"amount":"100"}' } };
|
|
56
|
+
const prv = 'test-prv';
|
|
57
|
+
await wallet.signTransaction({ txPrebuild, prv });
|
|
58
|
+
const callArgs = mockBaseCoin.signTransaction.getCall(0).args[0];
|
|
59
|
+
callArgs.prv.should.equal(prv);
|
|
60
|
+
});
|
|
61
|
+
it('should pass wallet instance to baseCoin.signTransaction even when no prv is available', async function () {
|
|
62
|
+
sinon_1.default.stub(wallet, 'getUserPrv').returns(undefined);
|
|
63
|
+
const txPrebuild = { txInfo: { payload: '{"amount":"100"}' } };
|
|
64
|
+
await wallet.signTransaction({ txPrebuild });
|
|
65
|
+
mockBaseCoin.signTransaction.calledOnce.should.be.true();
|
|
66
|
+
const callArgs = mockBaseCoin.signTransaction.getCall(0).args[0];
|
|
67
|
+
callArgs.wallet.should.equal(wallet);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjV2FsbGV0U2lnblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3dhbGxldC9vZmNXYWxsZXRTaWduVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUNILGtEQUEwQjtBQUMxQixrQkFBZ0I7QUFDaEIseUNBQXlDO0FBRXpDLFFBQVEsQ0FBQyw4QkFBOEIsRUFBRTtJQUN2QyxJQUFJLE1BQWMsQ0FBQztJQUNuQixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFlBQWlCLENBQUM7SUFDdEIsSUFBSSxjQUFtQixDQUFDO0lBRXhCLFVBQVUsQ0FBQztRQUNULFNBQVMsR0FBRztZQUNWLEdBQUcsRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1lBQ25ELElBQUksRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEdBQUcsRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2pCLGdCQUFnQixFQUFFLGVBQUssQ0FBQyxJQUFJLEVBQUU7U0FDL0IsQ0FBQztRQUVGLFlBQVksR0FBRztZQUNiLFNBQVMsRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0QyxHQUFHLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQztZQUMxRCxTQUFTLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRTtZQUN2QixXQUFXLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDeEMsZUFBZSxFQUFFLGVBQUssQ0FBQyxJQUFJLEVBQUU7WUFDN0Isa0JBQWtCLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDL0MsZ0JBQWdCLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLGVBQWUsRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztTQUNqRyxDQUFDO1FBRUYsY0FBYyxHQUFHO1lBQ2YsRUFBRSxFQUFFLGdCQUFnQjtZQUNwQixJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO1lBQzdDLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFVBQVUsRUFBRSxRQUFRO1NBQ3JCLENBQUM7UUFFRixNQUFNLEdBQUcsSUFBSSxZQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQztRQUNSLGVBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxLQUFLO1FBQ2pFLE1BQU0sVUFBVSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLEVBQVMsQ0FBQztRQUN0RSxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7UUFFdkIsTUFBTSxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFbEQsWUFBWSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6RCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFLEtBQUs7UUFDNUUsTUFBTSxVQUFVLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsRUFBUyxDQUFDO1FBQ3RFLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztRQUV2QixNQUFNLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVsRCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVGQUF1RixFQUFFLEtBQUs7UUFDL0YsZUFBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQWdCLENBQUMsQ0FBQztRQUMzRCxNQUFNLFVBQVUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxFQUFTLENBQUM7UUFFdEUsTUFBTSxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUU3QyxZQUFZLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBXYWxsZXQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnV2FsbGV0IC0gT0ZDIHNpZ25UcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHdhbGxldDogV2FsbGV0O1xuICBsZXQgbW9ja0JpdEdvOiBhbnk7XG4gIGxldCBtb2NrQmFzZUNvaW46IGFueTtcbiAgbGV0IG1vY2tXYWxsZXREYXRhOiBhbnk7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgdXJsOiBzaW5vbi5zdHViKCkucmV0dXJucygnaHR0cHM6Ly90ZXN0LmJpdGdvLmNvbScpLFxuICAgICAgcG9zdDogc2lub24uc3R1YigpLFxuICAgICAgZ2V0OiBzaW5vbi5zdHViKCksXG4gICAgICBzZXRSZXF1ZXN0VHJhY2VyOiBzaW5vbi5zdHViKCksXG4gICAgfTtcblxuICAgIG1vY2tCYXNlQ29pbiA9IHtcbiAgICAgIGdldEZhbWlseTogc2lub24uc3R1YigpLnJldHVybnMoJ29mYycpLFxuICAgICAgdXJsOiBzaW5vbi5zdHViKCkucmV0dXJucygnaHR0cHM6Ly90ZXN0LmJpdGdvLmNvbS93YWxsZXQnKSxcbiAgICAgIGtleWNoYWluczogc2lub24uc3R1YigpLFxuICAgICAgc3VwcG9ydHNUc3M6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKGZhbHNlKSxcbiAgICAgIGdldE1QQ0FsZ29yaXRobTogc2lub24uc3R1YigpLFxuICAgICAgcHJlc2lnblRyYW5zYWN0aW9uOiBzaW5vbi5zdHViKCkucmVzb2x2ZXNBcmcoMCksXG4gICAgICBrZXlJZHNGb3JTaWduaW5nOiBzaW5vbi5zdHViKCkucmV0dXJucyhbMF0pLFxuICAgICAgc2lnblRyYW5zYWN0aW9uOiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBoYWxmU2lnbmVkOiB7IHBheWxvYWQ6ICd0ZXN0Jywgc2lnbmF0dXJlOiAnYWFiYmNjJyB9IH0pLFxuICAgIH07XG5cbiAgICBtb2NrV2FsbGV0RGF0YSA9IHtcbiAgICAgIGlkOiAndGVzdC13YWxsZXQtaWQnLFxuICAgICAgY29pbjogJ29mY3VzZHQnLFxuICAgICAga2V5czogWyd1c2VyLWtleScsICdiYWNrdXAta2V5JywgJ2JpdGdvLWtleSddLFxuICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICBlbnRlcnByaXNlOiAnZW50LWlkJyxcbiAgICB9O1xuXG4gICAgd2FsbGV0ID0gbmV3IFdhbGxldChtb2NrQml0R28sIG1vY2tCYXNlQ29pbiwgbW9ja1dhbGxldERhdGEpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIHdhbGxldCBpbnN0YW5jZSB0byBiYXNlQ29pbi5zaWduVHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhQcmVidWlsZCA9IHsgdHhJbmZvOiB7IHBheWxvYWQ6ICd7XCJhbW91bnRcIjpcIjEwMFwifScgfSB9IGFzIGFueTtcbiAgICBjb25zdCBwcnYgPSAndGVzdC1wcnYnO1xuXG4gICAgYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7IHR4UHJlYnVpbGQsIHBydiB9KTtcblxuICAgIG1vY2tCYXNlQ29pbi5zaWduVHJhbnNhY3Rpb24uY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIGNvbnN0IGNhbGxBcmdzID0gbW9ja0Jhc2VDb2luLnNpZ25UcmFuc2FjdGlvbi5nZXRDYWxsKDApLmFyZ3NbMF07XG4gICAgY2FsbEFyZ3Mud2FsbGV0LnNob3VsZC5lcXVhbCh3YWxsZXQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhc3MgcHJ2IHRvIGJhc2VDb2luLnNpZ25UcmFuc2FjdGlvbiB3aGVuIHByb3ZpZGVkIGRpcmVjdGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7IHR4SW5mbzogeyBwYXlsb2FkOiAne1wiYW1vdW50XCI6XCIxMDBcIn0nIH0gfSBhcyBhbnk7XG4gICAgY29uc3QgcHJ2ID0gJ3Rlc3QtcHJ2JztcblxuICAgIGF3YWl0IHdhbGxldC5zaWduVHJhbnNhY3Rpb24oeyB0eFByZWJ1aWxkLCBwcnYgfSk7XG5cbiAgICBjb25zdCBjYWxsQXJncyA9IG1vY2tCYXNlQ29pbi5zaWduVHJhbnNhY3Rpb24uZ2V0Q2FsbCgwKS5hcmdzWzBdO1xuICAgIGNhbGxBcmdzLnBydi5zaG91bGQuZXF1YWwocHJ2KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIHdhbGxldCBpbnN0YW5jZSB0byBiYXNlQ29pbi5zaWduVHJhbnNhY3Rpb24gZXZlbiB3aGVuIG5vIHBydiBpcyBhdmFpbGFibGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgc2lub24uc3R1Yih3YWxsZXQsICdnZXRVc2VyUHJ2JykucmV0dXJucyh1bmRlZmluZWQgYXMgYW55KTtcbiAgICBjb25zdCB0eFByZWJ1aWxkID0geyB0eEluZm86IHsgcGF5bG9hZDogJ3tcImFtb3VudFwiOlwiMTAwXCJ9JyB9IH0gYXMgYW55O1xuXG4gICAgYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7IHR4UHJlYnVpbGQgfSk7XG5cbiAgICBtb2NrQmFzZUNvaW4uc2lnblRyYW5zYWN0aW9uLmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBjb25zdCBjYWxsQXJncyA9IG1vY2tCYXNlQ29pbi5zaWduVHJhbnNhY3Rpb24uZ2V0Q2FsbCgwKS5hcmdzWzBdO1xuICAgIGNhbGxBcmdzLndhbGxldC5zaG91bGQuZXF1YWwod2FsbGV0KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ofc.d.ts","sourceRoot":"","sources":["../../../../test/unit/coins/ofc.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,CAAC"}
|