on master help sign in
hw-wallet: fix trezor integration
885e728tomholford
src/lib/trezor.js → src/lib/trezor.tsrenamed

The content is the same.

src/views/Login/Trezor.js → src/views/Login/Trezor.tsxrenamed+15−6
@@ -1,9 +1,9 @@
1import React, { useCallback, useMemo } from 'react';
1import React, { useCallback, useMemo } from 'react';
2import { Just } from 'folktale/maybe';
2import { Just } from 'folktale/maybe';
3−import * as bip32 from 'bip32';
3+import { bip32 } from 'bitcoinjs-lib';
4+import { publicKeyConvert } from 'secp256k1';
4import { times } from 'lodash';
5import { times } from 'lodash';
5−import TrezorConnect from 'trezor-connect';
6+import TrezorConnect, { HDNodeResponse } from 'trezor-connect';
6−import * as secp256k1 from 'secp256k1';
7import { Text, Grid, H5, CheckboxInput, SelectInput } from 'indigo-react';
7import { Text, Grid, H5, CheckboxInput, SelectInput } from 'indigo-react';
8
8
9import { useWallet } from 'store/wallet';
9import { useWallet } from 'store/wallet';
@@ -63,9 +63,18 @@ export default function Trezor({ className, goHome }) {
63 return { [FORM_ERROR]: 'Failed to authenticate with your Trezor.' };
63 return { [FORM_ERROR]: 'Failed to authenticate with your Trezor.' };
64 }
64 }
65
65
66+ // At this point, request is succesful, so payload will be
67+ // type HDNodeResponse (seems Trezor lib's TS types are slightly off)
66− const publicKey = Buffer.from(payload.publicKey, 'hex');
68+ const publicKey = Buffer.from(
69+ (payload as HDNodeResponse).publicKey,
70+ 'hex'
71+ );
67− const chainCode = Buffer.from(payload.chainCode, 'hex');
72+ const chainCode = Buffer.from(
73+ (payload as HDNodeResponse).chainCode,
74+ 'hex'
75+ );
76+
68− const pub = secp256k1.publicKeyConvert(publicKey, true);
77+ const pub = Buffer.from(publicKeyConvert(publicKey, true));
69 const hd = bip32.fromPublicKey(pub, chainCode);
78 const hd = bip32.fromPublicKey(pub, chainCode);
70
79
71 const authToken = await getAuthToken({
80 const authToken = await getAuthToken({