@ledgerhq/hw-ledger-key-ring-protocol 0.3.1-next.0 → 0.3.2-next.0
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.
- package/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +14 -0
- package/lib/ApduDevice.d.ts +1 -0
- package/lib/ApduDevice.d.ts.map +1 -1
- package/lib/ApduDevice.js +195 -240
- package/lib/ApduDevice.js.map +1 -1
- package/lib/CommandBlock.js +26 -2
- package/lib/CommandBlock.js.map +1 -1
- package/lib/CommandStream.js +69 -85
- package/lib/CommandStream.js.map +1 -1
- package/lib/CommandStreamResolver.js +42 -56
- package/lib/CommandStreamResolver.js.map +1 -1
- package/lib/Device.js +115 -131
- package/lib/Device.js.map +1 -1
- package/lib/IndexedTree.js +2 -0
- package/lib/IndexedTree.js.map +1 -1
- package/lib/PublicKey.js +1 -0
- package/lib/PublicKey.js.map +1 -1
- package/lib/SeedId.js +12 -0
- package/lib/SeedId.js.map +1 -1
- package/lib/StreamTree.js +56 -72
- package/lib/StreamTree.js.map +1 -1
- package/lib/StreamTreeCipher.js +62 -75
- package/lib/StreamTreeCipher.js.map +1 -1
- package/lib/__tests__/codec.js +3 -12
- package/lib/__tests__/codec.js.map +1 -1
- package/lib/__tests__/crypto.js +22 -31
- package/lib/__tests__/crypto.js.map +1 -1
- package/lib/__tests__/indexed_tree.js +2 -3
- package/lib/__tests__/indexed_tree.js.map +1 -1
- package/lib/__tests__/key_exchange.js +40 -49
- package/lib/__tests__/key_exchange.js.map +1 -1
- package/lib/__tests__/shared_object.js +34 -47
- package/lib/__tests__/shared_object.js.map +1 -1
- package/lib-es/ApduDevice.d.ts +1 -0
- package/lib-es/ApduDevice.d.ts.map +1 -1
- package/lib-es/ApduDevice.js +195 -240
- package/lib-es/ApduDevice.js.map +1 -1
- package/lib-es/CommandBlock.js +26 -2
- package/lib-es/CommandBlock.js.map +1 -1
- package/lib-es/CommandStream.js +69 -85
- package/lib-es/CommandStream.js.map +1 -1
- package/lib-es/CommandStreamResolver.js +42 -56
- package/lib-es/CommandStreamResolver.js.map +1 -1
- package/lib-es/Device.js +115 -131
- package/lib-es/Device.js.map +1 -1
- package/lib-es/IndexedTree.js +2 -0
- package/lib-es/IndexedTree.js.map +1 -1
- package/lib-es/PublicKey.js +1 -0
- package/lib-es/PublicKey.js.map +1 -1
- package/lib-es/SeedId.js +12 -0
- package/lib-es/SeedId.js.map +1 -1
- package/lib-es/StreamTree.js +56 -72
- package/lib-es/StreamTree.js.map +1 -1
- package/lib-es/StreamTreeCipher.js +62 -75
- package/lib-es/StreamTreeCipher.js.map +1 -1
- package/lib-es/__tests__/codec.js +3 -12
- package/lib-es/__tests__/codec.js.map +1 -1
- package/lib-es/__tests__/crypto.js +22 -31
- package/lib-es/__tests__/crypto.js.map +1 -1
- package/lib-es/__tests__/indexed_tree.js +2 -3
- package/lib-es/__tests__/indexed_tree.js.map +1 -1
- package/lib-es/__tests__/key_exchange.js +40 -49
- package/lib-es/__tests__/key_exchange.js.map +1 -1
- package/lib-es/__tests__/shared_object.js +34 -47
- package/lib-es/__tests__/shared_object.js.map +1 -1
- package/package.json +4 -4
- package/tsconfig.json +0 -1
package/lib-es/ApduDevice.js
CHANGED
|
@@ -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
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
static parseSignature(transport, signature) {
|
|
69
|
-
return
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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 (
|
|
102
|
-
|
|
78
|
+
if (tlv.type === TrustedPropertiesTLV.IssuerPublicKey) {
|
|
79
|
+
issuer = tlv.value;
|
|
103
80
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
static
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
326
|
-
|
|
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
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
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
|
-
|
|
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
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
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
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
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
|
/**
|
package/lib-es/ApduDevice.js.map
CHANGED
|
@@ -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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"}
|
package/lib-es/CommandBlock.js
CHANGED
|
@@ -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
|
|
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 =
|
|
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);
|