internxt-crypto 1.3.0 → 1.4.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 (101) hide show
  1. package/README.md +15 -73
  2. package/dist/asymmetric-crypto.js +3 -4
  3. package/dist/asymmetric-crypto.js.map +1 -1
  4. package/dist/asymmetric-crypto.mjs +1 -2
  5. package/dist/asymmetric-crypto.mjs.map +1 -1
  6. package/dist/chunk-C13QxCFV.js +50 -0
  7. package/dist/chunk-CfYAbeIz.mjs +13 -0
  8. package/dist/constants.js +2 -3
  9. package/dist/constants.js.map +1 -1
  10. package/dist/constants.mjs +1 -1
  11. package/dist/derive-key.js +50 -5
  12. package/dist/derive-key.js.map +1 -0
  13. package/dist/derive-key.mjs +46 -2
  14. package/dist/derive-key.mjs.map +1 -0
  15. package/dist/{deriveKeysFromPassword-iMHv-tIA.js → derive-password-CbYRDq7V.js} +25 -30
  16. package/dist/derive-password-CbYRDq7V.js.map +1 -0
  17. package/dist/{deriveKeysFromPassword-DFzo2OII.mjs → derive-password-PED-YfwE.mjs} +27 -34
  18. package/dist/derive-password-PED-YfwE.mjs.map +1 -0
  19. package/dist/derive-password.js +5 -6
  20. package/dist/derive-password.mjs +2 -3
  21. package/dist/email-crypto-Di814Pbk.js +739 -0
  22. package/dist/email-crypto-Di814Pbk.js.map +1 -0
  23. package/dist/email-crypto-DpjfXDes.mjs +535 -0
  24. package/dist/email-crypto-DpjfXDes.mjs.map +1 -0
  25. package/dist/email-crypto.d.mts +138 -29
  26. package/dist/email-crypto.d.mts.map +1 -1
  27. package/dist/email-crypto.d.ts +138 -29
  28. package/dist/email-crypto.d.ts.map +1 -1
  29. package/dist/email-crypto.js +34 -18
  30. package/dist/email-crypto.mjs +2 -3
  31. package/dist/hash.js +3 -4
  32. package/dist/hash.js.map +1 -1
  33. package/dist/hash.mjs +1 -2
  34. package/dist/hash.mjs.map +1 -1
  35. package/dist/index.d.mts +3 -3
  36. package/dist/index.d.ts +3 -3
  37. package/dist/index.js +72 -56
  38. package/dist/index.mjs +7 -8
  39. package/dist/{emailEncryptionKey-CYvr26FG.mjs → keystore-crypto-C6F-NQdX.mjs} +12 -15
  40. package/dist/keystore-crypto-C6F-NQdX.mjs.map +1 -0
  41. package/dist/{emailEncryptionKey-Ba95VuFO.js → keystore-crypto-CFiiGohl.js} +67 -70
  42. package/dist/keystore-crypto-CFiiGohl.js.map +1 -0
  43. package/dist/keystore-crypto.d.mts +1 -1
  44. package/dist/keystore-crypto.d.ts +1 -1
  45. package/dist/keystore-crypto.js +11 -12
  46. package/dist/keystore-crypto.mjs +2 -3
  47. package/dist/post-quantum-crypto.js +3 -4
  48. package/dist/post-quantum-crypto.js.map +1 -1
  49. package/dist/post-quantum-crypto.mjs +1 -2
  50. package/dist/post-quantum-crypto.mjs.map +1 -1
  51. package/dist/storage-service.js +13 -15
  52. package/dist/storage-service.js.map +1 -1
  53. package/dist/storage-service.mjs +2 -4
  54. package/dist/storage-service.mjs.map +1 -1
  55. package/dist/symmetric-crypto.js +51 -5
  56. package/dist/symmetric-crypto.js.map +1 -0
  57. package/dist/symmetric-crypto.mjs +47 -2
  58. package/dist/symmetric-crypto.mjs.map +1 -0
  59. package/dist/types-CrAiKyb0.d.ts +61 -0
  60. package/dist/types-CrAiKyb0.d.ts.map +1 -0
  61. package/dist/types-D6hsUfma.d.mts +61 -0
  62. package/dist/types-D6hsUfma.d.mts.map +1 -0
  63. package/dist/types.d.mts +2 -49
  64. package/dist/types.d.ts +2 -49
  65. package/dist/types.js +2 -3
  66. package/dist/types.js.map +1 -1
  67. package/dist/types.mjs +1 -1
  68. package/dist/types.mjs.map +1 -1
  69. package/dist/utils.js +127 -14
  70. package/dist/utils.js.map +1 -0
  71. package/dist/utils.mjs +113 -2
  72. package/dist/utils.mjs.map +1 -0
  73. package/dist/{xwing-iRWVRtNE.js → xwing-7fEqAT7W.js} +18 -19
  74. package/dist/{xwing-iRWVRtNE.js.map → xwing-7fEqAT7W.js.map} +1 -1
  75. package/dist/{xwing-CQmQX6hn.mjs → xwing-B34h5e3Z.mjs} +2 -3
  76. package/dist/{xwing-CQmQX6hn.mjs.map → xwing-B34h5e3Z.mjs.map} +1 -1
  77. package/package.json +22 -22
  78. package/dist/aes-B8TA-JKq.mjs +0 -49
  79. package/dist/aes-B8TA-JKq.mjs.map +0 -1
  80. package/dist/aes-CuW_SPl-.js +0 -67
  81. package/dist/aes-CuW_SPl-.js.map +0 -1
  82. package/dist/chunk-DQk6qfdC.mjs +0 -18
  83. package/dist/chunk-EbLFQX5m.js +0 -60
  84. package/dist/deriveKeysFromMnemonic-DB0UHE-y.mjs +0 -49
  85. package/dist/deriveKeysFromMnemonic-DB0UHE-y.mjs.map +0 -1
  86. package/dist/deriveKeysFromMnemonic-Dbx7VSBQ.js +0 -67
  87. package/dist/deriveKeysFromMnemonic-Dbx7VSBQ.js.map +0 -1
  88. package/dist/deriveKeysFromPassword-DFzo2OII.mjs.map +0 -1
  89. package/dist/deriveKeysFromPassword-iMHv-tIA.js.map +0 -1
  90. package/dist/emailEncryptionKey-Ba95VuFO.js.map +0 -1
  91. package/dist/emailEncryptionKey-CYvr26FG.mjs.map +0 -1
  92. package/dist/emailKeys-BFI-paQq.js +0 -406
  93. package/dist/emailKeys-BFI-paQq.js.map +0 -1
  94. package/dist/emailKeys-BjIeINfC.mjs +0 -304
  95. package/dist/emailKeys-BjIeINfC.mjs.map +0 -1
  96. package/dist/genID-D08K7JPr.mjs +0 -117
  97. package/dist/genID-D08K7JPr.mjs.map +0 -1
  98. package/dist/genID-cWOPmspk.js +0 -190
  99. package/dist/genID-cWOPmspk.js.map +0 -1
  100. package/dist/types.d.mts.map +0 -1
  101. package/dist/types.d.ts.map +0 -1
@@ -1,10 +1,9 @@
1
- const require_constants = require('./constants.js');
2
- const require_genID = require('./genID-cWOPmspk.js');
3
- const require_deriveKeysFromMnemonic = require('./deriveKeysFromMnemonic-Dbx7VSBQ.js');
4
- const require_aes = require('./aes-CuW_SPl-.js');
5
- const require_xwing = require('./xwing-iRWVRtNE.js');
6
- const require_types = require('./types.js');
7
-
1
+ const require_constants = require("./constants.js");
2
+ const require_utils = require("./utils.js");
3
+ const require_derive_key = require("./derive-key.js");
4
+ const require_symmetric_crypto = require("./symmetric-crypto.js");
5
+ const require_xwing = require("./xwing-7fEqAT7W.js");
6
+ require("./types.js");
8
7
  //#region src/keystore-crypto/core.ts
9
8
  /**
10
9
  * Encrypts the user's hybrid key using symmetric encryption to get a keystore
@@ -17,13 +16,13 @@ const require_types = require('./types.js');
17
16
  */
18
17
  async function encryptKeystoreContent(secretKey, keys, userEmail, type) {
19
18
  try {
20
- const publicKey = require_genID.uint8ArrayToBase64(keys.publicKey);
21
- const aux = require_genID.UTF8ToUint8(userEmail + type + publicKey);
19
+ const publicKey = require_utils.uint8ArrayToBase64(keys.publicKey);
20
+ const aux = require_utils.UTF8ToUint8(userEmail + type + publicKey);
22
21
  return {
23
22
  userEmail,
24
23
  type,
25
24
  publicKey,
26
- privateKeyEncrypted: require_genID.uint8ArrayToBase64(await require_aes.encryptSymmetrically(secretKey, keys.secretKey, aux))
25
+ privateKeyEncrypted: require_utils.uint8ArrayToBase64(await require_symmetric_crypto.encryptSymmetrically(secretKey, keys.secretKey, aux))
27
26
  };
28
27
  } catch (error) {
29
28
  throw new Error("Failed to encrypt keystore content", { cause: error });
@@ -38,10 +37,10 @@ async function encryptKeystoreContent(secretKey, keys, userEmail, type) {
38
37
  */
39
38
  async function decryptKeystoreContent(kesytoreOpeningKey, encryptedKeystore) {
40
39
  try {
41
- const aux = require_genID.UTF8ToUint8(encryptedKeystore.userEmail + encryptedKeystore.type + encryptedKeystore.publicKey);
40
+ const aux = require_utils.UTF8ToUint8(encryptedKeystore.userEmail + encryptedKeystore.type + encryptedKeystore.publicKey);
42
41
  return {
43
- publicKey: require_genID.base64ToUint8Array(encryptedKeystore.publicKey),
44
- secretKey: await require_aes.decryptSymmetrically(kesytoreOpeningKey, require_genID.base64ToUint8Array(encryptedKeystore.privateKeyEncrypted), aux)
42
+ publicKey: require_utils.base64ToUint8Array(encryptedKeystore.publicKey),
43
+ secretKey: await require_symmetric_crypto.decryptSymmetrically(kesytoreOpeningKey, require_utils.base64ToUint8Array(encryptedKeystore.privateKeyEncrypted), aux)
45
44
  };
46
45
  } catch (error) {
47
46
  throw new Error("Failed to decrypt keystore content", { cause: error });
@@ -54,7 +53,7 @@ async function decryptKeystoreContent(kesytoreOpeningKey, encryptedKeystore) {
54
53
  * @returns The derived secret key for protecting the recovery keystore
55
54
  */
56
55
  async function deriveRecoveryKey(recoveryCodes) {
57
- return require_deriveKeysFromMnemonic.deriveKeyFromMnemonic(recoveryCodes, require_constants.CONTEXT_RECOVERY);
56
+ return require_derive_key.deriveKeyFromMnemonic(recoveryCodes, require_constants.CONTEXT_RECOVERY);
58
57
  }
59
58
  /**
60
59
  * Derives a secret key for protecting the encryption keystore from user's mnemonic
@@ -63,9 +62,8 @@ async function deriveRecoveryKey(recoveryCodes) {
63
62
  * @returns The derived secret key for protecting the encryption keystore
64
63
  */
65
64
  async function deriveEncryptionKeystoreKeyFromMnemonic(mnemonic) {
66
- return require_deriveKeysFromMnemonic.deriveKeyFromMnemonic(mnemonic, require_constants.CONTEXT_ENC_KEYSTORE);
65
+ return require_derive_key.deriveKeyFromMnemonic(mnemonic, require_constants.CONTEXT_ENC_KEYSTORE);
67
66
  }
68
-
69
67
  //#endregion
70
68
  //#region src/keystore-crypto/errors.ts
71
69
  var FailedToCreateKeyStores = class FailedToCreateKeyStores extends Error {
@@ -98,7 +96,6 @@ var FailedToChangeMnemonicForKeyStore = class FailedToChangeMnemonicForKeyStore
98
96
  Object.setPrototypeOf(this, FailedToChangeMnemonicForKeyStore.prototype);
99
97
  }
100
98
  };
101
-
102
99
  //#endregion
103
100
  //#region src/keystore-crypto/emailEncryptionKey.ts
104
101
  /**
@@ -115,11 +112,11 @@ var FailedToChangeMnemonicForKeyStore = class FailedToChangeMnemonicForKeyStore
115
112
  async function createEncryptionAndRecoveryKeystores(userEmail, mnemonic) {
116
113
  try {
117
114
  const keys = require_xwing.genHybridKeys();
118
- const encryptionKeystore = await encryptKeystoreContent(await deriveEncryptionKeystoreKeyFromMnemonic(mnemonic), keys, userEmail, require_types.KeystoreType.ENCRYPTION);
119
- const recoveryCodes = require_genID.genMnemonic();
115
+ const encryptionKeystore = await encryptKeystoreContent(await deriveEncryptionKeystoreKeyFromMnemonic(mnemonic), keys, userEmail, "Encryption");
116
+ const recoveryCodes = require_utils.genMnemonic();
120
117
  return {
121
118
  encryptionKeystore,
122
- recoveryKeystore: await encryptKeystoreContent(await deriveRecoveryKey(recoveryCodes), keys, userEmail, require_types.KeystoreType.RECOVERY),
119
+ recoveryKeystore: await encryptKeystoreContent(await deriveRecoveryKey(recoveryCodes), keys, userEmail, "Recovery"),
123
120
  recoveryCodes,
124
121
  keys
125
122
  };
@@ -137,7 +134,7 @@ async function createEncryptionAndRecoveryKeystores(userEmail, mnemonic) {
137
134
  */
138
135
  async function openEncryptionKeystore(encryptedKeystore, mnemonic) {
139
136
  try {
140
- if (encryptedKeystore.type !== require_types.KeystoreType.ENCRYPTION) throw new InvalidInputKeyStore();
137
+ if (encryptedKeystore.type !== "Encryption") throw new InvalidInputKeyStore();
141
138
  return await decryptKeystoreContent(await deriveEncryptionKeystoreKeyFromMnemonic(mnemonic), encryptedKeystore);
142
139
  } catch (error) {
143
140
  if (error instanceof InvalidInputKeyStore) throw error;
@@ -154,7 +151,7 @@ async function openEncryptionKeystore(encryptedKeystore, mnemonic) {
154
151
  */
155
152
  async function openRecoveryKeystore(recoveryCodes, encryptedKeystore) {
156
153
  try {
157
- if (encryptedKeystore.type !== require_types.KeystoreType.RECOVERY) throw new InvalidInputKeyStore();
154
+ if (encryptedKeystore.type !== "Recovery") throw new InvalidInputKeyStore();
158
155
  return await decryptKeystoreContent(await deriveRecoveryKey(recoveryCodes), encryptedKeystore);
159
156
  } catch (error) {
160
157
  if (error instanceof InvalidInputKeyStore) throw error;
@@ -174,7 +171,7 @@ async function changeMnemonicForEncryptionKeystore(encryptedKeystore, oldMnemoni
174
171
  try {
175
172
  const keys = await openEncryptionKeystore(encryptedKeystore, oldMnemonic);
176
173
  return {
177
- newKeystore: await encryptKeystoreContent(await deriveEncryptionKeystoreKeyFromMnemonic(newMnemonic), keys, encryptedKeystore.userEmail, require_types.KeystoreType.ENCRYPTION),
174
+ newKeystore: await encryptKeystoreContent(await deriveEncryptionKeystoreKeyFromMnemonic(newMnemonic), keys, encryptedKeystore.userEmail, "Encryption"),
178
175
  keys
179
176
  };
180
177
  } catch (error) {
@@ -182,60 +179,60 @@ async function changeMnemonicForEncryptionKeystore(encryptedKeystore, oldMnemoni
182
179
  throw new FailedToChangeMnemonicForKeyStore(error instanceof Error ? error.message : String(error));
183
180
  }
184
181
  }
185
-
186
182
  //#endregion
187
- Object.defineProperty(exports, 'FailedToChangeMnemonicForKeyStore', {
188
- enumerable: true,
189
- get: function () {
190
- return FailedToChangeMnemonicForKeyStore;
191
- }
183
+ Object.defineProperty(exports, "FailedToChangeMnemonicForKeyStore", {
184
+ enumerable: true,
185
+ get: function() {
186
+ return FailedToChangeMnemonicForKeyStore;
187
+ }
192
188
  });
193
- Object.defineProperty(exports, 'FailedToCreateKeyStores', {
194
- enumerable: true,
195
- get: function () {
196
- return FailedToCreateKeyStores;
197
- }
189
+ Object.defineProperty(exports, "FailedToCreateKeyStores", {
190
+ enumerable: true,
191
+ get: function() {
192
+ return FailedToCreateKeyStores;
193
+ }
198
194
  });
199
- Object.defineProperty(exports, 'FailedToOpenEncryptionKeyStore', {
200
- enumerable: true,
201
- get: function () {
202
- return FailedToOpenEncryptionKeyStore;
203
- }
195
+ Object.defineProperty(exports, "FailedToOpenEncryptionKeyStore", {
196
+ enumerable: true,
197
+ get: function() {
198
+ return FailedToOpenEncryptionKeyStore;
199
+ }
204
200
  });
205
- Object.defineProperty(exports, 'FailedToOpenRecoveryKeyStore', {
206
- enumerable: true,
207
- get: function () {
208
- return FailedToOpenRecoveryKeyStore;
209
- }
201
+ Object.defineProperty(exports, "FailedToOpenRecoveryKeyStore", {
202
+ enumerable: true,
203
+ get: function() {
204
+ return FailedToOpenRecoveryKeyStore;
205
+ }
210
206
  });
211
- Object.defineProperty(exports, 'InvalidInputKeyStore', {
212
- enumerable: true,
213
- get: function () {
214
- return InvalidInputKeyStore;
215
- }
207
+ Object.defineProperty(exports, "InvalidInputKeyStore", {
208
+ enumerable: true,
209
+ get: function() {
210
+ return InvalidInputKeyStore;
211
+ }
216
212
  });
217
- Object.defineProperty(exports, 'changeMnemonicForEncryptionKeystore', {
218
- enumerable: true,
219
- get: function () {
220
- return changeMnemonicForEncryptionKeystore;
221
- }
213
+ Object.defineProperty(exports, "changeMnemonicForEncryptionKeystore", {
214
+ enumerable: true,
215
+ get: function() {
216
+ return changeMnemonicForEncryptionKeystore;
217
+ }
222
218
  });
223
- Object.defineProperty(exports, 'createEncryptionAndRecoveryKeystores', {
224
- enumerable: true,
225
- get: function () {
226
- return createEncryptionAndRecoveryKeystores;
227
- }
219
+ Object.defineProperty(exports, "createEncryptionAndRecoveryKeystores", {
220
+ enumerable: true,
221
+ get: function() {
222
+ return createEncryptionAndRecoveryKeystores;
223
+ }
228
224
  });
229
- Object.defineProperty(exports, 'openEncryptionKeystore', {
230
- enumerable: true,
231
- get: function () {
232
- return openEncryptionKeystore;
233
- }
225
+ Object.defineProperty(exports, "openEncryptionKeystore", {
226
+ enumerable: true,
227
+ get: function() {
228
+ return openEncryptionKeystore;
229
+ }
234
230
  });
235
- Object.defineProperty(exports, 'openRecoveryKeystore', {
236
- enumerable: true,
237
- get: function () {
238
- return openRecoveryKeystore;
239
- }
231
+ Object.defineProperty(exports, "openRecoveryKeystore", {
232
+ enumerable: true,
233
+ get: function() {
234
+ return openRecoveryKeystore;
235
+ }
240
236
  });
241
- //# sourceMappingURL=emailEncryptionKey-Ba95VuFO.js.map
237
+
238
+ //# sourceMappingURL=keystore-crypto-CFiiGohl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore-crypto-CFiiGohl.js","names":["uint8ArrayToBase64","UTF8ToUint8","encryptSymmetrically","base64ToUint8Array","decryptSymmetrically","deriveKeyFromMnemonic","CONTEXT_RECOVERY","CONTEXT_ENC_KEYSTORE","genHybridKeys","genMnemonic"],"sources":["../src/keystore-crypto/core.ts","../src/keystore-crypto/errors.ts","../src/keystore-crypto/emailEncryptionKey.ts"],"sourcesContent":["import { encryptSymmetrically, decryptSymmetrically } from '../symmetric-crypto';\nimport { base64ToUint8Array, uint8ArrayToBase64, UTF8ToUint8 } from '../utils';\nimport { deriveKeyFromMnemonic } from '../derive-key';\nimport { CONTEXT_ENC_KEYSTORE, CONTEXT_RECOVERY } from '../constants';\nimport { EncryptedKeystore, HybridKeyPair, KeystoreType } from '../types';\n\n/**\n * Encrypts the user's hybrid key using symmetric encryption to get a keystore\n *\n * @param secretKey - The symmetric key to encrypt the keystore content\n * @param key - The hybrid key pair\n * @param userEmail - The email of the user\n * @param type - The keystore type\n * @returns The encrypted keystore\n */\nexport async function encryptKeystoreContent(\n secretKey: Uint8Array,\n keys: HybridKeyPair,\n userEmail: string,\n type: KeystoreType,\n): Promise<EncryptedKeystore> {\n try {\n const publicKey = uint8ArrayToBase64(keys.publicKey);\n\n const aux = UTF8ToUint8(userEmail + type + publicKey);\n const secretKeyEncrypted = await encryptSymmetrically(secretKey, keys.secretKey, aux);\n\n const keystore: EncryptedKeystore = {\n userEmail,\n type,\n publicKey,\n privateKeyEncrypted: uint8ArrayToBase64(secretKeyEncrypted),\n };\n return keystore;\n } catch (error) {\n throw new Error('Failed to encrypt keystore content', { cause: error });\n }\n}\n\n/**\n * Decrypts the keystore content using symmetric encryption\n *\n * @param kesytoreOpeningKey - The symmetric key to decrypt the keystore content\n * @param encryptedKeys - The encrypted keystore content\n * @returns The decrypted hybrid key pair contained in the keystore\n */\nexport async function decryptKeystoreContent(\n kesytoreOpeningKey: Uint8Array,\n encryptedKeystore: EncryptedKeystore,\n): Promise<HybridKeyPair> {\n try {\n const aux = UTF8ToUint8(encryptedKeystore.userEmail + encryptedKeystore.type + encryptedKeystore.publicKey);\n const publicKey = base64ToUint8Array(encryptedKeystore.publicKey);\n const ciphertext = base64ToUint8Array(encryptedKeystore.privateKeyEncrypted);\n const secretKey = await decryptSymmetrically(kesytoreOpeningKey, ciphertext, aux);\n return {\n publicKey,\n secretKey,\n };\n } catch (error) {\n throw new Error('Failed to decrypt keystore content', { cause: error });\n }\n}\n\n/**\n * Derives a secret key for protecting the recovery keystore\n *\n * @param recoveryCodes - The recovery codes (machine-generated with secure PRNG)\n * @returns The derived secret key for protecting the recovery keystore\n */\nexport async function deriveRecoveryKey(recoveryCodes: string): Promise<Uint8Array> {\n return deriveKeyFromMnemonic(recoveryCodes, CONTEXT_RECOVERY);\n}\n\n/**\n * Derives a secret key for protecting the encryption keystore from user's mnemonic\n *\n * @param mnemonic - The user's mnemonic (machine-generated with secure PRNG)\n * @returns The derived secret key for protecting the encryption keystore\n */\nexport async function deriveEncryptionKeystoreKeyFromMnemonic(mnemonic: string): Promise<Uint8Array> {\n return deriveKeyFromMnemonic(mnemonic, CONTEXT_ENC_KEYSTORE);\n}\n","export class FailedToCreateKeyStores extends Error {\n constructor(errorMsg?: string) {\n super('Failed to create encryption and recovery keystores: ' + errorMsg);\n\n Object.setPrototypeOf(this, FailedToCreateKeyStores.prototype);\n }\n}\n\nexport class InvalidInputKeyStore extends Error {\n constructor() {\n super('Invalid input');\n\n Object.setPrototypeOf(this, InvalidInputKeyStore.prototype);\n }\n}\n\nexport class FailedToOpenEncryptionKeyStore extends Error {\n constructor(errorMsg?: string) {\n super('Failed to open encryption keystore: ' + errorMsg);\n\n Object.setPrototypeOf(this, FailedToOpenEncryptionKeyStore.prototype);\n }\n}\n\nexport class FailedToOpenRecoveryKeyStore extends Error {\n constructor(errorMsg?: string) {\n super('Failed to open recovery keystore: ' + errorMsg);\n\n Object.setPrototypeOf(this, FailedToOpenRecoveryKeyStore.prototype);\n }\n}\n\nexport class FailedToChangeMnemonicForKeyStore extends Error {\n constructor(errorMsg?: string) {\n super('Error while fetching message: ' + errorMsg);\n\n Object.setPrototypeOf(this, FailedToChangeMnemonicForKeyStore.prototype);\n }\n}\n","import { EncryptedKeystore, KeystoreType, HybridKeyPair } from '../types';\nimport { genMnemonic } from '../utils';\nimport {\n encryptKeystoreContent,\n decryptKeystoreContent,\n deriveEncryptionKeystoreKeyFromMnemonic,\n deriveRecoveryKey,\n} from './core';\nimport { genHybridKeys } from '../hybrid-crypto';\nimport {\n FailedToOpenEncryptionKeyStore,\n FailedToCreateKeyStores,\n FailedToOpenRecoveryKeyStore,\n FailedToChangeMnemonicForKeyStore,\n InvalidInputKeyStore,\n} from './errors';\n\n/**\n * Generates hybrid keys and creates encrypted main and recovery keystores\n * The main keystore encryption key is derived from the user's mnemonic\n * The recovery keystore encryption key is derived from the recovery codes\n *\n * @param userEmail - The user's email\n * @param mnemonic - The user's mnemonic\n * @returns The encryption keys\n *\n * @returns The encryption and recovery keystores, recovery codes and hybrid keys\n */\nexport async function createEncryptionAndRecoveryKeystores(\n userEmail: string,\n mnemonic: string,\n): Promise<{\n encryptionKeystore: EncryptedKeystore;\n recoveryKeystore: EncryptedKeystore;\n recoveryCodes: string;\n keys: HybridKeyPair;\n}> {\n try {\n const keys = genHybridKeys();\n\n const secretKey = await deriveEncryptionKeystoreKeyFromMnemonic(mnemonic);\n const encryptionKeystore = await encryptKeystoreContent(secretKey, keys, userEmail, KeystoreType.ENCRYPTION);\n\n const recoveryCodes = genMnemonic();\n const recoveryKey = await deriveRecoveryKey(recoveryCodes);\n const recoveryKeystore = await encryptKeystoreContent(recoveryKey, keys, userEmail, KeystoreType.RECOVERY);\n\n return { encryptionKeystore, recoveryKeystore, recoveryCodes, keys };\n } catch (error) {\n throw new FailedToCreateKeyStores(error instanceof Error ? error.message : String(error));\n }\n}\n\n/**\n * Opens the encryption keystore and returns the email encryption keys\n * The decryption key is derived from the user mnemonic\n *\n * @param encryptedKeystore - The encrypted keystore containing encryption keys\n * @param mnemonic - The user's mnemonic\n * @returns The encryption keys\n */\nexport async function openEncryptionKeystore(\n encryptedKeystore: EncryptedKeystore,\n mnemonic: string,\n): Promise<HybridKeyPair> {\n try {\n if (encryptedKeystore.type !== KeystoreType.ENCRYPTION) {\n throw new InvalidInputKeyStore();\n }\n const secretKey = await deriveEncryptionKeystoreKeyFromMnemonic(mnemonic);\n const keys = await decryptKeystoreContent(secretKey, encryptedKeystore);\n return keys;\n } catch (error) {\n if (error instanceof InvalidInputKeyStore) throw error;\n throw new FailedToOpenEncryptionKeyStore(error instanceof Error ? error.message : String(error));\n }\n}\n\n/**\n * Opens the recovery keystore and returns the email encryption keys\n * The decryption key is derived from the recovery codes (machine-generated mnemonic)\n *\n * @param recoveryCodes - The user's recovery codes\n * @param encryptedKeystore - The encrypted keystore containing encryption keys\n * @returns The encryption keys\n */\nexport async function openRecoveryKeystore(\n recoveryCodes: string,\n encryptedKeystore: EncryptedKeystore,\n): Promise<HybridKeyPair> {\n try {\n if (encryptedKeystore.type !== KeystoreType.RECOVERY) {\n throw new InvalidInputKeyStore();\n }\n const recoveryKey = await deriveRecoveryKey(recoveryCodes);\n const keys = await decryptKeystoreContent(recoveryKey, encryptedKeystore);\n return keys;\n } catch (error) {\n if (error instanceof InvalidInputKeyStore) throw error;\n throw new FailedToOpenRecoveryKeyStore(error instanceof Error ? error.message : String(error));\n }\n}\n\n/**\n * Re-encrypts the encryption keystore with a new mnemonic\n * The decryption key is derived from the user mnemonic\n *\n * @param encryptedKeystore - The encrypted keystore containing encryption keys\n * @param oldMnemonic - The user's old mnemonic\n * @param newMnemonic - The user's new mnemonic\n * @returns The keys and new re-encrypted keystore\n */\nexport async function changeMnemonicForEncryptionKeystore(\n encryptedKeystore: EncryptedKeystore,\n oldMnemonic: string,\n newMnemonic: string,\n): Promise<{ keys: HybridKeyPair; newKeystore: EncryptedKeystore }> {\n try {\n const keys = await openEncryptionKeystore(encryptedKeystore, oldMnemonic);\n\n const secretKey = await deriveEncryptionKeystoreKeyFromMnemonic(newMnemonic);\n const newKeystore = await encryptKeystoreContent(\n secretKey,\n keys,\n encryptedKeystore.userEmail,\n KeystoreType.ENCRYPTION,\n );\n\n return { newKeystore, keys };\n } catch (error) {\n if (error instanceof InvalidInputKeyStore) throw error;\n throw new FailedToChangeMnemonicForKeyStore(error instanceof Error ? error.message : String(error));\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,eAAsB,uBACpB,WACA,MACA,WACA,MAC4B;AAC5B,KAAI;EACF,MAAM,YAAYA,cAAAA,mBAAmB,KAAK,UAAU;EAEpD,MAAM,MAAMC,cAAAA,YAAY,YAAY,OAAO,UAAU;AASrD,SAAO;GALL;GACA;GACA;GACA,qBAAqBD,cAAAA,mBAAmB,MANTE,yBAAAA,qBAAqB,WAAW,KAAK,WAAW,IAAI,CAMxB;GAE9C;UACR,OAAO;AACd,QAAM,IAAI,MAAM,sCAAsC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW3E,eAAsB,uBACpB,oBACA,mBACwB;AACxB,KAAI;EACF,MAAM,MAAMD,cAAAA,YAAY,kBAAkB,YAAY,kBAAkB,OAAO,kBAAkB,UAAU;AAI3G,SAAO;GACL,WAJgBE,cAAAA,mBAAmB,kBAAkB,UAI5C;GACT,WAAA,MAHsBC,yBAAAA,qBAAqB,oBAD1BD,cAAAA,mBAAmB,kBAAkB,oBACmB,EAAE,IAAI;GAIhF;UACM,OAAO;AACd,QAAM,IAAI,MAAM,sCAAsC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAU3E,eAAsB,kBAAkB,eAA4C;AAClF,QAAOE,mBAAAA,sBAAsB,eAAeC,kBAAAA,iBAAiB;;;;;;;;AAS/D,eAAsB,wCAAwC,UAAuC;AACnG,QAAOD,mBAAAA,sBAAsB,UAAUE,kBAAAA,qBAAqB;;;;ACjF9D,IAAa,0BAAb,MAAa,gCAAgC,MAAM;CACjD,YAAY,UAAmB;AAC7B,QAAM,yDAAyD,SAAS;AAExE,SAAO,eAAe,MAAM,wBAAwB,UAAU;;;AAIlE,IAAa,uBAAb,MAAa,6BAA6B,MAAM;CAC9C,cAAc;AACZ,QAAM,gBAAgB;AAEtB,SAAO,eAAe,MAAM,qBAAqB,UAAU;;;AAI/D,IAAa,iCAAb,MAAa,uCAAuC,MAAM;CACxD,YAAY,UAAmB;AAC7B,QAAM,yCAAyC,SAAS;AAExD,SAAO,eAAe,MAAM,+BAA+B,UAAU;;;AAIzE,IAAa,+BAAb,MAAa,qCAAqC,MAAM;CACtD,YAAY,UAAmB;AAC7B,QAAM,uCAAuC,SAAS;AAEtD,SAAO,eAAe,MAAM,6BAA6B,UAAU;;;AAIvE,IAAa,oCAAb,MAAa,0CAA0C,MAAM;CAC3D,YAAY,UAAmB;AAC7B,QAAM,mCAAmC,SAAS;AAElD,SAAO,eAAe,MAAM,kCAAkC,UAAU;;;;;;;;;;;;;;;;ACR5E,eAAsB,qCACpB,WACA,UAMC;AACD,KAAI;EACF,MAAM,OAAOC,cAAAA,eAAe;EAG5B,MAAM,qBAAqB,MAAM,uBAAuB,MADhC,wCAAwC,SAAS,EACN,MAAM,WAAA,aAAmC;EAE5G,MAAM,gBAAgBC,cAAAA,aAAa;AAInC,SAAO;GAAE;GAAoB,kBAAA,MAFE,uBAAuB,MAD5B,kBAAkB,cAAc,EACS,MAAM,WAAA,WAAiC;GAE3D;GAAe;GAAM;UAC7D,OAAO;AACd,QAAM,IAAI,wBAAwB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;;;;;;;;;;;AAY7F,eAAsB,uBACpB,mBACA,UACwB;AACxB,KAAI;AACF,MAAI,kBAAkB,SAAA,aACpB,OAAM,IAAI,sBAAsB;AAIlC,SAAO,MADY,uBAAuB,MADlB,wCAAwC,SAAS,EACpB,kBAAkB;UAEhE,OAAO;AACd,MAAI,iBAAiB,qBAAsB,OAAM;AACjD,QAAM,IAAI,+BAA+B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;;;;;;;;;;;AAYpG,eAAsB,qBACpB,eACA,mBACwB;AACxB,KAAI;AACF,MAAI,kBAAkB,SAAA,WACpB,OAAM,IAAI,sBAAsB;AAIlC,SAAO,MADY,uBAAuB,MADhB,kBAAkB,cAAc,EACH,kBAAkB;UAElE,OAAO;AACd,MAAI,iBAAiB,qBAAsB,OAAM;AACjD,QAAM,IAAI,6BAA6B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;;;;;;;;;;;;AAalG,eAAsB,oCACpB,mBACA,aACA,aACkE;AAClE,KAAI;EACF,MAAM,OAAO,MAAM,uBAAuB,mBAAmB,YAAY;AAUzE,SAAO;GAAE,aAAA,MAPiB,uBACxB,MAFsB,wCAAwC,YAAY,EAG1E,MACA,kBAAkB,WAAA,aAEnB;GAEqB;GAAM;UACrB,OAAO;AACd,MAAI,iBAAiB,qBAAsB,OAAM;AACjD,QAAM,IAAI,kCAAkC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC"}
@@ -1,4 +1,4 @@
1
- import { EncryptedKeystore, HybridKeyPair } from "./types.mjs";
1
+ import { a as EncryptedKeystore, l as HybridKeyPair } from "./types-D6hsUfma.mjs";
2
2
 
3
3
  //#region src/keystore-crypto/emailEncryptionKey.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { EncryptedKeystore, HybridKeyPair } from "./types.js";
1
+ import { a as EncryptedKeystore, l as HybridKeyPair } from "./types-CrAiKyb0.js";
2
2
 
3
3
  //#region src/keystore-crypto/emailEncryptionKey.d.ts
4
4
  /**
@@ -1,12 +1,11 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_emailEncryptionKey = require('./emailEncryptionKey-Ba95VuFO.js');
3
-
4
- exports.FailedToChangeMnemonicForKeyStore = require_emailEncryptionKey.FailedToChangeMnemonicForKeyStore;
5
- exports.FailedToCreateKeyStores = require_emailEncryptionKey.FailedToCreateKeyStores;
6
- exports.FailedToOpenEncryptionKeyStore = require_emailEncryptionKey.FailedToOpenEncryptionKeyStore;
7
- exports.FailedToOpenRecoveryKeyStore = require_emailEncryptionKey.FailedToOpenRecoveryKeyStore;
8
- exports.InvalidInputKeyStore = require_emailEncryptionKey.InvalidInputKeyStore;
9
- exports.changeMnemonicForEncryptionKeystore = require_emailEncryptionKey.changeMnemonicForEncryptionKeystore;
10
- exports.createEncryptionAndRecoveryKeystores = require_emailEncryptionKey.createEncryptionAndRecoveryKeystores;
11
- exports.openEncryptionKeystore = require_emailEncryptionKey.openEncryptionKeystore;
12
- exports.openRecoveryKeystore = require_emailEncryptionKey.openRecoveryKeystore;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_keystore_crypto = require("./keystore-crypto-CFiiGohl.js");
3
+ exports.FailedToChangeMnemonicForKeyStore = require_keystore_crypto.FailedToChangeMnemonicForKeyStore;
4
+ exports.FailedToCreateKeyStores = require_keystore_crypto.FailedToCreateKeyStores;
5
+ exports.FailedToOpenEncryptionKeyStore = require_keystore_crypto.FailedToOpenEncryptionKeyStore;
6
+ exports.FailedToOpenRecoveryKeyStore = require_keystore_crypto.FailedToOpenRecoveryKeyStore;
7
+ exports.InvalidInputKeyStore = require_keystore_crypto.InvalidInputKeyStore;
8
+ exports.changeMnemonicForEncryptionKeystore = require_keystore_crypto.changeMnemonicForEncryptionKeystore;
9
+ exports.createEncryptionAndRecoveryKeystores = require_keystore_crypto.createEncryptionAndRecoveryKeystores;
10
+ exports.openEncryptionKeystore = require_keystore_crypto.openEncryptionKeystore;
11
+ exports.openRecoveryKeystore = require_keystore_crypto.openRecoveryKeystore;
@@ -1,3 +1,2 @@
1
- import { a as FailedToChangeMnemonicForKeyStore, c as FailedToOpenRecoveryKeyStore, i as openRecoveryKeystore, l as InvalidInputKeyStore, n as createEncryptionAndRecoveryKeystores, o as FailedToCreateKeyStores, r as openEncryptionKeystore, s as FailedToOpenEncryptionKeyStore, t as changeMnemonicForEncryptionKeystore } from "./emailEncryptionKey-CYvr26FG.mjs";
2
-
3
- export { FailedToChangeMnemonicForKeyStore, FailedToCreateKeyStores, FailedToOpenEncryptionKeyStore, FailedToOpenRecoveryKeyStore, InvalidInputKeyStore, changeMnemonicForEncryptionKeystore, createEncryptionAndRecoveryKeystores, openEncryptionKeystore, openRecoveryKeystore };
1
+ import { a as FailedToChangeMnemonicForKeyStore, c as FailedToOpenRecoveryKeyStore, i as openRecoveryKeystore, l as InvalidInputKeyStore, n as createEncryptionAndRecoveryKeystores, o as FailedToCreateKeyStores, r as openEncryptionKeystore, s as FailedToOpenEncryptionKeyStore, t as changeMnemonicForEncryptionKeystore } from "./keystore-crypto-C6F-NQdX.mjs";
2
+ export { FailedToChangeMnemonicForKeyStore, FailedToCreateKeyStores, FailedToOpenEncryptionKeyStore, FailedToOpenRecoveryKeyStore, InvalidInputKeyStore, changeMnemonicForEncryptionKeystore, createEncryptionAndRecoveryKeystores, openEncryptionKeystore, openRecoveryKeystore };
@@ -1,7 +1,6 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('./chunk-EbLFQX5m.js');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("./chunk-C13QxCFV.js");
3
3
  let _noble_post_quantum_ml_kem_js = require("@noble/post-quantum/ml-kem.js");
4
-
5
4
  //#region src/post-quantum-crypto/kyber768.ts
6
5
  /**
7
6
  * Generates public and secret Kyber keys
@@ -43,9 +42,9 @@ function decapsulateKyber(cipherText, secretKey) {
43
42
  throw new Error("Failed to decapsulate", { cause: error });
44
43
  }
45
44
  }
46
-
47
45
  //#endregion
48
46
  exports.decapsulateKyber = decapsulateKyber;
49
47
  exports.encapsulateKyber = encapsulateKyber;
50
48
  exports.generateKyberKeys = generateKyberKeys;
49
+
51
50
  //# sourceMappingURL=post-quantum-crypto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-quantum-crypto.js","names":["kyber"],"sources":["../src/post-quantum-crypto/kyber768.ts"],"sourcesContent":["import { ml_kem768 as kyber } 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 kyber.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 kyber.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 kyber.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n"],"mappings":";;;;;;;;;;;AAQA,SAAgB,kBAAkB,MAGhC;AACA,KAAI;AACF,SAAOA,wCAAM,OAAO,KAAK;UAClB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgB,iBAAiB,WAG/B;AACA,KAAI;AACF,SAAOA,wCAAM,YAAY,UAAU;UAC5B,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgB,iBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAOA,wCAAM,YAAY,YAAY,UAAU;UACxC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC"}
1
+ {"version":3,"file":"post-quantum-crypto.js","names":["kyber"],"sources":["../src/post-quantum-crypto/kyber768.ts"],"sourcesContent":["import { ml_kem768 as kyber } 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 kyber.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 kyber.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 kyber.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n"],"mappings":";;;;;;;;;;AAQA,SAAgB,kBAAkB,MAGhC;AACA,KAAI;AACF,SAAOA,8BAAAA,UAAM,OAAO,KAAK;UAClB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgB,iBAAiB,WAG/B;AACA,KAAI;AACF,SAAOA,8BAAAA,UAAM,YAAY,UAAU;UAC5B,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgB,iBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAOA,8BAAAA,UAAM,YAAY,YAAY,UAAU;UACxC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { ml_kem768 } from "@noble/post-quantum/ml-kem.js";
2
-
3
2
  //#region src/post-quantum-crypto/kyber768.ts
4
3
  /**
5
4
  * Generates public and secret Kyber keys
@@ -41,7 +40,7 @@ function decapsulateKyber(cipherText, secretKey) {
41
40
  throw new Error("Failed to decapsulate", { cause: error });
42
41
  }
43
42
  }
44
-
45
43
  //#endregion
46
44
  export { decapsulateKyber, encapsulateKyber, generateKyberKeys };
45
+
47
46
  //# sourceMappingURL=post-quantum-crypto.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-quantum-crypto.mjs","names":["kyber"],"sources":["../src/post-quantum-crypto/kyber768.ts"],"sourcesContent":["import { ml_kem768 as kyber } 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 kyber.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 kyber.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 kyber.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,kBAAkB,MAGhC;AACA,KAAI;AACF,SAAOA,UAAM,OAAO,KAAK;UAClB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgB,iBAAiB,WAG/B;AACA,KAAI;AACF,SAAOA,UAAM,YAAY,UAAU;UAC5B,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgB,iBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAOA,UAAM,YAAY,YAAY,UAAU;UACxC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC"}
1
+ {"version":3,"file":"post-quantum-crypto.mjs","names":["kyber"],"sources":["../src/post-quantum-crypto/kyber768.ts"],"sourcesContent":["import { ml_kem768 as kyber } 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 kyber.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 kyber.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 kyber.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,kBAAkB,MAGhC;AACA,KAAI;AACF,SAAOA,UAAM,OAAO,KAAK;UAClB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgB,iBAAiB,WAG/B;AACA,KAAI;AACF,SAAOA,UAAM,YAAY,UAAU;UAC5B,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgB,iBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAOA,UAAM,YAAY,YAAY,UAAU;UACxC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC"}
@@ -1,6 +1,5 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_chunk = require('./chunk-EbLFQX5m.js');
3
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_chunk = require("./chunk-C13QxCFV.js");
4
3
  //#region src/storage-service/localStorageService.ts
5
4
  var localStorageService_exports = /* @__PURE__ */ require_chunk.__exportAll({ default: () => localStorageService });
6
5
  function get$1(key) {
@@ -25,7 +24,6 @@ const localStorageService = {
25
24
  exists: exists$1,
26
25
  clear: clear$1
27
26
  };
28
-
29
27
  //#endregion
30
28
  //#region src/storage-service/sessionStorageService.ts
31
29
  var sessionStorageService_exports = /* @__PURE__ */ require_chunk.__exportAll({ default: () => sessionStorageService });
@@ -51,18 +49,18 @@ const sessionStorageService = {
51
49
  exists,
52
50
  clear
53
51
  };
54
-
55
52
  //#endregion
56
- Object.defineProperty(exports, 'localStorageService', {
57
- enumerable: true,
58
- get: function () {
59
- return localStorageService_exports;
60
- }
53
+ Object.defineProperty(exports, "localStorageService", {
54
+ enumerable: true,
55
+ get: function() {
56
+ return localStorageService_exports;
57
+ }
61
58
  });
62
- Object.defineProperty(exports, 'sessionStorageService', {
63
- enumerable: true,
64
- get: function () {
65
- return sessionStorageService_exports;
66
- }
59
+ Object.defineProperty(exports, "sessionStorageService", {
60
+ enumerable: true,
61
+ get: function() {
62
+ return sessionStorageService_exports;
63
+ }
67
64
  });
65
+
68
66
  //# sourceMappingURL=storage-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-service.js","names":["get","set","removeItem","exists","clear"],"sources":["../src/storage-service/localStorageService.ts","../src/storage-service/sessionStorageService.ts"],"sourcesContent":["function get(key: string): string | null {\n return localStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return localStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n localStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!localStorage.getItem(key);\n}\n\nfunction clear(): void {\n localStorage.clear();\n}\n\nconst localStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default localStorageService;\n\nexport interface LocalStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n","function get(key: string): string | null {\n return sessionStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return sessionStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n sessionStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!sessionStorage.getItem(key);\n}\n\nfunction clear(): void {\n sessionStorage.clear();\n}\n\nconst sessionStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default sessionStorageService;\n\nexport interface SessionStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n"],"mappings":";;;;;AAAA,SAASA,MAAI,KAA4B;AACvC,QAAO,aAAa,QAAQ,IAAI;;AAGlC,SAASC,MAAI,KAAa,OAAqB;AAC7C,QAAO,aAAa,QAAQ,KAAK,MAAM;;AAGzC,SAASC,aAAW,KAAmB;AACrC,cAAa,WAAW,IAAI;;AAG9B,SAASC,SAAO,KAAsB;AACpC,QAAO,CAAC,CAAC,aAAa,QAAQ,IAAI;;AAGpC,SAASC,UAAc;AACrB,cAAa,OAAO;;AAGtB,MAAM,sBAAsB;CAC1B;CACA;CACA;CACA;CACA;CACD;;;;;AC1BD,SAAS,IAAI,KAA4B;AACvC,QAAO,eAAe,QAAQ,IAAI;;AAGpC,SAAS,IAAI,KAAa,OAAqB;AAC7C,QAAO,eAAe,QAAQ,KAAK,MAAM;;AAG3C,SAAS,WAAW,KAAmB;AACrC,gBAAe,WAAW,IAAI;;AAGhC,SAAS,OAAO,KAAsB;AACpC,QAAO,CAAC,CAAC,eAAe,QAAQ,IAAI;;AAGtC,SAAS,QAAc;AACrB,gBAAe,OAAO;;AAGxB,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;CACA;CACD"}
1
+ {"version":3,"file":"storage-service.js","names":["get","set","removeItem","exists","clear"],"sources":["../src/storage-service/localStorageService.ts","../src/storage-service/sessionStorageService.ts"],"sourcesContent":["function get(key: string): string | null {\n return localStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return localStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n localStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!localStorage.getItem(key);\n}\n\nfunction clear(): void {\n localStorage.clear();\n}\n\nconst localStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default localStorageService;\n\nexport interface LocalStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n","function get(key: string): string | null {\n return sessionStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return sessionStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n sessionStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!sessionStorage.getItem(key);\n}\n\nfunction clear(): void {\n sessionStorage.clear();\n}\n\nconst sessionStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default sessionStorageService;\n\nexport interface SessionStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n"],"mappings":";;;;AAAA,SAASA,MAAI,KAA4B;AACvC,QAAO,aAAa,QAAQ,IAAI;;AAGlC,SAASC,MAAI,KAAa,OAAqB;AAC7C,QAAO,aAAa,QAAQ,KAAK,MAAM;;AAGzC,SAASC,aAAW,KAAmB;AACrC,cAAa,WAAW,IAAI;;AAG9B,SAASC,SAAO,KAAsB;AACpC,QAAO,CAAC,CAAC,aAAa,QAAQ,IAAI;;AAGpC,SAASC,UAAc;AACrB,cAAa,OAAO;;AAGtB,MAAM,sBAAsB;CAC1B,KAAA;CACA,KAAA;CACA,YAAA;CACA,QAAA;CACA,OAAA;CACD;;;;AC1BD,SAAS,IAAI,KAA4B;AACvC,QAAO,eAAe,QAAQ,IAAI;;AAGpC,SAAS,IAAI,KAAa,OAAqB;AAC7C,QAAO,eAAe,QAAQ,KAAK,MAAM;;AAG3C,SAAS,WAAW,KAAmB;AACrC,gBAAe,WAAW,IAAI;;AAGhC,SAAS,OAAO,KAAsB;AACpC,QAAO,CAAC,CAAC,eAAe,QAAQ,IAAI;;AAGtC,SAAS,QAAc;AACrB,gBAAe,OAAO;;AAGxB,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;CACA;CACD"}
@@ -1,5 +1,4 @@
1
- import { t as __exportAll } from "./chunk-DQk6qfdC.mjs";
2
-
1
+ import { t as __exportAll } from "./chunk-CfYAbeIz.mjs";
3
2
  //#region src/storage-service/localStorageService.ts
4
3
  var localStorageService_exports = /* @__PURE__ */ __exportAll({ default: () => localStorageService });
5
4
  function get$1(key) {
@@ -24,7 +23,6 @@ const localStorageService = {
24
23
  exists: exists$1,
25
24
  clear: clear$1
26
25
  };
27
-
28
26
  //#endregion
29
27
  //#region src/storage-service/sessionStorageService.ts
30
28
  var sessionStorageService_exports = /* @__PURE__ */ __exportAll({ default: () => sessionStorageService });
@@ -50,7 +48,7 @@ const sessionStorageService = {
50
48
  exists,
51
49
  clear
52
50
  };
53
-
54
51
  //#endregion
55
52
  export { localStorageService_exports as localStorageService, sessionStorageService_exports as sessionStorageService };
53
+
56
54
  //# sourceMappingURL=storage-service.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-service.mjs","names":["get","set","removeItem","exists","clear"],"sources":["../src/storage-service/localStorageService.ts","../src/storage-service/sessionStorageService.ts"],"sourcesContent":["function get(key: string): string | null {\n return localStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return localStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n localStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!localStorage.getItem(key);\n}\n\nfunction clear(): void {\n localStorage.clear();\n}\n\nconst localStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default localStorageService;\n\nexport interface LocalStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n","function get(key: string): string | null {\n return sessionStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return sessionStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n sessionStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!sessionStorage.getItem(key);\n}\n\nfunction clear(): void {\n sessionStorage.clear();\n}\n\nconst sessionStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default sessionStorageService;\n\nexport interface SessionStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n"],"mappings":";;;;AAAA,SAASA,MAAI,KAA4B;AACvC,QAAO,aAAa,QAAQ,IAAI;;AAGlC,SAASC,MAAI,KAAa,OAAqB;AAC7C,QAAO,aAAa,QAAQ,KAAK,MAAM;;AAGzC,SAASC,aAAW,KAAmB;AACrC,cAAa,WAAW,IAAI;;AAG9B,SAASC,SAAO,KAAsB;AACpC,QAAO,CAAC,CAAC,aAAa,QAAQ,IAAI;;AAGpC,SAASC,UAAc;AACrB,cAAa,OAAO;;AAGtB,MAAM,sBAAsB;CAC1B;CACA;CACA;CACA;CACA;CACD;;;;;AC1BD,SAAS,IAAI,KAA4B;AACvC,QAAO,eAAe,QAAQ,IAAI;;AAGpC,SAAS,IAAI,KAAa,OAAqB;AAC7C,QAAO,eAAe,QAAQ,KAAK,MAAM;;AAG3C,SAAS,WAAW,KAAmB;AACrC,gBAAe,WAAW,IAAI;;AAGhC,SAAS,OAAO,KAAsB;AACpC,QAAO,CAAC,CAAC,eAAe,QAAQ,IAAI;;AAGtC,SAAS,QAAc;AACrB,gBAAe,OAAO;;AAGxB,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;CACA;CACD"}
1
+ {"version":3,"file":"storage-service.mjs","names":["get","set","removeItem","exists","clear"],"sources":["../src/storage-service/localStorageService.ts","../src/storage-service/sessionStorageService.ts"],"sourcesContent":["function get(key: string): string | null {\n return localStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return localStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n localStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!localStorage.getItem(key);\n}\n\nfunction clear(): void {\n localStorage.clear();\n}\n\nconst localStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default localStorageService;\n\nexport interface LocalStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n","function get(key: string): string | null {\n return sessionStorage.getItem(key);\n}\n\nfunction set(key: string, value: string): void {\n return sessionStorage.setItem(key, value);\n}\n\nfunction removeItem(key: string): void {\n sessionStorage.removeItem(key);\n}\n\nfunction exists(key: string): boolean {\n return !!sessionStorage.getItem(key);\n}\n\nfunction clear(): void {\n sessionStorage.clear();\n}\n\nconst sessionStorageService = {\n set,\n get,\n removeItem,\n exists,\n clear,\n};\n\nexport default sessionStorageService;\n\nexport interface SessionStorageService {\n set: (key: string, value: string) => void;\n get: (key: string) => string | null;\n removeItem: (key: string) => void;\n exists: (key: string) => boolean;\n clear: () => void;\n}\n"],"mappings":";;;AAAA,SAASA,MAAI,KAA4B;AACvC,QAAO,aAAa,QAAQ,IAAI;;AAGlC,SAASC,MAAI,KAAa,OAAqB;AAC7C,QAAO,aAAa,QAAQ,KAAK,MAAM;;AAGzC,SAASC,aAAW,KAAmB;AACrC,cAAa,WAAW,IAAI;;AAG9B,SAASC,SAAO,KAAsB;AACpC,QAAO,CAAC,CAAC,aAAa,QAAQ,IAAI;;AAGpC,SAASC,UAAc;AACrB,cAAa,OAAO;;AAGtB,MAAM,sBAAsB;CAC1B,KAAA;CACA,KAAA;CACA,YAAA;CACA,QAAA;CACA,OAAA;CACD;;;;AC1BD,SAAS,IAAI,KAA4B;AACvC,QAAO,eAAe,QAAQ,IAAI;;AAGpC,SAAS,IAAI,KAAa,OAAqB;AAC7C,QAAO,eAAe,QAAQ,KAAK,MAAM;;AAG3C,SAAS,WAAW,KAAmB;AACrC,gBAAe,WAAW,IAAI;;AAGhC,SAAS,OAAO,KAAsB;AACpC,QAAO,CAAC,CAAC,eAAe,QAAQ,IAAI;;AAGtC,SAAS,QAAc;AACrB,gBAAe,OAAO;;AAGxB,MAAM,wBAAwB;CAC5B;CACA;CACA;CACA;CACA;CACD"}
@@ -1,6 +1,52 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_aes = require('./aes-CuW_SPl-.js');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("./chunk-C13QxCFV.js");
3
+ require("./constants.js");
4
+ let _noble_hashes_utils_js = require("@noble/hashes/utils.js");
5
+ let _noble_ciphers_webcrypto_js = require("@noble/ciphers/webcrypto.js");
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)(12);
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 - 12);
34
+ return await (0, _noble_ciphers_webcrypto_js.gcm)(encryptionKey, encryptedMessage.slice(encryptedMessage.length - 12), 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)(32);
46
+ }
47
+ //#endregion
48
+ exports.decryptSymmetrically = decryptSymmetrically;
49
+ exports.encryptSymmetrically = encryptSymmetrically;
50
+ exports.genSymmetricKey = genSymmetricKey;
3
51
 
4
- exports.decryptSymmetrically = require_aes.decryptSymmetrically;
5
- exports.encryptSymmetrically = require_aes.encryptSymmetrically;
6
- exports.genSymmetricKey = require_aes.genSymmetricKey;
52
+ //# sourceMappingURL=symmetric-crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symmetric-crypto.js","names":[],"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,MAAA,GAAA,uBAAA,aAAA,GAA8B;AAEpC,UAAA,GAAA,uBAAA,aAAmB,OAAA,GAAA,4BAAA,KADiB,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,SAAA,GAAsB;AAGpF,SAAO,OAAA,GAAA,4BAAA,KADyB,eADrB,iBAAiB,MAAM,iBAAiB,SAAA,GACF,EAAE,IAAI,CAAC,QAAQ,WAAW;UAEpE,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC;;;;;;;;AASxE,SAAgB,kBAA8B;AAC5C,SAAA,GAAA,uBAAA,aAAA,GAAuC"}
@@ -1,3 +1,48 @@
1
- import { n as encryptSymmetrically, r as genSymmetricKey, t as decryptSymmetrically } from "./aes-B8TA-JKq.mjs";
1
+ import "./constants.mjs";
2
+ import { concatBytes, randomBytes } from "@noble/hashes/utils.js";
3
+ import { gcm } from "@noble/ciphers/webcrypto.js";
4
+ //#region src/symmetric-crypto/aes.ts
5
+ /**
6
+ * Symmetrically encrypts the message
7
+ *
8
+ * @param encryptionKey - The symmetric key used for message encryption
9
+ * @param message - The message to encrypt
10
+ * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.
11
+ * @returns The resulting ciphertext.
12
+ */
13
+ async function encryptSymmetrically(encryptionKey, message, aux) {
14
+ try {
15
+ const iv = randomBytes(12);
16
+ return concatBytes(await gcm(encryptionKey, iv, aux).encrypt(message), iv);
17
+ } catch (error) {
18
+ throw new Error("Failed to encrypt symmetrically", { cause: error });
19
+ }
20
+ }
21
+ /**
22
+ * Decryps symmetrically encrypted message
23
+ *
24
+ * @param encryptionKey - The symmetric key used for message encryption
25
+ * @param encryptedMessage - The ciphertext
26
+ * @param aux - The auxilary string (e.g., context string or timestamp) for AEAD.
27
+ * @returns The resulting ciphertext.
28
+ */
29
+ async function decryptSymmetrically(encryptionKey, encryptedMessage, aux) {
30
+ try {
31
+ const ciphertext = encryptedMessage.slice(0, encryptedMessage.length - 12);
32
+ return await gcm(encryptionKey, encryptedMessage.slice(encryptedMessage.length - 12), aux).decrypt(ciphertext);
33
+ } catch (error) {
34
+ throw new Error("Failed to decrypt symmetrically", { cause: error });
35
+ }
36
+ }
37
+ /**
38
+ * Generates symmetric key as Uint8Array
39
+ *
40
+ * @returns The generated Uint8Array.
41
+ */
42
+ function genSymmetricKey() {
43
+ return randomBytes(32);
44
+ }
45
+ //#endregion
46
+ export { decryptSymmetrically, encryptSymmetrically, genSymmetricKey };
2
47
 
3
- export { decryptSymmetrically, encryptSymmetrically, genSymmetricKey };
48
+ //# sourceMappingURL=symmetric-crypto.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symmetric-crypto.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,YAAA,GAAyB;AAEpC,SAAO,YAAY,MADMA,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,SAAA,GAAsB;AAGpF,SAAO,MADcA,IAAW,eADrB,iBAAiB,MAAM,iBAAiB,SAAA,GACF,EAAE,IAAI,CAAC,QAAQ,WAAW;UAEpE,OAAO;AACd,QAAM,IAAI,MAAM,mCAAmC,EAAE,OAAO,OAAO,CAAC;;;;;;;;AASxE,SAAgB,kBAA8B;AAC5C,QAAO,YAAA,GAAgC"}