internxt-crypto 0.0.10-alpha → 0.0.11

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 (148) hide show
  1. package/README.md +3 -4
  2. package/dist/asymmetric-crypto-BORmLhnx.js +143 -0
  3. package/dist/asymmetric-crypto-BORmLhnx.js.map +1 -0
  4. package/dist/asymmetric-crypto-CyXsV4XT.mjs +102 -0
  5. package/dist/asymmetric-crypto-CyXsV4XT.mjs.map +1 -0
  6. package/dist/asymmetric-crypto.d.mts +9 -3
  7. package/dist/asymmetric-crypto.d.ts +9 -3
  8. package/dist/asymmetric-crypto.js +8 -92
  9. package/dist/asymmetric-crypto.mjs +2 -84
  10. package/dist/chunk-DWirmd9C.mjs +18 -0
  11. package/dist/chunk-Dt-PWiN7.js +60 -0
  12. package/dist/constants-Ccp21E03.js +208 -0
  13. package/dist/constants-Ccp21E03.js.map +1 -0
  14. package/dist/constants-kTeX-2T0.mjs +34 -0
  15. package/dist/constants-kTeX-2T0.mjs.map +1 -0
  16. package/dist/constants.d.mts +5 -11
  17. package/dist/constants.d.ts +5 -11
  18. package/dist/constants.js +30 -79
  19. package/dist/constants.mjs +2 -41
  20. package/dist/derive-key-Be7hS-cN.mjs +751 -0
  21. package/dist/derive-key-Be7hS-cN.mjs.map +1 -0
  22. package/dist/derive-key-CBf2WxJd.js +2513 -0
  23. package/dist/derive-key-CBf2WxJd.js.map +1 -0
  24. package/dist/derive-key.d.mts +14 -8
  25. package/dist/derive-key.d.ts +14 -8
  26. package/dist/derive-key.js +15 -795
  27. package/dist/derive-key.mjs +5 -783
  28. package/dist/email-crypto-BrT98taw.js +617 -0
  29. package/dist/email-crypto-BrT98taw.js.map +1 -0
  30. package/dist/email-crypto-DJUEjTxA.mjs +534 -0
  31. package/dist/email-crypto-DJUEjTxA.mjs.map +1 -0
  32. package/dist/email-crypto.d.mts +58 -78
  33. package/dist/email-crypto.d.ts +58 -78
  34. package/dist/email-crypto.js +17 -1409
  35. package/dist/email-crypto.mjs +8 -1381
  36. package/dist/email-search.d.mts +39 -32
  37. package/dist/email-search.d.ts +39 -32
  38. package/dist/email-search.js +572 -540
  39. package/dist/email-search.js.map +1 -1
  40. package/dist/email-search.mjs +567 -539
  41. package/dist/email-search.mjs.map +1 -1
  42. package/dist/hash-BoqwNkcd.js +190 -0
  43. package/dist/hash-BoqwNkcd.js.map +1 -0
  44. package/dist/hash-CXeGAwai.mjs +131 -0
  45. package/dist/hash-CXeGAwai.mjs.map +1 -0
  46. package/dist/hash.d.mts +21 -15
  47. package/dist/hash.d.ts +21 -15
  48. package/dist/hash.js +11 -95
  49. package/dist/hash.mjs +2 -84
  50. package/dist/index-CQqgKsbX.d.ts +50 -0
  51. package/dist/index-CintVUbp.d.ts +97 -0
  52. package/dist/index-D5pBU_A5.d.mts +50 -0
  53. package/dist/index-MaOov-ag.d.mts +97 -0
  54. package/dist/index.d.mts +35 -18
  55. package/dist/index.d.ts +35 -18
  56. package/dist/index.js +103 -2685
  57. package/dist/index.mjs +15 -2538
  58. package/dist/keystore-crypto-B4yCVo9l.js +182 -0
  59. package/dist/keystore-crypto-B4yCVo9l.js.map +1 -0
  60. package/dist/keystore-crypto-Bjgriq9h.mjs +159 -0
  61. package/dist/keystore-crypto-Bjgriq9h.mjs.map +1 -0
  62. package/dist/keystore-crypto.d.mts +20 -46
  63. package/dist/keystore-crypto.d.ts +20 -46
  64. package/dist/keystore-crypto.js +11 -530
  65. package/dist/keystore-crypto.mjs +9 -501
  66. package/dist/keystore-service.d.mts +44 -78
  67. package/dist/keystore-service.d.ts +44 -78
  68. package/dist/keystore-service.js +113 -340
  69. package/dist/keystore-service.js.map +1 -1
  70. package/dist/keystore-service.mjs +107 -335
  71. package/dist/keystore-service.mjs.map +1 -1
  72. package/dist/post-quantum-crypto-CAi-cEkV.js +189 -0
  73. package/dist/post-quantum-crypto-CAi-cEkV.js.map +1 -0
  74. package/dist/post-quantum-crypto-Vv34t6gX.mjs +154 -0
  75. package/dist/post-quantum-crypto-Vv34t6gX.mjs.map +1 -0
  76. package/dist/post-quantum-crypto.d.mts +2 -72
  77. package/dist/post-quantum-crypto.d.ts +2 -72
  78. package/dist/post-quantum-crypto.js +13 -92
  79. package/dist/post-quantum-crypto.mjs +2 -89
  80. package/dist/storage-service-BgIK2aYZ.js +82 -0
  81. package/dist/storage-service-BgIK2aYZ.js.map +1 -0
  82. package/dist/storage-service-CubCbhY2.mjs +65 -0
  83. package/dist/storage-service-CubCbhY2.mjs.map +1 -0
  84. package/dist/storage-service.d.mts +2 -53
  85. package/dist/storage-service.d.ts +2 -53
  86. package/dist/storage-service.js +12 -68
  87. package/dist/storage-service.mjs +2 -66
  88. package/dist/symmetric-crypto-CrdS1Che.mjs +197 -0
  89. package/dist/symmetric-crypto-CrdS1Che.mjs.map +1 -0
  90. package/dist/symmetric-crypto-D65zB396.js +244 -0
  91. package/dist/symmetric-crypto-D65zB396.js.map +1 -0
  92. package/dist/symmetric-crypto.d.mts +12 -8
  93. package/dist/symmetric-crypto.d.ts +12 -8
  94. package/dist/symmetric-crypto.js +10 -142
  95. package/dist/symmetric-crypto.mjs +3 -133
  96. package/dist/types-52g887Zi.js +16 -0
  97. package/dist/types-52g887Zi.js.map +1 -0
  98. package/dist/types-BiEoleqw.mjs +10 -0
  99. package/dist/types-BiEoleqw.mjs.map +1 -0
  100. package/dist/types-Ds3ivE9W.d.ts +104 -0
  101. package/dist/types-DwQJtrTx.d.mts +104 -0
  102. package/dist/types.d.mts +2 -102
  103. package/dist/types.d.ts +2 -102
  104. package/dist/types.js +2 -13
  105. package/dist/types.mjs +2 -11
  106. package/dist/utils-CNs3cyDj.js +263 -0
  107. package/dist/utils-CNs3cyDj.js.map +1 -0
  108. package/dist/utils-DS04iUcX.mjs +173 -0
  109. package/dist/utils-DS04iUcX.mjs.map +1 -0
  110. package/dist/utils.d.mts +37 -78
  111. package/dist/utils.d.ts +37 -78
  112. package/dist/utils.js +16 -313
  113. package/dist/utils.mjs +2 -272
  114. package/package.json +15 -90
  115. package/dist/asymmetric-crypto.js.map +0 -1
  116. package/dist/asymmetric-crypto.mjs.map +0 -1
  117. package/dist/constants.js.map +0 -1
  118. package/dist/constants.mjs.map +0 -1
  119. package/dist/derive-key.js.map +0 -1
  120. package/dist/derive-key.mjs.map +0 -1
  121. package/dist/email-crypto.js.map +0 -1
  122. package/dist/email-crypto.mjs.map +0 -1
  123. package/dist/email-service.d.mts +0 -38
  124. package/dist/email-service.d.ts +0 -38
  125. package/dist/email-service.js +0 -154
  126. package/dist/email-service.js.map +0 -1
  127. package/dist/email-service.mjs +0 -147
  128. package/dist/email-service.mjs.map +0 -1
  129. package/dist/hash.js.map +0 -1
  130. package/dist/hash.mjs.map +0 -1
  131. package/dist/index.js.map +0 -1
  132. package/dist/index.mjs.map +0 -1
  133. package/dist/keystore-crypto.js.map +0 -1
  134. package/dist/keystore-crypto.mjs.map +0 -1
  135. package/dist/kyber768-B87rMQ7u.d.mts +0 -30
  136. package/dist/kyber768-B87rMQ7u.d.ts +0 -30
  137. package/dist/post-quantum-crypto.js.map +0 -1
  138. package/dist/post-quantum-crypto.mjs.map +0 -1
  139. package/dist/storage-service.js.map +0 -1
  140. package/dist/storage-service.mjs.map +0 -1
  141. package/dist/symmetric-crypto.js.map +0 -1
  142. package/dist/symmetric-crypto.mjs.map +0 -1
  143. package/dist/types.js.map +0 -1
  144. package/dist/types.mjs.map +0 -1
  145. package/dist/utils-BDaK_d6T.d.ts +0 -114
  146. package/dist/utils-v34IRTIx.d.mts +0 -114
  147. package/dist/utils.js.map +0 -1
  148. package/dist/utils.mjs.map +0 -1
package/dist/utils.mjs CHANGED
@@ -1,273 +1,3 @@
1
- import { bytesToHex, hexToBytes } from '@noble/hashes/utils.js';
2
- import * as bip39 from '@scure/bip39';
3
- import { wordlist } from '@scure/bip39/wordlists/english';
1
+ import { a as bytesToMnemonic, c as base64ToPublicKey, d as base64ToUint8Array, f as hexToUint8Array, h as uint8ToUTF8, i as uuidToBytes, l as publicKeyToBase64, m as uint8ArrayToHex, n as bytesToUuid, o as genMnemonic, p as uint8ArrayToBase64, r as generateUuid, s as mnemonicToBytes, u as UTF8ToUint8 } from "./utils-DS04iUcX.mjs";
4
2
 
5
- // src/utils/converters.ts
6
- function uint8ArrayToHex(array) {
7
- return bytesToHex(array);
8
- }
9
- function UTF8ToUint8(str) {
10
- return new TextEncoder().encode(str);
11
- }
12
- function uint8ToUTF8(array) {
13
- return new TextDecoder().decode(array);
14
- }
15
- function hexToUint8Array(hex) {
16
- return hexToBytes(hex);
17
- }
18
- function uint8ArrayToBase64(buffer) {
19
- const array = Uint16Array.from(buffer);
20
- const binaryString = new TextDecoder("UTF-16").decode(array);
21
- return btoa(binaryString);
22
- }
23
- function base64ToUint8Array(str) {
24
- const binaryString = atob(str);
25
- const len = binaryString.length;
26
- const array = new Uint8Array(len);
27
- for (let i = 0; i < len; i++) {
28
- array[i] = binaryString.charCodeAt(i);
29
- }
30
- return new Uint8Array(array.buffer);
31
- }
32
-
33
- // src/constants.ts
34
- var ECC_ALGORITHM = "X25519";
35
-
36
- // src/asymmetric-crypto/keys.ts
37
- async function exportPublicKey(key) {
38
- try {
39
- const result = await crypto.subtle.exportKey("spki", key);
40
- return new Uint8Array(result);
41
- } catch (error) {
42
- throw new Error("Failed to export public key", { cause: error });
43
- }
44
- }
45
- async function importPublicKey(spkiKeyData) {
46
- try {
47
- return await crypto.subtle.importKey(
48
- "spki",
49
- spkiKeyData,
50
- {
51
- name: ECC_ALGORITHM
52
- },
53
- true,
54
- []
55
- );
56
- } catch (error) {
57
- throw new Error("Failed to import public key", { cause: error });
58
- }
59
- }
60
- async function exportPrivateKey(key) {
61
- try {
62
- const result = await crypto.subtle.exportKey("pkcs8", key);
63
- return new Uint8Array(result);
64
- } catch (error) {
65
- throw new Error("Failed to export private key", { cause: error });
66
- }
67
- }
68
- async function importPrivateKey(pkcs8KeyData) {
69
- try {
70
- return await crypto.subtle.importKey(
71
- "pkcs8",
72
- pkcs8KeyData,
73
- {
74
- name: ECC_ALGORITHM
75
- },
76
- true,
77
- ["deriveBits"]
78
- );
79
- } catch (error) {
80
- throw new Error("Failed to import private key", { cause: error });
81
- }
82
- }
83
-
84
- // src/utils/aesConverters.ts
85
- function ciphertextToBase64(encryptedMessage) {
86
- try {
87
- const ivBase64 = uint8ArrayToBase64(encryptedMessage.iv);
88
- const ciphertextBase64 = uint8ArrayToBase64(encryptedMessage.ciphertext);
89
- const json = JSON.stringify({ ciphertext: ciphertextBase64, iv: ivBase64 });
90
- const base64 = btoa(json);
91
- return base64;
92
- } catch (error) {
93
- throw new Error("Failed to convert ciphertext to base64", { cause: error });
94
- }
95
- }
96
- function base64ToCiphertext(base64) {
97
- try {
98
- const json = atob(base64);
99
- const obj = JSON.parse(json);
100
- const iv = base64ToUint8Array(obj.iv);
101
- const ciphertext = base64ToUint8Array(obj.ciphertext);
102
- const result = {
103
- ciphertext,
104
- iv
105
- };
106
- return result;
107
- } catch (error) {
108
- throw new Error("Failed to convert base64 to ciphertext", { cause: error });
109
- }
110
- }
111
-
112
- // src/utils/keyConverters.ts
113
- async function identityKeysToBase64(keys) {
114
- try {
115
- const pkArray = await exportPublicKey(keys.userPublicKey);
116
- const skArray = await exportPrivateKey(keys.userPrivateKey);
117
- const json = JSON.stringify({
118
- userPublicKey: uint8ArrayToBase64(pkArray),
119
- userPrivateKey: uint8ArrayToBase64(skArray)
120
- });
121
- const base64 = btoa(json);
122
- return base64;
123
- } catch (error) {
124
- throw new Error("Failed to convert identity keys to base64", { cause: error });
125
- }
126
- }
127
- async function encryptionKeysToBase64(keys) {
128
- try {
129
- const pkArray = await exportPublicKey(keys.userPublicKey);
130
- const skArray = await exportPrivateKey(keys.userPrivateKey);
131
- const json = JSON.stringify({
132
- userPublicKey: uint8ArrayToBase64(pkArray),
133
- userPrivateKey: uint8ArrayToBase64(skArray),
134
- userPublicKyberKey: uint8ArrayToBase64(keys.userPublicKyberKey),
135
- userPrivateKyberKey: uint8ArrayToBase64(keys.userPrivateKyberKey)
136
- });
137
- const base64 = btoa(json);
138
- return base64;
139
- } catch (error) {
140
- throw new Error("Failed to convert identity keys to base64", { cause: error });
141
- }
142
- }
143
- function encryptedKeystoreToBase64(keystore) {
144
- try {
145
- const ciphertext = ciphertextToBase64(keystore.encryptedKeys);
146
- const json = JSON.stringify({
147
- userID: keystore.userID,
148
- type: keystore.type.toString(),
149
- encryptedKeys: ciphertext
150
- });
151
- const base64 = btoa(json);
152
- return base64;
153
- } catch (error) {
154
- throw new Error("Failed to convert encrypted keystore to base64", { cause: error });
155
- }
156
- }
157
- async function base64ToIdentityKeys(base64) {
158
- try {
159
- const json = atob(base64);
160
- const obj = JSON.parse(json);
161
- const pkArray = base64ToUint8Array(obj.userPublicKey);
162
- const skArray = base64ToUint8Array(obj.userPrivateKey);
163
- const pkCryptoKey = await importPublicKey(pkArray);
164
- const skCryptoKey = await importPrivateKey(skArray);
165
- const result = {
166
- userPublicKey: pkCryptoKey,
167
- userPrivateKey: skCryptoKey
168
- };
169
- return result;
170
- } catch (error) {
171
- throw new Error("Failed convert base64 to idenity key", { cause: error });
172
- }
173
- }
174
- async function base64ToEncryptionKeys(base64) {
175
- try {
176
- const json = atob(base64);
177
- const obj = JSON.parse(json);
178
- const pkArray = base64ToUint8Array(obj.userPublicKey);
179
- const skArray = base64ToUint8Array(obj.userPrivateKey);
180
- const pkCryptoKey = await importPublicKey(pkArray);
181
- const skCryptoKey = await importPrivateKey(skArray);
182
- const pkKyber = base64ToUint8Array(obj.userPublicKyberKey);
183
- const skKyber = base64ToUint8Array(obj.userPrivateKyberKey);
184
- const result = {
185
- userPublicKey: pkCryptoKey,
186
- userPrivateKey: skCryptoKey,
187
- userPublicKyberKey: pkKyber,
188
- userPrivateKyberKey: skKyber
189
- };
190
- return result;
191
- } catch (error) {
192
- throw new Error("Failed to convert base64 to encryption key", { cause: error });
193
- }
194
- }
195
- function base64ToEncryptedKeystore(base64) {
196
- try {
197
- const json = atob(base64);
198
- const obj = JSON.parse(json);
199
- const ciphertext = base64ToCiphertext(obj.encryptedKeys);
200
- const result = {
201
- userID: obj.userID,
202
- type: obj.type,
203
- encryptedKeys: ciphertext
204
- };
205
- return result;
206
- } catch (error) {
207
- throw new Error("Failed to convert base64 to encrypted keystore", { cause: error });
208
- }
209
- }
210
- function mediaKeysToBase64(keys) {
211
- try {
212
- const json = JSON.stringify({
213
- olmKey: uint8ArrayToBase64(keys.olmKey),
214
- pqKey: uint8ArrayToBase64(keys.pqKey),
215
- index: keys.index.toString(),
216
- userID: keys.userID
217
- });
218
- const base64 = btoa(json);
219
- return base64;
220
- } catch (error) {
221
- throw new Error("Failed to convert media keys to base64", { cause: error });
222
- }
223
- }
224
- async function base64ToMediaKeys(base64) {
225
- try {
226
- const json = atob(base64);
227
- const obj = JSON.parse(json);
228
- const result = {
229
- olmKey: base64ToUint8Array(obj.olmKey),
230
- pqKey: base64ToUint8Array(obj.pqKey),
231
- index: Number(obj.index),
232
- userID: obj.userID
233
- };
234
- return result;
235
- } catch (error) {
236
- throw new Error("Failed convert base64 to media keys", { cause: error });
237
- }
238
- }
239
- async function base64ToPublicKey(base64) {
240
- try {
241
- const json = atob(base64);
242
- const obj = JSON.parse(json);
243
- const eccPublicKeyBytes = base64ToUint8Array(obj.eccPublicKey);
244
- const eccPublicKey = await importPublicKey(eccPublicKeyBytes);
245
- const kyberPublicKey = base64ToUint8Array(obj.kyberPublicKey);
246
- return {
247
- eccPublicKey,
248
- kyberPublicKey
249
- };
250
- } catch (error) {
251
- throw new Error("Failed to convert base64 to PublicKeys", { cause: error });
252
- }
253
- }
254
- async function publicKeyToBase64(key) {
255
- try {
256
- const eccPublicKeyArray = await exportPublicKey(key.eccPublicKey);
257
- const json = JSON.stringify({
258
- eccPublicKey: uint8ArrayToBase64(eccPublicKeyArray),
259
- kyberPublicKey: uint8ArrayToBase64(key.kyberPublicKey)
260
- });
261
- const base64 = btoa(json);
262
- return base64;
263
- } catch (error) {
264
- throw new Error("Failed to convert key of the type PublicKeys to base64", { cause: error });
265
- }
266
- }
267
- function genMnemonic(bits) {
268
- return bip39.generateMnemonic(wordlist, bits);
269
- }
270
-
271
- export { UTF8ToUint8, base64ToCiphertext, base64ToEncryptedKeystore, base64ToEncryptionKeys, base64ToIdentityKeys, base64ToMediaKeys, base64ToPublicKey, base64ToUint8Array, ciphertextToBase64, encryptedKeystoreToBase64, encryptionKeysToBase64, genMnemonic, hexToUint8Array, identityKeysToBase64, mediaKeysToBase64, publicKeyToBase64, uint8ArrayToBase64, uint8ArrayToHex, uint8ToUTF8 };
272
- //# sourceMappingURL=utils.mjs.map
273
- //# sourceMappingURL=utils.mjs.map
3
+ export { UTF8ToUint8, base64ToPublicKey, base64ToUint8Array, bytesToMnemonic, bytesToUuid, genMnemonic, generateUuid, hexToUint8Array, mnemonicToBytes, publicKeyToBase64, uint8ArrayToBase64, uint8ArrayToHex, uint8ToUTF8, uuidToBytes };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "internxt-crypto",
3
- "version": "0.0.10-alpha",
3
+ "version": "0.0.11",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/index.js",
@@ -9,7 +9,10 @@
9
9
  ],
10
10
  "scripts": {
11
11
  "prepare": "husky",
12
- "build": "tsup",
12
+ "dev": "vite",
13
+ "build": "tsdown",
14
+ "start": "vite preview",
15
+ "build:staging": "vite build --mode staging",
13
16
  "test": "vitest run",
14
17
  "test:coverage": "vitest run --coverage",
15
18
  "format": "prettier \"{src,tests}/**/*.{ts,tsx}\" --write",
@@ -19,111 +22,33 @@
19
22
  "devDependencies": {
20
23
  "@internxt/eslint-config-internxt": "2.0.1",
21
24
  "@internxt/prettier-config": "https://github.com/internxt/prettier-config.git#v1.0.2",
22
- "@playwright/test": "^1.54.2",
23
- "@swc/core": "^1.15.2",
24
25
  "@types/flexsearch": "^0.7.42",
25
- "@vitest/browser": "^3.2.4",
26
- "@vitest/coverage-istanbul": "^3.2.4",
26
+ "@vitest/browser": "^4.0.10",
27
+ "@vitest/browser-playwright": "^4.0.10",
28
+ "@vitest/coverage-istanbul": "^4.0.10",
27
29
  "eslint": "^9.34.0",
28
30
  "eslint-config-prettier": "^10.1.8",
29
31
  "eslint-plugin-prettier": "^5.5.4",
30
32
  "lint-staged": "^16.1.4",
31
33
  "playwright": "^1.54.1",
32
34
  "prettier": "^3.6.2",
33
- "tsup": "^8.5.1",
34
- "typescript": "^4.4.2",
35
- "vitest": "^3.2.4"
35
+ "tsdown": "^0.20.0-beta.4",
36
+ "typescript": "^5.9.3",
37
+ "vite": "^7.0.6",
38
+ "vitest": "^4.0.0"
36
39
  },
37
40
  "dependencies": {
38
41
  "@emailjs/browser": "^4.4.1",
39
42
  "@noble/hashes": "^2.0.1",
40
- "@noble/post-quantum": "^0.4.1",
41
- "@scure/bip39": "^1.6.0",
43
+ "@noble/post-quantum": "^0.5.2",
44
+ "@scure/bip39": "^2.0.1",
42
45
  "axios": "^1.11.0",
43
46
  "flexsearch": "^0.8.205",
44
47
  "hash-wasm": "^4.12.0",
45
48
  "husky": "^9.1.7",
46
49
  "idb": "^8.0.3",
47
- "uuid": "^11.1.0"
50
+ "uuid": "^13.0.0"
48
51
  },
49
- "exports": {
50
- ".": {
51
- "types": "./dist/index.d.ts",
52
- "import": "./dist/index.mjs",
53
- "require": "./dist/index.js"
54
- },
55
- "./asymmetric-crypto": {
56
- "types": "./dist/asymmetric-crypto.d.ts",
57
- "import": "./dist/asymmetric-crypto.mjs",
58
- "require": "./dist/asymmetric-crypto.js"
59
- },
60
- "./symmetric-crypto": {
61
- "types": "./dist/symmetric-crypto.d.ts",
62
- "import": "./dist/symmetric-crypto.mjs",
63
- "require": "./dist/symmetric-crypto.js"
64
- },
65
- "./post-quantum-crypto": {
66
- "types": "./dist/post-quantum-crypto.d.ts",
67
- "import": "./dist/post-quantum-crypto.mjs",
68
- "require": "./dist/post-quantum-crypto.js"
69
- },
70
- "./hash": {
71
- "types": "./dist/hash.d.ts",
72
- "import": "./dist/hash.mjs",
73
- "require": "./dist/hash.js"
74
- },
75
- "./derive-key": {
76
- "types": "./dist/derive-key.d.ts",
77
- "import": "./dist/derive-key.mjs",
78
- "require": "./dist/derive-key.js"
79
- },
80
- "./email-crypto": {
81
- "types": "./dist/email-crypto.d.ts",
82
- "import": "./dist/email-crypto.mjs",
83
- "require": "./dist/email-crypto.js"
84
- },
85
- "./keystore-crypto": {
86
- "types": "./dist/keystore-crypto.d.ts",
87
- "import": "./dist/keystore-crypto.mjs",
88
- "require": "./dist/keystore-crypto.js"
89
- },
90
- "./keystore-service": {
91
- "types": "./dist/keystore-service.d.ts",
92
- "import": "./dist/keystore-service.mjs",
93
- "require": "./dist/keystore-service.js"
94
- },
95
- "./email-search": {
96
- "types": "./dist/email-search.d.ts",
97
- "import": "./dist/email-search.mjs",
98
- "require": "./dist/email-search.js"
99
- },
100
- "./email-service": {
101
- "types": "./dist/email-service.d.ts",
102
- "import": "./dist/email-service.mjs",
103
- "require": "./dist/email-service.js"
104
- },
105
- "./storage-service": {
106
- "types": "./dist/storage-service.d.ts",
107
- "import": "./dist/storage-service.mjs",
108
- "require": "./dist/storage-service.js"
109
- },
110
- "./utils": {
111
- "types": "./dist/utils.d.ts",
112
- "import": "./dist/utils.mjs",
113
- "require": "./dist/utils.js"
114
- },
115
- "./types": {
116
- "types": "./dist/types.d.ts",
117
- "import": "./dist/types.mjs",
118
- "require": "./dist/types.js"
119
- },
120
- "./constants": {
121
- "types": "./dist/constants.d.ts",
122
- "import": "./dist/constants.mjs",
123
- "require": "./dist/constants.js"
124
- }
125
- },
126
- "sideEffects": false,
127
52
  "lint-staged": {
128
53
  "*.{js,jsx,tsx,ts}": [
129
54
  "prettier --write"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/asymmetric-crypto/ellipticCurve.ts","../src/asymmetric-crypto/keys.ts"],"names":[],"mappings":";;;AACO,IAAM,kBAAA,GAAqB,GAAA;AAQ3B,IAAM,aAAA,GAAgB,QAAA;;;ACA7B,eAAsB,eAAA,CAAgB,oBAA+B,aAAA,EAA+C;AAClH,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,MAAA,CAAO,UAAA;AAAA,MACjC;AAAA,QACE,IAAA,EAAM,aAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,IAAI,WAAW,MAAM,CAAA;AAAA,EAC9B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,4CAAA,EAA8C,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EAChF;AACF;;;AChBA,eAAsB,eAAA,GAA0C;AAC9D,EAAA,IAAI;AACF,IAAA,OAAQ,MAAM,OAAO,MAAA,CAAO,WAAA;AAAA,MAC1B;AAAA,QACE,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA;AAAA,MACA,CAAC,YAAY;AAAA,KACf;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,4CAAA,EAA8C,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EAChF;AACF;AAOA,eAAsB,gBAAgB,GAAA,EAAqC;AACzE,EAAA,IAAI;AACF,IAAA,MAAM,SAAS,MAAM,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,QAAQ,GAAG,CAAA;AACxD,IAAA,OAAO,IAAI,WAAW,MAAM,CAAA;AAAA,EAC9B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,6BAAA,EAA+B,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EACjE;AACF;AAOA,eAAsB,gBAAgB,WAAA,EAA6C;AACjF,EAAA,IAAI;AACF,IAAA,OAAO,MAAM,OAAO,MAAA,CAAO,SAAA;AAAA,MACzB,MAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA;AAAA,MACA;AAAC,KACH;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,6BAAA,EAA+B,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EACjE;AACF;AAOA,eAAsB,iBAAiB,GAAA,EAAqC;AAC1E,EAAA,IAAI;AACF,IAAA,MAAM,SAAS,MAAM,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,SAAS,GAAG,CAAA;AACzD,IAAA,OAAO,IAAI,WAAW,MAAM,CAAA;AAAA,EAC9B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,8BAAA,EAAgC,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EAClE;AACF;AAOA,eAAsB,iBAAiB,YAAA,EAA8C;AACnF,EAAA,IAAI;AACF,IAAA,OAAO,MAAM,OAAO,MAAA,CAAO,SAAA;AAAA,MACzB,OAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA;AAAA,MACA,CAAC,YAAY;AAAA,KACf;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,8BAAA,EAAgC,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EAClE;AACF","file":"asymmetric-crypto.js","sourcesContent":["export const AES_ALGORITHM = 'AES-GCM';\nexport const AES_KEY_BIT_LENGTH = 256;\nexport const AUX_LEN = 128;\nexport const IV_LEN_BYTES = 16;\n\nexport const KEY_WRAPPING_ALGORITHM = 'AES-KW';\nexport const KEY_FORMAT = 'raw';\nexport const CONTEXT_WRAPPING = 'CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets';\n\nexport const ECC_ALGORITHM = 'X25519';\n\nexport const CONTEXT_LOGIN = 'CRYPTO library 2025-07-26 16:18:03 key for opening identity keystore';\nexport const CONTEXT_ENC_KEYSTORE = 'CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore';\nexport const CONTEXT_RECOVERY = 'CRYPTO library 2025-07-30 16:20:00 key for account recovery';\nexport const CONTEXT_INDEX = 'CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices';\nexport const CONTEXT_DERIVE = 'CRYPTO library 2025-08-27 17:08:00 derive one key from two keys';\n\nexport const PREFIX_MEDIA_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:29:00 prefix for commitment to media keys';\nexport const PREFIX_PUBLIC_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:30:00 prefix for commitment to public keys';\nexport const PREFIX_IDENTITY_KEY_COMMITMENT =\n 'CRYPTO library 2025-08-26 18:45:00 prefix for commitment to identity keys';\n\n// Second recommended parameter set from RFC 9106\nexport const ARGON2ID_PARALLELISM = 3;\nexport const ARGON2ID_ITERATIONS = 4;\nexport const ARGON2ID_MEMORY_SIZE = 65536;\nexport const ARGON2ID_SALT_BYTE_LENGTH = 16;\nexport const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;\n\nexport const IDENTITY_KEYSTORE_TAG = 'Identity keystore';\nexport const ENCRYPTION_KEYSTORE_TAG = 'Encryption keystore';\nexport const RECOVERY_KEYSTORE_TAG = 'Key recovery keystroe';\nexport const INDEX_KEYSTORE_TAG = 'Current encrypted indices';\n\nexport const KYBER512_PUBLIC_KEY_LENGTH = 800;\nexport const KYBER512_SECRET_KEY_LENGTH = 1632;\n\nexport const KYBER768_PUBLIC_KEY_LENGTH = 1184;\nexport const KYBER768_SECRET_KEY_LENGTH = 2400;\n\nexport const KYBER1024_PUBLIC_KEY_LENGTH = 1568;\nexport const KYBER1024_SECRET_KEY_LENGTH = 3168;\n\nexport const KYBER_SEED_LENGTH = 64;\n\nexport const HASH_BIT_LEN = 256;\n\nexport const MAX_CACHE_SIZE = 600000000; // 600 MB\nexport const MAX_EMAIL_PER_BATCH = 100;\nexport const DB_LABEL = 'email';\nexport const DB_VERSION = 1;\n","import { ECC_ALGORITHM, AES_KEY_BIT_LENGTH } from '../constants';\n\n/**\n * Derives secret key from the other user's public key and own private key\n *\n * @param otherUserPublicKey - The public key of the other user\n * @param ownPrivateKey - The private key\n * @returns The derived secret key bits\n */\nexport async function deriveSecretKey(otherUserPublicKey: CryptoKey, ownPrivateKey: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.deriveBits(\n {\n name: ECC_ALGORITHM,\n public: otherUserPublicKey,\n },\n ownPrivateKey,\n AES_KEY_BIT_LENGTH,\n );\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to derive elliptic curve secret key', { cause: error });\n }\n}\n","import { ECC_ALGORITHM } from '../constants';\n\n/**\n * Generates elliptic curve key pair\n *\n * @returns The generated key pair\n */\nexport async function generateEccKeys(): Promise<CryptoKeyPair> {\n try {\n return (await crypto.subtle.generateKey(\n {\n name: ECC_ALGORITHM,\n },\n true,\n ['deriveBits'],\n )) as CryptoKeyPair;\n } catch (error) {\n throw new Error('Failed to generate elliptic curve key pair', { cause: error });\n }\n}\n\n/**\n * Converts public CryptoKey into Uint8Array using SubjectPublicKeyInfo format (RFC 5280)\n *\n * @returns The Uint8Array representation of the public key\n */\nexport async function exportPublicKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.exportKey('spki', key);\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to export public key', { cause: error });\n }\n}\n\n/**\n * Converts public key in SubjectPublicKeyInfo format (RFC 5280) to CryptoKey\n *\n * @returns The CryptoKey representation of the public key\n */\nexport async function importPublicKey(spkiKeyData: Uint8Array): Promise<CryptoKey> {\n try {\n return await crypto.subtle.importKey(\n 'spki',\n spkiKeyData as BufferSource,\n {\n name: ECC_ALGORITHM,\n },\n true,\n [],\n );\n } catch (error) {\n throw new Error('Failed to import public key', { cause: error });\n }\n}\n\n/**\n * Converts private key in CryptoKey to PKCS #8 format (RFC 5208)\n *\n * @returns The Uint8Array representation of the private key\n */\nexport async function exportPrivateKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.exportKey('pkcs8', key);\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to export private key', { cause: error });\n }\n}\n\n/**\n * Converts private key in PKCS #8 format (RFC 5208) to CryptoKey\n *\n * @returns The CryptoKey representation of the private key\n */\nexport async function importPrivateKey(pkcs8KeyData: Uint8Array): Promise<CryptoKey> {\n try {\n return await crypto.subtle.importKey(\n 'pkcs8',\n pkcs8KeyData as BufferSource,\n {\n name: ECC_ALGORITHM,\n },\n true,\n ['deriveBits'],\n );\n } catch (error) {\n throw new Error('Failed to import private key', { cause: error });\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/asymmetric-crypto/ellipticCurve.ts","../src/asymmetric-crypto/keys.ts"],"names":[],"mappings":";AACO,IAAM,kBAAA,GAAqB,GAAA;AAQ3B,IAAM,aAAA,GAAgB,QAAA;;;ACA7B,eAAsB,eAAA,CAAgB,oBAA+B,aAAA,EAA+C;AAClH,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,MAAA,CAAO,UAAA;AAAA,MACjC;AAAA,QACE,IAAA,EAAM,aAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,IAAI,WAAW,MAAM,CAAA;AAAA,EAC9B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,4CAAA,EAA8C,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EAChF;AACF;;;AChBA,eAAsB,eAAA,GAA0C;AAC9D,EAAA,IAAI;AACF,IAAA,OAAQ,MAAM,OAAO,MAAA,CAAO,WAAA;AAAA,MAC1B;AAAA,QACE,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA;AAAA,MACA,CAAC,YAAY;AAAA,KACf;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,4CAAA,EAA8C,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EAChF;AACF;AAOA,eAAsB,gBAAgB,GAAA,EAAqC;AACzE,EAAA,IAAI;AACF,IAAA,MAAM,SAAS,MAAM,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,QAAQ,GAAG,CAAA;AACxD,IAAA,OAAO,IAAI,WAAW,MAAM,CAAA;AAAA,EAC9B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,6BAAA,EAA+B,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EACjE;AACF;AAOA,eAAsB,gBAAgB,WAAA,EAA6C;AACjF,EAAA,IAAI;AACF,IAAA,OAAO,MAAM,OAAO,MAAA,CAAO,SAAA;AAAA,MACzB,MAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA;AAAA,MACA;AAAC,KACH;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,6BAAA,EAA+B,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EACjE;AACF;AAOA,eAAsB,iBAAiB,GAAA,EAAqC;AAC1E,EAAA,IAAI;AACF,IAAA,MAAM,SAAS,MAAM,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,SAAS,GAAG,CAAA;AACzD,IAAA,OAAO,IAAI,WAAW,MAAM,CAAA;AAAA,EAC9B,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,8BAAA,EAAgC,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EAClE;AACF;AAOA,eAAsB,iBAAiB,YAAA,EAA8C;AACnF,EAAA,IAAI;AACF,IAAA,OAAO,MAAM,OAAO,MAAA,CAAO,SAAA;AAAA,MACzB,OAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAM;AAAA,OACR;AAAA,MACA,IAAA;AAAA,MACA,CAAC,YAAY;AAAA,KACf;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,IAAI,KAAA,CAAM,8BAAA,EAAgC,EAAE,KAAA,EAAO,OAAO,CAAA;AAAA,EAClE;AACF","file":"asymmetric-crypto.mjs","sourcesContent":["export const AES_ALGORITHM = 'AES-GCM';\nexport const AES_KEY_BIT_LENGTH = 256;\nexport const AUX_LEN = 128;\nexport const IV_LEN_BYTES = 16;\n\nexport const KEY_WRAPPING_ALGORITHM = 'AES-KW';\nexport const KEY_FORMAT = 'raw';\nexport const CONTEXT_WRAPPING = 'CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets';\n\nexport const ECC_ALGORITHM = 'X25519';\n\nexport const CONTEXT_LOGIN = 'CRYPTO library 2025-07-26 16:18:03 key for opening identity keystore';\nexport const CONTEXT_ENC_KEYSTORE = 'CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore';\nexport const CONTEXT_RECOVERY = 'CRYPTO library 2025-07-30 16:20:00 key for account recovery';\nexport const CONTEXT_INDEX = 'CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices';\nexport const CONTEXT_DERIVE = 'CRYPTO library 2025-08-27 17:08:00 derive one key from two keys';\n\nexport const PREFIX_MEDIA_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:29:00 prefix for commitment to media keys';\nexport const PREFIX_PUBLIC_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:30:00 prefix for commitment to public keys';\nexport const PREFIX_IDENTITY_KEY_COMMITMENT =\n 'CRYPTO library 2025-08-26 18:45:00 prefix for commitment to identity keys';\n\n// Second recommended parameter set from RFC 9106\nexport const ARGON2ID_PARALLELISM = 3;\nexport const ARGON2ID_ITERATIONS = 4;\nexport const ARGON2ID_MEMORY_SIZE = 65536;\nexport const ARGON2ID_SALT_BYTE_LENGTH = 16;\nexport const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;\n\nexport const IDENTITY_KEYSTORE_TAG = 'Identity keystore';\nexport const ENCRYPTION_KEYSTORE_TAG = 'Encryption keystore';\nexport const RECOVERY_KEYSTORE_TAG = 'Key recovery keystroe';\nexport const INDEX_KEYSTORE_TAG = 'Current encrypted indices';\n\nexport const KYBER512_PUBLIC_KEY_LENGTH = 800;\nexport const KYBER512_SECRET_KEY_LENGTH = 1632;\n\nexport const KYBER768_PUBLIC_KEY_LENGTH = 1184;\nexport const KYBER768_SECRET_KEY_LENGTH = 2400;\n\nexport const KYBER1024_PUBLIC_KEY_LENGTH = 1568;\nexport const KYBER1024_SECRET_KEY_LENGTH = 3168;\n\nexport const KYBER_SEED_LENGTH = 64;\n\nexport const HASH_BIT_LEN = 256;\n\nexport const MAX_CACHE_SIZE = 600000000; // 600 MB\nexport const MAX_EMAIL_PER_BATCH = 100;\nexport const DB_LABEL = 'email';\nexport const DB_VERSION = 1;\n","import { ECC_ALGORITHM, AES_KEY_BIT_LENGTH } from '../constants';\n\n/**\n * Derives secret key from the other user's public key and own private key\n *\n * @param otherUserPublicKey - The public key of the other user\n * @param ownPrivateKey - The private key\n * @returns The derived secret key bits\n */\nexport async function deriveSecretKey(otherUserPublicKey: CryptoKey, ownPrivateKey: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.deriveBits(\n {\n name: ECC_ALGORITHM,\n public: otherUserPublicKey,\n },\n ownPrivateKey,\n AES_KEY_BIT_LENGTH,\n );\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to derive elliptic curve secret key', { cause: error });\n }\n}\n","import { ECC_ALGORITHM } from '../constants';\n\n/**\n * Generates elliptic curve key pair\n *\n * @returns The generated key pair\n */\nexport async function generateEccKeys(): Promise<CryptoKeyPair> {\n try {\n return (await crypto.subtle.generateKey(\n {\n name: ECC_ALGORITHM,\n },\n true,\n ['deriveBits'],\n )) as CryptoKeyPair;\n } catch (error) {\n throw new Error('Failed to generate elliptic curve key pair', { cause: error });\n }\n}\n\n/**\n * Converts public CryptoKey into Uint8Array using SubjectPublicKeyInfo format (RFC 5280)\n *\n * @returns The Uint8Array representation of the public key\n */\nexport async function exportPublicKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.exportKey('spki', key);\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to export public key', { cause: error });\n }\n}\n\n/**\n * Converts public key in SubjectPublicKeyInfo format (RFC 5280) to CryptoKey\n *\n * @returns The CryptoKey representation of the public key\n */\nexport async function importPublicKey(spkiKeyData: Uint8Array): Promise<CryptoKey> {\n try {\n return await crypto.subtle.importKey(\n 'spki',\n spkiKeyData as BufferSource,\n {\n name: ECC_ALGORITHM,\n },\n true,\n [],\n );\n } catch (error) {\n throw new Error('Failed to import public key', { cause: error });\n }\n}\n\n/**\n * Converts private key in CryptoKey to PKCS #8 format (RFC 5208)\n *\n * @returns The Uint8Array representation of the private key\n */\nexport async function exportPrivateKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const result = await crypto.subtle.exportKey('pkcs8', key);\n return new Uint8Array(result);\n } catch (error) {\n throw new Error('Failed to export private key', { cause: error });\n }\n}\n\n/**\n * Converts private key in PKCS #8 format (RFC 5208) to CryptoKey\n *\n * @returns The CryptoKey representation of the private key\n */\nexport async function importPrivateKey(pkcs8KeyData: Uint8Array): Promise<CryptoKey> {\n try {\n return await crypto.subtle.importKey(\n 'pkcs8',\n pkcs8KeyData as BufferSource,\n {\n name: ECC_ALGORITHM,\n },\n true,\n ['deriveBits'],\n );\n } catch (error) {\n throw new Error('Failed to import private key', { cause: error });\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAO,IAAM,aAAA,GAAgB;AACtB,IAAM,kBAAA,GAAqB;AAC3B,IAAM,OAAA,GAAU;AAChB,IAAM,YAAA,GAAe;AAErB,IAAM,sBAAA,GAAyB;AAC/B,IAAM,UAAA,GAAa;AACnB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,aAAA,GAAgB;AAEtB,IAAM,aAAA,GAAgB;AACtB,IAAM,oBAAA,GAAuB;AAC7B,IAAM,gBAAA,GAAmB;AACzB,IAAM,aAAA,GAAgB;AACtB,IAAM,cAAA,GAAiB;AAEvB,IAAM,2BAAA,GAA8B;AACpC,IAAM,4BAAA,GAA+B;AACrC,IAAM,8BAAA,GACX;AAGK,IAAM,oBAAA,GAAuB;AAC7B,IAAM,mBAAA,GAAsB;AAC5B,IAAM,oBAAA,GAAuB;AAC7B,IAAM,yBAAA,GAA4B;AAClC,IAAM,2BAAA,GAA8B;AAEpC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,uBAAA,GAA0B;AAChC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,kBAAA,GAAqB;AAE3B,IAAM,0BAAA,GAA6B;AACnC,IAAM,0BAAA,GAA6B;AAEnC,IAAM,0BAAA,GAA6B;AACnC,IAAM,0BAAA,GAA6B;AAEnC,IAAM,2BAAA,GAA8B;AACpC,IAAM,2BAAA,GAA8B;AAEpC,IAAM,iBAAA,GAAoB;AAE1B,IAAM,YAAA,GAAe;AAErB,IAAM,cAAA,GAAiB;AACvB,IAAM,mBAAA,GAAsB;AAC5B,IAAM,QAAA,GAAW;AACjB,IAAM,UAAA,GAAa","file":"constants.js","sourcesContent":["export const AES_ALGORITHM = 'AES-GCM';\nexport const AES_KEY_BIT_LENGTH = 256;\nexport const AUX_LEN = 128;\nexport const IV_LEN_BYTES = 16;\n\nexport const KEY_WRAPPING_ALGORITHM = 'AES-KW';\nexport const KEY_FORMAT = 'raw';\nexport const CONTEXT_WRAPPING = 'CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets';\n\nexport const ECC_ALGORITHM = 'X25519';\n\nexport const CONTEXT_LOGIN = 'CRYPTO library 2025-07-26 16:18:03 key for opening identity keystore';\nexport const CONTEXT_ENC_KEYSTORE = 'CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore';\nexport const CONTEXT_RECOVERY = 'CRYPTO library 2025-07-30 16:20:00 key for account recovery';\nexport const CONTEXT_INDEX = 'CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices';\nexport const CONTEXT_DERIVE = 'CRYPTO library 2025-08-27 17:08:00 derive one key from two keys';\n\nexport const PREFIX_MEDIA_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:29:00 prefix for commitment to media keys';\nexport const PREFIX_PUBLIC_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:30:00 prefix for commitment to public keys';\nexport const PREFIX_IDENTITY_KEY_COMMITMENT =\n 'CRYPTO library 2025-08-26 18:45:00 prefix for commitment to identity keys';\n\n// Second recommended parameter set from RFC 9106\nexport const ARGON2ID_PARALLELISM = 3;\nexport const ARGON2ID_ITERATIONS = 4;\nexport const ARGON2ID_MEMORY_SIZE = 65536;\nexport const ARGON2ID_SALT_BYTE_LENGTH = 16;\nexport const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;\n\nexport const IDENTITY_KEYSTORE_TAG = 'Identity keystore';\nexport const ENCRYPTION_KEYSTORE_TAG = 'Encryption keystore';\nexport const RECOVERY_KEYSTORE_TAG = 'Key recovery keystroe';\nexport const INDEX_KEYSTORE_TAG = 'Current encrypted indices';\n\nexport const KYBER512_PUBLIC_KEY_LENGTH = 800;\nexport const KYBER512_SECRET_KEY_LENGTH = 1632;\n\nexport const KYBER768_PUBLIC_KEY_LENGTH = 1184;\nexport const KYBER768_SECRET_KEY_LENGTH = 2400;\n\nexport const KYBER1024_PUBLIC_KEY_LENGTH = 1568;\nexport const KYBER1024_SECRET_KEY_LENGTH = 3168;\n\nexport const KYBER_SEED_LENGTH = 64;\n\nexport const HASH_BIT_LEN = 256;\n\nexport const MAX_CACHE_SIZE = 600000000; // 600 MB\nexport const MAX_EMAIL_PER_BATCH = 100;\nexport const DB_LABEL = 'email';\nexport const DB_VERSION = 1;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/constants.ts"],"names":[],"mappings":";AAAO,IAAM,aAAA,GAAgB;AACtB,IAAM,kBAAA,GAAqB;AAC3B,IAAM,OAAA,GAAU;AAChB,IAAM,YAAA,GAAe;AAErB,IAAM,sBAAA,GAAyB;AAC/B,IAAM,UAAA,GAAa;AACnB,IAAM,gBAAA,GAAmB;AAEzB,IAAM,aAAA,GAAgB;AAEtB,IAAM,aAAA,GAAgB;AACtB,IAAM,oBAAA,GAAuB;AAC7B,IAAM,gBAAA,GAAmB;AACzB,IAAM,aAAA,GAAgB;AACtB,IAAM,cAAA,GAAiB;AAEvB,IAAM,2BAAA,GAA8B;AACpC,IAAM,4BAAA,GAA+B;AACrC,IAAM,8BAAA,GACX;AAGK,IAAM,oBAAA,GAAuB;AAC7B,IAAM,mBAAA,GAAsB;AAC5B,IAAM,oBAAA,GAAuB;AAC7B,IAAM,yBAAA,GAA4B;AAClC,IAAM,2BAAA,GAA8B;AAEpC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,uBAAA,GAA0B;AAChC,IAAM,qBAAA,GAAwB;AAC9B,IAAM,kBAAA,GAAqB;AAE3B,IAAM,0BAAA,GAA6B;AACnC,IAAM,0BAAA,GAA6B;AAEnC,IAAM,0BAAA,GAA6B;AACnC,IAAM,0BAAA,GAA6B;AAEnC,IAAM,2BAAA,GAA8B;AACpC,IAAM,2BAAA,GAA8B;AAEpC,IAAM,iBAAA,GAAoB;AAE1B,IAAM,YAAA,GAAe;AAErB,IAAM,cAAA,GAAiB;AACvB,IAAM,mBAAA,GAAsB;AAC5B,IAAM,QAAA,GAAW;AACjB,IAAM,UAAA,GAAa","file":"constants.mjs","sourcesContent":["export const AES_ALGORITHM = 'AES-GCM';\nexport const AES_KEY_BIT_LENGTH = 256;\nexport const AUX_LEN = 128;\nexport const IV_LEN_BYTES = 16;\n\nexport const KEY_WRAPPING_ALGORITHM = 'AES-KW';\nexport const KEY_FORMAT = 'raw';\nexport const CONTEXT_WRAPPING = 'CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets';\n\nexport const ECC_ALGORITHM = 'X25519';\n\nexport const CONTEXT_LOGIN = 'CRYPTO library 2025-07-26 16:18:03 key for opening identity keystore';\nexport const CONTEXT_ENC_KEYSTORE = 'CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore';\nexport const CONTEXT_RECOVERY = 'CRYPTO library 2025-07-30 16:20:00 key for account recovery';\nexport const CONTEXT_INDEX = 'CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices';\nexport const CONTEXT_DERIVE = 'CRYPTO library 2025-08-27 17:08:00 derive one key from two keys';\n\nexport const PREFIX_MEDIA_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:29:00 prefix for commitment to media keys';\nexport const PREFIX_PUBLIC_KEY_COMMITMENT = 'CRYPTO library 2025-08-26 18:30:00 prefix for commitment to public keys';\nexport const PREFIX_IDENTITY_KEY_COMMITMENT =\n 'CRYPTO library 2025-08-26 18:45:00 prefix for commitment to identity keys';\n\n// Second recommended parameter set from RFC 9106\nexport const ARGON2ID_PARALLELISM = 3;\nexport const ARGON2ID_ITERATIONS = 4;\nexport const ARGON2ID_MEMORY_SIZE = 65536;\nexport const ARGON2ID_SALT_BYTE_LENGTH = 16;\nexport const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;\n\nexport const IDENTITY_KEYSTORE_TAG = 'Identity keystore';\nexport const ENCRYPTION_KEYSTORE_TAG = 'Encryption keystore';\nexport const RECOVERY_KEYSTORE_TAG = 'Key recovery keystroe';\nexport const INDEX_KEYSTORE_TAG = 'Current encrypted indices';\n\nexport const KYBER512_PUBLIC_KEY_LENGTH = 800;\nexport const KYBER512_SECRET_KEY_LENGTH = 1632;\n\nexport const KYBER768_PUBLIC_KEY_LENGTH = 1184;\nexport const KYBER768_SECRET_KEY_LENGTH = 2400;\n\nexport const KYBER1024_PUBLIC_KEY_LENGTH = 1568;\nexport const KYBER1024_SECRET_KEY_LENGTH = 3168;\n\nexport const KYBER_SEED_LENGTH = 64;\n\nexport const HASH_BIT_LEN = 256;\n\nexport const MAX_CACHE_SIZE = 600000000; // 600 MB\nexport const MAX_EMAIL_PER_BATCH = 100;\nexport const DB_LABEL = 'email';\nexport const DB_VERSION = 1;\n"]}