Skip to content
This repository was archived by the owner on Nov 21, 2019. It is now read-only.

Commit 153d4b2

Browse files
authored
Merge pull request #1979 from EthersocialNetwork/ledger-32bit-chainid
support 32bits chainId with the latest Ledger app
2 parents 3236377 + eaf7744 commit 153d4b2

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

app/scripts/uiFuncs.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ uiFuncs.signTxTrezor = function(rawTx, txData, callback) {
5656
);
5757
}
5858
uiFuncs.signTxLedger = function(app, eTx, rawTx, txData, old, callback) {
59-
eTx.raw[6] = Buffer.from([rawTx.chainId]);
59+
eTx.raw[6] = rawTx.chainId;
6060
eTx.raw[7] = eTx.raw[8] = 0;
6161
var toHash = old ? eTx.raw.slice(0, 6) : eTx.raw;
6262
var txToSign = ethUtil.rlp.encode(toHash);
@@ -69,7 +69,17 @@ uiFuncs.signTxLedger = function(app, eTx, rawTx, txData, old, callback) {
6969
});
7070
return;
7171
}
72-
rawTx.v = "0x" + result['v'];
72+
var v = result['v'].toString(16);
73+
if (!old) {
74+
// EIP155 support. check/recalc signature v value.
75+
var rv = parseInt(v, 16);
76+
var cv = rawTx.chainId * 2 + 35;
77+
if (rv !== cv && (rv & cv) !== rv) {
78+
cv += 1; // add signature v bit.
79+
}
80+
v = cv.toString(16);
81+
}
82+
rawTx.v = "0x" + v;
7383
rawTx.r = "0x" + result['r'];
7484
rawTx.s = "0x" + result['s'];
7585
eTx = new ethUtil.Tx(rawTx);

0 commit comments

Comments
 (0)