cojson 0.19.22 → 0.20.1

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 (223) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +66 -0
  3. package/dist/PeerState.d.ts +6 -1
  4. package/dist/PeerState.d.ts.map +1 -1
  5. package/dist/PeerState.js +18 -3
  6. package/dist/PeerState.js.map +1 -1
  7. package/dist/coValueContentMessage.d.ts +0 -2
  8. package/dist/coValueContentMessage.d.ts.map +1 -1
  9. package/dist/coValueContentMessage.js +0 -8
  10. package/dist/coValueContentMessage.js.map +1 -1
  11. package/dist/coValueCore/SessionMap.d.ts +4 -2
  12. package/dist/coValueCore/SessionMap.d.ts.map +1 -1
  13. package/dist/coValueCore/SessionMap.js +30 -0
  14. package/dist/coValueCore/SessionMap.js.map +1 -1
  15. package/dist/coValueCore/coValueCore.d.ts +70 -5
  16. package/dist/coValueCore/coValueCore.d.ts.map +1 -1
  17. package/dist/coValueCore/coValueCore.js +302 -31
  18. package/dist/coValueCore/coValueCore.js.map +1 -1
  19. package/dist/coValueCore/verifiedState.d.ts +6 -1
  20. package/dist/coValueCore/verifiedState.d.ts.map +1 -1
  21. package/dist/coValueCore/verifiedState.js +9 -0
  22. package/dist/coValueCore/verifiedState.js.map +1 -1
  23. package/dist/coValues/coList.d.ts +4 -2
  24. package/dist/coValues/coList.d.ts.map +1 -1
  25. package/dist/coValues/coList.js +3 -0
  26. package/dist/coValues/coList.js.map +1 -1
  27. package/dist/coValues/group.d.ts.map +1 -1
  28. package/dist/coValues/group.js +3 -6
  29. package/dist/coValues/group.js.map +1 -1
  30. package/dist/config.d.ts +2 -8
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +4 -12
  33. package/dist/config.js.map +1 -1
  34. package/dist/crypto/NapiCrypto.d.ts +1 -2
  35. package/dist/crypto/NapiCrypto.d.ts.map +1 -1
  36. package/dist/crypto/NapiCrypto.js +19 -4
  37. package/dist/crypto/NapiCrypto.js.map +1 -1
  38. package/dist/crypto/RNCrypto.d.ts.map +1 -1
  39. package/dist/crypto/RNCrypto.js +19 -4
  40. package/dist/crypto/RNCrypto.js.map +1 -1
  41. package/dist/crypto/WasmCrypto.d.ts +11 -4
  42. package/dist/crypto/WasmCrypto.d.ts.map +1 -1
  43. package/dist/crypto/WasmCrypto.js +52 -10
  44. package/dist/crypto/WasmCrypto.js.map +1 -1
  45. package/dist/crypto/WasmCryptoEdge.d.ts +1 -0
  46. package/dist/crypto/WasmCryptoEdge.d.ts.map +1 -1
  47. package/dist/crypto/WasmCryptoEdge.js +4 -1
  48. package/dist/crypto/WasmCryptoEdge.js.map +1 -1
  49. package/dist/crypto/crypto.d.ts +3 -3
  50. package/dist/crypto/crypto.d.ts.map +1 -1
  51. package/dist/crypto/crypto.js +6 -1
  52. package/dist/crypto/crypto.js.map +1 -1
  53. package/dist/exports.d.ts +5 -5
  54. package/dist/exports.d.ts.map +1 -1
  55. package/dist/exports.js +4 -3
  56. package/dist/exports.js.map +1 -1
  57. package/dist/ids.d.ts +4 -1
  58. package/dist/ids.d.ts.map +1 -1
  59. package/dist/ids.js +4 -0
  60. package/dist/ids.js.map +1 -1
  61. package/dist/knownState.d.ts +2 -0
  62. package/dist/knownState.d.ts.map +1 -1
  63. package/dist/localNode.d.ts +12 -0
  64. package/dist/localNode.d.ts.map +1 -1
  65. package/dist/localNode.js +14 -0
  66. package/dist/localNode.js.map +1 -1
  67. package/dist/platformUtils.d.ts +3 -0
  68. package/dist/platformUtils.d.ts.map +1 -0
  69. package/dist/platformUtils.js +24 -0
  70. package/dist/platformUtils.js.map +1 -0
  71. package/dist/queue/LinkedList.d.ts +9 -3
  72. package/dist/queue/LinkedList.d.ts.map +1 -1
  73. package/dist/queue/LinkedList.js +30 -1
  74. package/dist/queue/LinkedList.js.map +1 -1
  75. package/dist/queue/OutgoingLoadQueue.d.ts +95 -0
  76. package/dist/queue/OutgoingLoadQueue.d.ts.map +1 -0
  77. package/dist/queue/OutgoingLoadQueue.js +240 -0
  78. package/dist/queue/OutgoingLoadQueue.js.map +1 -0
  79. package/dist/storage/DeletedCoValuesEraserScheduler.d.ts +30 -0
  80. package/dist/storage/DeletedCoValuesEraserScheduler.d.ts.map +1 -0
  81. package/dist/storage/DeletedCoValuesEraserScheduler.js +84 -0
  82. package/dist/storage/DeletedCoValuesEraserScheduler.js.map +1 -0
  83. package/dist/storage/sqlite/client.d.ts +3 -0
  84. package/dist/storage/sqlite/client.d.ts.map +1 -1
  85. package/dist/storage/sqlite/client.js +44 -0
  86. package/dist/storage/sqlite/client.js.map +1 -1
  87. package/dist/storage/sqlite/sqliteMigrations.d.ts.map +1 -1
  88. package/dist/storage/sqlite/sqliteMigrations.js +7 -0
  89. package/dist/storage/sqlite/sqliteMigrations.js.map +1 -1
  90. package/dist/storage/sqliteAsync/client.d.ts +3 -0
  91. package/dist/storage/sqliteAsync/client.d.ts.map +1 -1
  92. package/dist/storage/sqliteAsync/client.js +42 -0
  93. package/dist/storage/sqliteAsync/client.js.map +1 -1
  94. package/dist/storage/storageAsync.d.ts +7 -0
  95. package/dist/storage/storageAsync.d.ts.map +1 -1
  96. package/dist/storage/storageAsync.js +48 -0
  97. package/dist/storage/storageAsync.js.map +1 -1
  98. package/dist/storage/storageSync.d.ts +6 -0
  99. package/dist/storage/storageSync.d.ts.map +1 -1
  100. package/dist/storage/storageSync.js +42 -0
  101. package/dist/storage/storageSync.js.map +1 -1
  102. package/dist/storage/types.d.ts +59 -0
  103. package/dist/storage/types.d.ts.map +1 -1
  104. package/dist/storage/types.js +12 -1
  105. package/dist/storage/types.js.map +1 -1
  106. package/dist/sync.d.ts.map +1 -1
  107. package/dist/sync.js +66 -43
  108. package/dist/sync.js.map +1 -1
  109. package/dist/tests/DeletedCoValuesEraserScheduler.test.d.ts +2 -0
  110. package/dist/tests/DeletedCoValuesEraserScheduler.test.d.ts.map +1 -0
  111. package/dist/tests/DeletedCoValuesEraserScheduler.test.js +149 -0
  112. package/dist/tests/DeletedCoValuesEraserScheduler.test.js.map +1 -0
  113. package/dist/tests/GarbageCollector.test.js +5 -6
  114. package/dist/tests/GarbageCollector.test.js.map +1 -1
  115. package/dist/tests/LinkedList.test.js +90 -0
  116. package/dist/tests/LinkedList.test.js.map +1 -1
  117. package/dist/tests/OutgoingLoadQueue.test.d.ts +2 -0
  118. package/dist/tests/OutgoingLoadQueue.test.d.ts.map +1 -0
  119. package/dist/tests/OutgoingLoadQueue.test.js +814 -0
  120. package/dist/tests/OutgoingLoadQueue.test.js.map +1 -0
  121. package/dist/tests/StorageApiAsync.test.js +484 -152
  122. package/dist/tests/StorageApiAsync.test.js.map +1 -1
  123. package/dist/tests/StorageApiSync.test.js +505 -136
  124. package/dist/tests/StorageApiSync.test.js.map +1 -1
  125. package/dist/tests/WasmCrypto.test.js +6 -3
  126. package/dist/tests/WasmCrypto.test.js.map +1 -1
  127. package/dist/tests/coValueCore.loadFromStorage.test.js +3 -0
  128. package/dist/tests/coValueCore.loadFromStorage.test.js.map +1 -1
  129. package/dist/tests/coValueCore.test.js +34 -13
  130. package/dist/tests/coValueCore.test.js.map +1 -1
  131. package/dist/tests/coreWasm.test.js +127 -4
  132. package/dist/tests/coreWasm.test.js.map +1 -1
  133. package/dist/tests/crypto.test.js +89 -93
  134. package/dist/tests/crypto.test.js.map +1 -1
  135. package/dist/tests/deleteCoValue.test.d.ts +2 -0
  136. package/dist/tests/deleteCoValue.test.d.ts.map +1 -0
  137. package/dist/tests/deleteCoValue.test.js +313 -0
  138. package/dist/tests/deleteCoValue.test.js.map +1 -0
  139. package/dist/tests/group.removeMember.test.js +18 -30
  140. package/dist/tests/group.removeMember.test.js.map +1 -1
  141. package/dist/tests/knownState.lazyLoading.test.js +3 -0
  142. package/dist/tests/knownState.lazyLoading.test.js.map +1 -1
  143. package/dist/tests/sync.concurrentLoad.test.d.ts +2 -0
  144. package/dist/tests/sync.concurrentLoad.test.d.ts.map +1 -0
  145. package/dist/tests/sync.concurrentLoad.test.js +481 -0
  146. package/dist/tests/sync.concurrentLoad.test.js.map +1 -0
  147. package/dist/tests/sync.deleted.test.d.ts +2 -0
  148. package/dist/tests/sync.deleted.test.d.ts.map +1 -0
  149. package/dist/tests/sync.deleted.test.js +214 -0
  150. package/dist/tests/sync.deleted.test.js.map +1 -0
  151. package/dist/tests/sync.mesh.test.js +3 -2
  152. package/dist/tests/sync.mesh.test.js.map +1 -1
  153. package/dist/tests/sync.storage.test.js +4 -3
  154. package/dist/tests/sync.storage.test.js.map +1 -1
  155. package/dist/tests/sync.test.js +3 -2
  156. package/dist/tests/sync.test.js.map +1 -1
  157. package/dist/tests/testStorage.d.ts +3 -0
  158. package/dist/tests/testStorage.d.ts.map +1 -1
  159. package/dist/tests/testStorage.js +17 -1
  160. package/dist/tests/testStorage.js.map +1 -1
  161. package/dist/tests/testUtils.d.ts +7 -3
  162. package/dist/tests/testUtils.d.ts.map +1 -1
  163. package/dist/tests/testUtils.js +19 -4
  164. package/dist/tests/testUtils.js.map +1 -1
  165. package/package.json +6 -16
  166. package/src/PeerState.ts +26 -3
  167. package/src/coValueContentMessage.ts +0 -14
  168. package/src/coValueCore/SessionMap.ts +43 -1
  169. package/src/coValueCore/coValueCore.ts +415 -27
  170. package/src/coValueCore/verifiedState.ts +26 -3
  171. package/src/coValues/coList.ts +9 -3
  172. package/src/coValues/group.ts +5 -6
  173. package/src/config.ts +4 -13
  174. package/src/crypto/NapiCrypto.ts +29 -13
  175. package/src/crypto/RNCrypto.ts +29 -11
  176. package/src/crypto/WasmCrypto.ts +67 -20
  177. package/src/crypto/WasmCryptoEdge.ts +5 -1
  178. package/src/crypto/crypto.ts +16 -4
  179. package/src/exports.ts +4 -2
  180. package/src/ids.ts +11 -1
  181. package/src/localNode.ts +15 -0
  182. package/src/platformUtils.ts +26 -0
  183. package/src/queue/LinkedList.ts +34 -4
  184. package/src/queue/OutgoingLoadQueue.ts +307 -0
  185. package/src/storage/DeletedCoValuesEraserScheduler.ts +124 -0
  186. package/src/storage/sqlite/client.ts +77 -0
  187. package/src/storage/sqlite/sqliteMigrations.ts +7 -0
  188. package/src/storage/sqliteAsync/client.ts +75 -0
  189. package/src/storage/storageAsync.ts +62 -0
  190. package/src/storage/storageSync.ts +58 -0
  191. package/src/storage/types.ts +69 -0
  192. package/src/sync.ts +78 -46
  193. package/src/tests/DeletedCoValuesEraserScheduler.test.ts +185 -0
  194. package/src/tests/GarbageCollector.test.ts +6 -10
  195. package/src/tests/LinkedList.test.ts +111 -0
  196. package/src/tests/OutgoingLoadQueue.test.ts +1129 -0
  197. package/src/tests/StorageApiAsync.test.ts +572 -162
  198. package/src/tests/StorageApiSync.test.ts +580 -143
  199. package/src/tests/WasmCrypto.test.ts +8 -3
  200. package/src/tests/coValueCore.loadFromStorage.test.ts +6 -0
  201. package/src/tests/coValueCore.test.ts +49 -14
  202. package/src/tests/coreWasm.test.ts +319 -10
  203. package/src/tests/crypto.test.ts +141 -150
  204. package/src/tests/deleteCoValue.test.ts +528 -0
  205. package/src/tests/group.removeMember.test.ts +35 -35
  206. package/src/tests/knownState.lazyLoading.test.ts +6 -0
  207. package/src/tests/sync.concurrentLoad.test.ts +650 -0
  208. package/src/tests/sync.deleted.test.ts +294 -0
  209. package/src/tests/sync.mesh.test.ts +5 -2
  210. package/src/tests/sync.storage.test.ts +6 -3
  211. package/src/tests/sync.test.ts +5 -2
  212. package/src/tests/testStorage.ts +31 -2
  213. package/src/tests/testUtils.ts +31 -10
  214. package/dist/crypto/PureJSCrypto.d.ts +0 -77
  215. package/dist/crypto/PureJSCrypto.d.ts.map +0 -1
  216. package/dist/crypto/PureJSCrypto.js +0 -236
  217. package/dist/crypto/PureJSCrypto.js.map +0 -1
  218. package/dist/tests/PureJSCrypto.test.d.ts +0 -2
  219. package/dist/tests/PureJSCrypto.test.d.ts.map +0 -1
  220. package/dist/tests/PureJSCrypto.test.js +0 -145
  221. package/dist/tests/PureJSCrypto.test.js.map +0 -1
  222. package/src/crypto/PureJSCrypto.ts +0 -429
  223. package/src/tests/PureJSCrypto.test.ts +0 -217
@@ -1,236 +0,0 @@
1
- import { xsalsa20, xsalsa20poly1305 } from "@noble/ciphers/salsa";
2
- import { ed25519, x25519 } from "@noble/curves/ed25519";
3
- import { blake3 } from "@noble/hashes/blake3";
4
- import { base58 } from "@scure/base";
5
- import { base64URLtoBytes, bytesToBase64url } from "../base64url.js";
6
- import { stableStringify } from "../jsonStringify.js";
7
- import { logger } from "../logger.js";
8
- import { CryptoProvider, textDecoder, textEncoder, } from "./crypto.js";
9
- const x25519SharedSecretCache = new Map();
10
- function getx25519SharedSecret(privateKeyA, publicKeyB) {
11
- const cacheKey = `${privateKeyA}-${publicKeyB}`;
12
- let sharedSecret = x25519SharedSecretCache.get(cacheKey);
13
- if (!sharedSecret) {
14
- const privateKeyABytes = base58.decode(privateKeyA.substring("sealerSecret_z".length));
15
- const publicKeyBBytes = base58.decode(publicKeyB.substring("sealer_z".length));
16
- sharedSecret = x25519.getSharedSecret(privateKeyABytes, publicKeyBBytes);
17
- x25519SharedSecretCache.set(cacheKey, sharedSecret);
18
- }
19
- return sharedSecret;
20
- }
21
- /**
22
- * Pure JavaScript implementation of the CryptoProvider interface using noble-curves and noble-ciphers libraries.
23
- * This provides a fallback implementation that doesn't require WebAssembly, offering:
24
- * - Signing/verifying (Ed25519)
25
- * - Encryption/decryption (XSalsa20)
26
- * - Sealing/unsealing (X25519 + XSalsa20-Poly1305)
27
- * - Hashing (BLAKE3)
28
- */
29
- export class PureJSCrypto extends CryptoProvider {
30
- static async create() {
31
- return new PureJSCrypto();
32
- }
33
- createStreamingHash() {
34
- return blake3.create({});
35
- }
36
- blake3HashOnce(data) {
37
- return blake3(data);
38
- }
39
- blake3HashOnceWithContext(data, { context }) {
40
- return this.createStreamingHash().update(context).update(data).digest();
41
- }
42
- generateNonce(input) {
43
- return this.blake3HashOnce(input).slice(0, 24);
44
- }
45
- generateJsonNonce(material) {
46
- return this.generateNonce(textEncoder.encode(stableStringify(material)));
47
- }
48
- newEd25519SigningKey() {
49
- return ed25519.utils.randomPrivateKey();
50
- }
51
- getSignerID(secret) {
52
- return `signer_z${base58.encode(ed25519.getPublicKey(base58.decode(secret.substring("signerSecret_z".length))))}`;
53
- }
54
- sign(secret, message) {
55
- const signature = ed25519.sign(textEncoder.encode(stableStringify(message)), base58.decode(secret.substring("signerSecret_z".length)));
56
- return `signature_z${base58.encode(signature)}`;
57
- }
58
- verify(signature, message, id) {
59
- return ed25519.verify(base58.decode(signature.substring("signature_z".length)), textEncoder.encode(stableStringify(message)), base58.decode(id.substring("signer_z".length)));
60
- }
61
- newX25519StaticSecret() {
62
- return x25519.utils.randomPrivateKey();
63
- }
64
- getSealerID(secret) {
65
- return `sealer_z${base58.encode(x25519.getPublicKey(base58.decode(secret.substring("sealerSecret_z".length))))}`;
66
- }
67
- encrypt(value, keySecret, nOnceMaterial) {
68
- const keySecretBytes = base58.decode(keySecret.substring("keySecret_z".length));
69
- const nOnce = this.generateJsonNonce(nOnceMaterial);
70
- const plaintext = textEncoder.encode(stableStringify(value));
71
- const ciphertext = xsalsa20(keySecretBytes, nOnce, plaintext);
72
- return `encrypted_U${bytesToBase64url(ciphertext)}`;
73
- }
74
- decryptRaw(encrypted, keySecret, nOnceMaterial) {
75
- const keySecretBytes = base58.decode(keySecret.substring("keySecret_z".length));
76
- const nOnce = this.generateJsonNonce(nOnceMaterial);
77
- const ciphertext = base64URLtoBytes(encrypted.substring("encrypted_U".length));
78
- const plaintext = xsalsa20(keySecretBytes, nOnce, ciphertext);
79
- return textDecoder.decode(plaintext);
80
- }
81
- seal({ message, from, to, nOnceMaterial, }) {
82
- const sharedSecret = getx25519SharedSecret(from, to);
83
- const nOnce = this.generateJsonNonce(nOnceMaterial);
84
- const plaintext = textEncoder.encode(stableStringify(message));
85
- const sealedBytes = xsalsa20poly1305(sharedSecret, nOnce).encrypt(plaintext);
86
- return `sealed_U${bytesToBase64url(sealedBytes)}`;
87
- }
88
- unseal(sealed, sealer, from, nOnceMaterial) {
89
- const nOnce = this.generateJsonNonce(nOnceMaterial);
90
- const sharedSecret = getx25519SharedSecret(sealer, from);
91
- const sealedBytes = base64URLtoBytes(sealed.substring("sealed_U".length));
92
- const plaintext = xsalsa20poly1305(sharedSecret, nOnce).decrypt(sealedBytes);
93
- try {
94
- return JSON.parse(textDecoder.decode(plaintext));
95
- }
96
- catch (e) {
97
- logger.error("Failed to decrypt/parse sealed message", { err: e });
98
- return undefined;
99
- }
100
- }
101
- createSessionLog(coID, sessionID, signerID) {
102
- return new PureJSSessionLog(coID, sessionID, signerID, this);
103
- }
104
- }
105
- export class PureJSSessionLog {
106
- constructor(coID, sessionID, signerID, crypto) {
107
- this.coID = coID;
108
- this.sessionID = sessionID;
109
- this.signerID = signerID;
110
- this.crypto = crypto;
111
- this.transactions = [];
112
- this.streamingHash = crypto.createStreamingHash();
113
- }
114
- clone() {
115
- const newLog = new PureJSSessionLog(this.coID, this.sessionID, this.signerID, this.crypto);
116
- newLog.transactions = this.transactions.slice();
117
- newLog.lastSignature = this.lastSignature;
118
- newLog.streamingHash = this.streamingHash.clone();
119
- return newLog;
120
- }
121
- tryAdd(transactions, newSignature, skipVerify) {
122
- this.internalTryAdd(transactions.map((tx) => stableStringify(tx)), newSignature, skipVerify);
123
- }
124
- internalTryAdd(transactions, newSignature, skipVerify) {
125
- for (const tx of transactions) {
126
- this.streamingHash.update(textEncoder.encode(tx));
127
- }
128
- if (!skipVerify) {
129
- if (!this.signerID) {
130
- throw new Error("Tried to add transactions without signer ID");
131
- }
132
- const newHash = this.streamingHash.clone().digest();
133
- const newHashEncoded = `hash_z${base58.encode(newHash)}`;
134
- if (!this.crypto.verify(newSignature, newHashEncoded, this.signerID)) {
135
- // Rebuild the streaming hash to the original state
136
- this.streamingHash = this.crypto.createStreamingHash();
137
- for (const tx of this.transactions) {
138
- this.streamingHash.update(textEncoder.encode(tx));
139
- }
140
- throw new Error("Signature verification failed");
141
- }
142
- }
143
- for (const tx of transactions) {
144
- this.transactions.push(tx);
145
- }
146
- this.lastSignature = newSignature;
147
- return newSignature;
148
- }
149
- internalAddNewTransaction(transaction, signerAgent) {
150
- this.streamingHash.update(textEncoder.encode(transaction));
151
- const newHash = this.streamingHash.clone().digest();
152
- const newHashEncoded = `hash_z${base58.encode(newHash)}`;
153
- const signature = this.crypto.sign(signerAgent.currentSignerSecret(), newHashEncoded);
154
- this.transactions.push(transaction);
155
- this.lastSignature = signature;
156
- return signature;
157
- }
158
- addNewPrivateTransaction(signerAgent, changes, keyID, keySecret, madeAt, meta) {
159
- const encryptedChanges = this.crypto.encrypt(changes, keySecret, {
160
- in: this.coID,
161
- tx: { sessionID: this.sessionID, txIndex: this.transactions.length },
162
- });
163
- const encryptedMeta = meta
164
- ? this.crypto.encrypt(meta, keySecret, {
165
- in: this.coID,
166
- tx: { sessionID: this.sessionID, txIndex: this.transactions.length },
167
- })
168
- : undefined;
169
- const tx = {
170
- encryptedChanges: encryptedChanges,
171
- madeAt: madeAt,
172
- privacy: "private",
173
- keyUsed: keyID,
174
- meta: encryptedMeta,
175
- };
176
- const signature = this.internalAddNewTransaction(stableStringify(tx), signerAgent);
177
- return {
178
- signature: signature,
179
- transaction: tx,
180
- };
181
- }
182
- addNewTrustingTransaction(signerAgent, changes, madeAt, meta) {
183
- const tx = {
184
- changes: stableStringify(changes),
185
- madeAt: madeAt,
186
- privacy: "trusting",
187
- meta: meta ? stableStringify(meta) : undefined,
188
- };
189
- const signature = this.internalAddNewTransaction(stableStringify(tx), signerAgent);
190
- return {
191
- signature: signature,
192
- transaction: tx,
193
- };
194
- }
195
- decryptNextTransactionChangesJson(txIndex, keySecret) {
196
- const txJson = this.transactions[txIndex];
197
- if (!txJson) {
198
- throw new Error("Transaction not found");
199
- }
200
- const tx = JSON.parse(txJson);
201
- if (tx.privacy === "private") {
202
- const nOnceMaterial = {
203
- in: this.coID,
204
- tx: { sessionID: this.sessionID, txIndex: txIndex },
205
- };
206
- return this.crypto.decryptRaw(tx.encryptedChanges, keySecret, nOnceMaterial);
207
- }
208
- else {
209
- return tx.changes;
210
- }
211
- }
212
- decryptNextTransactionMetaJson(txIndex, keySecret) {
213
- const txJson = this.transactions[txIndex];
214
- if (!txJson) {
215
- throw new Error("Transaction not found");
216
- }
217
- const tx = JSON.parse(txJson);
218
- if (!tx.meta) {
219
- return undefined;
220
- }
221
- if (tx.privacy === "private") {
222
- const nOnceMaterial = {
223
- in: this.coID,
224
- tx: { sessionID: this.sessionID, txIndex: txIndex },
225
- };
226
- return this.crypto.decryptRaw(tx.meta, keySecret, nOnceMaterial);
227
- }
228
- else {
229
- return tx.meta;
230
- }
231
- }
232
- free() {
233
- // no-op
234
- }
235
- }
236
- //# sourceMappingURL=PureJSCrypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PureJSCrypto.js","sourceRoot":"","sources":["../../src/crypto/PureJSCrypto.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=PureJSCrypto.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PureJSCrypto.test.d.ts","sourceRoot":"","sources":["../../src/tests/PureJSCrypto.test.ts"],"names":[],"mappings":""}
@@ -1,145 +0,0 @@
1
- import { assert, beforeEach, describe, expect, it } from "vitest";
2
- import { loadCoValueOrFail, setCurrentTestCryptoProvider, setupTestNode, setupTestAccount, } from "./testUtils";
3
- import { PureJSCrypto } from "../crypto/PureJSCrypto";
4
- import { stableStringify } from "../jsonStringify";
5
- const jsCrypto = await PureJSCrypto.create();
6
- setCurrentTestCryptoProvider(jsCrypto);
7
- let syncServer;
8
- beforeEach(() => {
9
- syncServer = setupTestNode({ isSyncServer: true });
10
- });
11
- // A suite of tests focused on high-level tests that verify:
12
- // - Keys creation and unsealing
13
- // - Signature creation and verification
14
- // - Encryption and decryption of values
15
- describe("PureJSCrypto", () => {
16
- it("successfully creates a private CoValue and reads it in another session", async () => {
17
- const client = setupTestNode({
18
- connected: true,
19
- });
20
- const group = client.node.createGroup();
21
- const map = group.createMap();
22
- map.set("count", 0, "private");
23
- map.set("count", 1, "private");
24
- map.set("count", 2, "private");
25
- const client2 = client.spawnNewSession();
26
- const mapInTheOtherSession = await loadCoValueOrFail(client2.node, map.id);
27
- expect(mapInTheOtherSession.get("count")).toEqual(2);
28
- });
29
- it("successfully updates a private CoValue and reads it in another session", async () => {
30
- const client = setupTestNode({
31
- connected: true,
32
- });
33
- const group = client.node.createGroup();
34
- const map = group.createMap();
35
- map.set("count", 0, "private");
36
- map.set("count", 1, "private");
37
- map.set("count", 2, "private");
38
- const client2 = client.spawnNewSession();
39
- const mapInTheOtherSession = await loadCoValueOrFail(client2.node, map.id);
40
- mapInTheOtherSession.set("count", 3, "private");
41
- await mapInTheOtherSession.core.waitForSync();
42
- expect(mapInTheOtherSession.get("count")).toEqual(3);
43
- });
44
- it("can invite another account to a group and share a private CoValue", async () => {
45
- const client = setupTestNode({
46
- connected: true,
47
- });
48
- const account = await setupTestAccount({
49
- connected: true,
50
- });
51
- const group = client.node.createGroup();
52
- const invite = group.createInvite("admin");
53
- await account.node.acceptInvite(group.id, invite);
54
- const map = group.createMap();
55
- map.set("secret", "private-data", "private");
56
- // The other account should be able to read the private value
57
- const mapInOtherSession = await loadCoValueOrFail(account.node, map.id);
58
- expect(mapInOtherSession.get("secret")).toEqual("private-data");
59
- mapInOtherSession.set("secret", "modified", "private");
60
- await mapInOtherSession.core.waitForSync();
61
- expect(map.get("secret")).toEqual("modified");
62
- });
63
- it("rejects sessions with invalid signatures", async () => {
64
- const client = setupTestNode({
65
- connected: true,
66
- });
67
- const group = client.node.createGroup();
68
- const map = group.createMap();
69
- map.set("count", 0, "trusting");
70
- // Create a new session with the same agent
71
- const client2 = client.spawnNewSession();
72
- // This should work normally
73
- const mapInOtherSession = await loadCoValueOrFail(client2.node, map.id);
74
- expect(mapInOtherSession.get("count")).toEqual(0);
75
- mapInOtherSession.core.tryAddTransactions(client2.node.currentSessionID, [
76
- {
77
- privacy: "trusting",
78
- changes: stableStringify([{ op: "set", key: "count", value: 1 }]),
79
- madeAt: Date.now(),
80
- },
81
- ], "signature_z12345678", true);
82
- const content = mapInOtherSession.core.newContentSince(undefined)?.[0];
83
- assert(content);
84
- client.node.syncManager.handleNewContent(content, "storage");
85
- expect(map.get("count")).toEqual(0);
86
- });
87
- it("can add a meta to a private transaction", async () => {
88
- const client = setupTestNode({
89
- connected: true,
90
- });
91
- const group = client.node.createGroup();
92
- const map = group.createMap();
93
- map.core.makeTransaction([], "private", {
94
- meta: {
95
- count: 1,
96
- },
97
- });
98
- await map.core.waitForSync();
99
- const session2 = client.spawnNewSession();
100
- const mapInOtherSession = await loadCoValueOrFail(session2.node, map.id);
101
- const decryptedMeta = mapInOtherSession.core.verified.decryptTransactionMeta(client.node.currentSessionID, 0, map.core.getCurrentReadKey().secret);
102
- expect(decryptedMeta).toEqual({
103
- meta: {
104
- count: 1,
105
- },
106
- });
107
- });
108
- it("can add a meta to a trusting transaction", async () => {
109
- const client = setupTestNode({
110
- connected: true,
111
- });
112
- const group = client.node.createGroup();
113
- const map = group.createMap();
114
- map.core.makeTransaction([], "trusting", {
115
- meta: {
116
- count: 1,
117
- },
118
- });
119
- await map.core.waitForSync();
120
- const session2 = client.spawnNewSession();
121
- const mapInOtherSession = await loadCoValueOrFail(session2.node, map.id);
122
- const transferredMeta = JSON.parse(mapInOtherSession.core.verified.sessions.get(client.node.currentSessionID)
123
- ?.transactions[0]?.meta);
124
- expect(transferredMeta).toEqual({
125
- meta: {
126
- count: 1,
127
- },
128
- });
129
- });
130
- });
131
- describe("PureJSSessionLog", () => {
132
- it("fails to verify signatures without a signer ID", async () => {
133
- const agentSecret = jsCrypto.newRandomAgentSecret();
134
- const sessionID = jsCrypto.newRandomSessionID(jsCrypto.getAgentID(agentSecret));
135
- const sessionLog = jsCrypto.createSessionLog("co_z12345678", sessionID);
136
- expect(() => sessionLog.tryAdd([
137
- {
138
- privacy: "trusting",
139
- changes: stableStringify([{ op: "set", key: "count", value: 1 }]),
140
- madeAt: Date.now(),
141
- },
142
- ], "signature_z12345678", false)).toThrow("Tried to add transactions without signer ID");
143
- });
144
- });
145
- //# sourceMappingURL=PureJSCrypto.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PureJSCrypto.test.js","sourceRoot":"","sources":["../../src/tests/PureJSCrypto.test.ts"],"names":[],"mappings":"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"}