@ledgerhq/hw-ledger-key-ring-protocol 0.5.2 → 0.5.3-nightly.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.
Files changed (58) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +3 -3
  3. package/lib/__tests__/codec.d.ts +0 -2
  4. package/lib/__tests__/codec.d.ts.map +0 -1
  5. package/lib/__tests__/codec.js +0 -99
  6. package/lib/__tests__/codec.js.map +0 -1
  7. package/lib/__tests__/crypto.d.ts +0 -2
  8. package/lib/__tests__/crypto.d.ts.map +0 -1
  9. package/lib/__tests__/crypto.js +0 -37
  10. package/lib/__tests__/crypto.js.map +0 -1
  11. package/lib/__tests__/indexed_tree.d.ts +0 -2
  12. package/lib/__tests__/indexed_tree.d.ts.map +0 -1
  13. package/lib/__tests__/indexed_tree.js +0 -44
  14. package/lib/__tests__/indexed_tree.js.map +0 -1
  15. package/lib/__tests__/key_exchange.d.ts +0 -2
  16. package/lib/__tests__/key_exchange.d.ts.map +0 -1
  17. package/lib/__tests__/key_exchange.js +0 -120
  18. package/lib/__tests__/key_exchange.js.map +0 -1
  19. package/lib/__tests__/seedId.d.ts +0 -2
  20. package/lib/__tests__/seedId.d.ts.map +0 -1
  21. package/lib/__tests__/seedId.js +0 -92
  22. package/lib/__tests__/seedId.js.map +0 -1
  23. package/lib/__tests__/shared_object.d.ts +0 -2
  24. package/lib/__tests__/shared_object.d.ts.map +0 -1
  25. package/lib/__tests__/shared_object.js +0 -65
  26. package/lib/__tests__/shared_object.js.map +0 -1
  27. package/lib/__tests__/units/NobleCrypto.test.d.ts +0 -2
  28. package/lib/__tests__/units/NobleCrypto.test.d.ts.map +0 -1
  29. package/lib/__tests__/units/NobleCrypto.test.js +0 -58
  30. package/lib/__tests__/units/NobleCrypto.test.js.map +0 -1
  31. package/lib-es/__tests__/codec.d.ts +0 -2
  32. package/lib-es/__tests__/codec.d.ts.map +0 -1
  33. package/lib-es/__tests__/codec.js +0 -97
  34. package/lib-es/__tests__/codec.js.map +0 -1
  35. package/lib-es/__tests__/crypto.d.ts +0 -2
  36. package/lib-es/__tests__/crypto.d.ts.map +0 -1
  37. package/lib-es/__tests__/crypto.js +0 -35
  38. package/lib-es/__tests__/crypto.js.map +0 -1
  39. package/lib-es/__tests__/indexed_tree.d.ts +0 -2
  40. package/lib-es/__tests__/indexed_tree.d.ts.map +0 -1
  41. package/lib-es/__tests__/indexed_tree.js +0 -42
  42. package/lib-es/__tests__/indexed_tree.js.map +0 -1
  43. package/lib-es/__tests__/key_exchange.d.ts +0 -2
  44. package/lib-es/__tests__/key_exchange.d.ts.map +0 -1
  45. package/lib-es/__tests__/key_exchange.js +0 -115
  46. package/lib-es/__tests__/key_exchange.js.map +0 -1
  47. package/lib-es/__tests__/seedId.d.ts +0 -2
  48. package/lib-es/__tests__/seedId.d.ts.map +0 -1
  49. package/lib-es/__tests__/seedId.js +0 -90
  50. package/lib-es/__tests__/seedId.js.map +0 -1
  51. package/lib-es/__tests__/shared_object.d.ts +0 -2
  52. package/lib-es/__tests__/shared_object.d.ts.map +0 -1
  53. package/lib-es/__tests__/shared_object.js +0 -63
  54. package/lib-es/__tests__/shared_object.js.map +0 -1
  55. package/lib-es/__tests__/units/NobleCrypto.test.d.ts +0 -2
  56. package/lib-es/__tests__/units/NobleCrypto.test.d.ts.map +0 -1
  57. package/lib-es/__tests__/units/NobleCrypto.test.js +0 -56
  58. package/lib-es/__tests__/units/NobleCrypto.test.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @ledgerhq/live-wallet
2
2
 
3
+ ## 0.5.3-nightly.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`ccf788d`](https://github.com/LedgerHQ/ledger-live/commit/ccf788d7c0239ca95e76c3cc340f9a6bd09ea726), [`b962966`](https://github.com/LedgerHQ/ledger-live/commit/b962966525517c5cfa7f1f8826f8f2b9162189e4)]:
8
+ - @ledgerhq/live-env@2.20.0-nightly.0
9
+
3
10
  ## 0.5.2
4
11
 
5
12
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/hw-ledger-key-ring-protocol",
3
- "version": "0.5.2",
3
+ "version": "0.5.3-nightly.0",
4
4
  "description": "Ledger Key Ring Protocol hardware layer",
5
5
  "keywords": [
6
6
  "Ledger"
@@ -21,9 +21,9 @@
21
21
  "bip32": "^4.0.0",
22
22
  "@noble/curves": "^1.9.7",
23
23
  "create-hmac": "^1.1.7",
24
- "@ledgerhq/hw-transport": "6.31.12",
24
+ "@ledgerhq/hw-transport": "6.31.13-nightly.0",
25
25
  "@ledgerhq/logs": "6.13.0",
26
- "@ledgerhq/live-env": "2.19.0"
26
+ "@ledgerhq/live-env": "2.20.0-nightly.0"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/lodash": "4",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=codec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/__tests__/codec.ts"],"names":[],"mappings":""}
@@ -1,99 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const CommandBlock_1 = require("../CommandBlock");
4
- const tlv_1 = require("../tlv");
5
- const CommandStreamDecoder_1 = require("../CommandStreamDecoder");
6
- const CommandStreamEncoder_1 = require("../CommandStreamEncoder");
7
- const Crypto_1 = require("../Crypto");
8
- const __1 = require("..");
9
- describe("Encode/Decode command stream tester", () => {
10
- it("should encode and decode a byte", () => {
11
- const byte = 42;
12
- let buffer = new Uint8Array();
13
- buffer = tlv_1.TLV.pushByte(buffer, 42);
14
- const decoded = tlv_1.TLV.readVarInt(tlv_1.TLV.readTLV(buffer, 0));
15
- expect(decoded.value).toBe(byte);
16
- });
17
- it("should encode and decode a Int32", () => {
18
- const varint = 0xdeadbeef;
19
- let buffer = new Uint8Array();
20
- buffer = tlv_1.TLV.pushInt32(buffer, varint);
21
- const decoded = tlv_1.TLV.readVarInt(tlv_1.TLV.readTLV(buffer, 0));
22
- expect(decoded.value).toBe(varint);
23
- });
24
- it("should encode and decode a string", () => {
25
- const str = "Hello World";
26
- let buffer = new Uint8Array();
27
- buffer = tlv_1.TLV.pushString(buffer, str);
28
- const decoded = tlv_1.TLV.readString(tlv_1.TLV.readTLV(buffer, 0));
29
- expect(decoded.value).toBe(str);
30
- });
31
- it("should encode and decode a hash", () => {
32
- const hash = Crypto_1.crypto.hash(new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]));
33
- let buffer = new Uint8Array();
34
- buffer = tlv_1.TLV.pushHash(buffer, hash);
35
- const decoded = tlv_1.TLV.readHash(tlv_1.TLV.readTLV(buffer, 0));
36
- expect(Crypto_1.crypto.to_hex(decoded.value)).toEqual(Crypto_1.crypto.to_hex(hash));
37
- });
38
- it("should encode and decode bytes", () => {
39
- const bytes = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
40
- let buffer = new Uint8Array();
41
- buffer = tlv_1.TLV.pushBytes(buffer, bytes);
42
- const decoded = tlv_1.TLV.readBytes(tlv_1.TLV.readTLV(buffer, 0));
43
- expect(decoded.value).toEqual(bytes);
44
- });
45
- it("should encode and decode a signature", () => {
46
- const alice = Crypto_1.crypto.randomKeypair();
47
- const block = (0, CommandBlock_1.signCommandBlock)((0, CommandBlock_1.createCommandBlock)(alice.publicKey, []), alice.publicKey, alice.privateKey);
48
- let buffer = new Uint8Array();
49
- buffer = tlv_1.TLV.pushSignature(buffer, block.signature);
50
- const decoded = tlv_1.TLV.readSignature(tlv_1.TLV.readTLV(buffer, 0));
51
- expect(decoded.value).toEqual(block.signature);
52
- });
53
- it("should encode and decode a public key", () => {
54
- const alice = Crypto_1.crypto.randomKeypair();
55
- let buffer = new Uint8Array();
56
- buffer = tlv_1.TLV.pushPublicKey(buffer, alice.publicKey);
57
- const decoded = tlv_1.TLV.readPublicKey(tlv_1.TLV.readTLV(buffer, 0));
58
- expect(decoded.value).toEqual(alice.publicKey);
59
- });
60
- it("should encode and decode a stream. Encoding/Decoding should not alter the stream", () => {
61
- const alice = Crypto_1.crypto.randomKeypair();
62
- const groupPk = Crypto_1.crypto.randomKeypair();
63
- const groupChainCode = Crypto_1.crypto.randomBytes(32);
64
- const xpriv = new Uint8Array(64);
65
- const initializationVector = Crypto_1.crypto.randomBytes(16);
66
- xpriv.set(groupPk.privateKey);
67
- xpriv.set(groupChainCode, 32);
68
- const ephemeralPk = Crypto_1.crypto.randomKeypair();
69
- const block1 = (0, CommandBlock_1.signCommandBlock)((0, CommandBlock_1.createCommandBlock)(alice.publicKey, [
70
- new CommandBlock_1.Seed(Crypto_1.crypto.randomBytes(16), 0, groupPk.publicKey, initializationVector, xpriv, ephemeralPk.publicKey),
71
- ]), alice.publicKey, alice.privateKey);
72
- const block2 = (0, CommandBlock_1.signCommandBlock)((0, CommandBlock_1.createCommandBlock)(alice.publicKey, [
73
- new CommandBlock_1.AddMember("Alice", Crypto_1.crypto.randomBytes(32), CommandBlock_1.Permissions.OWNER),
74
- new CommandBlock_1.PublishKey(Crypto_1.crypto.randomBytes(16), Crypto_1.crypto.randomBytes(32), Crypto_1.crypto.randomBytes(32), Crypto_1.crypto.randomBytes(32)),
75
- ]), alice.publicKey, alice.privateKey);
76
- const block3 = (0, CommandBlock_1.signCommandBlock)((0, CommandBlock_1.createCommandBlock)(alice.publicKey, []), alice.publicKey, alice.privateKey);
77
- const stream = [block1, block2, block3];
78
- const encoded = CommandStreamEncoder_1.CommandStreamEncoder.encode(stream);
79
- const digestEncoded = Crypto_1.crypto.hash(encoded);
80
- const decoded = CommandStreamDecoder_1.CommandStreamDecoder.decode(encoded);
81
- const reencoded = CommandStreamEncoder_1.CommandStreamEncoder.encode(decoded);
82
- const digestReencoded = Crypto_1.crypto.hash(reencoded);
83
- expect(digestEncoded).toEqual(digestReencoded);
84
- });
85
- it("decodes a specific command stream", async () => {
86
- const tlv = "0101010220824b3168c79e8b61b599751c107117b5c9b647f2b6859de8a245952559707692062102a13e82cd0d2f77d1ab1434d8bd799571e54cd32e1121c5cf82217f8b0b713b6b01010315a8050c800000008000001080000000062103ccf74aa7775b3d39d6cbb0236acee7a7f980b9f6a556a4d814d44b0bd56cb77b05108c51eda6be26623ca919ed17333afcdb054019c0b60ede1692479cc04ce69eae6a0bd51941bab6f044f3dec10c11cf11e6253504d1df6b0aab7dc1996e4eaa7c6f92c29153c59534578901cd7ff4efcea1ae06210268abdb3d49ba4a274ce8660cde0d1eeaf1fea00e281218be775f6b3aefc39756113a040f7765622d746f6f6c732d6563626638062103a270456b0f95714cc61a6473e6b6d8db354a3c377281096bdd2439a5475ecbf80104ffffffff129a05100e5205b4a616b2a4d79b07b4a4932f560540669e741f38fee07956fb0dc0ea9978d55bd5d8424b0d0f66a2c5a45788f92d0ddc283138c7ba62c521de1d604ee7f847c5aed40a11536bbe742af0be8cfd4132062103a270456b0f95714cc61a6473e6b6d8db354a3c377281096bdd2439a5475ecbf80621027003755248202ea8a67d1fcdcd82d7f7022248f3af892fa5307d3ea250dc81050346304402204422a779fd08723d8cba19c0cc11ef7a24f6f1f459cb01598ff1a26f27ea8976022053a554d4f509223f2d08faa5de796fed13a9762f35da08e94884edd1f7c0d015";
87
- const decoded = CommandStreamDecoder_1.CommandStreamDecoder.decode(Crypto_1.crypto.from_hex(tlv));
88
- const stream = new __1.CommandStream(decoded);
89
- const resolved = await stream.resolve();
90
- expect(resolved.getMembersData()).toEqual([
91
- {
92
- id: "03a270456b0f95714cc61a6473e6b6d8db354a3c377281096bdd2439a5475ecbf8",
93
- name: "web-tools-ecbf8",
94
- permissions: 4294967295,
95
- },
96
- ]);
97
- });
98
- });
99
- //# sourceMappingURL=codec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/__tests__/codec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=crypto.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/__tests__/crypto.ts"],"names":[],"mappings":""}
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Crypto_1 = require("../Crypto");
4
- describe("Sodium wrapper tester", () => {
5
- it("should computes the same symetric key with ECDH using two parties", async () => {
6
- const kp1 = await Crypto_1.crypto.randomKeypair();
7
- const kp2 = await Crypto_1.crypto.randomKeypair();
8
- const shared1 = await Crypto_1.crypto.ecdh(kp1, kp2.publicKey);
9
- const shared2 = await Crypto_1.crypto.ecdh(kp2, kp1.publicKey);
10
- expect(Crypto_1.crypto.to_hex(shared1)).toBe(Crypto_1.crypto.to_hex(shared2));
11
- });
12
- it("should encrypt a message and decrypt using the same symmetric key", async () => {
13
- //const message = "Hello world!"
14
- const message = await Crypto_1.crypto.randomBytes(64);
15
- const key = await Crypto_1.crypto.randomBytes(32);
16
- const nonce = await Crypto_1.crypto.randomBytes(16);
17
- const encrypted = await Crypto_1.crypto.encrypt(key, nonce, message);
18
- const decrypted = await Crypto_1.crypto.decrypt(key, nonce, encrypted);
19
- expect(Crypto_1.crypto.to_hex(decrypted)).toBe(Crypto_1.crypto.to_hex(message));
20
- });
21
- it("should encrypt user data", async () => {
22
- const keypair = await Crypto_1.crypto.randomKeypair();
23
- const data = await Crypto_1.crypto.randomBytes(64);
24
- const encrypted = await Crypto_1.crypto.encryptUserData(keypair.privateKey, data);
25
- const decrypted = await Crypto_1.crypto.decryptUserData(keypair.privateKey, encrypted);
26
- expect(Crypto_1.crypto.to_hex(decrypted)).toBe(Crypto_1.crypto.to_hex(data));
27
- });
28
- it("should verify truncated signature by padding 0s from the start", async () => {
29
- const hash = Crypto_1.crypto.from_hex("19514a2e50bfad4a6de397ebde776191cbb720e8bbfcc3c165385c3664c03341");
30
- const signature = Crypto_1.crypto.from_hex(
31
- // Here the "S" part of the signature is only 31 bytes long it should be padded with a 0
32
- "3043022052a82876fcd4d9d8383ce12a7e4d96bb4c1d9e71e857cd087c092b87cec6baeb021f6b86b9a3bab1e7794ca6ef081c66cb6e6dff06cceddbd23e1f25089e311784");
33
- const issuer = Crypto_1.crypto.from_hex("026e7bf1e015da491674be5796b15d6fabd1f454aad478a6a223934e5a872719e0");
34
- expect(await Crypto_1.crypto.verify(hash, signature, issuer)).toBe(true);
35
- });
36
- });
37
- //# sourceMappingURL=crypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/__tests__/crypto.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AAEnC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,GAAG,GAAG,MAAM,eAAM,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,eAAM,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAEtD,MAAM,CAAC,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,gCAAgC;QAChC,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,eAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,eAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAM,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,eAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,eAAM,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,eAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,eAAM,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,MAAM,eAAM,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,CAAC,eAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,IAAI,GAAG,eAAM,CAAC,QAAQ,CAC1B,kEAAkE,CACnE,CAAC;QACF,MAAM,SAAS,GAAG,eAAM,CAAC,QAAQ;QAC/B,wFAAwF;QACxF,4IAA4I,CAC7I,CAAC;QACF,MAAM,MAAM,GAAG,eAAM,CAAC,QAAQ,CAC5B,oEAAoE,CACrE,CAAC;QACF,MAAM,CAAC,MAAM,eAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=indexed_tree.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexed_tree.d.ts","sourceRoot":"","sources":["../../src/__tests__/indexed_tree.ts"],"names":[],"mappings":""}
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const IndexedTree_1 = require("../IndexedTree");
4
- describe("Indexed tree unit test suite", () => {
5
- it("should create a new tree with a root", () => {
6
- const tree = new IndexedTree_1.IndexedTree(0);
7
- expect(tree.getValue()).toBe(0);
8
- });
9
- it("should create a new tree with a root and update the root", () => {
10
- let tree = new IndexedTree_1.IndexedTree(0);
11
- tree = tree.updateChild([], 1);
12
- expect(tree.getValue()).toBe(1);
13
- });
14
- it("should create a new tree with a root and update a child", () => {
15
- let tree = new IndexedTree_1.IndexedTree(0);
16
- tree = tree.updateChild([1], 1);
17
- expect(tree.getChild(1).getValue()).toBe(1);
18
- });
19
- it("should create a tree with multiple children and update a child which had no value before", () => {
20
- let tree = new IndexedTree_1.IndexedTree(0);
21
- tree = tree.updateChild([0, 1], 1);
22
- tree = tree.updateChild([0, 2], 2);
23
- expect(tree.findChild([0, 1]).getValue()).toBe(1);
24
- expect(tree.findChild([0, 2]).getValue()).toBe(2);
25
- expect(tree.getChild(0)?.getValue()).toBe(null);
26
- tree = tree.updateChild([0], 42);
27
- expect(tree.getChild(0)?.getValue()).toBe(42);
28
- });
29
- it("should add a subtree to the tree", () => {
30
- let tree = new IndexedTree_1.IndexedTree(0);
31
- tree = tree.addChild([0, 1], new IndexedTree_1.IndexedTree(1));
32
- tree = tree.addChild([0, 2], new IndexedTree_1.IndexedTree(2));
33
- let subtree = new IndexedTree_1.IndexedTree(42);
34
- subtree = subtree.updateChild([0], 43);
35
- subtree = subtree.updateChild([1], 44);
36
- tree = tree.addChild([0, 3], subtree);
37
- expect(tree.findChild([0, 1]).getValue()).toBe(1);
38
- expect(tree.findChild([0, 2]).getValue()).toBe(2);
39
- expect(tree.findChild([0, 3]).getValue()).toBe(42);
40
- expect(tree.findChild([0, 3, 0]).getValue()).toBe(43);
41
- expect(tree.findChild([0, 3, 1]).getValue()).toBe(44);
42
- });
43
- });
44
- //# sourceMappingURL=indexed_tree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexed_tree.js","sourceRoot":"","sources":["../../src/__tests__/indexed_tree.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=key_exchange.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"key_exchange.d.ts","sourceRoot":"","sources":["../../src/__tests__/key_exchange.ts"],"names":[],"mappings":""}
@@ -1,120 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const Device_1 = require("../Device");
7
- const CommandStream_1 = __importDefault(require("../CommandStream"));
8
- const CommandBlock_1 = require("../CommandBlock");
9
- const Crypto_1 = require("../Crypto");
10
- const StreamTreeCipher_1 = require("../StreamTreeCipher");
11
- const StreamTree_1 = require("../StreamTree");
12
- const DEFAULT_TOPIC = "c96d450545ff2836204c29af291428a5bf740304978f5dfb0b4a261474192851";
13
- describe("Symmetric key exchange scenarii", () => {
14
- it("create a new group with 1 member", async () => {
15
- const alice = await (0, Device_1.createDevice)();
16
- const topic = Crypto_1.crypto.from_hex(DEFAULT_TOPIC);
17
- let stream = new CommandStream_1.default([]);
18
- stream = await stream.edit().seed(topic).issue(alice);
19
- const resolved = await stream.resolve();
20
- expect(resolved.isCreated()).toBe(true);
21
- expect(resolved.getMembers().length).toBe(1);
22
- expect(resolved.getMembersData().length).toBe(0);
23
- expect(Crypto_1.crypto.to_hex(resolved.getTopic())).toBe(Crypto_1.crypto.to_hex(topic));
24
- //const parsed = CommandStreamDecoder.decode(CommandStreamEncoder.encode(stream.blocks));
25
- //console.log(JSON.stringify(CommandStreamJsonifier.jsonify(parsed), null, 2));
26
- //const raw = CommandStreamEncoder.encode(stream.blocks);
27
- //console.log(crypto.to_hex(raw));
28
- });
29
- it("create a group owned by Alice, Alice adds Bob and publish a key for Bob.", async () => {
30
- const alice = await (0, Device_1.createDevice)();
31
- const bob = await (0, Device_1.createDevice)();
32
- let stream = new CommandStream_1.default();
33
- stream = await stream.edit().seed(Crypto_1.crypto.from_hex(DEFAULT_TOPIC)).issue(alice);
34
- stream = await stream
35
- .edit()
36
- .addMember("Bob", (await bob.getPublicKey()).publicKey, CommandBlock_1.Permissions.KEY_READER)
37
- .issue(alice);
38
- const tree = StreamTree_1.StreamTree.from(stream);
39
- // Encrypt a message from Alice
40
- const originalMessage = new TextEncoder().encode("Hello World!");
41
- const encryptedMessage = await StreamTreeCipher_1.StreamTreeCipher.create(alice).encrypt(tree, [], originalMessage);
42
- // The message should be different from the original
43
- expect(Crypto_1.crypto.to_hex(encryptedMessage)).not.toEqual(Crypto_1.crypto.to_hex(originalMessage));
44
- // Decrypt the message from Bob
45
- const decryptedMessage = await StreamTreeCipher_1.StreamTreeCipher.create(bob).decrypt(tree, [], encryptedMessage);
46
- // The message should be the same as the original
47
- expect(Crypto_1.crypto.to_hex(decryptedMessage)).toBe(Crypto_1.crypto.to_hex(originalMessage));
48
- });
49
- it("create a group owned by Alice, Alice adds Bob and publish a key for Bob, Alice adds Charlie and Bob publishes a key for Charlie", async () => {
50
- const alice = await (0, Device_1.createDevice)();
51
- const bob = await (0, Device_1.createDevice)();
52
- const charlie = await (0, Device_1.createDevice)();
53
- let stream = new CommandStream_1.default();
54
- stream = await stream.edit().seed(Crypto_1.crypto.from_hex(DEFAULT_TOPIC)).issue(alice);
55
- stream = await stream
56
- .edit()
57
- .addMember("Bob", (await bob.getPublicKey()).publicKey, CommandBlock_1.Permissions.KEY_READER)
58
- .issue(alice);
59
- stream = await stream
60
- .edit()
61
- .addMember("Charlie", (await charlie.getPublicKey()).publicKey, CommandBlock_1.Permissions.KEY_READER)
62
- .issue(alice);
63
- const tree = StreamTree_1.StreamTree.from(stream);
64
- // Encrypt a message from Alice
65
- const originalMessage = new TextEncoder().encode("Hello World!");
66
- const encryptedMessage = await StreamTreeCipher_1.StreamTreeCipher.create(alice).encrypt(tree, [], originalMessage);
67
- // The message should be different from the original
68
- expect(Crypto_1.crypto.to_hex(encryptedMessage)).not.toBe(Crypto_1.crypto.to_hex(originalMessage));
69
- {
70
- // Decrypt the message from Bob
71
- const decryptedMessage = await StreamTreeCipher_1.StreamTreeCipher.create(bob).decrypt(tree, [], encryptedMessage);
72
- // The message should be the same as the original
73
- expect(Crypto_1.crypto.to_hex(decryptedMessage)).toBe(Crypto_1.crypto.to_hex(originalMessage));
74
- }
75
- {
76
- // Decrypt the message from Charlie
77
- const decryptedMessage = await StreamTreeCipher_1.StreamTreeCipher.create(charlie).decrypt(tree, [], encryptedMessage);
78
- // The message should be the same as the original
79
- expect(Crypto_1.crypto.to_hex(decryptedMessage)).toBe(Crypto_1.crypto.to_hex(originalMessage));
80
- }
81
- //console.log(crypto.to_hex(CommandStreamEncoder.encode(stream.blocks)));
82
- //const parsed = CommandStreamDecoder.decode(CommandStreamEncoder.encode(stream.blocks));
83
- //console.log(JSON.stringify(CommandStreamJsonifier.jsonify(parsed), null, 2));
84
- });
85
- it("creates group owned by Alice, Alice adds Bob as an admin, Bob adds Charlie", async () => {
86
- const alice = await (0, Device_1.createDevice)();
87
- const bob = await (0, Device_1.createDevice)();
88
- const charlie = await (0, Device_1.createDevice)();
89
- let stream = new CommandStream_1.default();
90
- stream = await stream.edit().seed(Crypto_1.crypto.from_hex(DEFAULT_TOPIC)).issue(alice);
91
- stream = await stream
92
- .edit()
93
- .addMember("Bob", (await bob.getPublicKey()).publicKey, CommandBlock_1.Permissions.ADD_MEMBER | CommandBlock_1.Permissions.KEY_READER)
94
- .issue(alice);
95
- stream = await stream
96
- .edit()
97
- .addMember("Charlie", (await charlie.getPublicKey()).publicKey, CommandBlock_1.Permissions.KEY_READER)
98
- .issue(bob);
99
- const tree = StreamTree_1.StreamTree.from(stream);
100
- // Encrypt a message from Alice
101
- const originalMessage = new TextEncoder().encode("Hello World!");
102
- const encryptedMessage = await StreamTreeCipher_1.StreamTreeCipher.create(alice).encrypt(tree, [], originalMessage);
103
- // The message should be different from the original
104
- expect(Crypto_1.crypto.to_hex(encryptedMessage)).not.toBe(Crypto_1.crypto.to_hex(originalMessage));
105
- {
106
- // Decrypt the message from Bob
107
- const decryptedMessage = await StreamTreeCipher_1.StreamTreeCipher.create(bob).decrypt(tree, [], encryptedMessage);
108
- // The message should be the same as the original
109
- expect(Crypto_1.crypto.to_hex(decryptedMessage)).toBe(Crypto_1.crypto.to_hex(originalMessage));
110
- }
111
- {
112
- // Decrypt the message from Charlie
113
- const decryptedMessage = await StreamTreeCipher_1.StreamTreeCipher.create(charlie).decrypt(tree, [], encryptedMessage);
114
- // The message should be the same as the original
115
- expect(Crypto_1.crypto.to_hex(decryptedMessage)).toBe(Crypto_1.crypto.to_hex(originalMessage));
116
- }
117
- //console.log(JSON.stringify(CommandStreamJsonifier.jsonify(stream.blocks), null, 2));
118
- });
119
- });
120
- //# sourceMappingURL=key_exchange.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"key_exchange.js","sourceRoot":"","sources":["../../src/__tests__/key_exchange.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=seedId.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seedId.d.ts","sourceRoot":"","sources":["../../src/__tests__/seedId.ts"],"names":[],"mappings":""}
@@ -1,92 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const Crypto_1 = require("../Crypto");
4
- const SeedId_1 = require("../SeedId");
5
- describe("PubKeyCredential regular cases", () => {
6
- const rpPubKeyCredential = new SeedId_1.PubKeyCredential({
7
- version: 0,
8
- curveId: 0x21,
9
- signAlgorithm: 0x01,
10
- publicKey: Crypto_1.crypto.from_hex("02b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5"),
11
- });
12
- test("assertValidity", () => {
13
- expect(() => rpPubKeyCredential.assertValidity()).not.toThrow();
14
- });
15
- test("toJSON", () => {
16
- expect(rpPubKeyCredential.toJSON()).toEqual({
17
- version: 0,
18
- curveId: 33,
19
- signAlgorithm: 1,
20
- publicKey: "02b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5",
21
- });
22
- });
23
- test("toBytes", () => {
24
- expect(Crypto_1.crypto.to_hex(rpPubKeyCredential.toBytes())).toEqual("0021012102b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5");
25
- });
26
- test("fromBytes", () => {
27
- expect(SeedId_1.PubKeyCredential.fromBytes(Crypto_1.crypto.from_hex("0021012102b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5"))).toEqual([rpPubKeyCredential, 37]);
28
- });
29
- test("toBytes into fromBytes", () => {
30
- const bytes = rpPubKeyCredential.toBytes();
31
- const [pubKeyCredential, _] = SeedId_1.PubKeyCredential.fromBytes(bytes);
32
- expect(pubKeyCredential).toEqual(rpPubKeyCredential);
33
- });
34
- });
35
- describe("Challenge regular cases", () => {
36
- const rpPubKeyCredential = new SeedId_1.PubKeyCredential({
37
- version: 0,
38
- curveId: 0x21,
39
- signAlgorithm: 0x01,
40
- publicKey: Crypto_1.crypto.from_hex("02b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5"),
41
- });
42
- const challengeData = Crypto_1.crypto.from_hex("53cafde60e5395b164eb867213bc05f6");
43
- const rpSignature = Crypto_1.crypto.from_hex("3045022025d130d7ae5c48a6cf09781d04a08e9a2d07ce1bd17e84637f6ede4a043c5dcc022100a846ececf20eb53ffc2dc502ce8074ba40b241bfd13edaf1e8575559a9b2b4ea");
44
- const challenge = new SeedId_1.Challenge({
45
- payloadType: 0x07,
46
- version: 0,
47
- protocolVersion: {
48
- major: 1,
49
- minor: 0,
50
- patch: 0,
51
- },
52
- challengeData: challengeData,
53
- challengeExpiry: new Date(1708678950000),
54
- host: "localhost",
55
- rpCredential: rpPubKeyCredential,
56
- rpSignature: rpSignature,
57
- });
58
- test("parse one example from backend", () => {
59
- const hex = "01010702010012102d4492d50ef878a450d9bd6e8862690014010115483046022100beb271fa9752c377251005e125cc115737e427d5259a2dbbc9a38f7a36430c3f0221008826b3d3c1b491b41908d7cc89d71b92e9428c52a927e95341d555252f687b0f16046654aea120096c6f63616c686f7374320121332103cb7628e7248ddf9c07da54b979f16bf081fb3d173aac0992ad2a44ef6a388ae2600401000000";
60
- const bytes = Crypto_1.crypto.from_hex(hex);
61
- const [challengeFromBytes, l] = SeedId_1.Challenge.fromBytes(bytes);
62
- expect(l).toEqual(bytes.length);
63
- expect(challengeFromBytes.toJSON()).toEqual({
64
- payloadType: 7,
65
- version: 0,
66
- challenge: { data: "2d4492d50ef878a450d9bd6e88626900", expiry: "2024-05-27T16:02:41.000Z" },
67
- host: "localhost",
68
- rp: [
69
- {
70
- credential: {
71
- version: 0,
72
- curveId: 33,
73
- signAlgorithm: 1,
74
- publicKey: "03cb7628e7248ddf9c07da54b979f16bf081fb3d173aac0992ad2a44ef6a388ae2",
75
- },
76
- signature: "3046022100beb271fa9752c377251005e125cc115737e427d5259a2dbbc9a38f7a36430c3f0221008826b3d3c1b491b41908d7cc89d71b92e9428c52a927e95341d555252f687b0f",
77
- },
78
- ],
79
- protocolVersion: { major: 1, minor: 0, patch: 0 },
80
- });
81
- });
82
- test("toBytes", () => {
83
- expect(Crypto_1.crypto.to_hex(challenge.toBytes())).toEqual("010107020100121053cafde60e5395b164eb867213bc05f614010115473045022025d130d7ae5c48a6cf09781d04a08e9a2d07ce1bd17e84637f6ede4a043c5dcc022100a846ececf20eb53ffc2dc502ce8074ba40b241bfd13edaf1e8575559a9b2b4ea160465d85f2620096c6f63616c686f7374320121332102b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5600401000000");
84
- });
85
- test("toBytes <> fromBytes", () => {
86
- const bytes = challenge.toBytes();
87
- const [challengeFromBytes, _] = SeedId_1.Challenge.fromBytes(bytes);
88
- expect(challengeFromBytes).toEqual(challenge);
89
- expect(challengeFromBytes.toBytes()).toEqual(bytes);
90
- });
91
- });
92
- //# sourceMappingURL=seedId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seedId.js","sourceRoot":"","sources":["../../src/__tests__/seedId.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=shared_object.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared_object.d.ts","sourceRoot":"","sources":["../../src/__tests__/shared_object.ts"],"names":[],"mappings":""}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- /*
3
- This test suite simulates an application generating data (using a fixed shchema) and sharing part of the
4
- data to specific users. The data is encrypted using a StreamTree.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const StreamTree_1 = require("../StreamTree");
8
- const __1 = require("..");
9
- const CommandBlock_1 = require("../CommandBlock");
10
- const StreamTreeCipher_1 = require("../StreamTreeCipher");
11
- const Crypto_1 = require("../Crypto");
12
- const APPLICATION_ID = 12;
13
- async function encryptSharedObject(device, tree, sharedObject, mapping = new Map()) {
14
- const cipher = StreamTreeCipher_1.StreamTreeCipher.create(device);
15
- const encrypt = async (key, defaultPath) => {
16
- return Crypto_1.crypto.to_hex(await cipher.encrypt(tree, Crypto_1.DerivationPath.toIndexArray(mapping.get(key) || defaultPath), new TextEncoder().encode(sharedObject[key].toString())));
17
- };
18
- const encryptedSharedObject = {
19
- name: await encrypt("name", `0h/${APPLICATION_ID}h/0h/0h/0h`),
20
- age: await encrypt("age", `0h/${APPLICATION_ID}h/0h/1h/0h`),
21
- email: await encrypt("email", `0h/${APPLICATION_ID}h/0h/2h/0h`),
22
- };
23
- return encryptedSharedObject;
24
- }
25
- async function decryptSharedObject(device, tree, encryptedSharedObject, mapping = new Map()) {
26
- const cipher = StreamTreeCipher_1.StreamTreeCipher.create(device);
27
- const decrypt = async (key, defaultPath) => {
28
- const path = Crypto_1.DerivationPath.toIndexArray(mapping.get(key) || defaultPath);
29
- const bytes = await cipher.decrypt(tree, path, Crypto_1.crypto.from_hex(encryptedSharedObject[key]));
30
- return new TextDecoder().decode(bytes);
31
- };
32
- const sharedObject = {
33
- name: await decrypt("name", `0h/${APPLICATION_ID}h/0h/0h/0h`),
34
- age: parseInt(await decrypt("age", `0h/${APPLICATION_ID}h/0h/1h/0h`)),
35
- email: await decrypt("email", `0h/${APPLICATION_ID}h/0h/2h/0h`),
36
- };
37
- return sharedObject;
38
- }
39
- describe("Shared object scenario using StreamTree", () => {
40
- it("should create a tree with 3 members, one member encrypt a shared object and another one decrypts it", async () => {
41
- const alice = await __1.device.software();
42
- const bob = await __1.device.software();
43
- const carol = await __1.device.software();
44
- // Create a new tree owned by alice
45
- let tree = await StreamTree_1.StreamTree.createNewTree(alice);
46
- // Share the application node with bob
47
- tree = await tree.share(tree.getApplicationRootPath(APPLICATION_ID), alice, (await bob.getPublicKey()).publicKey, "Bob", CommandBlock_1.Permissions.OWNER);
48
- // Bob creates a shared object and encrypt it (1 value -> 1 encryption key)
49
- const sharedObject = {
50
- name: "Bob",
51
- age: 42,
52
- email: "bob@box.com",
53
- };
54
- //console.dir(sharedObject, { depth: null });
55
- const encryptedObject = await encryptSharedObject(bob, tree, sharedObject);
56
- // Share the application node with carol
57
- tree = await tree.share(tree.getApplicationRootPath(APPLICATION_ID), alice, (await carol.getPublicKey()).publicKey, "Carol", CommandBlock_1.Permissions.OWNER);
58
- // Decrypt with Carol
59
- const decryptedObject = await decryptSharedObject(carol, tree, encryptedObject);
60
- //console.dir(encryptedObject, { depth: null });
61
- //console.dir(decryptedObject, { depth: null });
62
- expect(decryptedObject).toEqual(sharedObject);
63
- });
64
- });
65
- //# sourceMappingURL=shared_object.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared_object.js","sourceRoot":"","sources":["../../src/__tests__/shared_object.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=NobleCrypto.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NobleCrypto.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/units/NobleCrypto.test.ts"],"names":[],"mappings":""}