@@ -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';
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.' };
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,
67− const chainCode = Buffer.from(payload.chainCode, 'hex');
72+ const chainCode = Buffer.from(
73+ (payload as HDNodeResponse).chainCode,
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);
71 const authToken = await getAuthToken({
80 const authToken = await getAuthToken({