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
@@ -1,501 +1,9 @@
1
- import { utf8ToBytes } from '@noble/hashes/utils.js';
2
- import * as bip39 from '@scure/bip39';
3
- import { wordlist } from '@scure/bip39/wordlists/english';
4
- import { blake3 } from '@noble/hashes/blake3.js';
5
- import { randomBytes } from '@noble/post-quantum/utils.js';
6
- import { ml_kem768 } from '@noble/post-quantum/ml-kem.js';
7
-
8
- // src/utils/converters.ts
9
- function UTF8ToUint8(str) {
10
- return new TextEncoder().encode(str);
11
- }
12
- function uint8ArrayToBase64(buffer) {
13
- const array = Uint16Array.from(buffer);
14
- const binaryString = new TextDecoder("UTF-16").decode(array);
15
- return btoa(binaryString);
16
- }
17
- function base64ToUint8Array(str) {
18
- const binaryString = atob(str);
19
- const len = binaryString.length;
20
- const array = new Uint8Array(len);
21
- for (let i = 0; i < len; i++) {
22
- array[i] = binaryString.charCodeAt(i);
23
- }
24
- return new Uint8Array(array.buffer);
25
- }
26
-
27
- // src/constants.ts
28
- var AES_ALGORITHM = "AES-GCM";
29
- var AES_KEY_BIT_LENGTH = 256;
30
- var AUX_LEN = 128;
31
- var IV_LEN_BYTES = 16;
32
- var KEY_FORMAT = "raw";
33
- var ECC_ALGORITHM = "X25519";
34
- var CONTEXT_LOGIN = "CRYPTO library 2025-07-26 16:18:03 key for opening identity keystore";
35
- var CONTEXT_ENC_KEYSTORE = "CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore";
36
- var CONTEXT_RECOVERY = "CRYPTO library 2025-07-30 16:20:00 key for account recovery";
37
- var IDENTITY_KEYSTORE_TAG = "Identity keystore";
38
- var ENCRYPTION_KEYSTORE_TAG = "Encryption keystore";
39
- var RECOVERY_KEYSTORE_TAG = "Key recovery keystroe";
40
-
41
- // src/asymmetric-crypto/keys.ts
42
- async function generateEccKeys() {
43
- try {
44
- return await crypto.subtle.generateKey(
45
- {
46
- name: ECC_ALGORITHM
47
- },
48
- true,
49
- ["deriveBits"]
50
- );
51
- } catch (error) {
52
- throw new Error("Failed to generate elliptic curve key pair", { cause: error });
53
- }
54
- }
55
- async function exportPublicKey(key) {
56
- try {
57
- const result = await crypto.subtle.exportKey("spki", key);
58
- return new Uint8Array(result);
59
- } catch (error) {
60
- throw new Error("Failed to export public key", { cause: error });
61
- }
62
- }
63
- async function importPublicKey(spkiKeyData) {
64
- try {
65
- return await crypto.subtle.importKey(
66
- "spki",
67
- spkiKeyData,
68
- {
69
- name: ECC_ALGORITHM
70
- },
71
- true,
72
- []
73
- );
74
- } catch (error) {
75
- throw new Error("Failed to import public key", { cause: error });
76
- }
77
- }
78
- async function exportPrivateKey(key) {
79
- try {
80
- const result = await crypto.subtle.exportKey("pkcs8", key);
81
- return new Uint8Array(result);
82
- } catch (error) {
83
- throw new Error("Failed to export private key", { cause: error });
84
- }
85
- }
86
- async function importPrivateKey(pkcs8KeyData) {
87
- try {
88
- return await crypto.subtle.importKey(
89
- "pkcs8",
90
- pkcs8KeyData,
91
- {
92
- name: ECC_ALGORITHM
93
- },
94
- true,
95
- ["deriveBits"]
96
- );
97
- } catch (error) {
98
- throw new Error("Failed to import private key", { cause: error });
99
- }
100
- }
101
-
102
- // src/utils/keyConverters.ts
103
- async function identityKeysToBase64(keys) {
104
- try {
105
- const pkArray = await exportPublicKey(keys.userPublicKey);
106
- const skArray = await exportPrivateKey(keys.userPrivateKey);
107
- const json = JSON.stringify({
108
- userPublicKey: uint8ArrayToBase64(pkArray),
109
- userPrivateKey: uint8ArrayToBase64(skArray)
110
- });
111
- const base64 = btoa(json);
112
- return base64;
113
- } catch (error) {
114
- throw new Error("Failed to convert identity keys to base64", { cause: error });
115
- }
116
- }
117
- async function encryptionKeysToBase64(keys) {
118
- try {
119
- const pkArray = await exportPublicKey(keys.userPublicKey);
120
- const skArray = await exportPrivateKey(keys.userPrivateKey);
121
- const json = JSON.stringify({
122
- userPublicKey: uint8ArrayToBase64(pkArray),
123
- userPrivateKey: uint8ArrayToBase64(skArray),
124
- userPublicKyberKey: uint8ArrayToBase64(keys.userPublicKyberKey),
125
- userPrivateKyberKey: uint8ArrayToBase64(keys.userPrivateKyberKey)
126
- });
127
- const base64 = btoa(json);
128
- return base64;
129
- } catch (error) {
130
- throw new Error("Failed to convert identity keys to base64", { cause: error });
131
- }
132
- }
133
- async function base64ToIdentityKeys(base64) {
134
- try {
135
- const json = atob(base64);
136
- const obj = JSON.parse(json);
137
- const pkArray = base64ToUint8Array(obj.userPublicKey);
138
- const skArray = base64ToUint8Array(obj.userPrivateKey);
139
- const pkCryptoKey = await importPublicKey(pkArray);
140
- const skCryptoKey = await importPrivateKey(skArray);
141
- const result = {
142
- userPublicKey: pkCryptoKey,
143
- userPrivateKey: skCryptoKey
144
- };
145
- return result;
146
- } catch (error) {
147
- throw new Error("Failed convert base64 to idenity key", { cause: error });
148
- }
149
- }
150
- async function base64ToEncryptionKeys(base64) {
151
- try {
152
- const json = atob(base64);
153
- const obj = JSON.parse(json);
154
- const pkArray = base64ToUint8Array(obj.userPublicKey);
155
- const skArray = base64ToUint8Array(obj.userPrivateKey);
156
- const pkCryptoKey = await importPublicKey(pkArray);
157
- const skCryptoKey = await importPrivateKey(skArray);
158
- const pkKyber = base64ToUint8Array(obj.userPublicKyberKey);
159
- const skKyber = base64ToUint8Array(obj.userPrivateKyberKey);
160
- const result = {
161
- userPublicKey: pkCryptoKey,
162
- userPrivateKey: skCryptoKey,
163
- userPublicKyberKey: pkKyber,
164
- userPrivateKyberKey: skKyber
165
- };
166
- return result;
167
- } catch (error) {
168
- throw new Error("Failed to convert base64 to encryption key", { cause: error });
169
- }
170
- }
171
- function genMnemonic(bits) {
172
- return bip39.generateMnemonic(wordlist, bits);
173
- }
174
- function getBytesFromString(bytes, value) {
175
- return blake3(utf8ToBytes(value), { dkLen: bytes });
176
- }
177
-
178
- // src/symmetric-crypto/keys.ts
179
- async function importSymmetricCryptoKey(keyData) {
180
- return crypto.subtle.importKey(
181
- KEY_FORMAT,
182
- new Uint8Array(keyData),
183
- {
184
- name: AES_ALGORITHM,
185
- length: AES_KEY_BIT_LENGTH
186
- },
187
- true,
188
- ["encrypt", "decrypt"]
189
- );
190
- }
191
- async function createNISTbasedIV(freeField) {
192
- try {
193
- if (!freeField) {
194
- return randomBytes(IV_LEN_BYTES);
195
- }
196
- const iv = new Uint8Array(16);
197
- const randFiled = randomBytes(12);
198
- iv.set(randFiled, 0);
199
- const freeFiledFixedLength = await getBytesFromString(4, freeField);
200
- iv.set(freeFiledFixedLength, 12);
201
- return iv;
202
- } catch (error) {
203
- throw new Error("Failed to create IV", { cause: error });
204
- }
205
- }
206
- async function makeAuxFixedLength(aux) {
207
- return getBytesFromString(AUX_LEN / 8, aux);
208
- }
209
- async function encryptMessage(message, encryptionKey, iv, additionalData) {
210
- try {
211
- const encrypted = await crypto.subtle.encrypt(
212
- { name: AES_ALGORITHM, iv, additionalData },
213
- encryptionKey,
214
- message
215
- );
216
- return new Uint8Array(encrypted);
217
- } catch (error) {
218
- throw new Error("Failed to encrypt symmetrically", { cause: error });
219
- }
220
- }
221
- async function decryptMessage(ciphertext, iv, encryptionKey, additionalData) {
222
- try {
223
- const decrypted = await crypto.subtle.decrypt(
224
- { name: AES_ALGORITHM, iv, additionalData },
225
- encryptionKey,
226
- ciphertext
227
- );
228
- return new Uint8Array(decrypted);
229
- } catch (error) {
230
- throw new Error("Failed to decrypt symmetrically", { cause: error });
231
- }
232
- }
233
-
234
- // src/symmetric-crypto/aes.ts
235
- async function encryptSymmetrically(encryptionKey, message, aux, freeField) {
236
- try {
237
- const iv = await createNISTbasedIV(freeField);
238
- const additionalData = await makeAuxFixedLength(aux);
239
- const ciphertext = await encryptMessage(message, encryptionKey, iv, additionalData);
240
- return { ciphertext, iv };
241
- } catch (error) {
242
- throw new Error("Failed to encrypt symmetrically", { cause: error });
243
- }
244
- }
245
- async function decryptSymmetrically(encryptionKey, encryptedMessage, aux) {
246
- try {
247
- const additionalData = await makeAuxFixedLength(aux);
248
- const result = await decryptMessage(
249
- encryptedMessage.ciphertext,
250
- encryptedMessage.iv,
251
- encryptionKey,
252
- additionalData
253
- );
254
- return result;
255
- } catch (error) {
256
- throw new Error("Failed to decrypt symmetrically", { cause: error });
257
- }
258
- }
259
-
260
- // src/storage-service/sessionStorageService.ts
261
- function get(key) {
262
- return sessionStorage.getItem(key);
263
- }
264
- function set(key, value) {
265
- return sessionStorage.setItem(key, value);
266
- }
267
- function removeItem(key) {
268
- sessionStorage.removeItem(key);
269
- }
270
- function exists(key) {
271
- return !!sessionStorage.getItem(key);
272
- }
273
- function clear() {
274
- sessionStorage.clear();
275
- }
276
- var sessionStorageService = {
277
- set,
278
- get,
279
- removeItem,
280
- exists,
281
- clear
282
- };
283
- var sessionStorageService_default = sessionStorageService;
284
- function deriveSymmetricKeyFromContext(context, baseKey) {
285
- return blake3(baseKey, { context: UTF8ToUint8(context) });
286
- }
287
- async function deriveSymmetricCryptoKeyFromContext(context, baseKey) {
288
- try {
289
- if (baseKey.length != AES_KEY_BIT_LENGTH / 8) {
290
- throw new Error(`Base key length must be exactly ${AES_KEY_BIT_LENGTH / 8} bytes`);
291
- }
292
- if (!context) {
293
- throw new Error("Context is empry");
294
- }
295
- const keyBytes = deriveSymmetricKeyFromContext(context, baseKey);
296
- const key = await importSymmetricCryptoKey(keyBytes);
297
- return key;
298
- } catch (error) {
299
- throw new Error("Failed to derive CryptoKey from base key and context", { cause: error });
300
- }
301
- }
302
-
303
- // src/keystore-crypto/core.ts
304
- async function encryptKeystoreContent(secretKey, content, userID, tag) {
305
- try {
306
- const aux = userID + tag;
307
- const message = base64ToUint8Array(content);
308
- const result = await encryptSymmetrically(secretKey, message, aux);
309
- return result;
310
- } catch (error) {
311
- throw new Error("Failed to encrypt keystore content", { cause: error });
312
- }
313
- }
314
- async function decryptKeystoreContent(secretKey, encryptedKeys, userID, tag) {
315
- try {
316
- const aux = userID + tag;
317
- const content = await decryptSymmetrically(secretKey, encryptedKeys, aux);
318
- const result = uint8ArrayToBase64(content);
319
- return result;
320
- } catch (error) {
321
- throw new Error("Failed to decrypt keystore content", { cause: error });
322
- }
323
- }
324
- function getUserID() {
325
- try {
326
- const userID = sessionStorageService_default.get("userID");
327
- if (!userID) {
328
- throw new Error("No UserID");
329
- }
330
- return userID;
331
- } catch (error) {
332
- throw new Error("Failed to get UserID from session storage", { cause: error });
333
- }
334
- }
335
- function getBaseKey() {
336
- try {
337
- const baseKeyBase64 = sessionStorageService_default.get("baseKey");
338
- if (!baseKeyBase64) {
339
- throw new Error("No base key");
340
- }
341
- return base64ToUint8Array(baseKeyBase64);
342
- } catch (error) {
343
- throw new Error("Failed to get base key from session storage", { cause: error });
344
- }
345
- }
346
- async function deriveIdentityKeystoreKey(baseKey) {
347
- return deriveSymmetricCryptoKeyFromContext(CONTEXT_LOGIN, baseKey);
348
- }
349
- async function deriveRecoveryKey(recoveryCodes) {
350
- const recoveryCodesBuffer = await getBytesFromString(AES_KEY_BIT_LENGTH / 8, recoveryCodes);
351
- return deriveSymmetricCryptoKeyFromContext(CONTEXT_RECOVERY, recoveryCodesBuffer);
352
- }
353
- async function deriveEncryptionKeystoreKey(baseKey) {
354
- return deriveSymmetricCryptoKeyFromContext(CONTEXT_ENC_KEYSTORE, baseKey);
355
- }
356
- function generateKyberKeys(seed) {
357
- try {
358
- return ml_kem768.keygen(seed);
359
- } catch (error) {
360
- throw new Error("Failed to generate Kyber keys", { cause: error });
361
- }
362
- }
363
-
364
- // src/keystore-crypto/emailEncryptionKey.ts
365
- function generateRecoveryCodes() {
366
- return genMnemonic(AES_KEY_BIT_LENGTH);
367
- }
368
- async function generateEncryptionKeys() {
369
- try {
370
- const keyPair = await generateEccKeys();
371
- const keyPairKyber = generateKyberKeys();
372
- const result = {
373
- userPrivateKey: keyPair.privateKey,
374
- userPublicKey: keyPair.publicKey,
375
- userPublicKyberKey: keyPairKyber.publicKey,
376
- userPrivateKyberKey: keyPairKyber.secretKey
377
- };
378
- return result;
379
- } catch (error) {
380
- throw new Error("Failed to generate encryption keys", { cause: error });
381
- }
382
- }
383
- async function createEncryptionAndRecoveryKeystores() {
384
- try {
385
- const userID = getUserID();
386
- const baseKey = getBaseKey();
387
- const keys = await generateEncryptionKeys();
388
- const content = await encryptionKeysToBase64(keys);
389
- const secretKey = await deriveEncryptionKeystoreKey(baseKey);
390
- const ciphertext = await encryptKeystoreContent(secretKey, content, userID, ENCRYPTION_KEYSTORE_TAG);
391
- const encryptionKeystore = {
392
- userID,
393
- type: "encryption" /* ENCRYPTION */,
394
- encryptedKeys: ciphertext
395
- };
396
- const recoveryCodes = generateRecoveryCodes();
397
- const recoveryKey = await deriveRecoveryKey(recoveryCodes);
398
- const encKeys = await encryptKeystoreContent(recoveryKey, content, userID, RECOVERY_KEYSTORE_TAG);
399
- const recoveryKeystore = {
400
- userID,
401
- type: "recovery" /* RECOVERY */,
402
- encryptedKeys: encKeys
403
- };
404
- return { encryptionKeystore, recoveryKeystore, recoveryCodes };
405
- } catch (error) {
406
- throw new Error("Failed to create encryption and recovery keystores", { cause: error });
407
- }
408
- }
409
- async function openEncryptionKeystore(encryptedKeystore) {
410
- try {
411
- if (encryptedKeystore.type != "encryption" /* ENCRYPTION */) {
412
- throw new Error("Input is invalid");
413
- }
414
- const baseKey = getBaseKey();
415
- const secretKey = await deriveEncryptionKeystoreKey(baseKey);
416
- const json = await decryptKeystoreContent(
417
- secretKey,
418
- encryptedKeystore.encryptedKeys,
419
- encryptedKeystore.userID,
420
- ENCRYPTION_KEYSTORE_TAG
421
- );
422
- const keys = await base64ToEncryptionKeys(json);
423
- return keys;
424
- } catch (error) {
425
- throw new Error("Failed to open encryption keystore", { cause: error });
426
- }
427
- }
428
- async function openRecoveryKeystore(recoveryCodes, encryptedKeystore) {
429
- try {
430
- if (encryptedKeystore.type != "recovery" /* RECOVERY */) {
431
- throw new Error("Input is invalid");
432
- }
433
- const recoveryKey = await deriveRecoveryKey(recoveryCodes);
434
- const json = await decryptKeystoreContent(
435
- recoveryKey,
436
- encryptedKeystore.encryptedKeys,
437
- encryptedKeystore.userID,
438
- RECOVERY_KEYSTORE_TAG
439
- );
440
- const keys = await base64ToEncryptionKeys(json);
441
- return keys;
442
- } catch (error) {
443
- throw new Error("Failed to open recovery keystore", { cause: error });
444
- }
445
- }
446
-
447
- // src/keystore-crypto/userIdenityKey.ts
448
- async function generateIdentityKeys() {
449
- try {
450
- const keyPair = await generateEccKeys();
451
- const result = {
452
- userPrivateKey: keyPair.privateKey,
453
- userPublicKey: keyPair.publicKey
454
- };
455
- return result;
456
- } catch (error) {
457
- throw new Error("Failed to generate idenity keys", { cause: error });
458
- }
459
- }
460
- async function createIdentityKeystore() {
461
- try {
462
- const type = "identity" /* IDENTITY */;
463
- const userID = getUserID();
464
- const baseKey = getBaseKey();
465
- const keys = await generateIdentityKeys();
466
- const content = await identityKeysToBase64(keys);
467
- const secretKey = await deriveIdentityKeystoreKey(baseKey);
468
- const encryptedKeys = await encryptKeystoreContent(secretKey, content, userID, IDENTITY_KEYSTORE_TAG);
469
- const result = {
470
- userID,
471
- type,
472
- encryptedKeys
473
- };
474
- return result;
475
- } catch (error) {
476
- throw new Error("Failed to create identity keystore", { cause: error });
477
- }
478
- }
479
- async function openIdentityKeystore(encryptedKeystore) {
480
- try {
481
- if (encryptedKeystore.type != "identity" /* IDENTITY */) {
482
- throw new Error("Input is invalid");
483
- }
484
- const baseKey = getBaseKey();
485
- const secretKey = await deriveIdentityKeystoreKey(baseKey);
486
- const json = await decryptKeystoreContent(
487
- secretKey,
488
- encryptedKeystore.encryptedKeys,
489
- encryptedKeystore.userID,
490
- IDENTITY_KEYSTORE_TAG
491
- );
492
- const keys = await base64ToIdentityKeys(json);
493
- return keys;
494
- } catch (error) {
495
- throw new Error("Failed to open identity keystore", { cause: error });
496
- }
497
- }
498
-
499
- export { createEncryptionAndRecoveryKeystores, createIdentityKeystore, generateEncryptionKeys, generateIdentityKeys, generateRecoveryCodes, openEncryptionKeystore, openIdentityKeystore, openRecoveryKeystore };
500
- //# sourceMappingURL=keystore-crypto.mjs.map
501
- //# sourceMappingURL=keystore-crypto.mjs.map
1
+ import "./utils-DS04iUcX.mjs";
2
+ import "./hash-CXeGAwai.mjs";
3
+ import "./symmetric-crypto-CrdS1Che.mjs";
4
+ import "./derive-key-Be7hS-cN.mjs";
5
+ import "./post-quantum-crypto-Vv34t6gX.mjs";
6
+ import "./email-crypto-DJUEjTxA.mjs";
7
+ import { i as openRecoveryKeystore, n as createEncryptionAndRecoveryKeystores, r as openEncryptionKeystore } from "./keystore-crypto-Bjgriq9h.mjs";
8
+
9
+ export { createEncryptionAndRecoveryKeystores, openEncryptionKeystore, openRecoveryKeystore };
@@ -1,82 +1,48 @@
1
- import { AxiosResponse } from 'axios';
2
- import { KeystoreType, EncryptedKeystore, PublicKeys } from './types.mjs';
1
+ import { c as EncryptedKeystore, d as KeystoreType, g as PublicKeysBase64, h as PublicKeys } from "./types-DwQJtrTx.mjs";
2
+ import { AxiosResponse } from "axios";
3
3
 
4
+ //#region src/keystore-service/api.d.ts
4
5
  declare class KeyServiceAPI {
5
- private readonly baseUrl;
6
- constructor(baseUrl: string);
7
- /**
8
- * Converts the specific client error into a proprietary error for our apps
9
- * @param error
10
- * @private
11
- */
12
- private normalizeError;
13
- /**
14
- * Sends a user's encrypted keystore to the server
15
- * @param keystore - The encrypted keystore
16
- * @param url - The user specific part of the url
17
- * @returns Server response
18
- */
19
- sendEncryptedKeystoreToServer(encryptedKeystore: string, url: string): Promise<AxiosResponse>;
20
- /**
21
- * Requests a user's encrypted keystore from the server
22
- * @param url - The user-specific part of the url
23
- * @returns The user's encrypted keystore as base64 string
24
- */
25
- requestEncryptedKeystore(userID: string, keystoreType: KeystoreType): Promise<string>;
26
- /**
27
- * Uploads encrypted keystore to the server
28
- *
29
- * @param encryptedKeystore - The encrypted keystore
30
- * @param type - The keystore's type
31
- * @returns Server response
32
- */
33
- uploadKeystoreToServer(encryptedKeystore: EncryptedKeystore): Promise<AxiosResponse>;
34
- /**
35
- * Gets a user's encrypted keystore containing encryption keys from the server
36
- *
37
- * @returns Encrypted keystore containing encryption keys
38
- */
39
- getEncryptionKeystoreFromServer(): Promise<EncryptedKeystore>;
40
- /**
41
- * Gets a user's encrypted Identity Keystore from the server
42
- *
43
- * @returns Encrypted Identity Keystore
44
- */
45
- getIdentityKeystoreFromServer(): Promise<EncryptedKeystore>;
46
- /**
47
- * Gets a user's encrypted Recovery Keystore from the server
48
- *
49
- * @returns Encrypted Recovery Keystore
50
- */
51
- getRecoveryKeystoreFromServer(): Promise<EncryptedKeystore>;
52
- /**
53
- * Gets a user's encrypted Index Keystore from the server
54
- *
55
- * @returns Encrypted Index Keytore
56
- */
57
- getIndexKeystoreFromServer(): Promise<EncryptedKeystore>;
58
- /**
59
- * Gets a user's encrypted keystore from the server
60
- *
61
- * @param type - The requested keystore's type
62
- * @returns Encrypted Keytore
63
- */
64
- getKeystoreFromServer(type: KeystoreType): Promise<EncryptedKeystore>;
65
- /**
66
- * Obtains recipients public keys from the server
67
- *
68
- * @param emails - The recipients' emails
69
- * @returns The list of recipients' public keys
70
- */
71
- getRecipientsPublicKeysFromServer(emails: string[]): Promise<string[]>;
72
- /**
73
- * Obtains the recipient public keys from the server
74
- *
75
- * @param email - The recipients' emails
76
- * @returns The list of recipients' public keys
77
- */
78
- getRecipientsPublicKeys(emails: string[]): Promise<PublicKeys[]>;
6
+ private readonly baseUrl;
7
+ constructor(baseUrl: string);
8
+ /**
9
+ * Converts the specific client error into a proprietary error for our apps
10
+ * @param error
11
+ * @private
12
+ */
13
+ private normalizeError;
14
+ /**
15
+ * Sends a user's encrypted keystore to the server
16
+ * @param keystore - The encrypted keystore
17
+ * @param url - The user specific part of the url
18
+ * @returns Server response
19
+ */
20
+ uploadKeystoreToServer(encryptedKeystore: EncryptedKeystore): Promise<AxiosResponse>;
21
+ /**
22
+ * Requests a user's encrypted keystore from the server
23
+ * @param url - The user-specific part of the url
24
+ * @returns The user's encrypted keystore as base64 string
25
+ */
26
+ getKeystoreFromServer(userID: string, keystoreType: KeystoreType): Promise<EncryptedKeystore>;
27
+ /**
28
+ * Obtains recipients public keys from the server
29
+ *
30
+ * @param emails - The recipients' emails
31
+ * @returns The list of recipients' public keys
32
+ */
33
+ getRecipientsPublicKeysFromServer(emails: string[]): Promise<PublicKeysBase64[]>;
34
+ /**
35
+ * Obtains the recipient public keys from the server
36
+ *
37
+ * @param email - The recipients' emails
38
+ * @returns The list of recipients' public keys
39
+ */
40
+ getRecipientsPublicKeys(emails: string[]): Promise<PublicKeys[]>;
79
41
  }
80
42
  declare function getKeyServiceAPI(baseUrl: string): KeyServiceAPI;
81
-
82
- export { KeyServiceAPI, getKeyServiceAPI };
43
+ declare namespace index_d_exports {
44
+ export { KeyServiceAPI, getKeyServiceAPI };
45
+ }
46
+ //#endregion
47
+ export { KeyServiceAPI, getKeyServiceAPI, index_d_exports as t };
48
+ //# sourceMappingURL=keystore-service.d.mts.map