internxt-crypto 0.0.10-alpha → 0.0.13

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 (158) hide show
  1. package/README.md +3 -4
  2. package/dist/aes-DSDxP8uF.mjs +184 -0
  3. package/dist/aes-DSDxP8uF.mjs.map +1 -0
  4. package/dist/aes-bOrKZuUC.js +226 -0
  5. package/dist/aes-bOrKZuUC.js.map +1 -0
  6. package/dist/asymmetric-crypto.d.mts +5 -2
  7. package/dist/asymmetric-crypto.d.mts.map +1 -0
  8. package/dist/asymmetric-crypto.d.ts +5 -2
  9. package/dist/asymmetric-crypto.d.ts.map +1 -0
  10. package/dist/asymmetric-crypto.js +9 -92
  11. package/dist/asymmetric-crypto.mjs +2 -84
  12. package/dist/chunk-DQk6qfdC.mjs +18 -0
  13. package/dist/chunk-EbLFQX5m.js +60 -0
  14. package/dist/constants.d.mts +5 -11
  15. package/dist/constants.d.mts.map +1 -0
  16. package/dist/constants.d.ts +5 -11
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/constants.js +33 -49
  19. package/dist/constants.js.map +1 -1
  20. package/dist/constants.mjs +32 -40
  21. package/dist/constants.mjs.map +1 -1
  22. package/dist/derive-key.d.mts +11 -8
  23. package/dist/derive-key.d.mts.map +1 -0
  24. package/dist/derive-key.d.ts +11 -8
  25. package/dist/derive-key.d.ts.map +1 -0
  26. package/dist/derive-key.js +13 -795
  27. package/dist/derive-key.mjs +2 -783
  28. package/dist/deriveKeysFromPassword-DJRWZ8Rw.mjs +735 -0
  29. package/dist/deriveKeysFromPassword-DJRWZ8Rw.mjs.map +1 -0
  30. package/dist/deriveKeysFromPassword-Ko7NxkHM.js +2492 -0
  31. package/dist/deriveKeysFromPassword-Ko7NxkHM.js.map +1 -0
  32. package/dist/email-crypto.d.mts +55 -78
  33. package/dist/email-crypto.d.mts.map +1 -0
  34. package/dist/email-crypto.d.ts +55 -78
  35. package/dist/email-crypto.d.ts.map +1 -0
  36. package/dist/email-crypto.js +13 -1409
  37. package/dist/email-crypto.mjs +2 -1380
  38. package/dist/email-search.d.mts +36 -32
  39. package/dist/email-search.d.mts.map +1 -0
  40. package/dist/email-search.d.ts +36 -32
  41. package/dist/email-search.d.ts.map +1 -0
  42. package/dist/email-search.js +534 -540
  43. package/dist/email-search.js.map +1 -1
  44. package/dist/email-search.mjs +532 -538
  45. package/dist/email-search.mjs.map +1 -1
  46. package/dist/emailEncryptionKey-27mIHh18.mjs +150 -0
  47. package/dist/emailEncryptionKey-27mIHh18.mjs.map +1 -0
  48. package/dist/emailEncryptionKey-DbaDAdoW.js +167 -0
  49. package/dist/emailEncryptionKey-DbaDAdoW.js.map +1 -0
  50. package/dist/emailKeys-BJGdkLrg.js +593 -0
  51. package/dist/emailKeys-BJGdkLrg.js.map +1 -0
  52. package/dist/emailKeys-Fp9WR3wl.mjs +509 -0
  53. package/dist/emailKeys-Fp9WR3wl.mjs.map +1 -0
  54. package/dist/genID-3Er5IowC.mjs +153 -0
  55. package/dist/genID-3Er5IowC.mjs.map +1 -0
  56. package/dist/genID-YJSl3YhL.js +238 -0
  57. package/dist/genID-YJSl3YhL.js.map +1 -0
  58. package/dist/hash.d.mts +18 -15
  59. package/dist/hash.d.mts.map +1 -0
  60. package/dist/hash.d.ts +18 -15
  61. package/dist/hash.d.ts.map +1 -0
  62. package/dist/hash.js +12 -95
  63. package/dist/hash.mjs +2 -84
  64. package/dist/index.d.mts +15 -18
  65. package/dist/index.d.mts.map +1 -0
  66. package/dist/index.d.ts +15 -18
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +125 -2698
  69. package/dist/index.mjs +13 -2538
  70. package/dist/keys-BfcaiAOv.mjs +90 -0
  71. package/dist/keys-BfcaiAOv.mjs.map +1 -0
  72. package/dist/keys-CinT7kEY.js +125 -0
  73. package/dist/keys-CinT7kEY.js.map +1 -0
  74. package/dist/keystore-crypto.d.mts +17 -46
  75. package/dist/keystore-crypto.d.mts.map +1 -0
  76. package/dist/keystore-crypto.d.ts +17 -46
  77. package/dist/keystore-crypto.d.ts.map +1 -0
  78. package/dist/keystore-crypto.js +5 -529
  79. package/dist/keystore-crypto.mjs +2 -500
  80. package/dist/kyber1024-PpwE1rki.mjs +144 -0
  81. package/dist/kyber1024-PpwE1rki.mjs.map +1 -0
  82. package/dist/kyber1024-jeKS8CXf.js +173 -0
  83. package/dist/kyber1024-jeKS8CXf.js.map +1 -0
  84. package/dist/{kyber768-B87rMQ7u.d.mts → kyber768-DGBB_RS7.d.ts} +8 -6
  85. package/dist/kyber768-DGBB_RS7.d.ts.map +1 -0
  86. package/dist/{kyber768-B87rMQ7u.d.ts → kyber768-DzIcGg1i.d.mts} +8 -6
  87. package/dist/kyber768-DzIcGg1i.d.mts.map +1 -0
  88. package/dist/mac-BMb1F0dN.js +170 -0
  89. package/dist/mac-BMb1F0dN.js.map +1 -0
  90. package/dist/mac-ZpRlx8Fs.mjs +116 -0
  91. package/dist/mac-ZpRlx8Fs.mjs.map +1 -0
  92. package/dist/post-quantum-crypto.d.mts +23 -27
  93. package/dist/post-quantum-crypto.d.mts.map +1 -0
  94. package/dist/post-quantum-crypto.d.ts +23 -27
  95. package/dist/post-quantum-crypto.d.ts.map +1 -0
  96. package/dist/post-quantum-crypto.js +14 -92
  97. package/dist/post-quantum-crypto.mjs +2 -89
  98. package/dist/storage-service.d.mts +28 -34
  99. package/dist/storage-service.d.mts.map +1 -0
  100. package/dist/storage-service.d.ts +28 -34
  101. package/dist/storage-service.d.ts.map +1 -0
  102. package/dist/storage-service.js +51 -53
  103. package/dist/storage-service.js.map +1 -1
  104. package/dist/storage-service.mjs +40 -51
  105. package/dist/storage-service.mjs.map +1 -1
  106. package/dist/symmetric-crypto.d.mts +8 -7
  107. package/dist/symmetric-crypto.d.mts.map +1 -0
  108. package/dist/symmetric-crypto.d.ts +8 -7
  109. package/dist/symmetric-crypto.d.ts.map +1 -0
  110. package/dist/symmetric-crypto.js +10 -142
  111. package/dist/symmetric-crypto.mjs +2 -133
  112. package/dist/types.d.mts +71 -69
  113. package/dist/types.d.mts.map +1 -0
  114. package/dist/types.d.ts +71 -69
  115. package/dist/types.d.ts.map +1 -0
  116. package/dist/types.js +8 -10
  117. package/dist/types.js.map +1 -1
  118. package/dist/types.mjs +7 -9
  119. package/dist/types.mjs.map +1 -1
  120. package/dist/utils.d.mts +34 -78
  121. package/dist/utils.d.mts.map +1 -0
  122. package/dist/utils.d.ts +34 -78
  123. package/dist/utils.d.ts.map +1 -0
  124. package/dist/utils.js +17 -313
  125. package/dist/utils.mjs +2 -272
  126. package/package.json +21 -87
  127. package/dist/asymmetric-crypto.js.map +0 -1
  128. package/dist/asymmetric-crypto.mjs.map +0 -1
  129. package/dist/derive-key.js.map +0 -1
  130. package/dist/derive-key.mjs.map +0 -1
  131. package/dist/email-crypto.js.map +0 -1
  132. package/dist/email-crypto.mjs.map +0 -1
  133. package/dist/email-service.d.mts +0 -38
  134. package/dist/email-service.d.ts +0 -38
  135. package/dist/email-service.js +0 -154
  136. package/dist/email-service.js.map +0 -1
  137. package/dist/email-service.mjs +0 -147
  138. package/dist/email-service.mjs.map +0 -1
  139. package/dist/hash.js.map +0 -1
  140. package/dist/hash.mjs.map +0 -1
  141. package/dist/index.js.map +0 -1
  142. package/dist/index.mjs.map +0 -1
  143. package/dist/keystore-crypto.js.map +0 -1
  144. package/dist/keystore-crypto.mjs.map +0 -1
  145. package/dist/keystore-service.d.mts +0 -82
  146. package/dist/keystore-service.d.ts +0 -82
  147. package/dist/keystore-service.js +0 -349
  148. package/dist/keystore-service.js.map +0 -1
  149. package/dist/keystore-service.mjs +0 -342
  150. package/dist/keystore-service.mjs.map +0 -1
  151. package/dist/post-quantum-crypto.js.map +0 -1
  152. package/dist/post-quantum-crypto.mjs.map +0 -1
  153. package/dist/symmetric-crypto.js.map +0 -1
  154. package/dist/symmetric-crypto.mjs.map +0 -1
  155. package/dist/utils-BDaK_d6T.d.ts +0 -114
  156. package/dist/utils-v34IRTIx.d.mts +0 -114
  157. package/dist/utils.js.map +0 -1
  158. package/dist/utils.mjs.map +0 -1
@@ -1,501 +1,3 @@
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';
1
+ import { n as openEncryptionKeystore, r as openRecoveryKeystore, t as createEncryptionAndRecoveryKeystores } from "./emailEncryptionKey-27mIHh18.mjs";
7
2
 
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
3
+ export { createEncryptionAndRecoveryKeystores, openEncryptionKeystore, openRecoveryKeystore };
@@ -0,0 +1,144 @@
1
+ import { t as __exportAll } from "./chunk-DQk6qfdC.mjs";
2
+ import { ml_kem1024, ml_kem512, ml_kem768 } from "@noble/post-quantum/ml-kem.js";
3
+
4
+ //#region src/post-quantum-crypto/kyber768.ts
5
+ /**
6
+ * Generates public and secret Kyber keys
7
+ *
8
+ * @param seed - The optional seed
9
+ * @returns The generated Kyber key pair.
10
+ */
11
+ function generateKyberKeys$2(seed) {
12
+ try {
13
+ return ml_kem768.keygen(seed);
14
+ } catch (error) {
15
+ throw new Error("Failed to generate Kyber keys", { cause: error });
16
+ }
17
+ }
18
+ /**
19
+ * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms
20
+ *
21
+ * @param publicKey - The public Kyber key
22
+ * @returns The resulting encapsulation and the generated shared secret.
23
+ */
24
+ function encapsulateKyber$2(publicKey) {
25
+ try {
26
+ return ml_kem768.encapsulate(publicKey);
27
+ } catch (error) {
28
+ throw new Error("Failed to encapsulate", { cause: error });
29
+ }
30
+ }
31
+ /**
32
+ * Decapsulates the encapsulated shared secret using Kyber algorithms
33
+ *
34
+ * @param cipherText - The encapsulated key
35
+ * @param secretKey - The private Kyber key
36
+ * @returns The resulting decapsulated shared secret.
37
+ */
38
+ function decapsulateKyber$2(cipherText, secretKey) {
39
+ try {
40
+ return ml_kem768.decapsulate(cipherText, secretKey);
41
+ } catch (error) {
42
+ throw new Error("Failed to decapsulate", { cause: error });
43
+ }
44
+ }
45
+
46
+ //#endregion
47
+ //#region src/post-quantum-crypto/kyber512.ts
48
+ var kyber512_exports = /* @__PURE__ */ __exportAll({
49
+ decapsulateKyber: () => decapsulateKyber$1,
50
+ encapsulateKyber: () => encapsulateKyber$1,
51
+ generateKyberKeys: () => generateKyberKeys$1
52
+ });
53
+ /**
54
+ * Generates public and secret Kyber keys
55
+ *
56
+ * @param seed - The optional seed
57
+ * @returns The generated Kyber key pair.
58
+ */
59
+ function generateKyberKeys$1(seed) {
60
+ try {
61
+ return ml_kem512.keygen(seed);
62
+ } catch (error) {
63
+ throw new Error("Failed to generate Kyber keys", { cause: error });
64
+ }
65
+ }
66
+ /**
67
+ * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms
68
+ *
69
+ * @param publicKey - The public Kyber key
70
+ * @returns The resulting encapsulation and the generated shared secret.
71
+ */
72
+ function encapsulateKyber$1(publicKey) {
73
+ try {
74
+ return ml_kem512.encapsulate(publicKey);
75
+ } catch (error) {
76
+ throw new Error("Failed to encapsulate", { cause: error });
77
+ }
78
+ }
79
+ /**
80
+ * Decapsulates the encapsulated shared secret using Kyber algorithms
81
+ *
82
+ * @param cipherText - The encapsulated key
83
+ * @param secretKey - The private Kyber key
84
+ * @returns The resulting decapsulated shared secret.
85
+ */
86
+ function decapsulateKyber$1(cipherText, secretKey) {
87
+ try {
88
+ return ml_kem512.decapsulate(cipherText, secretKey);
89
+ } catch (error) {
90
+ throw new Error("Failed to decapsulate", { cause: error });
91
+ }
92
+ }
93
+
94
+ //#endregion
95
+ //#region src/post-quantum-crypto/kyber1024.ts
96
+ var kyber1024_exports = /* @__PURE__ */ __exportAll({
97
+ decapsulateKyber: () => decapsulateKyber,
98
+ encapsulateKyber: () => encapsulateKyber,
99
+ generateKyberKeys: () => generateKyberKeys
100
+ });
101
+ /**
102
+ * Generates public and secret Kyber keys
103
+ *
104
+ * @param seed - The optional seed
105
+ * @returns The generated Kyber key pair.
106
+ */
107
+ function generateKyberKeys(seed) {
108
+ try {
109
+ return ml_kem1024.keygen(seed);
110
+ } catch (error) {
111
+ throw new Error("Failed to generate Kyber keys", { cause: error });
112
+ }
113
+ }
114
+ /**
115
+ * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms
116
+ *
117
+ * @param publicKey - The public Kyber key
118
+ * @returns The resulting encapsulation and the generated shared secret.
119
+ */
120
+ function encapsulateKyber(publicKey) {
121
+ try {
122
+ return ml_kem1024.encapsulate(publicKey);
123
+ } catch (error) {
124
+ throw new Error("Failed to encapsulate", { cause: error });
125
+ }
126
+ }
127
+ /**
128
+ * Decapsulates the encapsulated shared secret using Kyber algorithms
129
+ *
130
+ * @param cipherText - The encapsulated key
131
+ * @param secretKey - The private Kyber key
132
+ * @returns The resulting decapsulated shared secret.
133
+ */
134
+ function decapsulateKyber(cipherText, secretKey) {
135
+ try {
136
+ return ml_kem1024.decapsulate(cipherText, secretKey);
137
+ } catch (error) {
138
+ throw new Error("Failed to decapsulate", { cause: error });
139
+ }
140
+ }
141
+
142
+ //#endregion
143
+ export { generateKyberKeys$2 as a, encapsulateKyber$2 as i, kyber512_exports as n, decapsulateKyber$2 as r, kyber1024_exports as t };
144
+ //# sourceMappingURL=kyber1024-PpwE1rki.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kyber1024-PpwE1rki.mjs","names":["generateKyberKeys","encapsulateKyber","decapsulateKyber","generateKyberKeys","encapsulateKyber","decapsulateKyber"],"sources":["../src/post-quantum-crypto/kyber768.ts","../src/post-quantum-crypto/kyber512.ts","../src/post-quantum-crypto/kyber1024.ts"],"sourcesContent":["import { ml_kem768 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem768.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem768.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem768.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","import { ml_kem512 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem512.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem512.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem512.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","import { ml_kem1024 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem1024.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem1024.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem1024.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n"],"mappings":";;;;;;;;;;AAQA,SAAgBA,oBAAkB,MAGhC;AACA,KAAI;AACF,SAAO,UAAU,OAAO,KAAK;UACtB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgBC,mBAAiB,WAG/B;AACA,KAAI;AACF,SAAO,UAAU,YAAY,UAAU;UAChC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgBC,mBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAO,UAAU,YAAY,YAAY,UAAU;UAC5C,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;ACvC9D,SAAgBC,oBAAkB,MAGhC;AACA,KAAI;AACF,SAAO,UAAU,OAAO,KAAK;UACtB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgBC,mBAAiB,WAG/B;AACA,KAAI;AACF,SAAO,UAAU,YAAY,UAAU;UAChC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgBC,mBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAO,UAAU,YAAY,YAAY,UAAU;UAC5C,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;ACvC9D,SAAgB,kBAAkB,MAGhC;AACA,KAAI;AACF,SAAO,WAAW,OAAO,KAAK;UACvB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgB,iBAAiB,WAG/B;AACA,KAAI;AACF,SAAO,WAAW,YAAY,UAAU;UACjC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgB,iBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAO,WAAW,YAAY,YAAY,UAAU;UAC7C,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC"}