internxt-crypto 0.0.13 → 1.0.0

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 (154) hide show
  1. package/README.md +44 -72
  2. package/dist/aes-B8TA-JKq.mjs +49 -0
  3. package/dist/aes-B8TA-JKq.mjs.map +1 -0
  4. package/dist/aes-CuW_SPl-.js +67 -0
  5. package/dist/aes-CuW_SPl-.js.map +1 -0
  6. package/dist/asymmetric-crypto.d.mts +8 -31
  7. package/dist/asymmetric-crypto.d.mts.map +1 -1
  8. package/dist/asymmetric-crypto.d.ts +8 -31
  9. package/dist/asymmetric-crypto.d.ts.map +1 -1
  10. package/dist/asymmetric-crypto.js +30 -7
  11. package/dist/asymmetric-crypto.js.map +1 -0
  12. package/dist/asymmetric-crypto.mjs +28 -2
  13. package/dist/asymmetric-crypto.mjs.map +1 -0
  14. package/dist/constants.d.mts +7 -14
  15. package/dist/constants.d.mts.map +1 -1
  16. package/dist/constants.d.ts +7 -14
  17. package/dist/constants.d.ts.map +1 -1
  18. package/dist/constants.js +11 -25
  19. package/dist/constants.js.map +1 -1
  20. package/dist/constants.mjs +7 -14
  21. package/dist/constants.mjs.map +1 -1
  22. package/dist/core-Bj26rNdA.js +227 -0
  23. package/dist/core-Bj26rNdA.js.map +1 -0
  24. package/dist/core-pEGygy6S.mjs +173 -0
  25. package/dist/core-pEGygy6S.mjs.map +1 -0
  26. package/dist/derive-key.d.mts +1 -74
  27. package/dist/derive-key.d.mts.map +1 -1
  28. package/dist/derive-key.d.ts +1 -74
  29. package/dist/derive-key.d.ts.map +1 -1
  30. package/dist/derive-key.js +3 -11
  31. package/dist/derive-key.mjs +2 -2
  32. package/dist/derive-password.d.mts +22 -0
  33. package/dist/derive-password.d.mts.map +1 -0
  34. package/dist/derive-password.d.ts +22 -0
  35. package/dist/derive-password.d.ts.map +1 -0
  36. package/dist/derive-password.js +5 -0
  37. package/dist/derive-password.mjs +3 -0
  38. package/dist/deriveKeysFromKey-C4McqO6_.js +47 -0
  39. package/dist/deriveKeysFromKey-C4McqO6_.js.map +1 -0
  40. package/dist/deriveKeysFromKey-DPU_h7wr.mjs +35 -0
  41. package/dist/deriveKeysFromKey-DPU_h7wr.mjs.map +1 -0
  42. package/dist/{deriveKeysFromPassword-Ko7NxkHM.js → deriveKeysFromPassword-C7xAGGsh.js} +5 -177
  43. package/dist/deriveKeysFromPassword-C7xAGGsh.js.map +1 -0
  44. package/dist/{deriveKeysFromPassword-DJRWZ8Rw.mjs → deriveKeysFromPassword-DXgSvTNC.mjs} +7 -131
  45. package/dist/deriveKeysFromPassword-DXgSvTNC.mjs.map +1 -0
  46. package/dist/email-crypto.d.mts +24 -46
  47. package/dist/email-crypto.d.mts.map +1 -1
  48. package/dist/email-crypto.d.ts +24 -46
  49. package/dist/email-crypto.d.ts.map +1 -1
  50. package/dist/email-crypto.js +121 -12
  51. package/dist/email-crypto.js.map +1 -0
  52. package/dist/email-crypto.mjs +115 -2
  53. package/dist/email-crypto.mjs.map +1 -0
  54. package/dist/email-search.d.mts +18 -18
  55. package/dist/email-search.d.mts.map +1 -1
  56. package/dist/email-search.d.ts +18 -18
  57. package/dist/email-search.d.ts.map +1 -1
  58. package/dist/email-search.js +25 -597
  59. package/dist/email-search.mjs +2 -573
  60. package/dist/{emailEncryptionKey-27mIHh18.mjs → emailEncryptionKey-BtSPYd9M.mjs} +23 -46
  61. package/dist/emailEncryptionKey-BtSPYd9M.mjs.map +1 -0
  62. package/dist/{emailEncryptionKey-DbaDAdoW.js → emailEncryptionKey-C4X1Bwy4.js} +22 -45
  63. package/dist/emailEncryptionKey-C4X1Bwy4.js.map +1 -0
  64. package/dist/{genID-3Er5IowC.mjs → genID-D08K7JPr.mjs} +4 -40
  65. package/dist/genID-D08K7JPr.mjs.map +1 -0
  66. package/dist/{genID-YJSl3YhL.js → genID-cWOPmspk.js} +2 -50
  67. package/dist/genID-cWOPmspk.js.map +1 -0
  68. package/dist/hash.d.mts +24 -36
  69. package/dist/hash.d.mts.map +1 -1
  70. package/dist/hash.d.ts +24 -36
  71. package/dist/hash.d.ts.map +1 -1
  72. package/dist/hash.js +88 -10
  73. package/dist/hash.js.map +1 -0
  74. package/dist/hash.mjs +82 -2
  75. package/dist/hash.mjs.map +1 -0
  76. package/dist/index.d.mts +17 -16
  77. package/dist/index.d.mts.map +1 -1
  78. package/dist/index.d.ts +17 -16
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +60 -83
  81. package/dist/index.mjs +13 -11
  82. package/dist/keystore-crypto.d.mts +6 -6
  83. package/dist/keystore-crypto.d.mts.map +1 -1
  84. package/dist/keystore-crypto.d.ts +6 -6
  85. package/dist/keystore-crypto.d.ts.map +1 -1
  86. package/dist/keystore-crypto.js +1 -1
  87. package/dist/keystore-crypto.mjs +1 -1
  88. package/dist/post-quantum-crypto.d.mts +5 -41
  89. package/dist/post-quantum-crypto.d.mts.map +1 -1
  90. package/dist/post-quantum-crypto.d.ts +5 -41
  91. package/dist/post-quantum-crypto.d.ts.map +1 -1
  92. package/dist/post-quantum-crypto.js +49 -16
  93. package/dist/post-quantum-crypto.js.map +1 -0
  94. package/dist/post-quantum-crypto.mjs +46 -2
  95. package/dist/post-quantum-crypto.mjs.map +1 -0
  96. package/dist/search-B9YM3XAA.mjs +587 -0
  97. package/dist/search-B9YM3XAA.mjs.map +1 -0
  98. package/dist/search-DUTm4-rN.js +731 -0
  99. package/dist/search-DUTm4-rN.js.map +1 -0
  100. package/dist/symmetric-crypto.d.mts +13 -42
  101. package/dist/symmetric-crypto.d.mts.map +1 -1
  102. package/dist/symmetric-crypto.d.ts +13 -42
  103. package/dist/symmetric-crypto.d.ts.map +1 -1
  104. package/dist/symmetric-crypto.js +2 -6
  105. package/dist/symmetric-crypto.mjs +2 -2
  106. package/dist/types.d.mts +16 -39
  107. package/dist/types.d.mts.map +1 -1
  108. package/dist/types.d.ts +16 -39
  109. package/dist/types.d.ts.map +1 -1
  110. package/dist/types.js.map +1 -1
  111. package/dist/types.mjs.map +1 -1
  112. package/dist/utils.d.mts +1 -19
  113. package/dist/utils.d.mts.map +1 -1
  114. package/dist/utils.d.ts +1 -19
  115. package/dist/utils.d.ts.map +1 -1
  116. package/dist/utils.js +1 -3
  117. package/dist/utils.mjs +2 -2
  118. package/dist/xwing-CQmQX6hn.mjs +16 -0
  119. package/dist/xwing-CQmQX6hn.mjs.map +1 -0
  120. package/dist/xwing-iRWVRtNE.js +34 -0
  121. package/dist/xwing-iRWVRtNE.js.map +1 -0
  122. package/package.json +4 -2
  123. package/dist/aes-DSDxP8uF.mjs +0 -184
  124. package/dist/aes-DSDxP8uF.mjs.map +0 -1
  125. package/dist/aes-bOrKZuUC.js +0 -226
  126. package/dist/aes-bOrKZuUC.js.map +0 -1
  127. package/dist/deriveKeysFromPassword-DJRWZ8Rw.mjs.map +0 -1
  128. package/dist/deriveKeysFromPassword-Ko7NxkHM.js.map +0 -1
  129. package/dist/email-search.js.map +0 -1
  130. package/dist/email-search.mjs.map +0 -1
  131. package/dist/emailEncryptionKey-27mIHh18.mjs.map +0 -1
  132. package/dist/emailEncryptionKey-DbaDAdoW.js.map +0 -1
  133. package/dist/emailKeys-BJGdkLrg.js +0 -593
  134. package/dist/emailKeys-BJGdkLrg.js.map +0 -1
  135. package/dist/emailKeys-Fp9WR3wl.mjs +0 -509
  136. package/dist/emailKeys-Fp9WR3wl.mjs.map +0 -1
  137. package/dist/genID-3Er5IowC.mjs.map +0 -1
  138. package/dist/genID-YJSl3YhL.js.map +0 -1
  139. package/dist/keys-BfcaiAOv.mjs +0 -90
  140. package/dist/keys-BfcaiAOv.mjs.map +0 -1
  141. package/dist/keys-CinT7kEY.js +0 -125
  142. package/dist/keys-CinT7kEY.js.map +0 -1
  143. package/dist/kyber1024-PpwE1rki.mjs +0 -144
  144. package/dist/kyber1024-PpwE1rki.mjs.map +0 -1
  145. package/dist/kyber1024-jeKS8CXf.js +0 -173
  146. package/dist/kyber1024-jeKS8CXf.js.map +0 -1
  147. package/dist/kyber768-DGBB_RS7.d.ts +0 -32
  148. package/dist/kyber768-DGBB_RS7.d.ts.map +0 -1
  149. package/dist/kyber768-DzIcGg1i.d.mts +0 -32
  150. package/dist/kyber768-DzIcGg1i.d.mts.map +0 -1
  151. package/dist/mac-BMb1F0dN.js +0 -170
  152. package/dist/mac-BMb1F0dN.js.map +0 -1
  153. package/dist/mac-ZpRlx8Fs.mjs +0 -116
  154. package/dist/mac-ZpRlx8Fs.mjs.map +0 -1
package/README.md CHANGED
@@ -43,16 +43,15 @@ Builds the app for production to the `build` folder.
43
43
 
44
44
  ### Key Management
45
45
 
46
- - **`derive-key`** - Key derivation functions for deriving cryptographic keys from passwords (ARGON2) and base key (BLAKE3 in KDF mode)
46
+ - **`derive-key`** - Key derivation functions for deriving cryptographic keys from base key (BLAKE3 in KDF mode)
47
+ - **`derive-password`** - Key derivation functions for deriving cryptographic keys from passwords (ARGON2)
47
48
  - **`key-wrapper`** - Key wrapping and unwrapping functions for secure symmetric key storage and transport
48
49
  - **`keystore-crypto`** - Keystore cryptographic operations for securing user's keys
49
- - **`keystore-service`** - Keystore management service for communicating with the server
50
50
 
51
51
  ### Email Security
52
52
 
53
53
  - **`email-crypto`** - End-to-end email encryption and decryption using hybrid cryptography and password-protection
54
54
  - **`email-search`** - Email indexing on the client side to enable search while preserving privacy
55
- - **`email-service`** - Email management service for communicating with the server
56
55
 
57
56
  ### Infrastructure
58
57
 
@@ -65,109 +64,82 @@ Builds the app for production to the `build` folder.
65
64
 
66
65
  ```typescript
67
66
  import {
68
- asymmetric,
69
- symmetric,
70
- utils,
71
- emailCrypto,
72
- pq,
73
- keystoreService,
74
- deriveKey,
75
- hash,
67
+ generateEccKeys,
68
+ deriveSecretKey,
69
+ UTF8ToUint8,
70
+ genSymmetricKey,
71
+ encryptSymmetrically,
76
72
  } from 'internxt-crypto';
77
73
 
78
74
  // Asymmetric encryption
79
- const keysAlice = await asymmetric.generateEccKeys();
80
- const keysBob = await asymmetric.generateEccKeys();
81
- const resultAlice = await asymmetric.deriveSecretKey(keysBob.publicKey, keysAlice.privateKey);
82
- const resultBob = await asymmetric.deriveSecretKey(keysAlice.publicKey, keysBob.privateKey);
75
+ const keysAlice = await generateEccKeys();
76
+ const keysBob = await generateEccKeys();
77
+ const resultAlice = await deriveSecretKey(keysBob.publicKey, keysAlice.privateKey);
78
+ const resultBob = await deriveSecretKey(keysAlice.publicKey, keysBob.privateKey);
83
79
  expect(resultAlice).toStrictEqual(resultBob);
84
80
 
85
81
  // Symmetric encryption
86
- const data = utils.UTF8ToUint8('Sensitive information to encrypt'); // convert to Uint8Array
82
+ const data = UTF8ToUint8('Sensitive information to encrypt'); // convert to Uint8Array
87
83
  const additionalData = 'Additional non-secret data';
88
- const key = await symmetric.genSymmetricCryptoKey(); // CryptoKey
89
- const ciphertext: Uint8Array = await symmetric.encryptSymmetrically(key, data, additionalData);
90
- const plainText = await symmetric.decryptSymmetrically(encryptionKey, ciphertext, additionalData);
84
+ const key = genSymmetricKey();
85
+ const ciphertext: Uint8Array = await encryptSymmetrically(key, data, additionalData);
86
+ const plainText = await decryptSymmetrically(encryptionKey, ciphertext, additionalData);
91
87
  expect(data).toStrictEqual(plainText);
92
88
 
93
89
  // Post qunatum cryptography
94
- const keys = pq.generateKyberKeys();
95
- const { cipherText, sharedSecret } = pq.encapsulateKyber(keys.publicKey);
96
- const result = pq.decapsulateKyber(cipherText, keys.secretKey);
90
+ const keys = generateKyberKeys();
91
+ const { cipherText, sharedSecret } = encapsulateKyber(keys.publicKey);
92
+ const result = decapsulateKyber(cipherText, keys.secretKey);
97
93
  expect(result).toStrictEqual(sharedSecret);
98
94
 
99
95
  // Hash
100
- const result = await hash.hashData(['']);
96
+ const result = hashData(['']);
101
97
  const expectedResult = 'af1349b9f5f9a1a6a0404dea36dcc9499bcb25c9adc112b7cc9a93cae41f3262';
102
98
  expect(result).toStrictEqual(expectedResult);
103
99
 
104
100
  // Key derivation
105
101
  const context = 'BLAKE3 2019-12-27 16:29:52 test vectors context';
106
- const baseKey = symmetric.genSymmetricKey(); // Uint8Array
107
- const key = await deriveKey.deriveSymmetricCryptoKeyFromContext(context, baseKey);
108
- expect(key).instanceOf(CryptoKey);
102
+ const baseKey = genSymmetricKey();
103
+ const key = deriveSymmetricKeyFromContext(context, baseKey);
109
104
 
105
+ // Key derivation from password
110
106
  const password = 'your password';
111
- const { keyHex, saltHex } = await deriveKey.getKeyFromPasswordHex(password);
112
- const result = await deriveKey.verifyKeyFromPasswordHex(password, saltHex, keyHex);
113
- expect(result).toBe(true);
107
+ const { key, salt } = await getKeyFromPassword(password);
114
108
 
115
109
  // Hybrid email encryption
116
-
117
- const emailBody: EmailBody = {
110
+ const email: EmailBody = {
118
111
  text: 'email text',
119
- createdAt: '2025-06-14T08:11:22.000Z',
120
- labels: ['label 1', 'label2'],
121
- };
122
-
123
- const userAlice = {
124
- email: 'alice email',
125
- name: 'alice',
112
+ subject: 'email subject',
126
113
  };
127
-
128
- const userBob = {
114
+ const { secretKey: bobPrivateKeys, publicKey: bobPublicKeys } = await generateEmailKeys();
115
+ const bobWithPublicKeys = {
129
116
  email: 'bob email',
130
- name: 'bob',
117
+ publicHybridKey: bobPublicKeys,
131
118
  };
132
- const { privateKeys: alicePrivateKeys, publicKeys: alicePublicKeys } = await emailCrypto.generateEmailKeys();
133
- const { privateKeys: bobPrivateKeys, publicKeys: bobPublicKeys } = await emailCrypto.generateEmailKeys();
119
+ const encryptedEmail = await encryptEmailHybrid(email, bobWithPublicKeys);
120
+ const decryptedEmail = await decryptEmailHybrid(encryptedEmail, bobPrivateKeys);
134
121
 
135
- const emailBody: EmailBody = {
136
- text: 'email body',
137
- };
138
-
139
- const emailParams: EmailPublicParameters = {
140
- labels: ['label 1', 'label2'],
141
- createdAt: '2025-06-14T08:11:22.000Z',
142
- subject: 'email subject',
143
- sender: userAlice,
144
- recipient: userBob,
145
- replyToEmailID: generateUuid(),
146
- };
147
-
148
- const email: Email = {
149
- id: generateUuid(),
150
- params: emailParams,
151
- body: emailBody,
152
- };
153
- const encryptedEmail = await emailCrypto.encryptEmailHybrid(email, bobPublicKeys, alicePrivateKeys);
154
- const decryptedEmail = await emailCrypto.decryptEmailHybrid(encryptedEmail, alicePublicKeys, bobPrivateKeys);
155
- expect(decryptedEmail).toStrictEqual(email);
122
+ expect(encryptedEmail.encEmailBody.encSubject).not.toBe(email.subject);
123
+ expect(decryptedEmailBody).toStrictEqual(email);
156
124
 
157
125
 
158
126
  // password-protected email
159
127
  const sharedSecret = 'secret shared between Alice and Bob';
160
- const encryptedEmail = await emailCrypto.createPwdProtectedEmail(email, sharedSecret);
161
- const decryptedEmail = await emailCrypto.decryptPwdProtectedEmail(encryptedEmail, sharedSecret);
128
+ const encryptedEmail = await createPwdProtectedEmail(email, sharedSecret);
129
+ const decryptedEmail = await decryptPwdProtectedEmail(encryptedEmail, sharedSecret);
162
130
  expect(decryptedEmail).toStrictEqual(email);
163
131
 
164
132
  // keystore
165
-
166
- // For this to work, session storage must have UserID and baseKey
167
- const { encryptionKeystore, recoveryKeystore, recoveryCodes } = await createEncryptionAndRecoveryKeystores();
168
- const result_enc = await keystoreService.openEncryptionKeystore(encryptionKeystore);
169
- const result_rec = await keystoreService.openRecoveryKeystore(recoveryCodes, recoveryKeystore);
170
- expect(result_enc).toStrictEqual(result_rec);
133
+ const userEmail = 'user email';
134
+ const secretKey = genSymmetricKey();
135
+ const { encryptionKeystore, recoveryKeystore, recoveryCodes } = await createEncryptionAndRecoveryKeystores(
136
+ userEmail,
137
+ secretKey,
138
+ );
139
+ const resultEnc = await openEncryptionKeystore(encryptionKeystore, secretKey);
140
+ const resultRec = await openRecoveryKeystore(recoveryCodes, recoveryKeystore);
141
+
142
+ expect(resultEnc).toStrictEqual(resultRec);
171
143
 
172
144
  // Email storage and search
173
145
 
@@ -0,0 +1,49 @@
1
+ import { AES_KEY_BYTE_LENGTH, IV_LEN_BYTES } from "./constants.mjs";
2
+ import { concatBytes, randomBytes } from "@noble/hashes/utils.js";
3
+ import { gcm } from "@noble/ciphers/webcrypto.js";
4
+
5
+ //#region src/symmetric-crypto/aes.ts
6
+ /**
7
+ * Symmetrically encrypts the message
8
+ *
9
+ * @param encryptionKey - The symmetric key used for message encryption
10
+ * @param message - The message to encrypt
11
+ * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.
12
+ * @returns The resulting ciphertext.
13
+ */
14
+ async function encryptSymmetrically(encryptionKey, message, aux) {
15
+ try {
16
+ const iv = randomBytes(IV_LEN_BYTES);
17
+ return concatBytes(await gcm(encryptionKey, iv, aux).encrypt(message), iv);
18
+ } catch (error) {
19
+ throw new Error("Failed to encrypt symmetrically", { cause: error });
20
+ }
21
+ }
22
+ /**
23
+ * Decryps symmetrically encrypted message
24
+ *
25
+ * @param encryptionKey - The symmetric key used for message encryption
26
+ * @param encryptedMessage - The ciphertext
27
+ * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.
28
+ * @returns The resulting ciphertext.
29
+ */
30
+ async function decryptSymmetrically(encryptionKey, encryptedMessage, aux) {
31
+ try {
32
+ const ciphertext = encryptedMessage.slice(0, encryptedMessage.length - IV_LEN_BYTES);
33
+ return await gcm(encryptionKey, encryptedMessage.slice(encryptedMessage.length - IV_LEN_BYTES), aux).decrypt(ciphertext);
34
+ } catch (error) {
35
+ throw new Error("Failed to decrypt symmetrically", { cause: error });
36
+ }
37
+ }
38
+ /**
39
+ * Generates symmetric key as Uint8Array
40
+ *
41
+ * @returns The generated Uint8Array.
42
+ */
43
+ function genSymmetricKey() {
44
+ return randomBytes(AES_KEY_BYTE_LENGTH);
45
+ }
46
+
47
+ //#endregion
48
+ export { encryptSymmetrically as n, genSymmetricKey as r, decryptSymmetrically as t };
49
+ //# sourceMappingURL=aes-B8TA-JKq.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes-B8TA-JKq.mjs","names":["aeadCipher"],"sources":["../src/symmetric-crypto/aes.ts"],"sourcesContent":["import { concatBytes, randomBytes } from '@noble/hashes/utils.js';\nimport { IV_LEN_BYTES, AES_KEY_BYTE_LENGTH } from '../constants';\nimport { gcm as aeadCipher } from '@noble/ciphers/webcrypto.js';\n\n/**\n * Symmetrically encrypts the message\n *\n * @param encryptionKey - The symmetric key used for message encryption\n * @param message - The message to encrypt\n * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.\n * @returns The resulting ciphertext.\n */\nexport async function encryptSymmetrically(\n encryptionKey: Uint8Array,\n message: Uint8Array,\n aux?: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const iv = randomBytes(IV_LEN_BYTES);\n const ciphertext = await aeadCipher(encryptionKey, iv, aux).encrypt(message);\n return concatBytes(ciphertext, iv);\n } catch (error) {\n throw new Error('Failed to encrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Decryps symmetrically encrypted message\n *\n * @param encryptionKey - The symmetric key used for message encryption\n * @param encryptedMessage - The ciphertext\n * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.\n * @returns The resulting ciphertext.\n */\nexport async function decryptSymmetrically(\n encryptionKey: Uint8Array,\n encryptedMessage: Uint8Array,\n aux?: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const ciphertext = encryptedMessage.slice(0, encryptedMessage.length - IV_LEN_BYTES);\n const iv = encryptedMessage.slice(encryptedMessage.length - IV_LEN_BYTES);\n const result = await aeadCipher(encryptionKey, iv, aux).decrypt(ciphertext);\n return result;\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Generates symmetric key as Uint8Array\n *\n * @returns The generated Uint8Array.\n */\nexport function genSymmetricKey(): Uint8Array {\n return randomBytes(AES_KEY_BYTE_LENGTH);\n}\n"],"mappings":";;;;;;;;;;;;;AAYA,eAAsB,qBACpB,eACA,SACA,KACqB;AACrB,KAAI;EACF,MAAM,KAAK,YAAY,aAAa;AAEpC,SAAO,YADY,MAAMA,IAAW,eAAe,IAAI,IAAI,CAAC,QAAQ,QAAQ,EAC7C,GAAG;UAC3B,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;AAYxE,eAAsB,qBACpB,eACA,kBACA,KACqB;AACrB,KAAI;EACF,MAAM,aAAa,iBAAiB,MAAM,GAAG,iBAAiB,SAAS,aAAa;AAGpF,SADe,MAAMA,IAAW,eADrB,iBAAiB,MAAM,iBAAiB,SAAS,aAAa,EACtB,IAAI,CAAC,QAAQ,WAAW;UAEpE,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC;;;;;;;;AASxE,SAAgB,kBAA8B;AAC5C,QAAO,YAAY,oBAAoB"}
@@ -0,0 +1,67 @@
1
+ const require_chunk = require('./chunk-EbLFQX5m.js');
2
+ const require_constants = require('./constants.js');
3
+ let _noble_hashes_utils_js = require("@noble/hashes/utils.js");
4
+ let _noble_ciphers_webcrypto_js = require("@noble/ciphers/webcrypto.js");
5
+
6
+ //#region src/symmetric-crypto/aes.ts
7
+ /**
8
+ * Symmetrically encrypts the message
9
+ *
10
+ * @param encryptionKey - The symmetric key used for message encryption
11
+ * @param message - The message to encrypt
12
+ * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.
13
+ * @returns The resulting ciphertext.
14
+ */
15
+ async function encryptSymmetrically(encryptionKey, message, aux) {
16
+ try {
17
+ const iv = (0, _noble_hashes_utils_js.randomBytes)(require_constants.IV_LEN_BYTES);
18
+ return (0, _noble_hashes_utils_js.concatBytes)(await (0, _noble_ciphers_webcrypto_js.gcm)(encryptionKey, iv, aux).encrypt(message), iv);
19
+ } catch (error) {
20
+ throw new Error("Failed to encrypt symmetrically", { cause: error });
21
+ }
22
+ }
23
+ /**
24
+ * Decryps symmetrically encrypted message
25
+ *
26
+ * @param encryptionKey - The symmetric key used for message encryption
27
+ * @param encryptedMessage - The ciphertext
28
+ * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.
29
+ * @returns The resulting ciphertext.
30
+ */
31
+ async function decryptSymmetrically(encryptionKey, encryptedMessage, aux) {
32
+ try {
33
+ const ciphertext = encryptedMessage.slice(0, encryptedMessage.length - require_constants.IV_LEN_BYTES);
34
+ return await (0, _noble_ciphers_webcrypto_js.gcm)(encryptionKey, encryptedMessage.slice(encryptedMessage.length - require_constants.IV_LEN_BYTES), aux).decrypt(ciphertext);
35
+ } catch (error) {
36
+ throw new Error("Failed to decrypt symmetrically", { cause: error });
37
+ }
38
+ }
39
+ /**
40
+ * Generates symmetric key as Uint8Array
41
+ *
42
+ * @returns The generated Uint8Array.
43
+ */
44
+ function genSymmetricKey() {
45
+ return (0, _noble_hashes_utils_js.randomBytes)(require_constants.AES_KEY_BYTE_LENGTH);
46
+ }
47
+
48
+ //#endregion
49
+ Object.defineProperty(exports, 'decryptSymmetrically', {
50
+ enumerable: true,
51
+ get: function () {
52
+ return decryptSymmetrically;
53
+ }
54
+ });
55
+ Object.defineProperty(exports, 'encryptSymmetrically', {
56
+ enumerable: true,
57
+ get: function () {
58
+ return encryptSymmetrically;
59
+ }
60
+ });
61
+ Object.defineProperty(exports, 'genSymmetricKey', {
62
+ enumerable: true,
63
+ get: function () {
64
+ return genSymmetricKey;
65
+ }
66
+ });
67
+ //# sourceMappingURL=aes-CuW_SPl-.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aes-CuW_SPl-.js","names":["IV_LEN_BYTES","AES_KEY_BYTE_LENGTH"],"sources":["../src/symmetric-crypto/aes.ts"],"sourcesContent":["import { concatBytes, randomBytes } from '@noble/hashes/utils.js';\nimport { IV_LEN_BYTES, AES_KEY_BYTE_LENGTH } from '../constants';\nimport { gcm as aeadCipher } from '@noble/ciphers/webcrypto.js';\n\n/**\n * Symmetrically encrypts the message\n *\n * @param encryptionKey - The symmetric key used for message encryption\n * @param message - The message to encrypt\n * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.\n * @returns The resulting ciphertext.\n */\nexport async function encryptSymmetrically(\n encryptionKey: Uint8Array,\n message: Uint8Array,\n aux?: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const iv = randomBytes(IV_LEN_BYTES);\n const ciphertext = await aeadCipher(encryptionKey, iv, aux).encrypt(message);\n return concatBytes(ciphertext, iv);\n } catch (error) {\n throw new Error('Failed to encrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Decryps symmetrically encrypted message\n *\n * @param encryptionKey - The symmetric key used for message encryption\n * @param encryptedMessage - The ciphertext\n * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.\n * @returns The resulting ciphertext.\n */\nexport async function decryptSymmetrically(\n encryptionKey: Uint8Array,\n encryptedMessage: Uint8Array,\n aux?: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const ciphertext = encryptedMessage.slice(0, encryptedMessage.length - IV_LEN_BYTES);\n const iv = encryptedMessage.slice(encryptedMessage.length - IV_LEN_BYTES);\n const result = await aeadCipher(encryptionKey, iv, aux).decrypt(ciphertext);\n return result;\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Generates symmetric key as Uint8Array\n *\n * @returns The generated Uint8Array.\n */\nexport function genSymmetricKey(): Uint8Array {\n return randomBytes(AES_KEY_BYTE_LENGTH);\n}\n"],"mappings":";;;;;;;;;;;;;;AAYA,eAAsB,qBACpB,eACA,SACA,KACqB;AACrB,KAAI;EACF,MAAM,6CAAiBA,+BAAa;AAEpC,iDADmB,2CAAiB,eAAe,IAAI,IAAI,CAAC,QAAQ,QAAQ,EAC7C,GAAG;UAC3B,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;AAYxE,eAAsB,qBACpB,eACA,kBACA,KACqB;AACrB,KAAI;EACF,MAAM,aAAa,iBAAiB,MAAM,GAAG,iBAAiB,SAASA,+BAAa;AAGpF,SADe,2CAAiB,eADrB,iBAAiB,MAAM,iBAAiB,SAASA,+BAAa,EACtB,IAAI,CAAC,QAAQ,WAAW;UAEpE,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC;;;;;;;;AASxE,SAAgB,kBAA8B;AAC5C,gDAAmBC,sCAAoB"}
@@ -2,43 +2,20 @@
2
2
  /**
3
3
  * Derives secret key from the other user's public key and own private key
4
4
  *
5
- * @param otherUserPublicKey - The public key of the other user
6
- * @param ownPrivateKey - The private key
5
+ * @param aliceSecretKey - The secret key of the user deriving the shared secret key
6
+ * @param bobPublicKey - The public key of the other user
7
7
  * @returns The derived secret key bits
8
8
  */
9
- declare function deriveSecretKey(otherUserPublicKey: CryptoKey, ownPrivateKey: CryptoKey): Promise<Uint8Array>;
10
- //#endregion
11
- //#region src/asymmetric-crypto/keys.d.ts
9
+ declare function deriveSecretKey(aliceSecretKey: Uint8Array, bobPublicKey: Uint8Array): Promise<Uint8Array>;
12
10
  /**
13
11
  * Generates elliptic curve key pair
14
12
  *
15
13
  * @returns The generated key pair
16
14
  */
17
- declare function generateEccKeys(): Promise<CryptoKeyPair>;
18
- /**
19
- * Converts public CryptoKey into Uint8Array using SubjectPublicKeyInfo format (RFC 5280)
20
- *
21
- * @returns The Uint8Array representation of the public key
22
- */
23
- declare function exportPublicKey(key: CryptoKey): Promise<Uint8Array>;
24
- /**
25
- * Converts public key in SubjectPublicKeyInfo format (RFC 5280) to CryptoKey
26
- *
27
- * @returns The CryptoKey representation of the public key
28
- */
29
- declare function importPublicKey(spkiKeyData: Uint8Array): Promise<CryptoKey>;
30
- /**
31
- * Converts private key in CryptoKey to PKCS #8 format (RFC 5208)
32
- *
33
- * @returns The Uint8Array representation of the private key
34
- */
35
- declare function exportPrivateKey(key: CryptoKey): Promise<Uint8Array>;
36
- /**
37
- * Converts private key in PKCS #8 format (RFC 5208) to CryptoKey
38
- *
39
- * @returns The CryptoKey representation of the private key
40
- */
41
- declare function importPrivateKey(pkcs8KeyData: Uint8Array): Promise<CryptoKey>;
15
+ declare function generateEccKeys(): Promise<{
16
+ secretKey: Uint8Array;
17
+ publicKey: Uint8Array;
18
+ }>;
42
19
  //#endregion
43
- export { deriveSecretKey, exportPrivateKey, exportPublicKey, generateEccKeys, importPrivateKey, importPublicKey };
20
+ export { deriveSecretKey, generateEccKeys };
44
21
  //# sourceMappingURL=asymmetric-crypto.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"asymmetric-crypto.d.mts","names":[],"sources":["../src/asymmetric-crypto/ellipticCurve.ts","../src/asymmetric-crypto/keys.ts"],"mappings":";;AASA;;;;;;iBAAsB,eAAA,CAAgB,kBAAA,EAAoB,SAAA,EAAW,aAAA,EAAe,SAAA,GAAY,OAAA,CAAQ,UAAA;;;;AAAxG;;;;iBCFsB,eAAA,CAAA,GAAmB,OAAA,CAAQ,aAAA;;;;;;iBAmB3B,eAAA,CAAgB,GAAA,EAAK,SAAA,GAAY,OAAA,CAAQ,UAAA;;;;;;iBAczC,eAAA,CAAgB,WAAA,EAAa,UAAA,GAAa,OAAA,CAAQ,SAAA;;;;AAjCxE;;iBAsDsB,gBAAA,CAAiB,GAAA,EAAK,SAAA,GAAY,OAAA,CAAQ,UAAA;;;AAnChE;;;iBAiDsB,gBAAA,CAAiB,YAAA,EAAc,UAAA,GAAa,OAAA,CAAQ,SAAA"}
1
+ {"version":3,"file":"asymmetric-crypto.d.mts","names":[],"sources":["../src/asymmetric-crypto/ellipticCurve.ts"],"mappings":";;AASA;;;;;;iBAAsB,eAAA,CAAgB,cAAA,EAAgB,UAAA,EAAY,YAAA,EAAc,UAAA,GAAa,OAAA,CAAQ,UAAA;;;;;;iBAa/E,eAAA,CAAA,GAAmB,OAAA;EAAU,SAAA,EAAW,UAAA;EAAY,SAAA,EAAW,UAAA;AAAA"}
@@ -2,43 +2,20 @@
2
2
  /**
3
3
  * Derives secret key from the other user's public key and own private key
4
4
  *
5
- * @param otherUserPublicKey - The public key of the other user
6
- * @param ownPrivateKey - The private key
5
+ * @param aliceSecretKey - The secret key of the user deriving the shared secret key
6
+ * @param bobPublicKey - The public key of the other user
7
7
  * @returns The derived secret key bits
8
8
  */
9
- declare function deriveSecretKey(otherUserPublicKey: CryptoKey, ownPrivateKey: CryptoKey): Promise<Uint8Array>;
10
- //#endregion
11
- //#region src/asymmetric-crypto/keys.d.ts
9
+ declare function deriveSecretKey(aliceSecretKey: Uint8Array, bobPublicKey: Uint8Array): Promise<Uint8Array>;
12
10
  /**
13
11
  * Generates elliptic curve key pair
14
12
  *
15
13
  * @returns The generated key pair
16
14
  */
17
- declare function generateEccKeys(): Promise<CryptoKeyPair>;
18
- /**
19
- * Converts public CryptoKey into Uint8Array using SubjectPublicKeyInfo format (RFC 5280)
20
- *
21
- * @returns The Uint8Array representation of the public key
22
- */
23
- declare function exportPublicKey(key: CryptoKey): Promise<Uint8Array>;
24
- /**
25
- * Converts public key in SubjectPublicKeyInfo format (RFC 5280) to CryptoKey
26
- *
27
- * @returns The CryptoKey representation of the public key
28
- */
29
- declare function importPublicKey(spkiKeyData: Uint8Array): Promise<CryptoKey>;
30
- /**
31
- * Converts private key in CryptoKey to PKCS #8 format (RFC 5208)
32
- *
33
- * @returns The Uint8Array representation of the private key
34
- */
35
- declare function exportPrivateKey(key: CryptoKey): Promise<Uint8Array>;
36
- /**
37
- * Converts private key in PKCS #8 format (RFC 5208) to CryptoKey
38
- *
39
- * @returns The CryptoKey representation of the private key
40
- */
41
- declare function importPrivateKey(pkcs8KeyData: Uint8Array): Promise<CryptoKey>;
15
+ declare function generateEccKeys(): Promise<{
16
+ secretKey: Uint8Array;
17
+ publicKey: Uint8Array;
18
+ }>;
42
19
  //#endregion
43
- export { deriveSecretKey, exportPrivateKey, exportPublicKey, generateEccKeys, importPrivateKey, importPublicKey };
20
+ export { deriveSecretKey, generateEccKeys };
44
21
  //# sourceMappingURL=asymmetric-crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"asymmetric-crypto.d.ts","names":[],"sources":["../src/asymmetric-crypto/ellipticCurve.ts","../src/asymmetric-crypto/keys.ts"],"mappings":";;AASA;;;;;;iBAAsB,eAAA,CAAgB,kBAAA,EAAoB,SAAA,EAAW,aAAA,EAAe,SAAA,GAAY,OAAA,CAAQ,UAAA;;;;AAAxG;;;;iBCFsB,eAAA,CAAA,GAAmB,OAAA,CAAQ,aAAA;;;;;;iBAmB3B,eAAA,CAAgB,GAAA,EAAK,SAAA,GAAY,OAAA,CAAQ,UAAA;;;;;;iBAczC,eAAA,CAAgB,WAAA,EAAa,UAAA,GAAa,OAAA,CAAQ,SAAA;;;;AAjCxE;;iBAsDsB,gBAAA,CAAiB,GAAA,EAAK,SAAA,GAAY,OAAA,CAAQ,UAAA;;;AAnChE;;;iBAiDsB,gBAAA,CAAiB,YAAA,EAAc,UAAA,GAAa,OAAA,CAAQ,SAAA"}
1
+ {"version":3,"file":"asymmetric-crypto.d.ts","names":[],"sources":["../src/asymmetric-crypto/ellipticCurve.ts"],"mappings":";;AASA;;;;;;iBAAsB,eAAA,CAAgB,cAAA,EAAgB,UAAA,EAAY,YAAA,EAAc,UAAA,GAAa,OAAA,CAAQ,UAAA;;;;;;iBAa/E,eAAA,CAAA,GAAmB,OAAA;EAAU,SAAA,EAAW,UAAA;EAAY,SAAA,EAAW,UAAA;AAAA"}
@@ -1,9 +1,32 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_keys = require('./keys-CinT7kEY.js');
2
+ const require_chunk = require('./chunk-EbLFQX5m.js');
3
+ let _noble_curves_webcrypto_js = require("@noble/curves/webcrypto.js");
3
4
 
4
- exports.deriveSecretKey = require_keys.deriveSecretKey;
5
- exports.exportPrivateKey = require_keys.exportPrivateKey;
6
- exports.exportPublicKey = require_keys.exportPublicKey;
7
- exports.generateEccKeys = require_keys.generateEccKeys;
8
- exports.importPrivateKey = require_keys.importPrivateKey;
9
- exports.importPublicKey = require_keys.importPublicKey;
5
+ //#region src/asymmetric-crypto/ellipticCurve.ts
6
+ /**
7
+ * Derives secret key from the other user's public key and own private key
8
+ *
9
+ * @param aliceSecretKey - The secret key of the user deriving the shared secret key
10
+ * @param bobPublicKey - The public key of the other user
11
+ * @returns The derived secret key bits
12
+ */
13
+ async function deriveSecretKey(aliceSecretKey, bobPublicKey) {
14
+ try {
15
+ return await _noble_curves_webcrypto_js.x25519.getSharedSecret(aliceSecretKey, bobPublicKey);
16
+ } catch (error) {
17
+ throw new Error("Failed to derive elliptic curve secret key", { cause: error });
18
+ }
19
+ }
20
+ /**
21
+ * Generates elliptic curve key pair
22
+ *
23
+ * @returns The generated key pair
24
+ */
25
+ async function generateEccKeys() {
26
+ return _noble_curves_webcrypto_js.x25519.keygen();
27
+ }
28
+
29
+ //#endregion
30
+ exports.deriveSecretKey = deriveSecretKey;
31
+ exports.generateEccKeys = generateEccKeys;
32
+ //# sourceMappingURL=asymmetric-crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asymmetric-crypto.js","names":["x25519"],"sources":["../src/asymmetric-crypto/ellipticCurve.ts"],"sourcesContent":["import { x25519 } from '@noble/curves/webcrypto.js';\n\n/**\n * Derives secret key from the other user's public key and own private key\n *\n * @param aliceSecretKey - The secret key of the user deriving the shared secret key\n * @param bobPublicKey - The public key of the other user\n * @returns The derived secret key bits\n */\nexport async function deriveSecretKey(aliceSecretKey: Uint8Array, bobPublicKey: Uint8Array): Promise<Uint8Array> {\n try {\n return await x25519.getSharedSecret(aliceSecretKey, bobPublicKey);\n } catch (error) {\n throw new Error('Failed to derive elliptic curve secret key', { cause: error });\n }\n}\n\n/**\n * Generates elliptic curve key pair\n *\n * @returns The generated key pair\n */\nexport async function generateEccKeys(): Promise<{ secretKey: Uint8Array; publicKey: Uint8Array }> {\n return x25519.keygen();\n}\n"],"mappings":";;;;;;;;;;;;AASA,eAAsB,gBAAgB,gBAA4B,cAA+C;AAC/G,KAAI;AACF,SAAO,MAAMA,kCAAO,gBAAgB,gBAAgB,aAAa;UAC1D,OAAO;AACd,QAAM,IAAI,MAAM,8CAA8C,EAAE,OAAO,OAAO,CAAC;;;;;;;;AASnF,eAAsB,kBAA6E;AACjG,QAAOA,kCAAO,QAAQ"}
@@ -1,3 +1,29 @@
1
- import { a as importPublicKey, i as importPrivateKey, n as exportPublicKey, o as deriveSecretKey, r as generateEccKeys, t as exportPrivateKey } from "./keys-BfcaiAOv.mjs";
1
+ import { x25519 } from "@noble/curves/webcrypto.js";
2
2
 
3
- export { deriveSecretKey, exportPrivateKey, exportPublicKey, generateEccKeys, importPrivateKey, importPublicKey };
3
+ //#region src/asymmetric-crypto/ellipticCurve.ts
4
+ /**
5
+ * Derives secret key from the other user's public key and own private key
6
+ *
7
+ * @param aliceSecretKey - The secret key of the user deriving the shared secret key
8
+ * @param bobPublicKey - The public key of the other user
9
+ * @returns The derived secret key bits
10
+ */
11
+ async function deriveSecretKey(aliceSecretKey, bobPublicKey) {
12
+ try {
13
+ return await x25519.getSharedSecret(aliceSecretKey, bobPublicKey);
14
+ } catch (error) {
15
+ throw new Error("Failed to derive elliptic curve secret key", { cause: error });
16
+ }
17
+ }
18
+ /**
19
+ * Generates elliptic curve key pair
20
+ *
21
+ * @returns The generated key pair
22
+ */
23
+ async function generateEccKeys() {
24
+ return x25519.keygen();
25
+ }
26
+
27
+ //#endregion
28
+ export { deriveSecretKey, generateEccKeys };
29
+ //# sourceMappingURL=asymmetric-crypto.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asymmetric-crypto.mjs","names":[],"sources":["../src/asymmetric-crypto/ellipticCurve.ts"],"sourcesContent":["import { x25519 } from '@noble/curves/webcrypto.js';\n\n/**\n * Derives secret key from the other user's public key and own private key\n *\n * @param aliceSecretKey - The secret key of the user deriving the shared secret key\n * @param bobPublicKey - The public key of the other user\n * @returns The derived secret key bits\n */\nexport async function deriveSecretKey(aliceSecretKey: Uint8Array, bobPublicKey: Uint8Array): Promise<Uint8Array> {\n try {\n return await x25519.getSharedSecret(aliceSecretKey, bobPublicKey);\n } catch (error) {\n throw new Error('Failed to derive elliptic curve secret key', { cause: error });\n }\n}\n\n/**\n * Generates elliptic curve key pair\n *\n * @returns The generated key pair\n */\nexport async function generateEccKeys(): Promise<{ secretKey: Uint8Array; publicKey: Uint8Array }> {\n return x25519.keygen();\n}\n"],"mappings":";;;;;;;;;;AASA,eAAsB,gBAAgB,gBAA4B,cAA+C;AAC/G,KAAI;AACF,SAAO,MAAM,OAAO,gBAAgB,gBAAgB,aAAa;UAC1D,OAAO;AACd,QAAM,IAAI,MAAM,8CAA8C,EAAE,OAAO,OAAO,CAAC;;;;;;;;AASnF,eAAsB,kBAA6E;AACjG,QAAO,OAAO,QAAQ"}
@@ -1,12 +1,6 @@
1
1
  //#region src/constants.d.ts
2
- declare const AES_ALGORITHM = "AES-GCM";
3
- declare const AES_KEY_BIT_LENGTH = 256;
4
- declare const AUX_BYTE_LEN = 16;
5
- declare const IV_LEN_BYTES = 16;
6
- declare const KEY_WRAPPING_ALGORITHM = "AES-KW";
7
- declare const KEY_FORMAT = "raw";
8
- declare const CONTEXT_WRAPPING = "CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets";
9
- declare const ECC_ALGORITHM = "X25519";
2
+ declare const AES_KEY_BYTE_LENGTH = 32;
3
+ declare const IV_LEN_BYTES = 12;
10
4
  declare const CONTEXT_ENC_KEYSTORE = "CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore";
11
5
  declare const CONTEXT_RECOVERY = "CRYPTO library 2025-07-30 16:20:00 key for account recovery";
12
6
  declare const CONTEXT_INDEX = "CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices";
@@ -16,18 +10,17 @@ declare const ARGON2ID_ITERATIONS = 4;
16
10
  declare const ARGON2ID_MEMORY_SIZE = 65536;
17
11
  declare const ARGON2ID_SALT_BYTE_LENGTH = 16;
18
12
  declare const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;
19
- declare const KYBER512_PUBLIC_KEY_LENGTH = 800;
20
- declare const KYBER512_SECRET_KEY_LENGTH = 1632;
21
13
  declare const KYBER768_PUBLIC_KEY_LENGTH = 1184;
22
14
  declare const KYBER768_SECRET_KEY_LENGTH = 2400;
23
- declare const KYBER1024_PUBLIC_KEY_LENGTH = 1568;
24
- declare const KYBER1024_SECRET_KEY_LENGTH = 3168;
25
15
  declare const KYBER_SEED_LENGTH = 64;
26
- declare const HASH_BIT_LEN = 256;
27
16
  declare const MAX_CACHE_SIZE = 600000000;
28
17
  declare const MAX_EMAIL_PER_BATCH = 100;
29
18
  declare const DB_LABEL = "email";
30
19
  declare const DB_VERSION = 1;
20
+ declare const XWING_PUBLIC_KEY_LENGTH = 1216;
21
+ declare const XWING_SECRET_KEY_LENGTH = 32;
22
+ declare const XWING_SEED_BYTE_LENGTH = 32;
23
+ declare const XWING_CIPHERTEXT_BYTE_LENGTH = 1120;
31
24
  //#endregion
32
- export { AES_ALGORITHM, AES_KEY_BIT_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, AUX_BYTE_LEN, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, CONTEXT_WRAPPING, DB_LABEL, DB_VERSION, ECC_ALGORITHM, HASH_BIT_LEN, IV_LEN_BYTES, KEY_FORMAT, KEY_WRAPPING_ALGORITHM, KYBER1024_PUBLIC_KEY_LENGTH, KYBER1024_SECRET_KEY_LENGTH, KYBER512_PUBLIC_KEY_LENGTH, KYBER512_SECRET_KEY_LENGTH, KYBER768_PUBLIC_KEY_LENGTH, KYBER768_SECRET_KEY_LENGTH, KYBER_SEED_LENGTH, MAX_CACHE_SIZE, MAX_EMAIL_PER_BATCH };
25
+ export { AES_KEY_BYTE_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, DB_LABEL, DB_VERSION, IV_LEN_BYTES, KYBER768_PUBLIC_KEY_LENGTH, KYBER768_SECRET_KEY_LENGTH, KYBER_SEED_LENGTH, MAX_CACHE_SIZE, MAX_EMAIL_PER_BATCH, XWING_CIPHERTEXT_BYTE_LENGTH, XWING_PUBLIC_KEY_LENGTH, XWING_SECRET_KEY_LENGTH, XWING_SEED_BYTE_LENGTH };
33
26
  //# sourceMappingURL=constants.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","names":[],"sources":["../src/constants.ts"],"mappings":";cAAa,aAAA;AAAA,cACA,kBAAA;AAAA,cACA,YAAA;AAAA,cACA,YAAA;AAAA,cAEA,sBAAA;AAAA,cACA,UAAA;AAAA,cACA,gBAAA;AAAA,cAEA,aAAA;AAAA,cAEA,oBAAA;AAAA,cACA,gBAAA;AAAA,cACA,aAAA;AAAA,cACA,cAAA;AAAA,cAGA,oBAAA;AAAA,cACA,mBAAA;AAAA,cACA,oBAAA;AAAA,cACA,yBAAA;AAAA,cACA,2BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,cAEA,2BAAA;AAAA,cACA,2BAAA;AAAA,cAEA,iBAAA;AAAA,cAEA,YAAA;AAAA,cAEA,cAAA;AAAA,cACA,mBAAA;AAAA,cACA,QAAA;AAAA,cACA,UAAA"}
1
+ {"version":3,"file":"constants.d.mts","names":[],"sources":["../src/constants.ts"],"mappings":";cAAa,mBAAA;AAAA,cACA,YAAA;AAAA,cAEA,oBAAA;AAAA,cACA,gBAAA;AAAA,cACA,aAAA;AAAA,cACA,cAAA;AAAA,cAGA,oBAAA;AAAA,cACA,mBAAA;AAAA,cACA,oBAAA;AAAA,cACA,yBAAA;AAAA,cACA,2BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,cACA,iBAAA;AAAA,cAEA,cAAA;AAAA,cACA,mBAAA;AAAA,cACA,QAAA;AAAA,cACA,UAAA;AAAA,cAEA,uBAAA;AAAA,cACA,uBAAA;AAAA,cACA,sBAAA;AAAA,cACA,4BAAA"}
@@ -1,12 +1,6 @@
1
1
  //#region src/constants.d.ts
2
- declare const AES_ALGORITHM = "AES-GCM";
3
- declare const AES_KEY_BIT_LENGTH = 256;
4
- declare const AUX_BYTE_LEN = 16;
5
- declare const IV_LEN_BYTES = 16;
6
- declare const KEY_WRAPPING_ALGORITHM = "AES-KW";
7
- declare const KEY_FORMAT = "raw";
8
- declare const CONTEXT_WRAPPING = "CRYPTO library 2025-08-22 18:10:00 key derived from ecc and kyber secrets";
9
- declare const ECC_ALGORITHM = "X25519";
2
+ declare const AES_KEY_BYTE_LENGTH = 32;
3
+ declare const IV_LEN_BYTES = 12;
10
4
  declare const CONTEXT_ENC_KEYSTORE = "CRYPTO library 2025-07-30 16:18:03 key for opening encryption keys keystore";
11
5
  declare const CONTEXT_RECOVERY = "CRYPTO library 2025-07-30 16:20:00 key for account recovery";
12
6
  declare const CONTEXT_INDEX = "CRYPTO library 2025-07-30 17:20:00 key for protecting current search indices";
@@ -16,18 +10,17 @@ declare const ARGON2ID_ITERATIONS = 4;
16
10
  declare const ARGON2ID_MEMORY_SIZE = 65536;
17
11
  declare const ARGON2ID_SALT_BYTE_LENGTH = 16;
18
12
  declare const ARGON2ID_OUTPUT_BYTE_LENGTH = 32;
19
- declare const KYBER512_PUBLIC_KEY_LENGTH = 800;
20
- declare const KYBER512_SECRET_KEY_LENGTH = 1632;
21
13
  declare const KYBER768_PUBLIC_KEY_LENGTH = 1184;
22
14
  declare const KYBER768_SECRET_KEY_LENGTH = 2400;
23
- declare const KYBER1024_PUBLIC_KEY_LENGTH = 1568;
24
- declare const KYBER1024_SECRET_KEY_LENGTH = 3168;
25
15
  declare const KYBER_SEED_LENGTH = 64;
26
- declare const HASH_BIT_LEN = 256;
27
16
  declare const MAX_CACHE_SIZE = 600000000;
28
17
  declare const MAX_EMAIL_PER_BATCH = 100;
29
18
  declare const DB_LABEL = "email";
30
19
  declare const DB_VERSION = 1;
20
+ declare const XWING_PUBLIC_KEY_LENGTH = 1216;
21
+ declare const XWING_SECRET_KEY_LENGTH = 32;
22
+ declare const XWING_SEED_BYTE_LENGTH = 32;
23
+ declare const XWING_CIPHERTEXT_BYTE_LENGTH = 1120;
31
24
  //#endregion
32
- export { AES_ALGORITHM, AES_KEY_BIT_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, AUX_BYTE_LEN, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, CONTEXT_WRAPPING, DB_LABEL, DB_VERSION, ECC_ALGORITHM, HASH_BIT_LEN, IV_LEN_BYTES, KEY_FORMAT, KEY_WRAPPING_ALGORITHM, KYBER1024_PUBLIC_KEY_LENGTH, KYBER1024_SECRET_KEY_LENGTH, KYBER512_PUBLIC_KEY_LENGTH, KYBER512_SECRET_KEY_LENGTH, KYBER768_PUBLIC_KEY_LENGTH, KYBER768_SECRET_KEY_LENGTH, KYBER_SEED_LENGTH, MAX_CACHE_SIZE, MAX_EMAIL_PER_BATCH };
25
+ export { AES_KEY_BYTE_LENGTH, ARGON2ID_ITERATIONS, ARGON2ID_MEMORY_SIZE, ARGON2ID_OUTPUT_BYTE_LENGTH, ARGON2ID_PARALLELISM, ARGON2ID_SALT_BYTE_LENGTH, CONTEXT_DERIVE, CONTEXT_ENC_KEYSTORE, CONTEXT_INDEX, CONTEXT_RECOVERY, DB_LABEL, DB_VERSION, IV_LEN_BYTES, KYBER768_PUBLIC_KEY_LENGTH, KYBER768_SECRET_KEY_LENGTH, KYBER_SEED_LENGTH, MAX_CACHE_SIZE, MAX_EMAIL_PER_BATCH, XWING_CIPHERTEXT_BYTE_LENGTH, XWING_PUBLIC_KEY_LENGTH, XWING_SECRET_KEY_LENGTH, XWING_SEED_BYTE_LENGTH };
33
26
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","names":[],"sources":["../src/constants.ts"],"mappings":";cAAa,aAAA;AAAA,cACA,kBAAA;AAAA,cACA,YAAA;AAAA,cACA,YAAA;AAAA,cAEA,sBAAA;AAAA,cACA,UAAA;AAAA,cACA,gBAAA;AAAA,cAEA,aAAA;AAAA,cAEA,oBAAA;AAAA,cACA,gBAAA;AAAA,cACA,aAAA;AAAA,cACA,cAAA;AAAA,cAGA,oBAAA;AAAA,cACA,mBAAA;AAAA,cACA,oBAAA;AAAA,cACA,yBAAA;AAAA,cACA,2BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,cAEA,2BAAA;AAAA,cACA,2BAAA;AAAA,cAEA,iBAAA;AAAA,cAEA,YAAA;AAAA,cAEA,cAAA;AAAA,cACA,mBAAA;AAAA,cACA,QAAA;AAAA,cACA,UAAA"}
1
+ {"version":3,"file":"constants.d.ts","names":[],"sources":["../src/constants.ts"],"mappings":";cAAa,mBAAA;AAAA,cACA,YAAA;AAAA,cAEA,oBAAA;AAAA,cACA,gBAAA;AAAA,cACA,aAAA;AAAA,cACA,cAAA;AAAA,cAGA,oBAAA;AAAA,cACA,mBAAA;AAAA,cACA,oBAAA;AAAA,cACA,yBAAA;AAAA,cACA,2BAAA;AAAA,cAEA,0BAAA;AAAA,cACA,0BAAA;AAAA,cACA,iBAAA;AAAA,cAEA,cAAA;AAAA,cACA,mBAAA;AAAA,cACA,QAAA;AAAA,cACA,UAAA;AAAA,cAEA,uBAAA;AAAA,cACA,uBAAA;AAAA,cACA,sBAAA;AAAA,cACA,4BAAA"}