Skip to content

Commit ecb11b8

Browse files
author
Danny Diekroeger
committed
normalize transaction hex inputs
1 parent 62c77f1 commit ecb11b8

File tree

1 file changed

+27
-10
lines changed

1 file changed

+27
-10
lines changed

app/sign.js

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@ const handleSignUtxo = function(recoveryRequest, key, skipConfirm) {
160160
const handleSignEthereum = function(recoveryRequest, key, skipConfirm) {
161161
const EthTx = require('ethereumjs-tx');
162162

163-
const transaction = new EthTx(recoveryRequest.tx);
163+
const txHex = getTransactionHexFromRequest(recoveryRequest);
164+
const transaction = new EthTx(txHex);
164165
const decimals = coinDecimals[recoveryRequest.coin];
165166

166167
const customMessage = recoveryRequest.custom ? recoveryRequest.custom.message : 'None';
@@ -192,13 +193,10 @@ const handleSignXrp = function(recoveryRequest, key, skipConfirm) {
192193
const rippleKeypairs = require('ripple-keypairs');
193194
const rippleParse = require('ripple-binary-codec');
194195

195-
// handle different input formats
196-
if (!recoveryRequest.txHex) {
197-
recoveryRequest.txHex = recoveryRequest.tx || recoveryRequest.transactionHex;
198-
}
196+
const txHex = getTransactionHexFromRequest(recoveryRequest);
199197

200198
const decimals = coinDecimals[recoveryRequest.coin];
201-
const transaction = rippleParse.decode(recoveryRequest.txHex);
199+
const transaction = rippleParse.decode(txHex);
202200
const customMessage = recoveryRequest.custom ? recoveryRequest.custom.message : 'None';
203201

204202
const outputs = [{
@@ -217,9 +215,9 @@ const handleSignXrp = function(recoveryRequest, key, skipConfirm) {
217215

218216
const backupAddress = rippleKeypairs.deriveAddress(backupKeyNode.keyPair.getPublicKeyBuffer().toString('hex'));
219217
const privateKeyHex = backupKeyNode.keyPair.getPrivateKeyBuffer().toString('hex');
220-
const cosignedTx = utils.signXrpWithPrivateKey(recoveryRequest.txHex, privateKeyHex, { signAs: backupAddress });
218+
const cosignedTx = utils.signXrpWithPrivateKey(txHex, privateKeyHex, { signAs: backupAddress });
221219

222-
return rippleApi.combine([ recoveryRequest.txHex, cosignedTx.signedTransaction ]).signedTransaction;
220+
return rippleApi.combine([ txHex, cosignedTx.signedTransaction ]).signedTransaction;
223221
};
224222

225223
const handleSignXlm = function(recoveryRequest, key, skipConfirm) {
@@ -233,7 +231,8 @@ const handleSignXlm = function(recoveryRequest, key, skipConfirm) {
233231

234232
const decimals = coinDecimals[recoveryRequest.coin];
235233

236-
const transaction = new stellar.Transaction(recoveryRequest.tx);
234+
const txHex = getTransactionHexFromRequest(recoveryRequest);
235+
const transaction = new stellar.Transaction(txHex);
237236
const customMessage = recoveryRequest.custom ? recoveryRequest.custom.message : 'None';
238237

239238
if (transaction.operations.length !== 1) {
@@ -276,7 +275,8 @@ const handleSignXlm = function(recoveryRequest, key, skipConfirm) {
276275
const handleSignErc20 = function(recoveryRequest, key, skipConfirm) {
277276
const EthTx = require('ethereumjs-tx');
278277

279-
const transaction = new EthTx(recoveryRequest.tx);
278+
const txHex = getTransactionHexFromRequest(recoveryRequest);
279+
const transaction = new EthTx(txHex);
280280

281281
const customMessage = recoveryRequest.custom ? recoveryRequest.custom.message : 'None';
282282
const txData = transaction.data;
@@ -332,6 +332,23 @@ const parseKey = function(rawkey, coin, path) {
332332
return rawkey;
333333
}
334334

335+
/**
336+
Not all recoveryRequest files are formatted the same. Sometimes they have 'tx', 'txHex', or 'transactionHex'
337+
This function gets and gets and returns the transaction hex in all of these cases
338+
*/
339+
const getTransactionHexFromRequest = function(recoveryRequest) {
340+
if( recoveryRequest.tx ){
341+
return recoveryRequest.tx
342+
}
343+
if (recoveryRequest.txHex ){
344+
return recoveryRequest.txHex
345+
}
346+
if (recoveryRequest.transactionHex ){
347+
return recoveryRequest.transactionHex
348+
}
349+
throw new Error("The recovery request did not provide a transaction hex");
350+
}
351+
335352
const handleSign = function(args) {
336353
const file = args.file;
337354

0 commit comments

Comments
 (0)