cojson 0.0.19 → 0.0.22
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/dist/account.d.ts +1 -1
- package/dist/account.js +1 -1
- package/dist/account.js.map +1 -1
- package/dist/coValue.d.ts +3 -2
- package/dist/coValue.js +10 -9
- package/dist/coValue.js.map +1 -1
- package/dist/contentTypes/coMap.d.ts +2 -2
- package/dist/contentTypes/coMap.js +6 -6
- package/dist/contentTypes/coMap.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/jsonValue.d.ts +2 -2
- package/dist/node.d.ts +2 -1
- package/dist/node.js +43 -3
- package/dist/node.js.map +1 -1
- package/dist/permissions.d.ts +4 -32
- package/dist/permissions.js +42 -106
- package/dist/permissions.js.map +1 -1
- package/dist/team.d.ts +35 -0
- package/dist/team.js +110 -0
- package/dist/team.js.map +1 -0
- package/dist/testUtils.d.ts +2 -2
- package/dist/testUtils.js +1 -1
- package/dist/testUtils.js.map +1 -1
- package/package.json +3 -3
- package/src/account.ts +1 -1
- package/src/coValue.ts +10 -11
- package/src/contentTypes/coMap.ts +8 -8
- package/src/crypto.test.ts +10 -9
- package/src/index.ts +5 -0
- package/src/jsonValue.ts +2 -2
- package/src/node.ts +113 -11
- package/src/permissions.test.ts +503 -3
- package/src/permissions.ts +70 -206
- package/src/sync.test.ts +8 -8
- package/src/team.ts +225 -0
- package/src/testUtils.ts +1 -1
- package/tsconfig.json +1 -0
- package/dist/account.test.d.ts +0 -1
- package/dist/account.test.js +0 -40
- package/dist/account.test.js.map +0 -1
- package/dist/coValue.test.d.ts +0 -1
- package/dist/coValue.test.js +0 -78
- package/dist/coValue.test.js.map +0 -1
- package/dist/contentType.test.d.ts +0 -1
- package/dist/contentType.test.js +0 -145
- package/dist/contentType.test.js.map +0 -1
- package/dist/crypto.test.d.ts +0 -1
- package/dist/crypto.test.js +0 -111
- package/dist/crypto.test.js.map +0 -1
- package/dist/permissions.test.d.ts +0 -1
- package/dist/permissions.test.js +0 -711
- package/dist/permissions.test.js.map +0 -1
- package/dist/sync.test.d.ts +0 -1
- package/dist/sync.test.js +0 -827
- package/dist/sync.test.js.map +0 -1
package/dist/account.test.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { newRandomSessionID } from "./coValue.js";
|
|
2
|
-
import { LocalNode } from "./node.js";
|
|
3
|
-
import { connectedPeers } from "./streamUtils.js";
|
|
4
|
-
test("Can create a node while creating a new account with profile", async () => {
|
|
5
|
-
const { node, accountID, accountSecret, sessionID } = LocalNode.withNewlyCreatedAccount("Hermes Puggington");
|
|
6
|
-
expect(node).not.toBeNull();
|
|
7
|
-
expect(accountID).not.toBeNull();
|
|
8
|
-
expect(accountSecret).not.toBeNull();
|
|
9
|
-
expect(sessionID).not.toBeNull();
|
|
10
|
-
expect(node.expectProfileLoaded(accountID).get("name")).toEqual("Hermes Puggington");
|
|
11
|
-
expect((await node.loadProfile(accountID)).get("name")).toEqual("Hermes Puggington");
|
|
12
|
-
});
|
|
13
|
-
test("A node with an account can create teams and and objects within them", async () => {
|
|
14
|
-
const { node, accountID } = LocalNode.withNewlyCreatedAccount("Hermes Puggington");
|
|
15
|
-
const team = await node.createTeam();
|
|
16
|
-
expect(team).not.toBeNull();
|
|
17
|
-
let map = team.createMap();
|
|
18
|
-
map = map.edit((edit) => {
|
|
19
|
-
edit.set("foo", "bar", "private");
|
|
20
|
-
expect(edit.get("foo")).toEqual("bar");
|
|
21
|
-
});
|
|
22
|
-
expect(map.get("foo")).toEqual("bar");
|
|
23
|
-
expect(map.getLastEditor("foo")).toEqual(accountID);
|
|
24
|
-
});
|
|
25
|
-
test("Can create account with one node, and then load it on another", async () => {
|
|
26
|
-
const { node, accountID, accountSecret } = LocalNode.withNewlyCreatedAccount("Hermes Puggington");
|
|
27
|
-
const team = await node.createTeam();
|
|
28
|
-
expect(team).not.toBeNull();
|
|
29
|
-
let map = team.createMap();
|
|
30
|
-
map = map.edit((edit) => {
|
|
31
|
-
edit.set("foo", "bar", "private");
|
|
32
|
-
expect(edit.get("foo")).toEqual("bar");
|
|
33
|
-
});
|
|
34
|
-
const [node1asPeer, node2asPeer] = connectedPeers("node1", "node2", { trace: true, peer1role: "server", peer2role: "client" });
|
|
35
|
-
node.sync.addPeer(node2asPeer);
|
|
36
|
-
const node2 = await LocalNode.withLoadedAccount(accountID, accountSecret, newRandomSessionID(accountID), [node1asPeer]);
|
|
37
|
-
const map2 = await node2.load(map.id);
|
|
38
|
-
expect(map2.get("foo")).toEqual("bar");
|
|
39
|
-
});
|
|
40
|
-
//# sourceMappingURL=account.test.js.map
|
package/dist/account.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"account.test.js","sourceRoot":"","sources":["../src/account.test.ts"],"names":[],"mappings":"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"}
|
package/dist/coValue.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/coValue.test.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { LocalNode } from "./node.js";
|
|
2
|
-
import { createdNowUnique, getAgentSignerSecret, newRandomAgentSecret, sign } from "./crypto.js";
|
|
3
|
-
import { randomAnonymousAccountAndSessionID } from "./testUtils.js";
|
|
4
|
-
test("Can create coValue with new agent credentials and add transaction to it", () => {
|
|
5
|
-
const [account, sessionID] = randomAnonymousAccountAndSessionID();
|
|
6
|
-
const node = new LocalNode(account, sessionID);
|
|
7
|
-
const coValue = node.createCoValue({
|
|
8
|
-
type: "costream",
|
|
9
|
-
ruleset: { type: "unsafeAllowAll" },
|
|
10
|
-
meta: null,
|
|
11
|
-
...createdNowUnique(),
|
|
12
|
-
});
|
|
13
|
-
const transaction = {
|
|
14
|
-
privacy: "trusting",
|
|
15
|
-
madeAt: Date.now(),
|
|
16
|
-
changes: [
|
|
17
|
-
{
|
|
18
|
-
hello: "world",
|
|
19
|
-
},
|
|
20
|
-
],
|
|
21
|
-
};
|
|
22
|
-
const { expectedNewHash } = coValue.expectedNewHashAfter(node.ownSessionID, [transaction]);
|
|
23
|
-
expect(coValue.tryAddTransactions(node.ownSessionID, [transaction], expectedNewHash, sign(account.currentSignerSecret(), expectedNewHash))).toBe(true);
|
|
24
|
-
});
|
|
25
|
-
test("transactions with wrong signature are rejected", () => {
|
|
26
|
-
const wrongAgent = newRandomAgentSecret();
|
|
27
|
-
const [agentSecret, sessionID] = randomAnonymousAccountAndSessionID();
|
|
28
|
-
const node = new LocalNode(agentSecret, sessionID);
|
|
29
|
-
const coValue = node.createCoValue({
|
|
30
|
-
type: "costream",
|
|
31
|
-
ruleset: { type: "unsafeAllowAll" },
|
|
32
|
-
meta: null,
|
|
33
|
-
...createdNowUnique(),
|
|
34
|
-
});
|
|
35
|
-
const transaction = {
|
|
36
|
-
privacy: "trusting",
|
|
37
|
-
madeAt: Date.now(),
|
|
38
|
-
changes: [
|
|
39
|
-
{
|
|
40
|
-
hello: "world",
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
};
|
|
44
|
-
const { expectedNewHash } = coValue.expectedNewHashAfter(node.ownSessionID, [transaction]);
|
|
45
|
-
expect(coValue.tryAddTransactions(node.ownSessionID, [transaction], expectedNewHash, sign(getAgentSignerSecret(wrongAgent), expectedNewHash))).toBe(false);
|
|
46
|
-
});
|
|
47
|
-
test("transactions with correctly signed, but wrong hash are rejected", () => {
|
|
48
|
-
const [account, sessionID] = randomAnonymousAccountAndSessionID();
|
|
49
|
-
const node = new LocalNode(account, sessionID);
|
|
50
|
-
const coValue = node.createCoValue({
|
|
51
|
-
type: "costream",
|
|
52
|
-
ruleset: { type: "unsafeAllowAll" },
|
|
53
|
-
meta: null,
|
|
54
|
-
...createdNowUnique(),
|
|
55
|
-
});
|
|
56
|
-
const transaction = {
|
|
57
|
-
privacy: "trusting",
|
|
58
|
-
madeAt: Date.now(),
|
|
59
|
-
changes: [
|
|
60
|
-
{
|
|
61
|
-
hello: "world",
|
|
62
|
-
},
|
|
63
|
-
],
|
|
64
|
-
};
|
|
65
|
-
const { expectedNewHash } = coValue.expectedNewHashAfter(node.ownSessionID, [
|
|
66
|
-
{
|
|
67
|
-
privacy: "trusting",
|
|
68
|
-
madeAt: Date.now(),
|
|
69
|
-
changes: [
|
|
70
|
-
{
|
|
71
|
-
hello: "wrong",
|
|
72
|
-
},
|
|
73
|
-
],
|
|
74
|
-
},
|
|
75
|
-
]);
|
|
76
|
-
expect(coValue.tryAddTransactions(node.ownSessionID, [transaction], expectedNewHash, sign(account.currentSignerSecret(), expectedNewHash))).toBe(false);
|
|
77
|
-
});
|
|
78
|
-
//# sourceMappingURL=coValue.test.js.map
|
package/dist/coValue.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"coValue.test.js","sourceRoot":"","sources":["../src/coValue.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/contentType.test.js
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { accountOrAgentIDfromSessionID } from "./coValue.js";
|
|
2
|
-
import { createdNowUnique } from "./crypto.js";
|
|
3
|
-
import { LocalNode } from "./node.js";
|
|
4
|
-
import { randomAnonymousAccountAndSessionID } from "./testUtils.js";
|
|
5
|
-
test("Empty COJSON Map works", () => {
|
|
6
|
-
const node = new LocalNode(...randomAnonymousAccountAndSessionID());
|
|
7
|
-
const coValue = node.createCoValue({
|
|
8
|
-
type: "comap",
|
|
9
|
-
ruleset: { type: "unsafeAllowAll" },
|
|
10
|
-
meta: null,
|
|
11
|
-
...createdNowUnique(),
|
|
12
|
-
});
|
|
13
|
-
const content = coValue.getCurrentContent();
|
|
14
|
-
if (content.type !== "comap") {
|
|
15
|
-
throw new Error("Expected map");
|
|
16
|
-
}
|
|
17
|
-
expect(content.type).toEqual("comap");
|
|
18
|
-
expect([...content.keys()]).toEqual([]);
|
|
19
|
-
expect(content.toJSON()).toEqual({});
|
|
20
|
-
});
|
|
21
|
-
test("Can insert and delete Map entries in edit()", () => {
|
|
22
|
-
const node = new LocalNode(...randomAnonymousAccountAndSessionID());
|
|
23
|
-
const coValue = node.createCoValue({
|
|
24
|
-
type: "comap",
|
|
25
|
-
ruleset: { type: "unsafeAllowAll" },
|
|
26
|
-
meta: null,
|
|
27
|
-
...createdNowUnique(),
|
|
28
|
-
});
|
|
29
|
-
const content = coValue.getCurrentContent();
|
|
30
|
-
if (content.type !== "comap") {
|
|
31
|
-
throw new Error("Expected map");
|
|
32
|
-
}
|
|
33
|
-
expect(content.type).toEqual("comap");
|
|
34
|
-
content.edit((editable) => {
|
|
35
|
-
editable.set("hello", "world", "trusting");
|
|
36
|
-
expect(editable.get("hello")).toEqual("world");
|
|
37
|
-
editable.set("foo", "bar", "trusting");
|
|
38
|
-
expect(editable.get("foo")).toEqual("bar");
|
|
39
|
-
expect([...editable.keys()]).toEqual(["hello", "foo"]);
|
|
40
|
-
editable.delete("foo", "trusting");
|
|
41
|
-
expect(editable.get("foo")).toEqual(undefined);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
test("Can get map entry values at different points in time", () => {
|
|
45
|
-
const node = new LocalNode(...randomAnonymousAccountAndSessionID());
|
|
46
|
-
const coValue = node.createCoValue({
|
|
47
|
-
type: "comap",
|
|
48
|
-
ruleset: { type: "unsafeAllowAll" },
|
|
49
|
-
meta: null,
|
|
50
|
-
...createdNowUnique(),
|
|
51
|
-
});
|
|
52
|
-
const content = coValue.getCurrentContent();
|
|
53
|
-
if (content.type !== "comap") {
|
|
54
|
-
throw new Error("Expected map");
|
|
55
|
-
}
|
|
56
|
-
expect(content.type).toEqual("comap");
|
|
57
|
-
content.edit((editable) => {
|
|
58
|
-
const beforeA = Date.now();
|
|
59
|
-
while (Date.now() < beforeA + 10) { }
|
|
60
|
-
editable.set("hello", "A", "trusting");
|
|
61
|
-
const beforeB = Date.now();
|
|
62
|
-
while (Date.now() < beforeB + 10) { }
|
|
63
|
-
editable.set("hello", "B", "trusting");
|
|
64
|
-
const beforeC = Date.now();
|
|
65
|
-
while (Date.now() < beforeC + 10) { }
|
|
66
|
-
editable.set("hello", "C", "trusting");
|
|
67
|
-
expect(editable.get("hello")).toEqual("C");
|
|
68
|
-
expect(editable.getAtTime("hello", Date.now())).toEqual("C");
|
|
69
|
-
expect(editable.getAtTime("hello", beforeA)).toEqual(undefined);
|
|
70
|
-
expect(editable.getAtTime("hello", beforeB)).toEqual("A");
|
|
71
|
-
expect(editable.getAtTime("hello", beforeC)).toEqual("B");
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
test("Can get all historic values of key", () => {
|
|
75
|
-
const node = new LocalNode(...randomAnonymousAccountAndSessionID());
|
|
76
|
-
const coValue = node.createCoValue({
|
|
77
|
-
type: "comap",
|
|
78
|
-
ruleset: { type: "unsafeAllowAll" },
|
|
79
|
-
meta: null,
|
|
80
|
-
...createdNowUnique(),
|
|
81
|
-
});
|
|
82
|
-
const content = coValue.getCurrentContent();
|
|
83
|
-
if (content.type !== "comap") {
|
|
84
|
-
throw new Error("Expected map");
|
|
85
|
-
}
|
|
86
|
-
expect(content.type).toEqual("comap");
|
|
87
|
-
content.edit((editable) => {
|
|
88
|
-
editable.set("hello", "A", "trusting");
|
|
89
|
-
const txA = editable.getLastTxID("hello");
|
|
90
|
-
editable.set("hello", "B", "trusting");
|
|
91
|
-
const txB = editable.getLastTxID("hello");
|
|
92
|
-
editable.delete("hello", "trusting");
|
|
93
|
-
const txDel = editable.getLastTxID("hello");
|
|
94
|
-
editable.set("hello", "C", "trusting");
|
|
95
|
-
const txC = editable.getLastTxID("hello");
|
|
96
|
-
expect(editable.getHistory("hello")).toEqual([
|
|
97
|
-
{
|
|
98
|
-
txID: txA,
|
|
99
|
-
value: "A",
|
|
100
|
-
at: txA && coValue.getTx(txA)?.madeAt,
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
txID: txB,
|
|
104
|
-
value: "B",
|
|
105
|
-
at: txB && coValue.getTx(txB)?.madeAt,
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
txID: txDel,
|
|
109
|
-
value: undefined,
|
|
110
|
-
at: txDel && coValue.getTx(txDel)?.madeAt,
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
txID: txC,
|
|
114
|
-
value: "C",
|
|
115
|
-
at: txC && coValue.getTx(txC)?.madeAt,
|
|
116
|
-
},
|
|
117
|
-
]);
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
test("Can get last tx ID for a key", () => {
|
|
121
|
-
const node = new LocalNode(...randomAnonymousAccountAndSessionID());
|
|
122
|
-
const coValue = node.createCoValue({
|
|
123
|
-
type: "comap",
|
|
124
|
-
ruleset: { type: "unsafeAllowAll" },
|
|
125
|
-
meta: null,
|
|
126
|
-
...createdNowUnique(),
|
|
127
|
-
});
|
|
128
|
-
const content = coValue.getCurrentContent();
|
|
129
|
-
if (content.type !== "comap") {
|
|
130
|
-
throw new Error("Expected map");
|
|
131
|
-
}
|
|
132
|
-
expect(content.type).toEqual("comap");
|
|
133
|
-
content.edit((editable) => {
|
|
134
|
-
expect(editable.getLastTxID("hello")).toEqual(undefined);
|
|
135
|
-
editable.set("hello", "A", "trusting");
|
|
136
|
-
const sessionID = editable.getLastTxID("hello")?.sessionID;
|
|
137
|
-
expect(sessionID && accountOrAgentIDfromSessionID(sessionID)).toEqual(node.account.id);
|
|
138
|
-
expect(editable.getLastTxID("hello")?.txIndex).toEqual(0);
|
|
139
|
-
editable.set("hello", "B", "trusting");
|
|
140
|
-
expect(editable.getLastTxID("hello")?.txIndex).toEqual(1);
|
|
141
|
-
editable.set("hello", "C", "trusting");
|
|
142
|
-
expect(editable.getLastTxID("hello")?.txIndex).toEqual(2);
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
//# sourceMappingURL=contentType.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contentType.test.js","sourceRoot":"","sources":["../src/contentType.test.ts"],"names":[],"mappings":"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"}
|
package/dist/crypto.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/crypto.test.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
import { getSealerID, getSignerID, secureHash, newRandomSealer, newRandomSigner, seal, sign, unseal, verify, shortHash, newRandomKeySecret, encryptForTransaction, decryptForTransaction, encryptKeySecret, decryptKeySecret, } from './crypto.js';
|
|
2
|
-
import { base58, base64url } from "@scure/base";
|
|
3
|
-
import { x25519 } from "@noble/curves/ed25519";
|
|
4
|
-
import { xsalsa20_poly1305 } from "@noble/ciphers/salsa";
|
|
5
|
-
import { blake3 } from "@noble/hashes/blake3";
|
|
6
|
-
import stableStringify from "fast-json-stable-stringify";
|
|
7
|
-
test("Signatures round-trip and use stable stringify", () => {
|
|
8
|
-
const data = { b: "world", a: "hello" };
|
|
9
|
-
const signer = newRandomSigner();
|
|
10
|
-
const signature = sign(signer, data);
|
|
11
|
-
expect(signature).toMatch(/^signature_z/);
|
|
12
|
-
expect(verify(signature, { a: "hello", b: "world" }, getSignerID(signer))).toBe(true);
|
|
13
|
-
});
|
|
14
|
-
test("Invalid signatures don't verify", () => {
|
|
15
|
-
const data = { b: "world", a: "hello" };
|
|
16
|
-
const signer = newRandomSigner();
|
|
17
|
-
const signer2 = newRandomSigner();
|
|
18
|
-
const wrongSignature = sign(signer2, data);
|
|
19
|
-
expect(verify(wrongSignature, data, getSignerID(signer))).toBe(false);
|
|
20
|
-
});
|
|
21
|
-
test("encrypting round-trips, but invalid receiver can't unseal", () => {
|
|
22
|
-
const data = { b: "world", a: "hello" };
|
|
23
|
-
const sender = newRandomSealer();
|
|
24
|
-
const sealer = newRandomSealer();
|
|
25
|
-
const wrongSealer = newRandomSealer();
|
|
26
|
-
const nOnceMaterial = {
|
|
27
|
-
in: "co_zTEST",
|
|
28
|
-
tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
|
|
29
|
-
};
|
|
30
|
-
const sealed = seal(data, sender, getSealerID(sealer), nOnceMaterial);
|
|
31
|
-
expect(unseal(sealed, sealer, getSealerID(sender), nOnceMaterial)).toEqual(data);
|
|
32
|
-
expect(() => unseal(sealed, wrongSealer, getSealerID(sender), nOnceMaterial)).toThrow(/Wrong tag/);
|
|
33
|
-
// trying with wrong sealer secret, by hand
|
|
34
|
-
const nOnce = blake3(new TextEncoder().encode(stableStringify(nOnceMaterial))).slice(0, 24);
|
|
35
|
-
const sealer3priv = base58.decode(wrongSealer.substring("sealerSecret_z".length));
|
|
36
|
-
const senderPub = base58.decode(getSealerID(sender).substring("sealer_z".length));
|
|
37
|
-
const sealedBytes = base64url.decode(sealed.substring("sealed_U".length));
|
|
38
|
-
const sharedSecret = x25519.getSharedSecret(sealer3priv, senderPub);
|
|
39
|
-
expect(() => {
|
|
40
|
-
const _ = xsalsa20_poly1305(sharedSecret, nOnce).decrypt(sealedBytes);
|
|
41
|
-
}).toThrow("Wrong tag");
|
|
42
|
-
});
|
|
43
|
-
test("Hashing is deterministic", () => {
|
|
44
|
-
expect(secureHash({ b: "world", a: "hello" })).toEqual(secureHash({ a: "hello", b: "world" }));
|
|
45
|
-
expect(shortHash({ b: "world", a: "hello" })).toEqual(shortHash({ a: "hello", b: "world" }));
|
|
46
|
-
});
|
|
47
|
-
test("Encryption for transactions round-trips", () => {
|
|
48
|
-
const { secret } = newRandomKeySecret();
|
|
49
|
-
const encrypted1 = encryptForTransaction({ a: "hello" }, secret, {
|
|
50
|
-
in: "co_zTEST",
|
|
51
|
-
tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
|
|
52
|
-
});
|
|
53
|
-
const encrypted2 = encryptForTransaction({ b: "world" }, secret, {
|
|
54
|
-
in: "co_zTEST",
|
|
55
|
-
tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
|
|
56
|
-
});
|
|
57
|
-
const decrypted1 = decryptForTransaction(encrypted1, secret, {
|
|
58
|
-
in: "co_zTEST",
|
|
59
|
-
tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
|
|
60
|
-
});
|
|
61
|
-
const decrypted2 = decryptForTransaction(encrypted2, secret, {
|
|
62
|
-
in: "co_zTEST",
|
|
63
|
-
tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
|
|
64
|
-
});
|
|
65
|
-
expect([decrypted1, decrypted2]).toEqual([{ a: "hello" }, { b: "world" }]);
|
|
66
|
-
});
|
|
67
|
-
test("Encryption for transactions doesn't decrypt with a wrong key", () => {
|
|
68
|
-
const { secret } = newRandomKeySecret();
|
|
69
|
-
const { secret: secret2 } = newRandomKeySecret();
|
|
70
|
-
const encrypted1 = encryptForTransaction({ a: "hello" }, secret, {
|
|
71
|
-
in: "co_zTEST",
|
|
72
|
-
tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
|
|
73
|
-
});
|
|
74
|
-
const encrypted2 = encryptForTransaction({ b: "world" }, secret, {
|
|
75
|
-
in: "co_zTEST",
|
|
76
|
-
tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
|
|
77
|
-
});
|
|
78
|
-
const decrypted1 = decryptForTransaction(encrypted1, secret2, {
|
|
79
|
-
in: "co_zTEST",
|
|
80
|
-
tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
|
|
81
|
-
});
|
|
82
|
-
const decrypted2 = decryptForTransaction(encrypted2, secret2, {
|
|
83
|
-
in: "co_zTEST",
|
|
84
|
-
tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
|
|
85
|
-
});
|
|
86
|
-
expect([decrypted1, decrypted2]).toEqual([undefined, undefined]);
|
|
87
|
-
});
|
|
88
|
-
test("Encryption of keySecrets round-trips", () => {
|
|
89
|
-
const toEncrypt = newRandomKeySecret();
|
|
90
|
-
const encrypting = newRandomKeySecret();
|
|
91
|
-
const keys = {
|
|
92
|
-
toEncrypt,
|
|
93
|
-
encrypting,
|
|
94
|
-
};
|
|
95
|
-
const encrypted = encryptKeySecret(keys);
|
|
96
|
-
const decrypted = decryptKeySecret(encrypted, encrypting.secret);
|
|
97
|
-
expect(decrypted).toEqual(toEncrypt.secret);
|
|
98
|
-
});
|
|
99
|
-
test("Encryption of keySecrets doesn't decrypt with a wrong key", () => {
|
|
100
|
-
const toEncrypt = newRandomKeySecret();
|
|
101
|
-
const encrypting = newRandomKeySecret();
|
|
102
|
-
const encryptingWrong = newRandomKeySecret();
|
|
103
|
-
const keys = {
|
|
104
|
-
toEncrypt,
|
|
105
|
-
encrypting,
|
|
106
|
-
};
|
|
107
|
-
const encrypted = encryptKeySecret(keys);
|
|
108
|
-
const decrypted = decryptKeySecret(encrypted, encryptingWrong.secret);
|
|
109
|
-
expect(decrypted).toBeUndefined();
|
|
110
|
-
});
|
|
111
|
-
//# sourceMappingURL=crypto.test.js.map
|
package/dist/crypto.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.test.js","sourceRoot":"","sources":["../src/crypto.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|