@ledgerhq/hw-ledger-key-ring-protocol 0.3.1 → 0.3.2-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/CHANGELOG.md +21 -0
  3. package/lib/ApduDevice.d.ts +1 -0
  4. package/lib/ApduDevice.d.ts.map +1 -1
  5. package/lib/ApduDevice.js +195 -240
  6. package/lib/ApduDevice.js.map +1 -1
  7. package/lib/CommandBlock.js +26 -2
  8. package/lib/CommandBlock.js.map +1 -1
  9. package/lib/CommandStream.js +69 -85
  10. package/lib/CommandStream.js.map +1 -1
  11. package/lib/CommandStreamResolver.js +42 -56
  12. package/lib/CommandStreamResolver.js.map +1 -1
  13. package/lib/Device.js +115 -131
  14. package/lib/Device.js.map +1 -1
  15. package/lib/IndexedTree.js +2 -0
  16. package/lib/IndexedTree.js.map +1 -1
  17. package/lib/PublicKey.js +1 -0
  18. package/lib/PublicKey.js.map +1 -1
  19. package/lib/SeedId.js +12 -0
  20. package/lib/SeedId.js.map +1 -1
  21. package/lib/StreamTree.js +56 -72
  22. package/lib/StreamTree.js.map +1 -1
  23. package/lib/StreamTreeCipher.js +62 -75
  24. package/lib/StreamTreeCipher.js.map +1 -1
  25. package/lib/__tests__/codec.js +3 -12
  26. package/lib/__tests__/codec.js.map +1 -1
  27. package/lib/__tests__/crypto.js +22 -31
  28. package/lib/__tests__/crypto.js.map +1 -1
  29. package/lib/__tests__/indexed_tree.js +2 -3
  30. package/lib/__tests__/indexed_tree.js.map +1 -1
  31. package/lib/__tests__/key_exchange.js +40 -49
  32. package/lib/__tests__/key_exchange.js.map +1 -1
  33. package/lib/__tests__/shared_object.js +34 -47
  34. package/lib/__tests__/shared_object.js.map +1 -1
  35. package/lib-es/ApduDevice.d.ts +1 -0
  36. package/lib-es/ApduDevice.d.ts.map +1 -1
  37. package/lib-es/ApduDevice.js +195 -240
  38. package/lib-es/ApduDevice.js.map +1 -1
  39. package/lib-es/CommandBlock.js +26 -2
  40. package/lib-es/CommandBlock.js.map +1 -1
  41. package/lib-es/CommandStream.js +69 -85
  42. package/lib-es/CommandStream.js.map +1 -1
  43. package/lib-es/CommandStreamResolver.js +42 -56
  44. package/lib-es/CommandStreamResolver.js.map +1 -1
  45. package/lib-es/Device.js +115 -131
  46. package/lib-es/Device.js.map +1 -1
  47. package/lib-es/IndexedTree.js +2 -0
  48. package/lib-es/IndexedTree.js.map +1 -1
  49. package/lib-es/PublicKey.js +1 -0
  50. package/lib-es/PublicKey.js.map +1 -1
  51. package/lib-es/SeedId.js +12 -0
  52. package/lib-es/SeedId.js.map +1 -1
  53. package/lib-es/StreamTree.js +56 -72
  54. package/lib-es/StreamTree.js.map +1 -1
  55. package/lib-es/StreamTreeCipher.js +62 -75
  56. package/lib-es/StreamTreeCipher.js.map +1 -1
  57. package/lib-es/__tests__/codec.js +3 -12
  58. package/lib-es/__tests__/codec.js.map +1 -1
  59. package/lib-es/__tests__/crypto.js +22 -31
  60. package/lib-es/__tests__/crypto.js.map +1 -1
  61. package/lib-es/__tests__/indexed_tree.js +2 -3
  62. package/lib-es/__tests__/indexed_tree.js.map +1 -1
  63. package/lib-es/__tests__/key_exchange.js +40 -49
  64. package/lib-es/__tests__/key_exchange.js.map +1 -1
  65. package/lib-es/__tests__/shared_object.js +34 -47
  66. package/lib-es/__tests__/shared_object.js.map +1 -1
  67. package/package.json +4 -4
  68. package/tsconfig.json +0 -1
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/hw-ledger-key-ring-protocol@0.3.1 build /home/runner/work/ledger-live/ledger-live/libs/hw-ledger-key-ring-protocol
3
- > tsc && tsc -m ES6 --outDir lib-es
2
+ > @ledgerhq/hw-ledger-key-ring-protocol@0.3.2-nightly.1 build /home/runner/work/ledger-live/ledger-live/libs/hw-ledger-key-ring-protocol
3
+ > tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @ledgerhq/live-wallet
2
2
 
3
+ ## 0.3.2-next.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`1461449`](https://github.com/LedgerHQ/ledger-live/commit/146144941c13e60182da8d79592f706d12a6f00e), [`bdfa413`](https://github.com/LedgerHQ/ledger-live/commit/bdfa4139fcbceabfd05a57e69b05e9ccf10efbe1)]:
8
+ - @ledgerhq/live-env@2.6.0-next.2
9
+
10
+ ## 0.3.2-nightly.1
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`bdfa413`](https://github.com/LedgerHQ/ledger-live/commit/bdfa4139fcbceabfd05a57e69b05e9ccf10efbe1)]:
15
+ - @ledgerhq/live-env@2.6.0-nightly.1
16
+
17
+ ## 0.3.2-nightly.0
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [[`1461449`](https://github.com/LedgerHQ/ledger-live/commit/146144941c13e60182da8d79592f706d12a6f00e)]:
22
+ - @ledgerhq/live-env@2.6.0-nightly.0
23
+
3
24
  ## 0.3.1
4
25
 
5
26
  ### Patch Changes
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { Command, CommandBlock } from "./CommandBlock";
3
4
  import { Device } from "./Device";
4
5
  import { PublicKey } from "./PublicKey";
@@ -1 +1 @@
1
- {"version":3,"file":"ApduDevice.d.ts","sourceRoot":"","sources":["../src/ApduDevice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApduDevice.d.ts","sourceRoot":"","sources":["../src/ApduDevice.ts"],"names":[],"mappings":"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"}
package/lib/ApduDevice.js CHANGED
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.createApduDevice = exports.ApduDevice = exports.APDU = exports.TRUSTCHAIN_APP_NAME = void 0;
13
4
  const CommandBlock_1 = require("./CommandBlock");
@@ -44,100 +35,84 @@ var TrustedPropertiesTLV;
44
35
  *
45
36
  */
46
37
  class APDU {
47
- static setTrustedMember(transport, member) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- const payload = new Uint8Array([
50
- TrustedPropertiesTLV.IV,
51
- member.iv.length,
52
- ...member.iv,
53
- TrustedPropertiesTLV.TrustedMember,
54
- member.data.length,
55
- ...member.data,
56
- ]);
57
- yield transport.send(APDU.CLA, APDU.INS_SET_TRUSTED_MEMBER, 0, 0, Buffer.from(payload));
58
- });
59
- }
60
- static parseBlockHeader(transport, header) {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- const result = yield transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.BlockHeader, OutputDataMode.None, Buffer.from(header));
63
- return APDU.getResponseData(result);
64
- });
65
- }
66
- static parseCommand(transport_1, command_1) {
67
- return __awaiter(this, arguments, void 0, function* (transport, command, outputTrustedParam = false) {
68
- return yield transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Command, outputTrustedParam ? OutputDataMode.TrustedParam : OutputDataMode.None, Buffer.from(command));
69
- });
70
- }
71
- static parseSignature(transport, signature) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- return yield transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Signature, OutputDataMode.None, Buffer.from(signature));
74
- });
75
- }
76
- static initFlow(transport, sessionKey) {
77
- return __awaiter(this, void 0, void 0, function* () {
78
- yield transport.send(APDU.CLA, APDU.INS_INIT, 0x00, 0x00, Buffer.from(sessionKey));
79
- });
80
- }
81
- static parseEmptyStream(transport) {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- yield transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Empty, OutputDataMode.None, Buffer.alloc(0));
84
- });
85
- }
86
- static signBlockHeader(transport, header) {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- const data = yield transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.BlockHeader, OutputDataMode.None, Buffer.from(header));
89
- const resp = APDU.getResponseData(data);
90
- const tlvs = tlv_1.TLV.readAllTLV(resp, 0);
91
- let iv = null;
92
- let issuer = null;
93
- for (const tlv of tlvs) {
94
- if (tlv.type === TrustedPropertiesTLV.IV) {
95
- iv = tlv.value;
96
- }
97
- if (tlv.type === TrustedPropertiesTLV.IssuerPublicKey) {
98
- issuer = tlv.value;
99
- }
100
- }
101
- if (iv === null) {
102
- throw new Error("No IV in response");
38
+ static CLA = 0xe0;
39
+ static INS_GET_PUBLIC_KEY = 0x05;
40
+ static INS_PARSE_STREAM = 0x08;
41
+ static INS_SIGN_BLOCK = 0x07;
42
+ static INS_INIT = 0x06;
43
+ static INS_SET_TRUSTED_MEMBER = 0x09;
44
+ static async setTrustedMember(transport, member) {
45
+ const payload = new Uint8Array([
46
+ TrustedPropertiesTLV.IV,
47
+ member.iv.length,
48
+ ...member.iv,
49
+ TrustedPropertiesTLV.TrustedMember,
50
+ member.data.length,
51
+ ...member.data,
52
+ ]);
53
+ await transport.send(APDU.CLA, APDU.INS_SET_TRUSTED_MEMBER, 0, 0, Buffer.from(payload));
54
+ }
55
+ static async parseBlockHeader(transport, header) {
56
+ const result = await transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.BlockHeader, OutputDataMode.None, Buffer.from(header));
57
+ return APDU.getResponseData(result);
58
+ }
59
+ static async parseCommand(transport, command, outputTrustedParam = false) {
60
+ return await transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Command, outputTrustedParam ? OutputDataMode.TrustedParam : OutputDataMode.None, Buffer.from(command));
61
+ }
62
+ static async parseSignature(transport, signature) {
63
+ return await transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Signature, OutputDataMode.None, Buffer.from(signature));
64
+ }
65
+ static async initFlow(transport, sessionKey) {
66
+ await transport.send(APDU.CLA, APDU.INS_INIT, 0x00, 0x00, Buffer.from(sessionKey));
67
+ }
68
+ static async parseEmptyStream(transport) {
69
+ await transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Empty, OutputDataMode.None, Buffer.alloc(0));
70
+ }
71
+ static async signBlockHeader(transport, header) {
72
+ const data = await transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.BlockHeader, OutputDataMode.None, Buffer.from(header));
73
+ const resp = APDU.getResponseData(data);
74
+ const tlvs = tlv_1.TLV.readAllTLV(resp, 0);
75
+ let iv = null;
76
+ let issuer = null;
77
+ for (const tlv of tlvs) {
78
+ if (tlv.type === TrustedPropertiesTLV.IV) {
79
+ iv = tlv.value;
103
80
  }
104
- if (issuer === null) {
105
- throw new Error("No issuer in response");
81
+ if (tlv.type === TrustedPropertiesTLV.IssuerPublicKey) {
82
+ issuer = tlv.value;
106
83
  }
107
- return { iv, issuer };
108
- });
109
- }
110
- static signCommand(transport, command) {
111
- return __awaiter(this, void 0, void 0, function* () {
112
- const data = yield transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.Command, OutputDataMode.None, Buffer.from(command));
113
- return APDU.getResponseData(data);
114
- });
115
- }
116
- static finalizeSignature(transport) {
117
- return __awaiter(this, void 0, void 0, function* () {
118
- const response = yield transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.Signature, OutputDataMode.None, Buffer.alloc(0));
119
- const data = APDU.getResponseData(response);
120
- const sigLen = data[0];
121
- const signature = data.slice(1, sigLen + 1);
122
- const sessionKey = data.slice(sigLen + 2);
123
- return { signature, sessionKey };
124
- });
125
- }
126
- static getPublicKey(transport) {
127
- return __awaiter(this, void 0, void 0, function* () {
128
- const response = yield transport.send(APDU.CLA, APDU.INS_GET_PUBLIC_KEY, 0x00, 0x00, Buffer.alloc(0));
129
- return APDU.getResponseData(response);
130
- });
84
+ }
85
+ if (iv === null) {
86
+ throw new Error("No IV in response");
87
+ }
88
+ if (issuer === null) {
89
+ throw new Error("No issuer in response");
90
+ }
91
+ return { iv, issuer };
92
+ }
93
+ static async signCommand(transport, command) {
94
+ const data = await transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.Command, OutputDataMode.None, Buffer.from(command));
95
+ return APDU.getResponseData(data);
96
+ }
97
+ static async finalizeSignature(transport) {
98
+ const response = await transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.Signature, OutputDataMode.None, Buffer.alloc(0));
99
+ const data = APDU.getResponseData(response);
100
+ const sigLen = data[0];
101
+ const signature = data.slice(1, sigLen + 1);
102
+ const sessionKey = data.slice(sigLen + 2);
103
+ return { signature, sessionKey };
104
+ }
105
+ static async getPublicKey(transport) {
106
+ const response = await transport.send(APDU.CLA, APDU.INS_GET_PUBLIC_KEY, 0x00, 0x00, Buffer.alloc(0));
107
+ return APDU.getResponseData(response);
131
108
  }
132
109
  /**
133
110
  * allows to sign a challenge and get the seed id
134
111
  */
135
- static getSeedId(transport, challenge) {
136
- return __awaiter(this, void 0, void 0, function* () {
137
- const response = yield transport.send(APDU.CLA, APDU.INS_GET_PUBLIC_KEY, 0x00, 0x00, Buffer.from(challenge));
138
- const result = (0, SeedId_1.parseSeedIdResult)(APDU.getResponseData(response));
139
- return result;
140
- });
112
+ static async getSeedId(transport, challenge) {
113
+ const response = await transport.send(APDU.CLA, APDU.INS_GET_PUBLIC_KEY, 0x00, 0x00, Buffer.from(challenge));
114
+ const result = (0, SeedId_1.parseSeedIdResult)(APDU.getResponseData(response));
115
+ return result;
141
116
  }
142
117
  static getResponseData(response) {
143
118
  return Uint8Array.prototype.slice.call(response, 0, response.length - 2);
@@ -271,12 +246,6 @@ class APDU {
271
246
  }
272
247
  }
273
248
  exports.APDU = APDU;
274
- APDU.CLA = 0xe0;
275
- APDU.INS_GET_PUBLIC_KEY = 0x05;
276
- APDU.INS_PARSE_STREAM = 0x08;
277
- APDU.INS_SIGN_BLOCK = 0x07;
278
- APDU.INS_INIT = 0x06;
279
- APDU.INS_SET_TRUSTED_MEMBER = 0x09;
280
249
  function injectTrustedProperties(command, properties, secret) {
281
250
  switch (command.getType()) {
282
251
  case CommandBlock_1.CommandType.Seed: {
@@ -318,6 +287,8 @@ function findTrustedMember(params, member) {
318
287
  }
319
288
  findTrustedMember;
320
289
  class ApduDevice {
290
+ transport;
291
+ sessionKeyPair;
321
292
  constructor(transport) {
322
293
  this.transport = transport;
323
294
  this.sessionKeyPair = Crypto_1.crypto.randomKeypair();
@@ -325,11 +296,9 @@ class ApduDevice {
325
296
  isPublicKeyAvailable() {
326
297
  return false;
327
298
  }
328
- getPublicKey() {
329
- return __awaiter(this, void 0, void 0, function* () {
330
- const publicKey = yield APDU.getPublicKey(this.transport);
331
- return new PublicKey_1.PublicKey(publicKey);
332
- });
299
+ async getPublicKey() {
300
+ const publicKey = await APDU.getPublicKey(this.transport);
301
+ return new PublicKey_1.PublicKey(publicKey);
333
302
  }
334
303
  getSeedId(data) {
335
304
  return APDU.getSeedId(this.transport, data);
@@ -380,141 +349,127 @@ class ApduDevice {
380
349
  return member;
381
350
  }
382
351
  // Set the trusted member on the device if it's not already set
383
- setTrustedMember(params, publicKey) {
384
- return __awaiter(this, void 0, void 0, function* () {
385
- // Check if the trusted member is already set on device
386
- if (params.lastTrustedMember == Crypto_1.crypto.to_hex(publicKey)) {
387
- return;
388
- }
389
- // Verify we actually have the trusted member
390
- if (this.hasTrustedMember(params, publicKey) == false) {
391
- return;
352
+ async setTrustedMember(params, publicKey) {
353
+ // Check if the trusted member is already set on device
354
+ if (params.lastTrustedMember == Crypto_1.crypto.to_hex(publicKey)) {
355
+ return;
356
+ }
357
+ // Verify we actually have the trusted member
358
+ if (this.hasTrustedMember(params, publicKey) == false) {
359
+ return;
360
+ }
361
+ // console.log("Setting trusted member: ", crypto.to_hex(publicKey));
362
+ return APDU.setTrustedMember(this.transport, this.getTrustedMember(params, publicKey));
363
+ }
364
+ async parseBlock(block, trustedParams) {
365
+ let result;
366
+ // Parse the block header
367
+ await this.setTrustedMember(trustedParams, block.issuer);
368
+ result = await APDU.parseBlockHeader(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeBlockHeader(block));
369
+ // Record potential trusted member
370
+ this.recordTrustedMember(trustedParams, block.issuer, result);
371
+ for (const index in block.commands) {
372
+ // Parse the command
373
+ const command = block.commands[index];
374
+ // Set the trusted member depending on the command
375
+ switch (command.getType()) {
376
+ case CommandBlock_1.CommandType.AddMember:
377
+ await this.setTrustedMember(trustedParams, block.issuer);
378
+ break;
379
+ case CommandBlock_1.CommandType.PublishKey:
380
+ await this.setTrustedMember(trustedParams, command.recipient);
381
+ break;
382
+ case CommandBlock_1.CommandType.EditMember:
383
+ await this.setTrustedMember(trustedParams, command.member);
384
+ break;
385
+ default:
386
+ // Do nothing
387
+ break;
392
388
  }
393
- // console.log("Setting trusted member: ", crypto.to_hex(publicKey));
394
- return APDU.setTrustedMember(this.transport, this.getTrustedMember(params, publicKey));
395
- });
396
- }
397
- parseBlock(block, trustedParams) {
398
- return __awaiter(this, void 0, void 0, function* () {
399
- let result;
400
- // Parse the block header
401
- yield this.setTrustedMember(trustedParams, block.issuer);
402
- result = yield APDU.parseBlockHeader(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeBlockHeader(block));
389
+ result = await APDU.parseCommand(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeCommand(block, parseInt(index)), true);
403
390
  // Record potential trusted member
404
- this.recordTrustedMember(trustedParams, block.issuer, result);
405
- for (const index in block.commands) {
406
- // Parse the command
407
- const command = block.commands[index];
408
- // Set the trusted member depending on the command
409
- switch (command.getType()) {
410
- case CommandBlock_1.CommandType.AddMember:
411
- yield this.setTrustedMember(trustedParams, block.issuer);
412
- break;
413
- case CommandBlock_1.CommandType.PublishKey:
414
- yield this.setTrustedMember(trustedParams, command.recipient);
415
- break;
416
- case CommandBlock_1.CommandType.EditMember:
417
- yield this.setTrustedMember(trustedParams, command.member);
418
- break;
419
- default:
420
- // Do nothing
421
- break;
422
- }
423
- result = yield APDU.parseCommand(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeCommand(block, parseInt(index)), true);
424
- // Record potential trusted member
425
- switch (command.getType()) {
426
- case CommandBlock_1.CommandType.Seed:
427
- this.recordTrustedMember(trustedParams, block.issuer, result);
428
- break;
429
- case CommandBlock_1.CommandType.AddMember:
430
- this.recordTrustedMember(trustedParams, command.publicKey, result);
431
- break;
432
- case CommandBlock_1.CommandType.PublishKey:
433
- this.recordTrustedMember(trustedParams, command.recipient, result);
434
- break;
435
- case CommandBlock_1.CommandType.Derive:
436
- this.recordTrustedMember(trustedParams, block.issuer, result);
437
- break;
438
- case CommandBlock_1.CommandType.EditMember:
439
- this.recordTrustedMember(trustedParams, command.member, result);
440
- break;
441
- }
442
- }
443
- // Parse the block signature
444
- yield APDU.parseSignature(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeSignature(block));
445
- });
446
- }
447
- parseStream(stream) {
448
- return __awaiter(this, void 0, void 0, function* () {
449
- const trustedParams = {
450
- members: new Map(),
451
- lastTrustedMember: undefined,
452
- };
453
- if (stream.length == 0) {
454
- yield APDU.parseEmptyStream(this.transport);
455
- }
456
- for (const block of stream.slice(0, stream.length - 1)) {
457
- yield this.parseBlock(block, trustedParams);
458
- }
459
- return trustedParams;
460
- });
461
- }
462
- sign(stream) {
463
- return __awaiter(this, void 0, void 0, function* () {
464
- const sessionKey = this.sessionKeyPair;
465
- const trustedProperties = [];
466
- // We expect the stream to have a single block to sign (the last one)
467
- this.assertStreamIsValid(stream);
468
- // Init signature flow
469
- yield APDU.initFlow(this.transport, sessionKey.publicKey);
470
- // Before signing we need to parse the stream on device and get trusted params
471
- const trustedParams = yield this.parseStream(stream);
472
- trustedParams;
473
- // Create the new block to sign
474
- const blockToSign = stream[stream.length - 1];
475
- const trustedIssuer = yield APDU.signBlockHeader(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeBlockHeader(blockToSign));
476
- // Pass all commands to device
477
- for (let commandIndex = 0; commandIndex < blockToSign.commands.length; commandIndex++) {
478
- // Pass the trusted param allowing the command to the device
479
- // If we have no trusted param we need an explicit approval
480
- const tp = yield APDU.signCommand(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeCommand(blockToSign, commandIndex));
481
- trustedProperties.push(APDU.parseTrustedProperties(blockToSign.commands[commandIndex], tp));
482
- }
483
- // Finalize block signature
484
- const signature = yield APDU.finalizeSignature(this.transport);
485
- // Decrypt and inject trusted issuer
486
- const secret = Crypto_1.crypto.ecdh(sessionKey, signature.sessionKey);
487
- const issuer = Crypto_1.crypto.decrypt(secret, trustedIssuer.iv, trustedIssuer.issuer);
488
- // Inject trusted properties for commands
489
- for (let commandIndex = 0; commandIndex < blockToSign.commands.length; commandIndex++) {
490
- blockToSign.commands[commandIndex] = yield injectTrustedProperties(blockToSign.commands[commandIndex], trustedProperties[commandIndex], secret);
391
+ switch (command.getType()) {
392
+ case CommandBlock_1.CommandType.Seed:
393
+ this.recordTrustedMember(trustedParams, block.issuer, result);
394
+ break;
395
+ case CommandBlock_1.CommandType.AddMember:
396
+ this.recordTrustedMember(trustedParams, command.publicKey, result);
397
+ break;
398
+ case CommandBlock_1.CommandType.PublishKey:
399
+ this.recordTrustedMember(trustedParams, command.recipient, result);
400
+ break;
401
+ case CommandBlock_1.CommandType.Derive:
402
+ this.recordTrustedMember(trustedParams, block.issuer, result);
403
+ break;
404
+ case CommandBlock_1.CommandType.EditMember:
405
+ this.recordTrustedMember(trustedParams, command.member, result);
406
+ break;
491
407
  }
492
- blockToSign.issuer = issuer;
493
- blockToSign.signature = signature.signature;
494
- return blockToSign;
495
- });
496
- }
497
- readKey(tree, path) {
498
- return __awaiter(this, void 0, void 0, function* () {
499
- tree;
500
- path;
501
- throw new Error("readKey is not supported on hardware devices");
502
- });
503
- }
504
- isConnected() {
505
- return __awaiter(this, void 0, void 0, function* () {
506
- const response = yield this.transport.send(0xe0, 0x04, 0x00, 0x00);
507
- const sw = response.readUInt16BE(response.length - 2);
508
- if (sw !== 0x9000)
509
- return false;
510
- const appName = response.subarray(0, response.length - 2).toString();
511
- return appName === exports.TRUSTCHAIN_APP_NAME;
512
- });
513
- }
514
- close() {
515
- return __awaiter(this, void 0, void 0, function* () {
516
- yield this.transport.close();
517
- });
408
+ }
409
+ // Parse the block signature
410
+ await APDU.parseSignature(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeSignature(block));
411
+ }
412
+ async parseStream(stream) {
413
+ const trustedParams = {
414
+ members: new Map(),
415
+ lastTrustedMember: undefined,
416
+ };
417
+ if (stream.length == 0) {
418
+ await APDU.parseEmptyStream(this.transport);
419
+ }
420
+ for (const block of stream.slice(0, stream.length - 1)) {
421
+ await this.parseBlock(block, trustedParams);
422
+ }
423
+ return trustedParams;
424
+ }
425
+ async sign(stream) {
426
+ const sessionKey = this.sessionKeyPair;
427
+ const trustedProperties = [];
428
+ // We expect the stream to have a single block to sign (the last one)
429
+ this.assertStreamIsValid(stream);
430
+ // Init signature flow
431
+ await APDU.initFlow(this.transport, sessionKey.publicKey);
432
+ // Before signing we need to parse the stream on device and get trusted params
433
+ const trustedParams = await this.parseStream(stream);
434
+ trustedParams;
435
+ // Create the new block to sign
436
+ const blockToSign = stream[stream.length - 1];
437
+ const trustedIssuer = await APDU.signBlockHeader(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeBlockHeader(blockToSign));
438
+ // Pass all commands to device
439
+ for (let commandIndex = 0; commandIndex < blockToSign.commands.length; commandIndex++) {
440
+ // Pass the trusted param allowing the command to the device
441
+ // If we have no trusted param we need an explicit approval
442
+ const tp = await APDU.signCommand(this.transport, CommandStreamEncoder_1.CommandStreamEncoder.encodeCommand(blockToSign, commandIndex));
443
+ trustedProperties.push(APDU.parseTrustedProperties(blockToSign.commands[commandIndex], tp));
444
+ }
445
+ // Finalize block signature
446
+ const signature = await APDU.finalizeSignature(this.transport);
447
+ // Decrypt and inject trusted issuer
448
+ const secret = Crypto_1.crypto.ecdh(sessionKey, signature.sessionKey);
449
+ const issuer = Crypto_1.crypto.decrypt(secret, trustedIssuer.iv, trustedIssuer.issuer);
450
+ // Inject trusted properties for commands
451
+ for (let commandIndex = 0; commandIndex < blockToSign.commands.length; commandIndex++) {
452
+ blockToSign.commands[commandIndex] = await injectTrustedProperties(blockToSign.commands[commandIndex], trustedProperties[commandIndex], secret);
453
+ }
454
+ blockToSign.issuer = issuer;
455
+ blockToSign.signature = signature.signature;
456
+ return blockToSign;
457
+ }
458
+ async readKey(tree, path) {
459
+ tree;
460
+ path;
461
+ throw new Error("readKey is not supported on hardware devices");
462
+ }
463
+ async isConnected() {
464
+ const response = await this.transport.send(0xe0, 0x04, 0x00, 0x00);
465
+ const sw = response.readUInt16BE(response.length - 2);
466
+ if (sw !== 0x9000)
467
+ return false;
468
+ const appName = response.subarray(0, response.length - 2).toString();
469
+ return appName === exports.TRUSTCHAIN_APP_NAME;
470
+ }
471
+ async close() {
472
+ await this.transport.close();
518
473
  }
519
474
  }
520
475
  exports.ApduDevice = ApduDevice;
@@ -1 +1 @@
1
- {"version":3,"file":"ApduDevice.js","sourceRoot":"","sources":["../src/ApduDevice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApduDevice.js","sourceRoot":"","sources":["../src/ApduDevice.ts"],"names":[],"mappings":"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"}