@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
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const NobleCrypto_1 = require("../../NobleCrypto");
4
- describe("NobleCryptoSecp256k1", () => {
5
- const crypto = new NobleCrypto_1.NobleCryptoSecp256k1();
6
- describe("derEncode", () => {
7
- it("should encode a valid DER signature", () => {
8
- // The R component starts with a byte < 0x80
9
- // The S component starts with a 0 but the next byte is >= 0x80
10
- const der32 = crypto.derEncode(Uint8Array.from([
11
- ...Buffer.from("4802f9f997e06b7e98ec35ba75a10a0e0a5bd1a15767d7d1124869301081d891", "hex"),
12
- ...Buffer.from("008022731cd6cd05ac285829d8d588b51bb4c5be5bad5a44cbd966fcf670f809", "hex"),
13
- ]));
14
- expect(Buffer.from(der32).toString("hex")).toBe(noWS `
15
- 30 44
16
- 02 20 4802f9f997e06b7e98ec35ba75a10a0e0a5bd1a15767d7d1124869301081d891
17
- 02 20 008022731cd6cd05ac285829d8d588b51bb4c5be5bad5a44cbd966fcf670f809
18
- `);
19
- // The R and S component both start with a byte >= 0x80
20
- const der33 = crypto.derEncode(Uint8Array.from([
21
- ...Buffer.from("8002f9f997e06b7e98ec35ba75a10a0e0a5bd1a15767d7d1124869301081d891", "hex"),
22
- ...Buffer.from("ff7222731cd6cd05ac285829d8d588b51bb4c5be5bad5a44cbd966fcf670f809", "hex"),
23
- ]));
24
- expect(Buffer.from(der33).toString("hex")).toBe(noWS `
25
- 30 46
26
- 02 21 008002f9f997e06b7e98ec35ba75a10a0e0a5bd1a15767d7d1124869301081d891
27
- 02 21 00ff7222731cd6cd05ac285829d8d588b51bb4c5be5bad5a44cbd966fcf670f809
28
- `);
29
- // The R and S component both start with a 0 then have a byte < 0x80
30
- const der31 = crypto.derEncode(Uint8Array.from([
31
- ...Buffer.from("0002f9f997e06b7e98ec35ba75a10a0e0a5bd1a15767d7d1124869301081d891", "hex"),
32
- ...Buffer.from("007222731cd6cd05ac285829d8d588b51bb4c5be5bad5a44cbd966fcf670f809", "hex"),
33
- ]));
34
- expect(Buffer.from(der31).toString("hex")).toBe(noWS `
35
- 30 42
36
- 02 1f 02f9f997e06b7e98ec35ba75a10a0e0a5bd1a15767d7d1124869301081d891
37
- 02 1f 7222731cd6cd05ac285829d8d588b51bb4c5be5bad5a44cbd966fcf670f809
38
- `);
39
- // The R and S component both start several leading 0s
40
- const derLeadingZeros = crypto.derEncode(Uint8Array.from([
41
- ...Buffer.from("000000f997e06b7e98ec35ba75a10a0e0a5bd1a15767d7d1124869301081d891", "hex"),
42
- ...Buffer.from("000000731cd6cd05ac285829d8d588b51bb4c5be5bad5a44cbd966fcf670f809", "hex"),
43
- ]));
44
- expect(Buffer.from(derLeadingZeros).toString("hex")).toBe(noWS `
45
- 30 3f
46
- 02 1e 00f997e06b7e98ec35ba75a10a0e0a5bd1a15767d7d1124869301081d891
47
- 02 1d 731cd6cd05ac285829d8d588b51bb4c5be5bad5a44cbd966fcf670f809
48
- `);
49
- });
50
- it("should throw if a component is null", () => {
51
- expect(() => crypto.derEncode(Uint8Array.from({ length: 64 }, () => 0))).toThrow(`Invalid DER component: 0000000000000000000000000000000000000000000000000000000000000000`);
52
- });
53
- });
54
- });
55
- function noWS(...str) {
56
- return str.join("").replace(/\s+/g, "");
57
- }
58
- //# sourceMappingURL=NobleCrypto.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NobleCrypto.test.js","sourceRoot":"","sources":["../../../src/__tests__/units/NobleCrypto.test.ts"],"names":[],"mappings":";;AAAA,mDAAyD;AAEzD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,MAAM,MAAM,GAAG,IAAI,kCAAoB,EAAE,CAAC;IAE1C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,4CAA4C;YAC5C,+DAA+D;YAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAC5B,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,MAAM,CAAC,IAAI,CAAC,kEAAkE,EAAE,KAAK,CAAC;gBACzF,GAAG,MAAM,CAAC,IAAI,CAAC,kEAAkE,EAAE,KAAK,CAAC;aAC1F,CAAC,CACH,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;;;;OAInD,CAAC,CAAC;YAEH,uDAAuD;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAC5B,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,MAAM,CAAC,IAAI,CAAC,kEAAkE,EAAE,KAAK,CAAC;gBACzF,GAAG,MAAM,CAAC,IAAI,CAAC,kEAAkE,EAAE,KAAK,CAAC;aAC1F,CAAC,CACH,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;;;;OAInD,CAAC,CAAC;YAEH,oEAAoE;YACpE,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAC5B,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,MAAM,CAAC,IAAI,CAAC,kEAAkE,EAAE,KAAK,CAAC;gBACzF,GAAG,MAAM,CAAC,IAAI,CAAC,kEAAkE,EAAE,KAAK,CAAC;aAC1F,CAAC,CACH,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;;;;OAInD,CAAC,CAAC;YAEH,sDAAsD;YACtD,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CACtC,UAAU,CAAC,IAAI,CAAC;gBACd,GAAG,MAAM,CAAC,IAAI,CAAC,kEAAkE,EAAE,KAAK,CAAC;gBACzF,GAAG,MAAM,CAAC,IAAI,CAAC,kEAAkE,EAAE,KAAK,CAAC;aAC1F,CAAC,CACH,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;;;;OAI7D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAC9E,yFAAyF,CAC1F,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,IAAI,CAAC,GAAG,GAA2B;IAC1C,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC"}
@@ -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,97 +0,0 @@
1
- import { AddMember, createCommandBlock, Permissions, PublishKey, Seed, signCommandBlock, } from "../CommandBlock";
2
- import { TLV } from "../tlv";
3
- import { CommandStreamDecoder } from "../CommandStreamDecoder";
4
- import { CommandStreamEncoder } from "../CommandStreamEncoder";
5
- import { crypto } from "../Crypto";
6
- import { CommandStream } from "..";
7
- describe("Encode/Decode command stream tester", () => {
8
- it("should encode and decode a byte", () => {
9
- const byte = 42;
10
- let buffer = new Uint8Array();
11
- buffer = TLV.pushByte(buffer, 42);
12
- const decoded = TLV.readVarInt(TLV.readTLV(buffer, 0));
13
- expect(decoded.value).toBe(byte);
14
- });
15
- it("should encode and decode a Int32", () => {
16
- const varint = 0xdeadbeef;
17
- let buffer = new Uint8Array();
18
- buffer = TLV.pushInt32(buffer, varint);
19
- const decoded = TLV.readVarInt(TLV.readTLV(buffer, 0));
20
- expect(decoded.value).toBe(varint);
21
- });
22
- it("should encode and decode a string", () => {
23
- const str = "Hello World";
24
- let buffer = new Uint8Array();
25
- buffer = TLV.pushString(buffer, str);
26
- const decoded = TLV.readString(TLV.readTLV(buffer, 0));
27
- expect(decoded.value).toBe(str);
28
- });
29
- it("should encode and decode a hash", () => {
30
- const hash = crypto.hash(new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]));
31
- let buffer = new Uint8Array();
32
- buffer = TLV.pushHash(buffer, hash);
33
- const decoded = TLV.readHash(TLV.readTLV(buffer, 0));
34
- expect(crypto.to_hex(decoded.value)).toEqual(crypto.to_hex(hash));
35
- });
36
- it("should encode and decode bytes", () => {
37
- const bytes = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
38
- let buffer = new Uint8Array();
39
- buffer = TLV.pushBytes(buffer, bytes);
40
- const decoded = TLV.readBytes(TLV.readTLV(buffer, 0));
41
- expect(decoded.value).toEqual(bytes);
42
- });
43
- it("should encode and decode a signature", () => {
44
- const alice = crypto.randomKeypair();
45
- const block = signCommandBlock(createCommandBlock(alice.publicKey, []), alice.publicKey, alice.privateKey);
46
- let buffer = new Uint8Array();
47
- buffer = TLV.pushSignature(buffer, block.signature);
48
- const decoded = TLV.readSignature(TLV.readTLV(buffer, 0));
49
- expect(decoded.value).toEqual(block.signature);
50
- });
51
- it("should encode and decode a public key", () => {
52
- const alice = crypto.randomKeypair();
53
- let buffer = new Uint8Array();
54
- buffer = TLV.pushPublicKey(buffer, alice.publicKey);
55
- const decoded = TLV.readPublicKey(TLV.readTLV(buffer, 0));
56
- expect(decoded.value).toEqual(alice.publicKey);
57
- });
58
- it("should encode and decode a stream. Encoding/Decoding should not alter the stream", () => {
59
- const alice = crypto.randomKeypair();
60
- const groupPk = crypto.randomKeypair();
61
- const groupChainCode = crypto.randomBytes(32);
62
- const xpriv = new Uint8Array(64);
63
- const initializationVector = crypto.randomBytes(16);
64
- xpriv.set(groupPk.privateKey);
65
- xpriv.set(groupChainCode, 32);
66
- const ephemeralPk = crypto.randomKeypair();
67
- const block1 = signCommandBlock(createCommandBlock(alice.publicKey, [
68
- new Seed(crypto.randomBytes(16), 0, groupPk.publicKey, initializationVector, xpriv, ephemeralPk.publicKey),
69
- ]), alice.publicKey, alice.privateKey);
70
- const block2 = signCommandBlock(createCommandBlock(alice.publicKey, [
71
- new AddMember("Alice", crypto.randomBytes(32), Permissions.OWNER),
72
- new PublishKey(crypto.randomBytes(16), crypto.randomBytes(32), crypto.randomBytes(32), crypto.randomBytes(32)),
73
- ]), alice.publicKey, alice.privateKey);
74
- const block3 = signCommandBlock(createCommandBlock(alice.publicKey, []), alice.publicKey, alice.privateKey);
75
- const stream = [block1, block2, block3];
76
- const encoded = CommandStreamEncoder.encode(stream);
77
- const digestEncoded = crypto.hash(encoded);
78
- const decoded = CommandStreamDecoder.decode(encoded);
79
- const reencoded = CommandStreamEncoder.encode(decoded);
80
- const digestReencoded = crypto.hash(reencoded);
81
- expect(digestEncoded).toEqual(digestReencoded);
82
- });
83
- it("decodes a specific command stream", async () => {
84
- const tlv = "0101010220824b3168c79e8b61b599751c107117b5c9b647f2b6859de8a245952559707692062102a13e82cd0d2f77d1ab1434d8bd799571e54cd32e1121c5cf82217f8b0b713b6b01010315a8050c800000008000001080000000062103ccf74aa7775b3d39d6cbb0236acee7a7f980b9f6a556a4d814d44b0bd56cb77b05108c51eda6be26623ca919ed17333afcdb054019c0b60ede1692479cc04ce69eae6a0bd51941bab6f044f3dec10c11cf11e6253504d1df6b0aab7dc1996e4eaa7c6f92c29153c59534578901cd7ff4efcea1ae06210268abdb3d49ba4a274ce8660cde0d1eeaf1fea00e281218be775f6b3aefc39756113a040f7765622d746f6f6c732d6563626638062103a270456b0f95714cc61a6473e6b6d8db354a3c377281096bdd2439a5475ecbf80104ffffffff129a05100e5205b4a616b2a4d79b07b4a4932f560540669e741f38fee07956fb0dc0ea9978d55bd5d8424b0d0f66a2c5a45788f92d0ddc283138c7ba62c521de1d604ee7f847c5aed40a11536bbe742af0be8cfd4132062103a270456b0f95714cc61a6473e6b6d8db354a3c377281096bdd2439a5475ecbf80621027003755248202ea8a67d1fcdcd82d7f7022248f3af892fa5307d3ea250dc81050346304402204422a779fd08723d8cba19c0cc11ef7a24f6f1f459cb01598ff1a26f27ea8976022053a554d4f509223f2d08faa5de796fed13a9762f35da08e94884edd1f7c0d015";
85
- const decoded = CommandStreamDecoder.decode(crypto.from_hex(tlv));
86
- const stream = new CommandStream(decoded);
87
- const resolved = await stream.resolve();
88
- expect(resolved.getMembersData()).toEqual([
89
- {
90
- id: "03a270456b0f95714cc61a6473e6b6d8db354a3c377281096bdd2439a5475ecbf8",
91
- name: "web-tools-ecbf8",
92
- permissions: 4294967295,
93
- },
94
- ]);
95
- });
96
- });
97
- //# 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,35 +0,0 @@
1
- import { crypto } from "../Crypto";
2
- describe("Sodium wrapper tester", () => {
3
- it("should computes the same symetric key with ECDH using two parties", async () => {
4
- const kp1 = await crypto.randomKeypair();
5
- const kp2 = await crypto.randomKeypair();
6
- const shared1 = await crypto.ecdh(kp1, kp2.publicKey);
7
- const shared2 = await crypto.ecdh(kp2, kp1.publicKey);
8
- expect(crypto.to_hex(shared1)).toBe(crypto.to_hex(shared2));
9
- });
10
- it("should encrypt a message and decrypt using the same symmetric key", async () => {
11
- //const message = "Hello world!"
12
- const message = await crypto.randomBytes(64);
13
- const key = await crypto.randomBytes(32);
14
- const nonce = await crypto.randomBytes(16);
15
- const encrypted = await crypto.encrypt(key, nonce, message);
16
- const decrypted = await crypto.decrypt(key, nonce, encrypted);
17
- expect(crypto.to_hex(decrypted)).toBe(crypto.to_hex(message));
18
- });
19
- it("should encrypt user data", async () => {
20
- const keypair = await crypto.randomKeypair();
21
- const data = await crypto.randomBytes(64);
22
- const encrypted = await crypto.encryptUserData(keypair.privateKey, data);
23
- const decrypted = await crypto.decryptUserData(keypair.privateKey, encrypted);
24
- expect(crypto.to_hex(decrypted)).toBe(crypto.to_hex(data));
25
- });
26
- it("should verify truncated signature by padding 0s from the start", async () => {
27
- const hash = crypto.from_hex("19514a2e50bfad4a6de397ebde776191cbb720e8bbfcc3c165385c3664c03341");
28
- const signature = crypto.from_hex(
29
- // Here the "S" part of the signature is only 31 bytes long it should be padded with a 0
30
- "3043022052a82876fcd4d9d8383ce12a7e4d96bb4c1d9e71e857cd087c092b87cec6baeb021f6b86b9a3bab1e7794ca6ef081c66cb6e6dff06cceddbd23e1f25089e311784");
31
- const issuer = crypto.from_hex("026e7bf1e015da491674be5796b15d6fabd1f454aad478a6a223934e5a872719e0");
32
- expect(await crypto.verify(hash, signature, issuer)).toBe(true);
33
- });
34
- });
35
- //# sourceMappingURL=crypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/__tests__/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,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,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAC1B,kEAAkE,CACnE,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ;QAC/B,wFAAwF;QACxF,4IAA4I,CAC7I,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAC5B,oEAAoE,CACrE,CAAC;QACF,MAAM,CAAC,MAAM,MAAM,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,42 +0,0 @@
1
- import { IndexedTree } from "../IndexedTree";
2
- describe("Indexed tree unit test suite", () => {
3
- it("should create a new tree with a root", () => {
4
- const tree = new IndexedTree(0);
5
- expect(tree.getValue()).toBe(0);
6
- });
7
- it("should create a new tree with a root and update the root", () => {
8
- let tree = new IndexedTree(0);
9
- tree = tree.updateChild([], 1);
10
- expect(tree.getValue()).toBe(1);
11
- });
12
- it("should create a new tree with a root and update a child", () => {
13
- let tree = new IndexedTree(0);
14
- tree = tree.updateChild([1], 1);
15
- expect(tree.getChild(1).getValue()).toBe(1);
16
- });
17
- it("should create a tree with multiple children and update a child which had no value before", () => {
18
- let tree = new IndexedTree(0);
19
- tree = tree.updateChild([0, 1], 1);
20
- tree = tree.updateChild([0, 2], 2);
21
- expect(tree.findChild([0, 1]).getValue()).toBe(1);
22
- expect(tree.findChild([0, 2]).getValue()).toBe(2);
23
- expect(tree.getChild(0)?.getValue()).toBe(null);
24
- tree = tree.updateChild([0], 42);
25
- expect(tree.getChild(0)?.getValue()).toBe(42);
26
- });
27
- it("should add a subtree to the tree", () => {
28
- let tree = new IndexedTree(0);
29
- tree = tree.addChild([0, 1], new IndexedTree(1));
30
- tree = tree.addChild([0, 2], new IndexedTree(2));
31
- let subtree = new IndexedTree(42);
32
- subtree = subtree.updateChild([0], 43);
33
- subtree = subtree.updateChild([1], 44);
34
- tree = tree.addChild([0, 3], subtree);
35
- expect(tree.findChild([0, 1]).getValue()).toBe(1);
36
- expect(tree.findChild([0, 2]).getValue()).toBe(2);
37
- expect(tree.findChild([0, 3]).getValue()).toBe(42);
38
- expect(tree.findChild([0, 3, 0]).getValue()).toBe(43);
39
- expect(tree.findChild([0, 3, 1]).getValue()).toBe(44);
40
- });
41
- });
42
- //# sourceMappingURL=indexed_tree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexed_tree.js","sourceRoot":"","sources":["../../src/__tests__/indexed_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0FAA0F,EAAE,GAAG,EAAE;QAClG,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjD,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAClC,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvC,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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,115 +0,0 @@
1
- import { createDevice } from "../Device";
2
- import CommandStream from "../CommandStream";
3
- import { Permissions } from "../CommandBlock";
4
- import { crypto } from "../Crypto";
5
- import { StreamTreeCipher } from "../StreamTreeCipher";
6
- import { StreamTree } from "../StreamTree";
7
- const DEFAULT_TOPIC = "c96d450545ff2836204c29af291428a5bf740304978f5dfb0b4a261474192851";
8
- describe("Symmetric key exchange scenarii", () => {
9
- it("create a new group with 1 member", async () => {
10
- const alice = await createDevice();
11
- const topic = crypto.from_hex(DEFAULT_TOPIC);
12
- let stream = new CommandStream([]);
13
- stream = await stream.edit().seed(topic).issue(alice);
14
- const resolved = await stream.resolve();
15
- expect(resolved.isCreated()).toBe(true);
16
- expect(resolved.getMembers().length).toBe(1);
17
- expect(resolved.getMembersData().length).toBe(0);
18
- expect(crypto.to_hex(resolved.getTopic())).toBe(crypto.to_hex(topic));
19
- //const parsed = CommandStreamDecoder.decode(CommandStreamEncoder.encode(stream.blocks));
20
- //console.log(JSON.stringify(CommandStreamJsonifier.jsonify(parsed), null, 2));
21
- //const raw = CommandStreamEncoder.encode(stream.blocks);
22
- //console.log(crypto.to_hex(raw));
23
- });
24
- it("create a group owned by Alice, Alice adds Bob and publish a key for Bob.", async () => {
25
- const alice = await createDevice();
26
- const bob = await createDevice();
27
- let stream = new CommandStream();
28
- stream = await stream.edit().seed(crypto.from_hex(DEFAULT_TOPIC)).issue(alice);
29
- stream = await stream
30
- .edit()
31
- .addMember("Bob", (await bob.getPublicKey()).publicKey, Permissions.KEY_READER)
32
- .issue(alice);
33
- const tree = StreamTree.from(stream);
34
- // Encrypt a message from Alice
35
- const originalMessage = new TextEncoder().encode("Hello World!");
36
- const encryptedMessage = await StreamTreeCipher.create(alice).encrypt(tree, [], originalMessage);
37
- // The message should be different from the original
38
- expect(crypto.to_hex(encryptedMessage)).not.toEqual(crypto.to_hex(originalMessage));
39
- // Decrypt the message from Bob
40
- const decryptedMessage = await StreamTreeCipher.create(bob).decrypt(tree, [], encryptedMessage);
41
- // The message should be the same as the original
42
- expect(crypto.to_hex(decryptedMessage)).toBe(crypto.to_hex(originalMessage));
43
- });
44
- 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 () => {
45
- const alice = await createDevice();
46
- const bob = await createDevice();
47
- const charlie = await createDevice();
48
- let stream = new CommandStream();
49
- stream = await stream.edit().seed(crypto.from_hex(DEFAULT_TOPIC)).issue(alice);
50
- stream = await stream
51
- .edit()
52
- .addMember("Bob", (await bob.getPublicKey()).publicKey, Permissions.KEY_READER)
53
- .issue(alice);
54
- stream = await stream
55
- .edit()
56
- .addMember("Charlie", (await charlie.getPublicKey()).publicKey, Permissions.KEY_READER)
57
- .issue(alice);
58
- const tree = StreamTree.from(stream);
59
- // Encrypt a message from Alice
60
- const originalMessage = new TextEncoder().encode("Hello World!");
61
- const encryptedMessage = await StreamTreeCipher.create(alice).encrypt(tree, [], originalMessage);
62
- // The message should be different from the original
63
- expect(crypto.to_hex(encryptedMessage)).not.toBe(crypto.to_hex(originalMessage));
64
- {
65
- // Decrypt the message from Bob
66
- const decryptedMessage = await StreamTreeCipher.create(bob).decrypt(tree, [], encryptedMessage);
67
- // The message should be the same as the original
68
- expect(crypto.to_hex(decryptedMessage)).toBe(crypto.to_hex(originalMessage));
69
- }
70
- {
71
- // Decrypt the message from Charlie
72
- const decryptedMessage = await StreamTreeCipher.create(charlie).decrypt(tree, [], encryptedMessage);
73
- // The message should be the same as the original
74
- expect(crypto.to_hex(decryptedMessage)).toBe(crypto.to_hex(originalMessage));
75
- }
76
- //console.log(crypto.to_hex(CommandStreamEncoder.encode(stream.blocks)));
77
- //const parsed = CommandStreamDecoder.decode(CommandStreamEncoder.encode(stream.blocks));
78
- //console.log(JSON.stringify(CommandStreamJsonifier.jsonify(parsed), null, 2));
79
- });
80
- it("creates group owned by Alice, Alice adds Bob as an admin, Bob adds Charlie", async () => {
81
- const alice = await createDevice();
82
- const bob = await createDevice();
83
- const charlie = await createDevice();
84
- let stream = new CommandStream();
85
- stream = await stream.edit().seed(crypto.from_hex(DEFAULT_TOPIC)).issue(alice);
86
- stream = await stream
87
- .edit()
88
- .addMember("Bob", (await bob.getPublicKey()).publicKey, Permissions.ADD_MEMBER | Permissions.KEY_READER)
89
- .issue(alice);
90
- stream = await stream
91
- .edit()
92
- .addMember("Charlie", (await charlie.getPublicKey()).publicKey, Permissions.KEY_READER)
93
- .issue(bob);
94
- const tree = StreamTree.from(stream);
95
- // Encrypt a message from Alice
96
- const originalMessage = new TextEncoder().encode("Hello World!");
97
- const encryptedMessage = await StreamTreeCipher.create(alice).encrypt(tree, [], originalMessage);
98
- // The message should be different from the original
99
- expect(crypto.to_hex(encryptedMessage)).not.toBe(crypto.to_hex(originalMessage));
100
- {
101
- // Decrypt the message from Bob
102
- const decryptedMessage = await StreamTreeCipher.create(bob).decrypt(tree, [], encryptedMessage);
103
- // The message should be the same as the original
104
- expect(crypto.to_hex(decryptedMessage)).toBe(crypto.to_hex(originalMessage));
105
- }
106
- {
107
- // Decrypt the message from Charlie
108
- const decryptedMessage = await StreamTreeCipher.create(charlie).decrypt(tree, [], encryptedMessage);
109
- // The message should be the same as the original
110
- expect(crypto.to_hex(decryptedMessage)).toBe(crypto.to_hex(originalMessage));
111
- }
112
- //console.log(JSON.stringify(CommandStreamJsonifier.jsonify(stream.blocks), null, 2));
113
- });
114
- });
115
- //# 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,90 +0,0 @@
1
- import { crypto } from "../Crypto";
2
- import { Challenge, PubKeyCredential } from "../SeedId";
3
- describe("PubKeyCredential regular cases", () => {
4
- const rpPubKeyCredential = new PubKeyCredential({
5
- version: 0,
6
- curveId: 0x21,
7
- signAlgorithm: 0x01,
8
- publicKey: crypto.from_hex("02b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5"),
9
- });
10
- test("assertValidity", () => {
11
- expect(() => rpPubKeyCredential.assertValidity()).not.toThrow();
12
- });
13
- test("toJSON", () => {
14
- expect(rpPubKeyCredential.toJSON()).toEqual({
15
- version: 0,
16
- curveId: 33,
17
- signAlgorithm: 1,
18
- publicKey: "02b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5",
19
- });
20
- });
21
- test("toBytes", () => {
22
- expect(crypto.to_hex(rpPubKeyCredential.toBytes())).toEqual("0021012102b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5");
23
- });
24
- test("fromBytes", () => {
25
- expect(PubKeyCredential.fromBytes(crypto.from_hex("0021012102b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5"))).toEqual([rpPubKeyCredential, 37]);
26
- });
27
- test("toBytes into fromBytes", () => {
28
- const bytes = rpPubKeyCredential.toBytes();
29
- const [pubKeyCredential, _] = PubKeyCredential.fromBytes(bytes);
30
- expect(pubKeyCredential).toEqual(rpPubKeyCredential);
31
- });
32
- });
33
- describe("Challenge regular cases", () => {
34
- const rpPubKeyCredential = new PubKeyCredential({
35
- version: 0,
36
- curveId: 0x21,
37
- signAlgorithm: 0x01,
38
- publicKey: crypto.from_hex("02b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5"),
39
- });
40
- const challengeData = crypto.from_hex("53cafde60e5395b164eb867213bc05f6");
41
- const rpSignature = crypto.from_hex("3045022025d130d7ae5c48a6cf09781d04a08e9a2d07ce1bd17e84637f6ede4a043c5dcc022100a846ececf20eb53ffc2dc502ce8074ba40b241bfd13edaf1e8575559a9b2b4ea");
42
- const challenge = new Challenge({
43
- payloadType: 0x07,
44
- version: 0,
45
- protocolVersion: {
46
- major: 1,
47
- minor: 0,
48
- patch: 0,
49
- },
50
- challengeData: challengeData,
51
- challengeExpiry: new Date(1708678950000),
52
- host: "localhost",
53
- rpCredential: rpPubKeyCredential,
54
- rpSignature: rpSignature,
55
- });
56
- test("parse one example from backend", () => {
57
- const hex = "01010702010012102d4492d50ef878a450d9bd6e8862690014010115483046022100beb271fa9752c377251005e125cc115737e427d5259a2dbbc9a38f7a36430c3f0221008826b3d3c1b491b41908d7cc89d71b92e9428c52a927e95341d555252f687b0f16046654aea120096c6f63616c686f7374320121332103cb7628e7248ddf9c07da54b979f16bf081fb3d173aac0992ad2a44ef6a388ae2600401000000";
58
- const bytes = crypto.from_hex(hex);
59
- const [challengeFromBytes, l] = Challenge.fromBytes(bytes);
60
- expect(l).toEqual(bytes.length);
61
- expect(challengeFromBytes.toJSON()).toEqual({
62
- payloadType: 7,
63
- version: 0,
64
- challenge: { data: "2d4492d50ef878a450d9bd6e88626900", expiry: "2024-05-27T16:02:41.000Z" },
65
- host: "localhost",
66
- rp: [
67
- {
68
- credential: {
69
- version: 0,
70
- curveId: 33,
71
- signAlgorithm: 1,
72
- publicKey: "03cb7628e7248ddf9c07da54b979f16bf081fb3d173aac0992ad2a44ef6a388ae2",
73
- },
74
- signature: "3046022100beb271fa9752c377251005e125cc115737e427d5259a2dbbc9a38f7a36430c3f0221008826b3d3c1b491b41908d7cc89d71b92e9428c52a927e95341d555252f687b0f",
75
- },
76
- ],
77
- protocolVersion: { major: 1, minor: 0, patch: 0 },
78
- });
79
- });
80
- test("toBytes", () => {
81
- expect(crypto.to_hex(challenge.toBytes())).toEqual("010107020100121053cafde60e5395b164eb867213bc05f614010115473045022025d130d7ae5c48a6cf09781d04a08e9a2d07ce1bd17e84637f6ede4a043c5dcc022100a846ececf20eb53ffc2dc502ce8074ba40b241bfd13edaf1e8575559a9b2b4ea160465d85f2620096c6f63616c686f7374320121332102b2c29ab36022219967cc21a306599ecaf51ce9f2998da6982388d52c8c69a6a5600401000000");
82
- });
83
- test("toBytes <> fromBytes", () => {
84
- const bytes = challenge.toBytes();
85
- const [challengeFromBytes, _] = Challenge.fromBytes(bytes);
86
- expect(challengeFromBytes).toEqual(challenge);
87
- expect(challengeFromBytes.toBytes()).toEqual(bytes);
88
- });
89
- });
90
- //# 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,63 +0,0 @@
1
- /*
2
- This test suite simulates an application generating data (using a fixed shchema) and sharing part of the
3
- data to specific users. The data is encrypted using a StreamTree.
4
- */
5
- import { StreamTree } from "../StreamTree";
6
- import { device } from "..";
7
- import { Permissions } from "../CommandBlock";
8
- import { StreamTreeCipher } from "../StreamTreeCipher";
9
- import { DerivationPath, crypto } from "../Crypto";
10
- const APPLICATION_ID = 12;
11
- async function encryptSharedObject(device, tree, sharedObject, mapping = new Map()) {
12
- const cipher = StreamTreeCipher.create(device);
13
- const encrypt = async (key, defaultPath) => {
14
- return crypto.to_hex(await cipher.encrypt(tree, DerivationPath.toIndexArray(mapping.get(key) || defaultPath), new TextEncoder().encode(sharedObject[key].toString())));
15
- };
16
- const encryptedSharedObject = {
17
- name: await encrypt("name", `0h/${APPLICATION_ID}h/0h/0h/0h`),
18
- age: await encrypt("age", `0h/${APPLICATION_ID}h/0h/1h/0h`),
19
- email: await encrypt("email", `0h/${APPLICATION_ID}h/0h/2h/0h`),
20
- };
21
- return encryptedSharedObject;
22
- }
23
- async function decryptSharedObject(device, tree, encryptedSharedObject, mapping = new Map()) {
24
- const cipher = StreamTreeCipher.create(device);
25
- const decrypt = async (key, defaultPath) => {
26
- const path = DerivationPath.toIndexArray(mapping.get(key) || defaultPath);
27
- const bytes = await cipher.decrypt(tree, path, crypto.from_hex(encryptedSharedObject[key]));
28
- return new TextDecoder().decode(bytes);
29
- };
30
- const sharedObject = {
31
- name: await decrypt("name", `0h/${APPLICATION_ID}h/0h/0h/0h`),
32
- age: parseInt(await decrypt("age", `0h/${APPLICATION_ID}h/0h/1h/0h`)),
33
- email: await decrypt("email", `0h/${APPLICATION_ID}h/0h/2h/0h`),
34
- };
35
- return sharedObject;
36
- }
37
- describe("Shared object scenario using StreamTree", () => {
38
- it("should create a tree with 3 members, one member encrypt a shared object and another one decrypts it", async () => {
39
- const alice = await device.software();
40
- const bob = await device.software();
41
- const carol = await device.software();
42
- // Create a new tree owned by alice
43
- let tree = await StreamTree.createNewTree(alice);
44
- // Share the application node with bob
45
- tree = await tree.share(tree.getApplicationRootPath(APPLICATION_ID), alice, (await bob.getPublicKey()).publicKey, "Bob", Permissions.OWNER);
46
- // Bob creates a shared object and encrypt it (1 value -> 1 encryption key)
47
- const sharedObject = {
48
- name: "Bob",
49
- age: 42,
50
- email: "bob@box.com",
51
- };
52
- //console.dir(sharedObject, { depth: null });
53
- const encryptedObject = await encryptSharedObject(bob, tree, sharedObject);
54
- // Share the application node with carol
55
- tree = await tree.share(tree.getApplicationRootPath(APPLICATION_ID), alice, (await carol.getPublicKey()).publicKey, "Carol", Permissions.OWNER);
56
- // Decrypt with Carol
57
- const decryptedObject = await decryptSharedObject(carol, tree, encryptedObject);
58
- //console.dir(encryptedObject, { depth: null });
59
- //console.dir(decryptedObject, { depth: null });
60
- expect(decryptedObject).toEqual(sharedObject);
61
- });
62
- });
63
- //# 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":""}