Skip to content

Commit 4b1b27f

Browse files
author
Danny Diekroeger
committed
added test coverage and removed extra non-necessary coin-specific logi
1 parent 29620c5 commit 4b1b27f

File tree

8 files changed

+164
-16
lines changed

8 files changed

+164
-16
lines changed

app/sign.js

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ const handleSignUtxo = function(recoveryRequest, key, skipConfirm) {
9090
throw new Error(`Unsupported coin: ${recoveryRequest.coin}`);
9191
}
9292

93-
const isBCH = recoveryRequest.coin === 'bch' || recoveryRequest.coin === 'tbch';
94-
const isZEC = recoveryRequest.coin === 'zec' || recoveryRequest.coin === 'tzec';
9593
const transaction = utxoLib.Transaction.fromHex(recoveryRequest.transactionHex, network);
9694

9795
const outputs = transaction.outs.map(out => ({
@@ -111,20 +109,12 @@ const handleSignUtxo = function(recoveryRequest, key, skipConfirm) {
111109
// force override network as we use btc mainnet xpubs for all utxo coins
112110
backupKeyNode.keyPair.network = network;
113111

114-
115-
// For BCH and ZEC we need to add the input values to each input, because input values must be signed
116-
if (isBCH || isZEC) {
117-
transaction.ins.forEach(function (input, i) {
118-
transaction.ins[i].value = recoveryRequest.inputs[i].amount;
119-
})
120-
}
112+
transaction.ins.forEach(function (input, i) {
113+
transaction.ins[i].value = recoveryRequest.inputs[i].amount;
114+
})
121115

122116
const txBuilder = utxoLib.TransactionBuilder.fromTransaction(transaction, network);
123-
124-
if(isZEC) {
125-
txBuilder.setVersion(utxoLib.Transaction.ZCASH_SAPLING_VERSION);
126-
txBuilder.setVersionGroupId(0x892f2085);
127-
}
117+
const isBCH = recoveryRequest.coin === 'bch' || recoveryRequest.coin === 'tbch';
128118

129119
_.forEach(recoveryRequest.inputs, function(input, i) {
130120
const isBech32 = !input.redeemScript;
@@ -185,7 +175,7 @@ const handleSignEthereum = function(recoveryRequest, key, skipConfirm) {
185175

186176
const backupKeyNode = getHDNodeAndVerify(key, recoveryRequest.backupKey);
187177

188-
const backupSigningKey = backupKeyNode.getKey().getPrivateKeyBuffer();
178+
const backupSigningKey = backupKeyNode.keyPair.getPrivateKeyBuffer();
189179

190180
transaction.sign(backupSigningKey);
191181

app/utils.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const nodemailer = require('nodemailer');
33
const smtpTransport = require('nodemailer-smtp-transport');
44
const jsrender = require('jsrender');
55
const prova = require('prova-lib');
6+
const utxoLib = require('bitgo-utxo-lib');
67
const stellar = require('stellar-base');
78
const stellarHd = require('stellar-hd-wallet');
89

@@ -98,7 +99,7 @@ exports.sendMailQ = function(toEmail, subject, template, templateParams, attachm
9899

99100
exports.deriveChildKey = function(master, derivationPath, type, neuter) {
100101
if (type === 'xpub' || type === 'xprv') {
101-
const masterNode = prova.HDNode.fromBase58(master);
102+
const masterNode = utxoLib.HDNode.fromBase58(master);
102103
const childKey = masterNode.derivePath(derivationPath);
103104

104105
if (neuter) {

test/sign.js

Lines changed: 40 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/transactions/tbch.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"xpub": "xpub661MyMwAqRbcGxqSiyeHwgkHxEqJXvxUMkNLNCqTdZraf96vmhgydfq8k7c22uEHiwYcY3ntvUf2hJAParxbEov6mWAg7KdmcsNRD9uHY6A",
3+
"backupKey": "xpub661MyMwAqRbcGxqSiyeHwgkHxEqJXvxUMkNLNCqTdZraf96vmhgydfq8k7c22uEHiwYcY3ntvUf2hJAParxbEov6mWAg7KdmcsNRD9uHY6A",
4+
"transactionHex": "020000000238ebf03415130e2f07e33a519c77f785549bc808f0ebdd9da6fd86ea49d0814d00000000b500483045022100dcbfcecd4d45e63d0c9e930a071de0e7925fa55db18e13fb73f54ac61ba6b0f70220115afe5084644959c4f53b58b28a1705d36dbc3c3d9ae93cdfcb20db489ce7e0414c695221031f4abb75d569c1fe842bb9d02a59c3977f15c8988b738eb5fbca8e8ab47aeba321034aa82a5a678b197a03902d4eb125d5625802519aab9de02adfcfd20d73326bf721039ec5716d5afa6a232ea57592ff3f36a9ad13584a76560bdf8042851f5a6ab61d53aefffffffff9f8e95158bc6c641da1d0e08c31a0e2469c179f3413f901a772acc20674ed3901000000b500483045022100f4b556dd116735d7f14f7d4373b5016efffbf974e86c6768f322b9e0b04c6500022078dd4df2c31777de2b1205bae84c4383bd036114ea29c3961ce4449b7e24ec76414c6952210244fce96630bf8de47f4082e29d5bc19b0d48b3f4032e2f1f891518193494595921031c1116aaebe7cdf36b477cd343d09324041ff2f818788d6d7edc453f4ad5950a210225c71d8e54e730bf8827f9226bdc82b9e5c9c6e029963782fa8a756b32f2c73753aeffffffff010c5189000000000017a91482bd08e1c0ec097453b4c6ab0409b5f9fa6230fe8700000000",
5+
"tx": "020000000238ebf03415130e2f07e33a519c77f785549bc808f0ebdd9da6fd86ea49d0814d00000000b500483045022100dcbfcecd4d45e63d0c9e930a071de0e7925fa55db18e13fb73f54ac61ba6b0f70220115afe5084644959c4f53b58b28a1705d36dbc3c3d9ae93cdfcb20db489ce7e0414c695221031f4abb75d569c1fe842bb9d02a59c3977f15c8988b738eb5fbca8e8ab47aeba321034aa82a5a678b197a03902d4eb125d5625802519aab9de02adfcfd20d73326bf721039ec5716d5afa6a232ea57592ff3f36a9ad13584a76560bdf8042851f5a6ab61d53aefffffffff9f8e95158bc6c641da1d0e08c31a0e2469c179f3413f901a772acc20674ed3901000000b500483045022100f4b556dd116735d7f14f7d4373b5016efffbf974e86c6768f322b9e0b04c6500022078dd4df2c31777de2b1205bae84c4383bd036114ea29c3961ce4449b7e24ec76414c6952210244fce96630bf8de47f4082e29d5bc19b0d48b3f4032e2f1f891518193494595921031c1116aaebe7cdf36b477cd343d09324041ff2f818788d6d7edc453f4ad5950a210225c71d8e54e730bf8827f9226bdc82b9e5c9c6e029963782fa8a756b32f2c73753aeffffffff010c5189000000000017a91482bd08e1c0ec097453b4c6ab0409b5f9fa6230fe8700000000",
6+
"id": "dc1c229bfdbd922cf995b17a550d9d093c40e59a8e1023679157cf18008e2f28",
7+
"txid": "dc1c229bfdbd922cf995b17a550d9d093c40e59a8e1023679157cf18008e2f28",
8+
"inputs": [
9+
{
10+
"chainPath": "0/0/0/1",
11+
"path": "0/0/0/1",
12+
"redeemScript": "5221031f4abb75d569c1fe842bb9d02a59c3977f15c8988b738eb5fbca8e8ab47aeba321034aa82a5a678b197a03902d4eb125d5625802519aab9de02adfcfd20d73326bf721039ec5716d5afa6a232ea57592ff3f36a9ad13584a76560bdf8042851f5a6ab61d53ae",
13+
"amount": 5000000
14+
},
15+
{
16+
"chainPath": "0/0/0/0",
17+
"path": "0/0/0/0",
18+
"redeemScript": "52210244fce96630bf8de47f4082e29d5bc19b0d48b3f4032e2f1f891518193494595921031c1116aaebe7cdf36b477cd343d09324041ff2f818788d6d7edc453f4ad5950a210225c71d8e54e730bf8827f9226bdc82b9e5c9c6e029963782fa8a756b32f2c73753ae",
19+
"amount": 4000000
20+
}
21+
],
22+
"coin": "tbch",
23+
"custom": {
24+
"message": "Recovery initiated by BitGo on behalf of user"
25+
}
26+
}

test/transactions/tbtc2.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"xpub": "xpub661MyMwAqRbcGBtffVib6kti9XqMSrJPPCYeUQ8vNQZDQRQZwxPE7Z71zkAXgK1kj5VGypivwdDNTgzevKfGifGydVQjLULAEt528hxfs8b",
3+
"backupKey": "xpub661MyMwAqRbcGBtffVib6kti9XqMSrJPPCYeUQ8vNQZDQRQZwxPE7Z71zkAXgK1kj5VGypivwdDNTgzevKfGifGydVQjLULAEt528hxfs8b",
4+
"transactionHex": "01000000000102ef3d46738cda09d808eecd907e265bad016d8c6204a04ebfc8e0b642dc184a3c00000000232200207e9034e8fefce1a3db9e7cd3ce4c628c0f2494c0f902b7b9d0fdfcc33af867d5ffffffff1db609cdac5cec69e11727d30e61e6be2e0f043a1e1557f7098a827e012680f5010000002322002009d6b12c1ff53c3b4b7d91d327eb55bde2076c1ec516ab216e5ac2906e020bd7ffffffff01fc240c000000000017a914189f34060a9c0f749bf251b245369de0c385ae14870500000047304402200592467056486d3676e1574801227f51c2d6b660b6b4c6a32f18bc0ddde3857b02205d4017dcb1757f425063582221a6343f6f57edb492e928b85ddd696e329b83910169522102806d852817d78114e9992059b2203eed834f93caf700d39a614e81df6110bf782102a0a5e1ce8fe2193d9e6ed5c4c8dbe5cd8abf9f02db41514293539294205187f2210290d7e1c1ab180cc212d5abf9ad998bc3a3ac1255b88ef585b98d591c2e0e6de253ae0500000047304402201261f08d902ebde978f851e407733a6c98d5fc35fcc7483cc2c3480c59cedaac02205c6e5854f634b1f3d47d6a527a64fd06fd2d3fbd7720474955dde64f132b6f420169522103be4454b9f46cf6b3292996146ba38820065285e18833730371fcfb4ab2163dfb2102e602ee9041f2e9c18a07687cd0e64c9d05388133561fd4becc6462a94fc7371521038692737059d95e835f1f565ed57c825476be422feffeed10611e0c7012b7035d53ae00000000",
5+
"tx": "01000000000102ef3d46738cda09d808eecd907e265bad016d8c6204a04ebfc8e0b642dc184a3c00000000232200207e9034e8fefce1a3db9e7cd3ce4c628c0f2494c0f902b7b9d0fdfcc33af867d5ffffffff1db609cdac5cec69e11727d30e61e6be2e0f043a1e1557f7098a827e012680f5010000002322002009d6b12c1ff53c3b4b7d91d327eb55bde2076c1ec516ab216e5ac2906e020bd7ffffffff01fc240c000000000017a914189f34060a9c0f749bf251b245369de0c385ae14870500000047304402200592467056486d3676e1574801227f51c2d6b660b6b4c6a32f18bc0ddde3857b02205d4017dcb1757f425063582221a6343f6f57edb492e928b85ddd696e329b83910169522102806d852817d78114e9992059b2203eed834f93caf700d39a614e81df6110bf782102a0a5e1ce8fe2193d9e6ed5c4c8dbe5cd8abf9f02db41514293539294205187f2210290d7e1c1ab180cc212d5abf9ad998bc3a3ac1255b88ef585b98d591c2e0e6de253ae0500000047304402201261f08d902ebde978f851e407733a6c98d5fc35fcc7483cc2c3480c59cedaac02205c6e5854f634b1f3d47d6a527a64fd06fd2d3fbd7720474955dde64f132b6f420169522103be4454b9f46cf6b3292996146ba38820065285e18833730371fcfb4ab2163dfb2102e602ee9041f2e9c18a07687cd0e64c9d05388133561fd4becc6462a94fc7371521038692737059d95e835f1f565ed57c825476be422feffeed10611e0c7012b7035d53ae00000000",
6+
"id": "dc825d4f86b46706423fe0d163f0da9ecfe3a013ba2746aeffc18aae1ecdae0a",
7+
"txid": "dc825d4f86b46706423fe0d163f0da9ecfe3a013ba2746aeffc18aae1ecdae0a",
8+
"inputs": [
9+
{
10+
"chainPath": "0/0/10/1",
11+
"path": "0/0/10/1",
12+
"redeemScript": "00207e9034e8fefce1a3db9e7cd3ce4c628c0f2494c0f902b7b9d0fdfcc33af867d5",
13+
"witnessScript": "522102806d852817d78114e9992059b2203eed834f93caf700d39a614e81df6110bf782102a0a5e1ce8fe2193d9e6ed5c4c8dbe5cd8abf9f02db41514293539294205187f2210290d7e1c1ab180cc212d5abf9ad998bc3a3ac1255b88ef585b98d591c2e0e6de253ae",
14+
"amount": 500000
15+
},
16+
{
17+
"chainPath": "0/0/10/2",
18+
"path": "0/0/10/2",
19+
"redeemScript": "002009d6b12c1ff53c3b4b7d91d327eb55bde2076c1ec516ab216e5ac2906e020bd7",
20+
"witnessScript": "522103be4454b9f46cf6b3292996146ba38820065285e18833730371fcfb4ab2163dfb2102e602ee9041f2e9c18a07687cd0e64c9d05388133561fd4becc6462a94fc7371521038692737059d95e835f1f565ed57c825476be422feffeed10611e0c7012b7035d53ae",
21+
"amount": 300000
22+
}
23+
],
24+
"coin": "tbtc",
25+
"custom": {
26+
"message": "Recovery initiated by BitGo on behalf of user"
27+
}
28+
}

0 commit comments

Comments
 (0)