on master help sign in
refactor ledgerSignMessage
f877a8aLiam Fitzgerald
src/lib/authToken.js+1−11
@@ -20,15 +20,6 @@ function signMessage(privateKey) {
20 return ethSignature;
20 return ethSignature;
21}
21}
22
22
23−function signatureToHex(v, r, s) {
24− const ethSignature = new Uint8Array(65);
25− ethSignature.set(Buffer.from(r, 'hex'));
26− ethSignature.set(Buffer.from(s, 'hex'), 32);
27− ethSignature[64] = v;
28−
29− return `0x${Buffer.from(ethSignature).toString('hex')}`;
30−}
31−
32export const getAuthToken = async ({
23export const getAuthToken = async ({
33 wallet,
24 wallet,
34 walletType,
25 walletType,
@@ -39,8 +30,7 @@ export const getAuthToken = async ({
39 return web3.eth.personal.sign(MESSAGE, wallet.address, '');
30 return web3.eth.personal.sign(MESSAGE, wallet.address, '');
40 }
31 }
41 if (walletType === WALLET_TYPES.LEDGER) {
32 if (walletType === WALLET_TYPES.LEDGER) {
42− const { v, r, s } = await ledgerSignMessage(MESSAGE, walletHdPath);
33+ return ledgerSignMessage(MESSAGE, walletHdPath);
43− return signatureToHex(v, r, s);
44 }
34 }
45 if (walletType === WALLET_TYPES.TREZOR) {
35 if (walletType === WALLET_TYPES.TREZOR) {
46 return trezorSignMessage(MESSAGE, walletHdPath);
36 return trezorSignMessage(MESSAGE, walletHdPath);
src/lib/ledger.js+12−3
@@ -8,11 +8,11 @@ export const chopHdPrefix = str =>
8 str.slice(0, 2) === 'm/' ? str.slice(2) : str;
8 str.slice(0, 2) === 'm/' ? str.slice(2) : str;
9export const addHdPrefix = str => (str.slice(0, 2) === 'm/' ? str : 'm/' + str);
9export const addHdPrefix = str => (str.slice(0, 2) === 'm/' ? str : 'm/' + str);
10
10
11−export const ledgerSignTransaction = async (txn, hdpath) => {
11+export const ledgerSignTransaction = async (txn, hdPath) => {
12 const transport = await Transport.create();
12 const transport = await Transport.create();
13 const eth = new Eth(transport);
13 const eth = new Eth(transport);
14
14
15− const path = chopHdPrefix(hdpath);
15+ const path = chopHdPrefix(hdPath);
16 const serializedTx = txn.serialize().toString('hex');
16 const serializedTx = txn.serialize().toString('hex');
17 const sig = await eth.signTransaction(path, serializedTx);
17 const sig = await eth.signTransaction(path, serializedTx);
18
18
@@ -28,5 +28,14 @@ export const ledgerSignMessage = async (message, hdPath) => {
28 const eth = new Eth(transport);
28 const eth = new Eth(transport);
29
29
30 const path = chopHdPrefix(hdPath);
30 const path = chopHdPrefix(hdPath);
31+ const { r, s, v } = await eth.signPersonalMessage(
32+ path,
31− return eth.signPersonalMessage(path, Buffer.from(message).toString('hex'));
33+ Buffer.from(message).toString('hex')
34+ );
35+ const ethSignature = new Uint8Array(65);
36+ ethSignature.set(Buffer.from(r, 'hex'));
37+ ethSignature.set(Buffer.from(s, 'hex'), 32);
38+ ethSignature[64] = v;
39+
40+ return `0x${Buffer.from(ethSignature).toString('hex')}`;
32};
41};