@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,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { CommandType, } from "./CommandBlock";
11
2
  import { PublicKey } from "./PublicKey";
12
3
  import { CommandStreamEncoder } from "./CommandStreamEncoder";
@@ -41,100 +32,84 @@ var TrustedPropertiesTLV;
41
32
  *
42
33
  */
43
34
  export class APDU {
44
- static setTrustedMember(transport, member) {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- const payload = new Uint8Array([
47
- TrustedPropertiesTLV.IV,
48
- member.iv.length,
49
- ...member.iv,
50
- TrustedPropertiesTLV.TrustedMember,
51
- member.data.length,
52
- ...member.data,
53
- ]);
54
- yield transport.send(APDU.CLA, APDU.INS_SET_TRUSTED_MEMBER, 0, 0, Buffer.from(payload));
55
- });
56
- }
57
- static parseBlockHeader(transport, header) {
58
- return __awaiter(this, void 0, void 0, function* () {
59
- const result = yield transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.BlockHeader, OutputDataMode.None, Buffer.from(header));
60
- return APDU.getResponseData(result);
61
- });
62
- }
63
- static parseCommand(transport_1, command_1) {
64
- return __awaiter(this, arguments, void 0, function* (transport, command, outputTrustedParam = false) {
65
- return yield transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Command, outputTrustedParam ? OutputDataMode.TrustedParam : OutputDataMode.None, Buffer.from(command));
66
- });
67
- }
68
- static parseSignature(transport, signature) {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- return yield transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Signature, OutputDataMode.None, Buffer.from(signature));
71
- });
72
- }
73
- static initFlow(transport, sessionKey) {
74
- return __awaiter(this, void 0, void 0, function* () {
75
- yield transport.send(APDU.CLA, APDU.INS_INIT, 0x00, 0x00, Buffer.from(sessionKey));
76
- });
77
- }
78
- static parseEmptyStream(transport) {
79
- return __awaiter(this, void 0, void 0, function* () {
80
- yield transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Empty, OutputDataMode.None, Buffer.alloc(0));
81
- });
82
- }
83
- static signBlockHeader(transport, header) {
84
- return __awaiter(this, void 0, void 0, function* () {
85
- const data = yield transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.BlockHeader, OutputDataMode.None, Buffer.from(header));
86
- const resp = APDU.getResponseData(data);
87
- const tlvs = TLV.readAllTLV(resp, 0);
88
- let iv = null;
89
- let issuer = null;
90
- for (const tlv of tlvs) {
91
- if (tlv.type === TrustedPropertiesTLV.IV) {
92
- iv = tlv.value;
93
- }
94
- if (tlv.type === TrustedPropertiesTLV.IssuerPublicKey) {
95
- issuer = tlv.value;
96
- }
97
- }
98
- if (iv === null) {
99
- throw new Error("No IV in response");
35
+ static CLA = 0xe0;
36
+ static INS_GET_PUBLIC_KEY = 0x05;
37
+ static INS_PARSE_STREAM = 0x08;
38
+ static INS_SIGN_BLOCK = 0x07;
39
+ static INS_INIT = 0x06;
40
+ static INS_SET_TRUSTED_MEMBER = 0x09;
41
+ static async setTrustedMember(transport, member) {
42
+ const payload = new Uint8Array([
43
+ TrustedPropertiesTLV.IV,
44
+ member.iv.length,
45
+ ...member.iv,
46
+ TrustedPropertiesTLV.TrustedMember,
47
+ member.data.length,
48
+ ...member.data,
49
+ ]);
50
+ await transport.send(APDU.CLA, APDU.INS_SET_TRUSTED_MEMBER, 0, 0, Buffer.from(payload));
51
+ }
52
+ static async parseBlockHeader(transport, header) {
53
+ const result = await transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.BlockHeader, OutputDataMode.None, Buffer.from(header));
54
+ return APDU.getResponseData(result);
55
+ }
56
+ static async parseCommand(transport, command, outputTrustedParam = false) {
57
+ return await transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Command, outputTrustedParam ? OutputDataMode.TrustedParam : OutputDataMode.None, Buffer.from(command));
58
+ }
59
+ static async parseSignature(transport, signature) {
60
+ return await transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Signature, OutputDataMode.None, Buffer.from(signature));
61
+ }
62
+ static async initFlow(transport, sessionKey) {
63
+ await transport.send(APDU.CLA, APDU.INS_INIT, 0x00, 0x00, Buffer.from(sessionKey));
64
+ }
65
+ static async parseEmptyStream(transport) {
66
+ await transport.send(APDU.CLA, APDU.INS_PARSE_STREAM, ParseStreamMode.Empty, OutputDataMode.None, Buffer.alloc(0));
67
+ }
68
+ static async signBlockHeader(transport, header) {
69
+ const data = await transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.BlockHeader, OutputDataMode.None, Buffer.from(header));
70
+ const resp = APDU.getResponseData(data);
71
+ const tlvs = TLV.readAllTLV(resp, 0);
72
+ let iv = null;
73
+ let issuer = null;
74
+ for (const tlv of tlvs) {
75
+ if (tlv.type === TrustedPropertiesTLV.IV) {
76
+ iv = tlv.value;
100
77
  }
101
- if (issuer === null) {
102
- throw new Error("No issuer in response");
78
+ if (tlv.type === TrustedPropertiesTLV.IssuerPublicKey) {
79
+ issuer = tlv.value;
103
80
  }
104
- return { iv, issuer };
105
- });
106
- }
107
- static signCommand(transport, command) {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- const data = yield transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.Command, OutputDataMode.None, Buffer.from(command));
110
- return APDU.getResponseData(data);
111
- });
112
- }
113
- static finalizeSignature(transport) {
114
- return __awaiter(this, void 0, void 0, function* () {
115
- const response = yield transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.Signature, OutputDataMode.None, Buffer.alloc(0));
116
- const data = APDU.getResponseData(response);
117
- const sigLen = data[0];
118
- const signature = data.slice(1, sigLen + 1);
119
- const sessionKey = data.slice(sigLen + 2);
120
- return { signature, sessionKey };
121
- });
122
- }
123
- static getPublicKey(transport) {
124
- return __awaiter(this, void 0, void 0, function* () {
125
- const response = yield transport.send(APDU.CLA, APDU.INS_GET_PUBLIC_KEY, 0x00, 0x00, Buffer.alloc(0));
126
- return APDU.getResponseData(response);
127
- });
81
+ }
82
+ if (iv === null) {
83
+ throw new Error("No IV in response");
84
+ }
85
+ if (issuer === null) {
86
+ throw new Error("No issuer in response");
87
+ }
88
+ return { iv, issuer };
89
+ }
90
+ static async signCommand(transport, command) {
91
+ const data = await transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.Command, OutputDataMode.None, Buffer.from(command));
92
+ return APDU.getResponseData(data);
93
+ }
94
+ static async finalizeSignature(transport) {
95
+ const response = await transport.send(APDU.CLA, APDU.INS_SIGN_BLOCK, ParseStreamMode.Signature, OutputDataMode.None, Buffer.alloc(0));
96
+ const data = APDU.getResponseData(response);
97
+ const sigLen = data[0];
98
+ const signature = data.slice(1, sigLen + 1);
99
+ const sessionKey = data.slice(sigLen + 2);
100
+ return { signature, sessionKey };
101
+ }
102
+ static async getPublicKey(transport) {
103
+ const response = await transport.send(APDU.CLA, APDU.INS_GET_PUBLIC_KEY, 0x00, 0x00, Buffer.alloc(0));
104
+ return APDU.getResponseData(response);
128
105
  }
129
106
  /**
130
107
  * allows to sign a challenge and get the seed id
131
108
  */
132
- static getSeedId(transport, challenge) {
133
- return __awaiter(this, void 0, void 0, function* () {
134
- const response = yield transport.send(APDU.CLA, APDU.INS_GET_PUBLIC_KEY, 0x00, 0x00, Buffer.from(challenge));
135
- const result = parseSeedIdResult(APDU.getResponseData(response));
136
- return result;
137
- });
109
+ static async getSeedId(transport, challenge) {
110
+ const response = await transport.send(APDU.CLA, APDU.INS_GET_PUBLIC_KEY, 0x00, 0x00, Buffer.from(challenge));
111
+ const result = parseSeedIdResult(APDU.getResponseData(response));
112
+ return result;
138
113
  }
139
114
  static getResponseData(response) {
140
115
  return Uint8Array.prototype.slice.call(response, 0, response.length - 2);
@@ -267,12 +242,6 @@ export class APDU {
267
242
  }
268
243
  }
269
244
  }
270
- APDU.CLA = 0xe0;
271
- APDU.INS_GET_PUBLIC_KEY = 0x05;
272
- APDU.INS_PARSE_STREAM = 0x08;
273
- APDU.INS_SIGN_BLOCK = 0x07;
274
- APDU.INS_INIT = 0x06;
275
- APDU.INS_SET_TRUSTED_MEMBER = 0x09;
276
245
  function injectTrustedProperties(command, properties, secret) {
277
246
  switch (command.getType()) {
278
247
  case CommandType.Seed: {
@@ -314,6 +283,8 @@ function findTrustedMember(params, member) {
314
283
  }
315
284
  findTrustedMember;
316
285
  export class ApduDevice {
286
+ transport;
287
+ sessionKeyPair;
317
288
  constructor(transport) {
318
289
  this.transport = transport;
319
290
  this.sessionKeyPair = crypto.randomKeypair();
@@ -321,11 +292,9 @@ export class ApduDevice {
321
292
  isPublicKeyAvailable() {
322
293
  return false;
323
294
  }
324
- getPublicKey() {
325
- return __awaiter(this, void 0, void 0, function* () {
326
- const publicKey = yield APDU.getPublicKey(this.transport);
327
- return new PublicKey(publicKey);
328
- });
295
+ async getPublicKey() {
296
+ const publicKey = await APDU.getPublicKey(this.transport);
297
+ return new PublicKey(publicKey);
329
298
  }
330
299
  getSeedId(data) {
331
300
  return APDU.getSeedId(this.transport, data);
@@ -376,141 +345,127 @@ export class ApduDevice {
376
345
  return member;
377
346
  }
378
347
  // Set the trusted member on the device if it's not already set
379
- setTrustedMember(params, publicKey) {
380
- return __awaiter(this, void 0, void 0, function* () {
381
- // Check if the trusted member is already set on device
382
- if (params.lastTrustedMember == crypto.to_hex(publicKey)) {
383
- return;
384
- }
385
- // Verify we actually have the trusted member
386
- if (this.hasTrustedMember(params, publicKey) == false) {
387
- return;
348
+ async setTrustedMember(params, publicKey) {
349
+ // Check if the trusted member is already set on device
350
+ if (params.lastTrustedMember == crypto.to_hex(publicKey)) {
351
+ return;
352
+ }
353
+ // Verify we actually have the trusted member
354
+ if (this.hasTrustedMember(params, publicKey) == false) {
355
+ return;
356
+ }
357
+ // console.log("Setting trusted member: ", crypto.to_hex(publicKey));
358
+ return APDU.setTrustedMember(this.transport, this.getTrustedMember(params, publicKey));
359
+ }
360
+ async parseBlock(block, trustedParams) {
361
+ let result;
362
+ // Parse the block header
363
+ await this.setTrustedMember(trustedParams, block.issuer);
364
+ result = await APDU.parseBlockHeader(this.transport, CommandStreamEncoder.encodeBlockHeader(block));
365
+ // Record potential trusted member
366
+ this.recordTrustedMember(trustedParams, block.issuer, result);
367
+ for (const index in block.commands) {
368
+ // Parse the command
369
+ const command = block.commands[index];
370
+ // Set the trusted member depending on the command
371
+ switch (command.getType()) {
372
+ case CommandType.AddMember:
373
+ await this.setTrustedMember(trustedParams, block.issuer);
374
+ break;
375
+ case CommandType.PublishKey:
376
+ await this.setTrustedMember(trustedParams, command.recipient);
377
+ break;
378
+ case CommandType.EditMember:
379
+ await this.setTrustedMember(trustedParams, command.member);
380
+ break;
381
+ default:
382
+ // Do nothing
383
+ break;
388
384
  }
389
- // console.log("Setting trusted member: ", crypto.to_hex(publicKey));
390
- return APDU.setTrustedMember(this.transport, this.getTrustedMember(params, publicKey));
391
- });
392
- }
393
- parseBlock(block, trustedParams) {
394
- return __awaiter(this, void 0, void 0, function* () {
395
- let result;
396
- // Parse the block header
397
- yield this.setTrustedMember(trustedParams, block.issuer);
398
- result = yield APDU.parseBlockHeader(this.transport, CommandStreamEncoder.encodeBlockHeader(block));
385
+ result = await APDU.parseCommand(this.transport, CommandStreamEncoder.encodeCommand(block, parseInt(index)), true);
399
386
  // Record potential trusted member
400
- this.recordTrustedMember(trustedParams, block.issuer, result);
401
- for (const index in block.commands) {
402
- // Parse the command
403
- const command = block.commands[index];
404
- // Set the trusted member depending on the command
405
- switch (command.getType()) {
406
- case CommandType.AddMember:
407
- yield this.setTrustedMember(trustedParams, block.issuer);
408
- break;
409
- case CommandType.PublishKey:
410
- yield this.setTrustedMember(trustedParams, command.recipient);
411
- break;
412
- case CommandType.EditMember:
413
- yield this.setTrustedMember(trustedParams, command.member);
414
- break;
415
- default:
416
- // Do nothing
417
- break;
418
- }
419
- result = yield APDU.parseCommand(this.transport, CommandStreamEncoder.encodeCommand(block, parseInt(index)), true);
420
- // Record potential trusted member
421
- switch (command.getType()) {
422
- case CommandType.Seed:
423
- this.recordTrustedMember(trustedParams, block.issuer, result);
424
- break;
425
- case CommandType.AddMember:
426
- this.recordTrustedMember(trustedParams, command.publicKey, result);
427
- break;
428
- case CommandType.PublishKey:
429
- this.recordTrustedMember(trustedParams, command.recipient, result);
430
- break;
431
- case CommandType.Derive:
432
- this.recordTrustedMember(trustedParams, block.issuer, result);
433
- break;
434
- case CommandType.EditMember:
435
- this.recordTrustedMember(trustedParams, command.member, result);
436
- break;
437
- }
438
- }
439
- // Parse the block signature
440
- yield APDU.parseSignature(this.transport, CommandStreamEncoder.encodeSignature(block));
441
- });
442
- }
443
- parseStream(stream) {
444
- return __awaiter(this, void 0, void 0, function* () {
445
- const trustedParams = {
446
- members: new Map(),
447
- lastTrustedMember: undefined,
448
- };
449
- if (stream.length == 0) {
450
- yield APDU.parseEmptyStream(this.transport);
451
- }
452
- for (const block of stream.slice(0, stream.length - 1)) {
453
- yield this.parseBlock(block, trustedParams);
454
- }
455
- return trustedParams;
456
- });
457
- }
458
- sign(stream) {
459
- return __awaiter(this, void 0, void 0, function* () {
460
- const sessionKey = this.sessionKeyPair;
461
- const trustedProperties = [];
462
- // We expect the stream to have a single block to sign (the last one)
463
- this.assertStreamIsValid(stream);
464
- // Init signature flow
465
- yield APDU.initFlow(this.transport, sessionKey.publicKey);
466
- // Before signing we need to parse the stream on device and get trusted params
467
- const trustedParams = yield this.parseStream(stream);
468
- trustedParams;
469
- // Create the new block to sign
470
- const blockToSign = stream[stream.length - 1];
471
- const trustedIssuer = yield APDU.signBlockHeader(this.transport, CommandStreamEncoder.encodeBlockHeader(blockToSign));
472
- // Pass all commands to device
473
- for (let commandIndex = 0; commandIndex < blockToSign.commands.length; commandIndex++) {
474
- // Pass the trusted param allowing the command to the device
475
- // If we have no trusted param we need an explicit approval
476
- const tp = yield APDU.signCommand(this.transport, CommandStreamEncoder.encodeCommand(blockToSign, commandIndex));
477
- trustedProperties.push(APDU.parseTrustedProperties(blockToSign.commands[commandIndex], tp));
478
- }
479
- // Finalize block signature
480
- const signature = yield APDU.finalizeSignature(this.transport);
481
- // Decrypt and inject trusted issuer
482
- const secret = crypto.ecdh(sessionKey, signature.sessionKey);
483
- const issuer = crypto.decrypt(secret, trustedIssuer.iv, trustedIssuer.issuer);
484
- // Inject trusted properties for commands
485
- for (let commandIndex = 0; commandIndex < blockToSign.commands.length; commandIndex++) {
486
- blockToSign.commands[commandIndex] = yield injectTrustedProperties(blockToSign.commands[commandIndex], trustedProperties[commandIndex], secret);
387
+ switch (command.getType()) {
388
+ case CommandType.Seed:
389
+ this.recordTrustedMember(trustedParams, block.issuer, result);
390
+ break;
391
+ case CommandType.AddMember:
392
+ this.recordTrustedMember(trustedParams, command.publicKey, result);
393
+ break;
394
+ case CommandType.PublishKey:
395
+ this.recordTrustedMember(trustedParams, command.recipient, result);
396
+ break;
397
+ case CommandType.Derive:
398
+ this.recordTrustedMember(trustedParams, block.issuer, result);
399
+ break;
400
+ case CommandType.EditMember:
401
+ this.recordTrustedMember(trustedParams, command.member, result);
402
+ break;
487
403
  }
488
- blockToSign.issuer = issuer;
489
- blockToSign.signature = signature.signature;
490
- return blockToSign;
491
- });
492
- }
493
- readKey(tree, path) {
494
- return __awaiter(this, void 0, void 0, function* () {
495
- tree;
496
- path;
497
- throw new Error("readKey is not supported on hardware devices");
498
- });
499
- }
500
- isConnected() {
501
- return __awaiter(this, void 0, void 0, function* () {
502
- const response = yield this.transport.send(0xe0, 0x04, 0x00, 0x00);
503
- const sw = response.readUInt16BE(response.length - 2);
504
- if (sw !== 0x9000)
505
- return false;
506
- const appName = response.subarray(0, response.length - 2).toString();
507
- return appName === TRUSTCHAIN_APP_NAME;
508
- });
509
- }
510
- close() {
511
- return __awaiter(this, void 0, void 0, function* () {
512
- yield this.transport.close();
513
- });
404
+ }
405
+ // Parse the block signature
406
+ await APDU.parseSignature(this.transport, CommandStreamEncoder.encodeSignature(block));
407
+ }
408
+ async parseStream(stream) {
409
+ const trustedParams = {
410
+ members: new Map(),
411
+ lastTrustedMember: undefined,
412
+ };
413
+ if (stream.length == 0) {
414
+ await APDU.parseEmptyStream(this.transport);
415
+ }
416
+ for (const block of stream.slice(0, stream.length - 1)) {
417
+ await this.parseBlock(block, trustedParams);
418
+ }
419
+ return trustedParams;
420
+ }
421
+ async sign(stream) {
422
+ const sessionKey = this.sessionKeyPair;
423
+ const trustedProperties = [];
424
+ // We expect the stream to have a single block to sign (the last one)
425
+ this.assertStreamIsValid(stream);
426
+ // Init signature flow
427
+ await APDU.initFlow(this.transport, sessionKey.publicKey);
428
+ // Before signing we need to parse the stream on device and get trusted params
429
+ const trustedParams = await this.parseStream(stream);
430
+ trustedParams;
431
+ // Create the new block to sign
432
+ const blockToSign = stream[stream.length - 1];
433
+ const trustedIssuer = await APDU.signBlockHeader(this.transport, CommandStreamEncoder.encodeBlockHeader(blockToSign));
434
+ // Pass all commands to device
435
+ for (let commandIndex = 0; commandIndex < blockToSign.commands.length; commandIndex++) {
436
+ // Pass the trusted param allowing the command to the device
437
+ // If we have no trusted param we need an explicit approval
438
+ const tp = await APDU.signCommand(this.transport, CommandStreamEncoder.encodeCommand(blockToSign, commandIndex));
439
+ trustedProperties.push(APDU.parseTrustedProperties(blockToSign.commands[commandIndex], tp));
440
+ }
441
+ // Finalize block signature
442
+ const signature = await APDU.finalizeSignature(this.transport);
443
+ // Decrypt and inject trusted issuer
444
+ const secret = crypto.ecdh(sessionKey, signature.sessionKey);
445
+ const issuer = crypto.decrypt(secret, trustedIssuer.iv, trustedIssuer.issuer);
446
+ // Inject trusted properties for commands
447
+ for (let commandIndex = 0; commandIndex < blockToSign.commands.length; commandIndex++) {
448
+ blockToSign.commands[commandIndex] = await injectTrustedProperties(blockToSign.commands[commandIndex], trustedProperties[commandIndex], secret);
449
+ }
450
+ blockToSign.issuer = issuer;
451
+ blockToSign.signature = signature.signature;
452
+ return blockToSign;
453
+ }
454
+ async readKey(tree, path) {
455
+ tree;
456
+ path;
457
+ throw new Error("readKey is not supported on hardware devices");
458
+ }
459
+ async isConnected() {
460
+ const response = await this.transport.send(0xe0, 0x04, 0x00, 0x00);
461
+ const sw = response.readUInt16BE(response.length - 2);
462
+ if (sw !== 0x9000)
463
+ return false;
464
+ const appName = response.subarray(0, response.length - 2).toString();
465
+ return appName === TRUSTCHAIN_APP_NAME;
466
+ }
467
+ async close() {
468
+ await this.transport.close();
514
469
  }
515
470
  }
516
471
  /**
@@ -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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"}
@@ -30,6 +30,12 @@ export const Permissions = {
30
30
  *
31
31
  */
32
32
  export class Seed {
33
+ topic;
34
+ protocolVersion;
35
+ groupKey;
36
+ initializationVector;
37
+ encryptedXpriv;
38
+ ephemeralPublicKey;
33
39
  constructor(topic, protocolVersion, groupKey, initializationVector, encryptedXpriv, ephemerPublicKey) {
34
40
  this.topic = topic;
35
41
  this.protocolVersion = protocolVersion;
@@ -47,6 +53,11 @@ export class Seed {
47
53
  *
48
54
  */
49
55
  export class Derive {
56
+ path;
57
+ groupKey;
58
+ initializationVector;
59
+ encryptedXpriv;
60
+ ephemeralPublicKey;
50
61
  constructor(path, groupKey, initializationVector, encryptedXpriv, ephemeralPublicKey) {
51
62
  this.path = path;
52
63
  this.groupKey = groupKey;
@@ -62,6 +73,9 @@ export class Derive {
62
73
  *
63
74
  */
64
75
  export class AddMember {
76
+ name;
77
+ publicKey;
78
+ permissions;
65
79
  constructor(name, publicKey, permissions) {
66
80
  this.name = name;
67
81
  this.publicKey = publicKey;
@@ -75,6 +89,10 @@ export class AddMember {
75
89
  *
76
90
  */
77
91
  export class PublishKey {
92
+ initializationVector;
93
+ encryptedXpriv;
94
+ recipient;
95
+ ephemeralPublicKey;
78
96
  constructor(initializationVector, encryptedXpriv, recipient, ephemeralPublicKey) {
79
97
  this.encryptedXpriv = encryptedXpriv;
80
98
  this.initializationVector = initializationVector;
@@ -89,6 +107,9 @@ export class PublishKey {
89
107
  *
90
108
  */
91
109
  export class EditMember {
110
+ member;
111
+ name;
112
+ permissions;
92
113
  constructor(member, name, permissions) {
93
114
  this.name = name;
94
115
  this.permissions = permissions;
@@ -129,13 +150,16 @@ export function createCommandBlock(issuer, commands, signature = new Uint8Array(
129
150
  }
130
151
  export function signCommandBlock(block, issuer, secretKey) {
131
152
  const signature = crypto.sign(hashCommandBlock(block), crypto.keypairFromSecretKey(secretKey));
132
- return Object.assign(Object.assign({}, block), { signature });
153
+ return {
154
+ ...block,
155
+ signature,
156
+ };
133
157
  }
134
158
  export function hashCommandBlock(block) {
135
159
  return crypto.hash(CommandStreamEncoder.encode([block]));
136
160
  }
137
161
  export function verifyCommandBlock(block) {
138
- const unsignedBlock = Object.assign({}, block);
162
+ const unsignedBlock = { ...block };
139
163
  unsignedBlock.signature = new Uint8Array();
140
164
  const hash = hashCommandBlock(unsignedBlock);
141
165
  return crypto.verify(hash, block.signature, block.issuer);