@@ -8,11 +8,11 @@ export const chopHdPrefix = str =>
88 str.slice(0, 2) === 'm/' ? str.slice(2) : str;
99export const addHdPrefix = str => (str.slice(0, 2) === 'm/' ? str : 'm/' + str);
1010
11−export const ledgerSignTransaction = async (txn, hdpath) => {
11+export const ledgerSignTransaction = async (txn, hdPath) => {
1212 const transport = await Transport.create();
1313 const eth = new Eth(transport);
1414
15− const path = chopHdPrefix(hdpath);
15+ const path = chopHdPrefix(hdPath);
1616 const serializedTx = txn.serialize().toString('hex');
1717 const sig = await eth.signTransaction(path, serializedTx);
1818
@@ -28,5 +28,14 @@ export const ledgerSignMessage = async (message, hdPath) => {
2828 const eth = new Eth(transport);
2929
3030 const path = chopHdPrefix(hdPath);
31− return eth.signPersonalMessage(path, Buffer.from(message).toString('hex'));
31+ const { r, s, v } = await eth.signPersonalMessage(
32+ path,
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')}`;
3241};