Skip to content

Commit db8ab69

Browse files
committed
fixup! fixup! tmp
1 parent 72f7a64 commit db8ab69

File tree

3 files changed

+155
-22
lines changed

3 files changed

+155
-22
lines changed

packages/connect/test-e2e.js

Lines changed: 146 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import TrezorConnect from './src';
22

33
import * as messages from '@trezor/protobuf/messages.json';
4+
import { v2 as protocolV2, thp } from '@trezor/protocol';
45
import { NodeUsbTransport, UdpTransport } from '../transport/src';
56

67
const abort = new AbortController();
@@ -9,8 +10,20 @@ const debugTransport =
910
? new UdpTransport({ messages, debugLink: true, signal: abort.signal })
1011
: new NodeUsbTransport({ messages, debugLink: true, signal: abort.signal });
1112

13+
const loadTransport =
14+
process.argv[2] === 'udp'
15+
? new UdpTransport({ messages, signal: abort.signal })
16+
: new NodeUsbTransport({ messages, signal: abort.signal });
17+
1218
const initDebugLink = async () => {
19+
if (!debugTransport.stopped) {
20+
return;
21+
}
22+
const init = await debugTransport.init().promise;
23+
const init2 = await loadTransport.init().promise;
24+
1325
const enumerate = await debugTransport.enumerate().promise;
26+
const enumerate2 = await loadTransport.enumerate().promise;
1427
if (!enumerate.success) {
1528
return;
1629
}
@@ -33,7 +46,7 @@ const debugLinkState = async channel => {
3346
session: acquire.payload,
3447
}).promise;
3548

36-
console.warn('DebugLinkState', response.payload);
49+
console.warn('DebugLinkState', response);
3750

3851
await debugTransport.release(enumerate.payload[0]).promise;
3952
await debugTransport.enumerate().promise;
@@ -42,20 +55,90 @@ const debugLinkState = async channel => {
4255
};
4356

4457
const debugLinkDecision = async () => {
58+
console.warn('debugLinkDecision-1');
4559
const enumerate = await debugTransport.enumerate().promise;
4660
if (!enumerate.success) {
4761
return;
4862
}
63+
console.warn('debugLinkDecision-2', enumerate);
4964
const acquire = await debugTransport.acquire({ input: enumerate.payload[0] }).promise;
65+
console.warn('debugLinkDecision-3', acquire);
66+
const session = acquire.payload;
5067

51-
await debugTransport.send({
52-
name: 'DebugLinkDecision',
53-
data: { button: 1 },
54-
session: acquire.payload,
55-
}).promise;
68+
const callRes = await debugTransport
69+
.send({
70+
name: 'DebugLinkDecision',
71+
data: { button: 1 },
72+
session,
73+
})
74+
.promise.then(r => {
75+
console.warn('debugLinkDecision-4', r);
5676

57-
await debugTransport.release(enumerate.payload[0]).promise;
58-
await debugTransport.enumerate().promise;
77+
return r;
78+
});
79+
80+
console.warn('debugLinkDecision-5', callRes);
81+
82+
const rele = await debugTransport.release({ ...enumerate.payload[0], session }).promise;
83+
console.warn('debugLinkDecision-6', rele);
84+
const enum2 = await debugTransport.enumerate().promise;
85+
86+
console.warn('debugLinkDecision-end', enum2);
87+
};
88+
89+
const debugLinkLoadSeed = async elo => {
90+
console.warn('debugLinkLoadSeed-1', elo);
91+
// if (elo) return;
92+
93+
const enumerate = await loadTransport.enumerate().promise;
94+
if (!enumerate.success) {
95+
return;
96+
}
97+
console.warn('debugLinkLoadSeed-2', enumerate);
98+
const acquire = await loadTransport.acquire({ input: enumerate.payload[0] }).promise;
99+
const session = acquire.payload;
100+
101+
console.warn('debugLinkLoadSeed-3', acquire);
102+
103+
const protocolState = new thp.ThpProtocolState();
104+
protocolState.deserialize(elo);
105+
106+
const load = await loadTransport
107+
.call({
108+
session,
109+
name: 'LoadDevice',
110+
data: {
111+
pin: '',
112+
label: 'THP device',
113+
passphrase_protection: true,
114+
mnemonics: ['all all all all all all all all all all all all'],
115+
skip_checksum: true,
116+
},
117+
protocol: protocolV2,
118+
protocolState,
119+
})
120+
.promise.then(r => {
121+
console.warn('debugLinkLoadSeed-4', r);
122+
if (r.success && r.payload.type === 'ButtonRequest') {
123+
const ack = loadTransport.call({
124+
session,
125+
name: 'ButtonAck',
126+
data: {},
127+
}).promise;
128+
129+
//return debugLinkDecision().then(() => ack);
130+
return ack;
131+
}
132+
133+
return r;
134+
});
135+
136+
console.warn('debugLinkLoadSeed-5', load);
137+
138+
const release = await loadTransport.release({ ...enumerate.payload[0], session }).promise;
139+
console.warn('debugLinkLoadSeed-6', release);
140+
const enumerate2 = await loadTransport.enumerate().promise;
141+
console.warn('debugLinkLoadSeed-7', enumerate2);
59142
};
60143

61144
const getFeatures = device => {
@@ -66,7 +149,7 @@ const getFeatures = device => {
66149

67150
const signTx = device => {
68151
const outputs = [];
69-
for (let i = 0; i < 4; i++) {
152+
for (let i = 0; i < 255; i++) {
70153
const output = {
71154
address: 'momtnzR3XqXgDSsFmd8gkGxUiHZLde3RmA',
72155
amount: 7129,
@@ -86,6 +169,12 @@ const signTx = device => {
86169
prev_index: 1,
87170
amount: 1827955,
88171
},
172+
{
173+
address_n: "m/44'/1'/0'/0/0",
174+
prev_hash: 'e5040e1bc1ae7667ffb9e5248e90b2fb93cd9150234151ce90e14ab2f5933bcd',
175+
prev_index: 0,
176+
amount: '31000000',
177+
},
89178
// {
90179
// address_n: "m/84'/1'/0'/0/0",
91180
// amount: '129999867',
@@ -134,24 +223,60 @@ const run = async () => {
134223
// });
135224
await initDebugLink();
136225

137-
signTx(event.payload).then(r => {
138-
console.warn(r);
139-
console.warn('Time--->', Math.round((Date.now() - testStart) / 1000));
140-
process.exit(1);
141-
});
226+
if (event.payload.features && event.payload.mode === 'initialize') {
227+
console.log('Loading seed');
228+
await new Promise(resolve => setTimeout(resolve, 2000));
229+
if (event.payload.protocolState) {
230+
await TrezorConnect.resetDevice({
231+
pin: '',
232+
label: 'THP device',
233+
passphrase_protection: true,
234+
// mnemonics: ['all all all all all all all all all all all all'],
235+
// skip_checksum: true,
236+
});
237+
} else {
238+
await debugLinkLoadSeed(event.payload.protocolState);
239+
}
240+
}
241+
242+
if (!event.payload.features && event.payload.properties) {
243+
await getFeatures(event.payload);
244+
} else {
245+
signTx(event.payload).then(r => {
246+
console.warn(r);
247+
console.warn('Time--->', Math.round((Date.now() - testStart) / 1000));
248+
process.exit(1);
249+
});
250+
}
251+
252+
// getFeatures(event.payload);
253+
254+
// TrezorConnect.getAddress({
255+
// device: { path: event.payload.path },
256+
// path: "m/44'/0'/0'/0/0",
257+
// }).then(r => {
258+
// console.warn(r);
259+
// process.exit(1);
260+
// });
142261
}
143262
});
144263

145264
TrezorConnect.on('UI_EVENT', async event => {
146265
console.warn('UI_EVENT', event);
266+
267+
if (event.type === 'ui-request_pin') {
268+
setTimeout(() => TrezorConnect.cancel(), 1000);
269+
270+
// TrezorConnect.uiResponse({
271+
// type: 'ui-receive_pin',
272+
// payload: null,
273+
// });
274+
}
275+
147276
if (event.type === 'ui-request_passphrase') {
148277
TrezorConnect.uiResponse({
149278
type: 'ui-receive_passphrase',
150-
payload: {
151-
passphraseOnDevice: false,
152-
// value: 'abcd',
153-
value: '',
154-
},
279+
payload: { value: '' },
155280
});
156281
}
157282

@@ -193,6 +318,8 @@ const run = async () => {
193318
}
194319

195320
if (event.type === 'ui-button') {
321+
// console.warn('RESOLVE!');
322+
// TrezorConnect.cancel();
196323
await debugLinkDecision();
197324
}
198325
});

packages/transport/src/thp/receive.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,16 @@ export const receiveThpMessage = async ({
5959
apiWrite,
6060
signal,
6161
}: Omit<ReceiveThpMessageProps, 'messages'>): Promise<any> => {
62+
const recvStart = Date.now();
6263
console.warn('receiveThpMessage start', protocolState);
6364

6465
const decoded = await receive(
6566
() => readWithExpectedState(apiRead, protocolState, signal),
6667
v2Protocol,
6768
);
6869

70+
console.warn('receiveThpMessage received', recvStart - Date.now());
71+
6972
const isAckExpected = protocolThp.isAckExpected(protocolState?.expectedResponses || []);
7073
if (isAckExpected) {
7174
const ack = protocolThp.encodeAck(decoded.header);
@@ -77,6 +80,8 @@ export const receiveThpMessage = async ({
7780
}
7881
}
7982

83+
console.warn('receiveThpMessage end', recvStart - Date.now());
84+
8085
// if (isAckExpected) {
8186
// protocolState?.updateSyncBit('recv');
8287
// }

packages/transport/src/thp/send.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export const sendThpMessage = async ({
3434

3535
const attempt = async (): ReturnType<typeof apiRead> => {
3636
try {
37+
const sendStart = Date.now();
3738
const result = await scheduleAction(
3839
async attemptSignal => {
3940
console.warn('---> sendThpMessage attempt start', tries);
@@ -61,7 +62,7 @@ export const sendThpMessage = async ({
6162
},
6263
);
6364

64-
console.warn('sendWithRetransmission result', tries, result);
65+
console.warn('sendWithRetransmission result', tries, Date.now() - sendStart, result);
6566

6667
return result;
6768
} catch (error) {
@@ -70,10 +71,10 @@ export const sendThpMessage = async ({
7071
}
7172
};
7273

73-
const result = await attempt();
74+
// const result = await attempt();
7475
protocolState?.updateSyncBit('send');
7576
protocolState?.setExpectedResponse(expectedResponses);
76-
console.warn('the final result!', result);
77+
console.warn('send final result!', 0x20, expectedResponses);
7778

7879
return expectedResponses;
7980
};

0 commit comments

Comments
 (0)