@docstack/client 0.0.3 → 0.0.5

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 (53) hide show
  1. package/lib/core/attribute.js +406 -0
  2. package/lib/core/attribute.js.map +1 -0
  3. package/lib/core/class.d.ts +13 -14
  4. package/lib/core/class.js +761 -0
  5. package/lib/core/class.js.map +1 -0
  6. package/lib/core/crypto-engine/index.js +229 -0
  7. package/lib/core/crypto-engine/index.js.map +1 -0
  8. package/lib/core/crypto-engine/utils.js +88 -0
  9. package/lib/core/crypto-engine/utils.js.map +1 -0
  10. package/lib/core/datamodel/index.js +1308 -0
  11. package/lib/core/datamodel/index.js.map +1 -0
  12. package/lib/core/domain.js +423 -0
  13. package/lib/core/domain.js.map +1 -0
  14. package/lib/core/index.js +520 -0
  15. package/lib/core/index.js.map +1 -0
  16. package/lib/core/job-engine/index.js +220 -0
  17. package/lib/core/job-engine/index.js.map +1 -0
  18. package/lib/core/policy-engine/index.js +232 -0
  19. package/lib/core/policy-engine/index.js.map +1 -0
  20. package/lib/core/query-engine/accumulators.js +258 -0
  21. package/lib/core/query-engine/accumulators.js.map +1 -0
  22. package/lib/core/query-engine/evaluator.js +179 -0
  23. package/lib/core/query-engine/evaluator.js.map +1 -0
  24. package/lib/core/query-engine/executor.js +405 -0
  25. package/lib/core/query-engine/executor.js.map +1 -0
  26. package/lib/core/query-engine/index.js +4 -0
  27. package/lib/core/query-engine/index.js.map +1 -0
  28. package/lib/core/query-engine/parser.js +515 -0
  29. package/lib/core/query-engine/parser.js.map +1 -0
  30. package/lib/core/query-engine/planner.js +330 -0
  31. package/lib/core/query-engine/planner.js.map +1 -0
  32. package/lib/core/stack.js +1817 -0
  33. package/lib/core/stack.js.map +1 -0
  34. package/lib/core/test-utils/docstack.js +222 -0
  35. package/lib/core/test-utils/docstack.js.map +1 -0
  36. package/lib/core/trigger/index.js +81 -0
  37. package/lib/core/trigger/index.js.map +1 -0
  38. package/lib/index.js +10 -4
  39. package/lib/index.js.map +1 -1
  40. package/lib/index.umd.js +10 -4
  41. package/lib/plugins/pouchdb.js +368 -0
  42. package/lib/plugins/pouchdb.js.map +1 -0
  43. package/lib/utils/crypto/index.js +34 -0
  44. package/lib/utils/crypto/index.js.map +1 -0
  45. package/lib/utils/index.js +58 -0
  46. package/lib/utils/index.js.map +1 -0
  47. package/lib/utils/logger/index.js +20 -0
  48. package/lib/utils/logger/index.js.map +1 -0
  49. package/lib/utils/logger/transport.js +28 -0
  50. package/lib/utils/logger/transport.js.map +1 -0
  51. package/lib/workers/dataModel.js +48 -0
  52. package/lib/workers/dataModel.js.map +1 -0
  53. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/core/class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ import createLogger from "../../utils/logger/index";
2
+ import { wrapDocumentKey, generateRandomString } from "./utils";
3
+ import { decryptWithAesGcm, encryptWithAesGcm, importAesKeyFromHex, isEncryptedPayload, unwrapDocumentKey, } from "./utils";
4
+ /**
5
+ * Engine for handling document-level encryption and decryption.
6
+ *
7
+ * CryptoEngine manages AES-GCM encryption for sensitive document fields.
8
+ * It uses a document key (derived from user credentials) to encrypt/decrypt
9
+ * fields marked with `encrypted: true` in their attribute configuration.
10
+ *
11
+ * The engine can be disabled via stack options for scenarios where
12
+ * encryption is not required.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Encryption is handled automatically during document operations
17
+ * // when attributes are configured with `encrypted: true`
18
+ * await Attribute.create(userClass, 'ssn', 'string', 'Social Security Number', {
19
+ * encrypted: true
20
+ * });
21
+ *
22
+ * // After authentication, the document key is available
23
+ * await stack.authenticate({ username: 'user', password: 'pass' });
24
+ * // Now encrypted fields will be automatically encrypted/decrypted
25
+ * ```
26
+ */
27
+ export class CryptoEngine {
28
+ /**
29
+ * Creates a new CryptoEngine instance.
30
+ * @param stack - The parent ClientStack instance
31
+ */
32
+ constructor(stack) {
33
+ this.logger = createLogger().child({ module: "crypto-engine" });
34
+ this.stack = stack;
35
+ this.enabled = !stack.isCryptoEngineDisabled();
36
+ }
37
+ /**
38
+ * Sets the document encryption key.
39
+ * Called automatically during authentication to provide the key
40
+ * derived from user credentials.
41
+ *
42
+ * @param documentKey - The hex-encoded document key, or null to clear
43
+ */
44
+ async setDocumentKey(documentKey) {
45
+ if (!this.enabled)
46
+ return;
47
+ this.documentKey = documentKey || undefined;
48
+ this.cryptoKey = undefined;
49
+ }
50
+ /**
51
+ * Returns the current document key.
52
+ * @returns The hex-encoded document key, or undefined if not set
53
+ */
54
+ getDocumentKey() {
55
+ return this.enabled ? this.documentKey : undefined;
56
+ }
57
+ /**
58
+ * Generates a cryptographically secure random string.
59
+ * Useful for generating salts or nonces.
60
+ *
61
+ * @param length - The length of the string to generate (default: 16)
62
+ * @returns A random hex string
63
+ */
64
+ generateRandomString(length = 16) {
65
+ return generateRandomString(length);
66
+ }
67
+ async encryptValueForMarker(value) {
68
+ if (!this.enabled)
69
+ return null;
70
+ const key = await this.getCryptoKey();
71
+ if (!key)
72
+ return null;
73
+ return await this.encryptValue(value, key);
74
+ }
75
+ /**
76
+ * Checks if the crypto engine is enabled.
77
+ * @returns `true` if encryption is enabled
78
+ */
79
+ isEnabled() {
80
+ return this.enabled;
81
+ }
82
+ /**
83
+ * Wraps a document key using the user's derived key.
84
+ * Used during user registration to store the encrypted document key.
85
+ *
86
+ * @param documentKey - The document key to wrap
87
+ * @param derivedKeyHex - The user's derived key (from password)
88
+ * @returns The wrapped (encrypted) document key
89
+ */
90
+ async wrapDocumentKey(documentKey, derivedKeyHex) {
91
+ return wrapDocumentKey(documentKey, derivedKeyHex);
92
+ }
93
+ /**
94
+ * Unwraps and stores the document key using the user's derived key.
95
+ * Called during authentication to recover the document key.
96
+ *
97
+ * @param wrappedDocumentKey - The wrapped document key from the user record
98
+ * @param derivedKey - The user's derived key (from password)
99
+ * @returns The unwrapped document key
100
+ * @throws Error if the crypto engine is disabled or keys are missing
101
+ */
102
+ async unwrapAndStoreDocumentKey(wrappedDocumentKey, derivedKey) {
103
+ if (!this.enabled)
104
+ throw new Error("Crypto engine is disabled");
105
+ if (!wrappedDocumentKey)
106
+ throw new Error("Missing wrapped document key");
107
+ if (!derivedKey)
108
+ throw new Error("Missing derived key");
109
+ const key = await unwrapDocumentKey(wrappedDocumentKey, await this.getCryptoKey(), derivedKey);
110
+ await this.setDocumentKey(key);
111
+ return key;
112
+ }
113
+ async getCryptoKey() {
114
+ if (!this.enabled)
115
+ return null;
116
+ if (!this.documentKey)
117
+ return null;
118
+ if (this.cryptoKey)
119
+ return this.cryptoKey;
120
+ this.cryptoKey = await importAesKeyFromHex(this.documentKey, ["encrypt", "decrypt"]);
121
+ return this.cryptoKey;
122
+ }
123
+ async encryptValue(value, key) {
124
+ if (!this.enabled)
125
+ return value;
126
+ if (!key)
127
+ return value;
128
+ if (value === undefined || value === null)
129
+ return value;
130
+ if (isEncryptedPayload(value))
131
+ return value;
132
+ const serialized = JSON.stringify(value);
133
+ return encryptWithAesGcm(serialized, key);
134
+ }
135
+ async decryptValue(value, key) {
136
+ if (!this.enabled)
137
+ return value;
138
+ if (!key)
139
+ return value;
140
+ if (!isEncryptedPayload(value))
141
+ return value;
142
+ try {
143
+ const decrypted = await decryptWithAesGcm(value, key);
144
+ return JSON.parse(decrypted);
145
+ }
146
+ catch (error) {
147
+ this.logger.error("Failed to decrypt value", { error: (error === null || error === void 0 ? void 0 : error.message) || error });
148
+ return value;
149
+ }
150
+ }
151
+ /**
152
+ * Identifies which document keys contain encrypted data.
153
+ * Combines schema-defined encrypted attributes with runtime detection.
154
+ *
155
+ * @param document - The document to analyze
156
+ * @param classObj - Optional class for schema-based detection
157
+ * @returns Array of field names that are/should be encrypted
158
+ */
159
+ identifyEncryptedKeys(document, classObj) {
160
+ var _a;
161
+ if (!this.enabled)
162
+ return [];
163
+ const encryptedFromSchema = (_a = classObj === null || classObj === void 0 ? void 0 : classObj.getEncryptedAttributes().map((attribute) => attribute.getName())) !== null && _a !== void 0 ? _a : [];
164
+ const encryptedFromPayload = Object.keys(document).filter((key) => isEncryptedPayload(document[key]));
165
+ if (!encryptedFromSchema.length) {
166
+ return encryptedFromPayload;
167
+ }
168
+ const merged = new Set(encryptedFromSchema);
169
+ for (const key of encryptedFromPayload) {
170
+ merged.add(key);
171
+ }
172
+ return Array.from(merged);
173
+ }
174
+ /**
175
+ * Encrypts sensitive fields in a document before storage.
176
+ * Only encrypts fields marked with `encrypted: true` in the schema.
177
+ * Modifies the document in place.
178
+ *
179
+ * @param document - The document to encrypt
180
+ * @param classObj - The class defining which fields to encrypt
181
+ */
182
+ async encryptDocument(document, classObj) {
183
+ var _a, _b, _c;
184
+ if (!this.enabled)
185
+ return;
186
+ const encryptableAttributes = classObj.getEncryptedAttributes();
187
+ if (!encryptableAttributes.length)
188
+ return;
189
+ const key = await this.getCryptoKey();
190
+ if (!key) {
191
+ this.logger.warn("Document key is not available; skipping encryption", { className: (_b = (_a = classObj.getName) === null || _a === void 0 ? void 0 : _a.call(classObj)) !== null && _b !== void 0 ? _b : (_c = classObj.model) === null || _c === void 0 ? void 0 : _c.name });
192
+ return;
193
+ }
194
+ for (const attribute of encryptableAttributes) {
195
+ const name = attribute.getName();
196
+ if (!(name in document))
197
+ continue;
198
+ const encrypted = await this.encryptValue(document[name], key);
199
+ document[name] = encrypted;
200
+ }
201
+ }
202
+ /**
203
+ * Decrypts encrypted fields in a document after retrieval.
204
+ * Modifies the document in place.
205
+ *
206
+ * @param document - The document to decrypt
207
+ * @param classObj - Optional class for schema-based detection
208
+ * @param encryptedKeys - Optional pre-computed list of encrypted field names
209
+ */
210
+ async decryptDocument(document, classObj, encryptedKeys) {
211
+ var _a, _b, _c;
212
+ if (!this.enabled)
213
+ return;
214
+ const encryptedAttributes = encryptedKeys !== null && encryptedKeys !== void 0 ? encryptedKeys : this.identifyEncryptedKeys(document, classObj);
215
+ if (!encryptedAttributes.length)
216
+ return;
217
+ const key = await this.getCryptoKey();
218
+ if (!key) {
219
+ this.logger.warn("Document key is not available; returning encrypted payload", { className: (_b = (_a = classObj === null || classObj === void 0 ? void 0 : classObj.getName) === null || _a === void 0 ? void 0 : _a.call(classObj)) !== null && _b !== void 0 ? _b : (_c = classObj === null || classObj === void 0 ? void 0 : classObj.model) === null || _c === void 0 ? void 0 : _c.name });
220
+ return;
221
+ }
222
+ for (const name of encryptedAttributes) {
223
+ const decrypted = await this.decryptValue(document[name], key);
224
+ document[name] = decrypted;
225
+ }
226
+ }
227
+ }
228
+ export { wrapDocumentKey, unwrapDocumentKey } from "./utils";
229
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/crypto-engine/index.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAEH,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GACpB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,YAAY;IAWrB;;;OAGG;IACH,YAAY,KAAkB;QAVb,WAAM,GAAG,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QAWxE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;IACnD,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,cAAc,CAAC,WAA2B;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,SAAS,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACI,cAAc;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;IAED;;;;;;OAMG;IACI,oBAAoB,CAAC,SAAiB,EAAE;QAC3C,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,KAAc;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAqB,CAAC;IACnE,CAAC;IAED;;;OAGG;IACI,SAAS;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,eAAe,CAAC,WAAmB,EAAE,aAAqB;QACnE,OAAO,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,yBAAyB,CAAC,kBAAkC,EAAE,UAA0B;QACjG,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAChE,IAAI,CAAC,kBAAkB;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAExD,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/F,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,YAAY;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC;QAE1C,IAAI,CAAC,SAAS,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAc,EAAE,GAAqB;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACxD,IAAI,kBAAkB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAc,EAAE,GAAqB;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,KAAI,KAAK,EAAE,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACI,qBAAqB,CAAC,QAAkB,EAAE,QAAgB;;QAC7D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,mBAAmB,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,sBAAsB,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,mCAAI,EAAE,CAAC;QAC7G,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAE,QAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE/G,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,oBAAoB,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,mBAAmB,CAAC,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,eAAe,CAAC,QAAkB,EAAE,QAAe;;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,qBAAqB,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QAChE,IAAI,CAAC,qBAAqB,CAAC,MAAM;YAAE,OAAO;QAE1C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE,EAAE,SAAS,EAAE,MAAA,MAAA,QAAQ,CAAC,OAAO,wDAAI,mCAAI,MAAA,QAAQ,CAAC,KAAK,0CAAE,IAAI,EAAE,CAAC,CAAC;YACpI,OAAO;QACX,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,qBAAqB,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;gBAAE,SAAS;YAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAE,QAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YACvE,QAAgB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;QACxC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,eAAe,CAAC,QAAkB,EAAE,QAAgB,EAAE,aAAwB;;QACvF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,mBAAmB,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5F,IAAI,CAAC,mBAAmB,CAAC,MAAM;YAAE,OAAO;QAExC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE,EAAE,SAAS,EAAE,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,wDAAI,mCAAI,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,0CAAE,IAAI,EAAE,CAAC,CAAC;YAC9I,OAAO;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAE,QAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YACvE,QAAgB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;QACxC,CAAC;IACL,CAAC;CACJ;AAGD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,88 @@
1
+ const encoder = new TextEncoder();
2
+ const decoder = new TextDecoder();
3
+ const getCrypto = () => globalThis.crypto;
4
+ export const hexToBytes = (hex) => {
5
+ if (hex.length % 2 !== 0) {
6
+ throw new Error("Hex value must have an even length");
7
+ }
8
+ const bytes = new Uint8Array(hex.length / 2);
9
+ for (let i = 0; i < hex.length; i += 2) {
10
+ bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);
11
+ }
12
+ return bytes;
13
+ };
14
+ const toUint8Array = (data) => data instanceof ArrayBuffer ? new Uint8Array(data) : data;
15
+ export const toBase64 = (data) => {
16
+ const bytes = toUint8Array(data);
17
+ let binary = "";
18
+ bytes.forEach((byte) => {
19
+ binary += String.fromCharCode(byte);
20
+ });
21
+ return btoa(binary);
22
+ };
23
+ export const fromBase64 = (value) => {
24
+ const binary = atob(value);
25
+ const bytes = new Uint8Array(binary.length);
26
+ for (let i = 0; i < binary.length; i++) {
27
+ bytes[i] = binary.charCodeAt(i);
28
+ }
29
+ return bytes;
30
+ };
31
+ export const importAesKeyFromHex = async (hexKey, usages = ["encrypt", "decrypt"]) => {
32
+ const cryptoObj = getCrypto();
33
+ return cryptoObj.subtle.importKey("raw", hexToBytes(hexKey), { name: "AES-GCM" }, false, usages);
34
+ };
35
+ export const isEncryptedPayload = (value) => {
36
+ if (!value || typeof value !== "object")
37
+ return false;
38
+ const candidate = value;
39
+ return candidate.__enc === true && typeof candidate.iv === "string" && typeof candidate.data === "string";
40
+ };
41
+ export const encryptWithAesGcm = async (plaintext, key) => {
42
+ const cryptoObj = getCrypto();
43
+ const iv = new Uint8Array(12);
44
+ cryptoObj.getRandomValues(iv);
45
+ const ivBuffer = iv.buffer.slice(iv.byteOffset, iv.byteOffset + iv.byteLength);
46
+ const ciphertext = await cryptoObj.subtle.encrypt({ name: "AES-GCM", iv: ivBuffer }, key, encoder.encode(plaintext));
47
+ return {
48
+ __enc: true,
49
+ iv: toBase64(iv),
50
+ data: toBase64(ciphertext),
51
+ alg: "AES-GCM",
52
+ };
53
+ };
54
+ export const decryptWithAesGcm = async (payload, key) => {
55
+ const cryptoObj = getCrypto();
56
+ const ivBytes = fromBase64(payload.iv);
57
+ const dataBytes = fromBase64(payload.data);
58
+ const ivBuffer = ivBytes.buffer.slice(ivBytes.byteOffset, ivBytes.byteOffset + ivBytes.byteLength);
59
+ const dataBuffer = dataBytes.buffer.slice(dataBytes.byteOffset, dataBytes.byteOffset + dataBytes.byteLength);
60
+ const decrypted = await cryptoObj.subtle.decrypt({ name: "AES-GCM", iv: ivBuffer }, key, dataBuffer);
61
+ return decoder.decode(decrypted);
62
+ };
63
+ export const wrapDocumentKey = async (documentKey, derivedKeyHex) => {
64
+ const key = await importAesKeyFromHex(derivedKeyHex);
65
+ const payload = await encryptWithAesGcm(documentKey, key);
66
+ return JSON.stringify(payload);
67
+ };
68
+ export const unwrapDocumentKey = async (wrappedDocumentKey, cryptoKey, derivedKeyHex) => {
69
+ const parsed = JSON.parse(wrappedDocumentKey);
70
+ if (!isEncryptedPayload(parsed)) {
71
+ throw new Error("Wrapped document key payload is malformed: " + wrappedDocumentKey);
72
+ }
73
+ const key = await importAesKeyFromHex(derivedKeyHex, ["decrypt"]);
74
+ const firstLayer = await decryptWithAesGcm(parsed, key);
75
+ return firstLayer;
76
+ // return await decryptWithAesGcm((JSON.parse(firstLayer) as EncryptedPayload), key);
77
+ };
78
+ /**
79
+ * Generate random string of given length in bytes, returned as hex string
80
+ *
81
+ **/
82
+ export const generateRandomString = (length = 16) => {
83
+ const cryptoObj = getCrypto();
84
+ const array = new Uint8Array(length);
85
+ cryptoObj.getRandomValues(array);
86
+ return Array.from(array).map(b => ('00' + b.toString(16)).slice(-2)).join('');
87
+ };
88
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/crypto-engine/utils.ts"],"names":[],"mappings":"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"}