internxt-crypto 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/{symmetric-crypto-CrdS1Che.mjs → aes-DSDxP8uF.mjs} +4 -17
  2. package/dist/aes-DSDxP8uF.mjs.map +1 -0
  3. package/dist/{symmetric-crypto-D65zB396.js → aes-bOrKZuUC.js} +7 -25
  4. package/dist/aes-bOrKZuUC.js.map +1 -0
  5. package/dist/asymmetric-crypto.d.mts +1 -4
  6. package/dist/asymmetric-crypto.d.mts.map +1 -0
  7. package/dist/asymmetric-crypto.d.ts +1 -4
  8. package/dist/asymmetric-crypto.d.ts.map +1 -0
  9. package/dist/asymmetric-crypto.js +8 -7
  10. package/dist/asymmetric-crypto.mjs +1 -1
  11. package/dist/{chunk-DWirmd9C.mjs → chunk-DQk6qfdC.mjs} +3 -3
  12. package/dist/{chunk-Dt-PWiN7.js → chunk-EbLFQX5m.js} +3 -3
  13. package/dist/constants.d.mts.map +1 -0
  14. package/dist/constants.d.ts.map +1 -0
  15. package/dist/constants.js +63 -30
  16. package/dist/constants.js.map +1 -0
  17. package/dist/constants.mjs +33 -2
  18. package/dist/constants.mjs.map +1 -0
  19. package/dist/derive-key.d.mts +1 -4
  20. package/dist/derive-key.d.mts.map +1 -0
  21. package/dist/derive-key.d.ts +1 -4
  22. package/dist/derive-key.d.ts.map +1 -0
  23. package/dist/derive-key.js +12 -14
  24. package/dist/derive-key.mjs +1 -4
  25. package/dist/{derive-key-Be7hS-cN.mjs → deriveKeysFromPassword-DJRWZ8Rw.mjs} +5 -21
  26. package/dist/deriveKeysFromPassword-DJRWZ8Rw.mjs.map +1 -0
  27. package/dist/{derive-key-CBf2WxJd.js → deriveKeysFromPassword-Ko7NxkHM.js} +24 -45
  28. package/dist/deriveKeysFromPassword-Ko7NxkHM.js.map +1 -0
  29. package/dist/email-crypto.d.mts +2 -5
  30. package/dist/email-crypto.d.mts.map +1 -0
  31. package/dist/email-crypto.d.ts +2 -5
  32. package/dist/email-crypto.d.ts.map +1 -0
  33. package/dist/email-crypto.js +12 -16
  34. package/dist/email-crypto.mjs +1 -6
  35. package/dist/email-search.d.mts +2 -5
  36. package/dist/email-search.d.mts.map +1 -0
  37. package/dist/email-search.d.ts +2 -5
  38. package/dist/email-search.d.ts.map +1 -0
  39. package/dist/email-search.js +14 -52
  40. package/dist/email-search.js.map +1 -1
  41. package/dist/email-search.mjs +5 -39
  42. package/dist/email-search.mjs.map +1 -1
  43. package/dist/{keystore-crypto-Bjgriq9h.mjs → emailEncryptionKey-27mIHh18.mjs} +10 -19
  44. package/dist/emailEncryptionKey-27mIHh18.mjs.map +1 -0
  45. package/dist/{keystore-crypto-B4yCVo9l.js → emailEncryptionKey-DbaDAdoW.js} +25 -40
  46. package/dist/emailEncryptionKey-DbaDAdoW.js.map +1 -0
  47. package/dist/{email-crypto-BrT98taw.js → emailKeys-BJGdkLrg.js} +50 -74
  48. package/dist/emailKeys-BJGdkLrg.js.map +1 -0
  49. package/dist/{email-crypto-DJUEjTxA.mjs → emailKeys-Fp9WR3wl.mjs} +8 -33
  50. package/dist/emailKeys-Fp9WR3wl.mjs.map +1 -0
  51. package/dist/{utils-DS04iUcX.mjs → genID-3Er5IowC.mjs} +4 -24
  52. package/dist/genID-3Er5IowC.mjs.map +1 -0
  53. package/dist/{utils-CNs3cyDj.js → genID-YJSl3YhL.js} +6 -31
  54. package/dist/genID-YJSl3YhL.js.map +1 -0
  55. package/dist/hash.d.mts +1 -4
  56. package/dist/hash.d.mts.map +1 -0
  57. package/dist/hash.d.ts +1 -4
  58. package/dist/hash.d.ts.map +1 -0
  59. package/dist/hash.js +11 -10
  60. package/dist/hash.mjs +1 -1
  61. package/dist/index.d.mts +11 -31
  62. package/dist/index.d.mts.map +1 -0
  63. package/dist/index.d.ts +11 -31
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +93 -84
  66. package/dist/index.mjs +12 -14
  67. package/dist/{asymmetric-crypto-CyXsV4XT.mjs → keys-BfcaiAOv.mjs} +3 -15
  68. package/dist/keys-BfcaiAOv.mjs.map +1 -0
  69. package/dist/{asymmetric-crypto-BORmLhnx.js → keys-CinT7kEY.js} +2 -20
  70. package/dist/keys-CinT7kEY.js.map +1 -0
  71. package/dist/keystore-crypto.d.mts +2 -5
  72. package/dist/keystore-crypto.d.mts.map +1 -0
  73. package/dist/keystore-crypto.d.ts +2 -5
  74. package/dist/keystore-crypto.d.ts.map +1 -0
  75. package/dist/keystore-crypto.js +5 -10
  76. package/dist/keystore-crypto.mjs +1 -7
  77. package/dist/{post-quantum-crypto-Vv34t6gX.mjs → kyber1024-PpwE1rki.mjs} +3 -13
  78. package/dist/kyber1024-PpwE1rki.mjs.map +1 -0
  79. package/dist/{post-quantum-crypto-CAi-cEkV.js → kyber1024-jeKS8CXf.js} +2 -18
  80. package/dist/kyber1024-jeKS8CXf.js.map +1 -0
  81. package/dist/kyber768-DGBB_RS7.d.ts +32 -0
  82. package/dist/kyber768-DGBB_RS7.d.ts.map +1 -0
  83. package/dist/kyber768-DzIcGg1i.d.mts +32 -0
  84. package/dist/kyber768-DzIcGg1i.d.mts.map +1 -0
  85. package/dist/{hash-BoqwNkcd.js → mac-BMb1F0dN.js} +3 -23
  86. package/dist/mac-BMb1F0dN.js.map +1 -0
  87. package/dist/{hash-CXeGAwai.mjs → mac-ZpRlx8Fs.mjs} +3 -18
  88. package/dist/mac-ZpRlx8Fs.mjs.map +1 -0
  89. package/dist/post-quantum-crypto.d.mts +68 -2
  90. package/dist/post-quantum-crypto.d.mts.map +1 -0
  91. package/dist/post-quantum-crypto.d.ts +68 -2
  92. package/dist/post-quantum-crypto.d.ts.map +1 -0
  93. package/dist/post-quantum-crypto.js +7 -6
  94. package/dist/post-quantum-crypto.mjs +1 -1
  95. package/dist/storage-service.d.mts +47 -2
  96. package/dist/storage-service.d.mts.map +1 -0
  97. package/dist/storage-service.d.ts +47 -2
  98. package/dist/storage-service.d.ts.map +1 -0
  99. package/dist/storage-service.js +58 -4
  100. package/dist/storage-service.js.map +1 -0
  101. package/dist/storage-service.mjs +55 -2
  102. package/dist/storage-service.mjs.map +1 -0
  103. package/dist/symmetric-crypto.d.mts +1 -4
  104. package/dist/symmetric-crypto.d.mts.map +1 -0
  105. package/dist/symmetric-crypto.d.ts +1 -4
  106. package/dist/symmetric-crypto.d.ts.map +1 -0
  107. package/dist/symmetric-crypto.js +9 -9
  108. package/dist/symmetric-crypto.mjs +1 -2
  109. package/dist/types.d.mts +104 -2
  110. package/dist/types.d.mts.map +1 -0
  111. package/dist/types.d.ts +104 -2
  112. package/dist/types.d.ts.map +1 -0
  113. package/dist/types.js +11 -2
  114. package/dist/types.js.map +1 -0
  115. package/dist/types.mjs +9 -2
  116. package/dist/types.mjs.map +1 -0
  117. package/dist/utils.d.mts +2 -5
  118. package/dist/utils.d.mts.map +1 -0
  119. package/dist/utils.d.ts +2 -5
  120. package/dist/utils.d.ts.map +1 -0
  121. package/dist/utils.js +16 -15
  122. package/dist/utils.mjs +1 -1
  123. package/package.json +23 -14
  124. package/dist/asymmetric-crypto-BORmLhnx.js.map +0 -1
  125. package/dist/asymmetric-crypto-CyXsV4XT.mjs.map +0 -1
  126. package/dist/constants-Ccp21E03.js +0 -208
  127. package/dist/constants-Ccp21E03.js.map +0 -1
  128. package/dist/constants-kTeX-2T0.mjs +0 -34
  129. package/dist/constants-kTeX-2T0.mjs.map +0 -1
  130. package/dist/derive-key-Be7hS-cN.mjs.map +0 -1
  131. package/dist/derive-key-CBf2WxJd.js.map +0 -1
  132. package/dist/email-crypto-BrT98taw.js.map +0 -1
  133. package/dist/email-crypto-DJUEjTxA.mjs.map +0 -1
  134. package/dist/hash-BoqwNkcd.js.map +0 -1
  135. package/dist/hash-CXeGAwai.mjs.map +0 -1
  136. package/dist/index-CQqgKsbX.d.ts +0 -50
  137. package/dist/index-CintVUbp.d.ts +0 -97
  138. package/dist/index-D5pBU_A5.d.mts +0 -50
  139. package/dist/index-MaOov-ag.d.mts +0 -97
  140. package/dist/keystore-crypto-B4yCVo9l.js.map +0 -1
  141. package/dist/keystore-crypto-Bjgriq9h.mjs.map +0 -1
  142. package/dist/keystore-service.d.mts +0 -48
  143. package/dist/keystore-service.d.ts +0 -48
  144. package/dist/keystore-service.js +0 -122
  145. package/dist/keystore-service.js.map +0 -1
  146. package/dist/keystore-service.mjs +0 -114
  147. package/dist/keystore-service.mjs.map +0 -1
  148. package/dist/post-quantum-crypto-CAi-cEkV.js.map +0 -1
  149. package/dist/post-quantum-crypto-Vv34t6gX.mjs.map +0 -1
  150. package/dist/storage-service-BgIK2aYZ.js +0 -82
  151. package/dist/storage-service-BgIK2aYZ.js.map +0 -1
  152. package/dist/storage-service-CubCbhY2.mjs +0 -65
  153. package/dist/storage-service-CubCbhY2.mjs.map +0 -1
  154. package/dist/symmetric-crypto-CrdS1Che.mjs.map +0 -1
  155. package/dist/symmetric-crypto-D65zB396.js.map +0 -1
  156. package/dist/types-52g887Zi.js +0 -16
  157. package/dist/types-52g887Zi.js.map +0 -1
  158. package/dist/types-BiEoleqw.mjs +0 -10
  159. package/dist/types-BiEoleqw.mjs.map +0 -1
  160. package/dist/types-Ds3ivE9W.d.ts +0 -104
  161. package/dist/types-DwQJtrTx.d.mts +0 -104
  162. package/dist/utils-CNs3cyDj.js.map +0 -1
  163. package/dist/utils-DS04iUcX.mjs.map +0 -1
@@ -1,122 +0,0 @@
1
- const require_chunk = require('./chunk-Dt-PWiN7.js');
2
- const require_utils = require('./utils-CNs3cyDj.js');
3
- let axios = require("axios");
4
- axios = require_chunk.__toESM(axios);
5
-
6
- //#region src/keystore-service/api.ts
7
- var KeyServiceAPI = class {
8
- constructor(baseUrl) {
9
- this.baseUrl = baseUrl;
10
- }
11
- /**
12
- * Converts the specific client error into a proprietary error for our apps
13
- * @param error
14
- * @private
15
- */
16
- normalizeError(error) {
17
- let errorMessage;
18
- if (error.response?.status === 401) errorMessage = "Unauthorized: Invalid or expired token";
19
- else if (error.response?.status === 403) errorMessage = "Forbidden: Insufficient permissions";
20
- else if (error.response?.status === 404) errorMessage = "Keystore not found for the specified user";
21
- else errorMessage = "AxiosError:" + (error.message ?? "Unknown error");
22
- throw new Error(errorMessage);
23
- }
24
- /**
25
- * Sends a user's encrypted keystore to the server
26
- * @param keystore - The encrypted keystore
27
- * @param url - The user specific part of the url
28
- * @returns Server response
29
- */
30
- async uploadKeystoreToServer(encryptedKeystore) {
31
- try {
32
- const url = `${this.baseUrl}/uploadKeystore`;
33
- return await axios.default.post(url, { encryptedKeystore }, {
34
- withCredentials: true,
35
- headers: { "Content-Type": "application/json" }
36
- });
37
- } catch (error) {
38
- if (axios.default.isAxiosError(error)) this.normalizeError(error);
39
- throw new Error("Failed to send keystore", { cause: error });
40
- }
41
- }
42
- /**
43
- * Requests a user's encrypted keystore from the server
44
- * @param url - The user-specific part of the url
45
- * @returns The user's encrypted keystore as base64 string
46
- */
47
- async getKeystoreFromServer(userID, keystoreType) {
48
- try {
49
- const url = `${this.baseUrl}/downloadKeystore`;
50
- return (await axios.default.get(url, {
51
- params: {
52
- userID,
53
- keystoreType
54
- },
55
- withCredentials: true,
56
- headers: { "Content-Type": "application/json" }
57
- })).data;
58
- } catch (error) {
59
- if (axios.default.isAxiosError(error)) this.normalizeError(error);
60
- throw new Error("Failed to retrive keystore", { cause: error });
61
- }
62
- }
63
- /**
64
- * Obtains recipients public keys from the server
65
- *
66
- * @param emails - The recipients' emails
67
- * @returns The list of recipients' public keys
68
- */
69
- async getRecipientsPublicKeysFromServer(emails) {
70
- try {
71
- const url = `${this.baseUrl}/getPublicKeys`;
72
- return (await axios.default.get(url, {
73
- params: { emails },
74
- withCredentials: true,
75
- headers: { "Content-Type": "application/json" }
76
- })).data;
77
- } catch (error) {
78
- if (axios.default.isAxiosError(error)) this.normalizeError(error);
79
- throw new Error("Failed to retrieve public keys", { cause: error });
80
- }
81
- }
82
- /**
83
- * Obtains the recipient public keys from the server
84
- *
85
- * @param email - The recipients' emails
86
- * @returns The list of recipients' public keys
87
- */
88
- async getRecipientsPublicKeys(emails) {
89
- try {
90
- const publicKeysBase64 = await this.getRecipientsPublicKeysFromServer(emails);
91
- const result = [];
92
- for (const keyBase64 of publicKeysBase64) {
93
- const publicKeys = await require_utils.base64ToPublicKey(keyBase64);
94
- result.push(publicKeys);
95
- }
96
- return result;
97
- } catch (error) {
98
- throw new Error("Failed to get recipients public keys", { cause: error });
99
- }
100
- }
101
- };
102
- function getKeyServiceAPI(baseUrl) {
103
- return new KeyServiceAPI(baseUrl);
104
- }
105
-
106
- //#endregion
107
- //#region src/keystore-service/index.ts
108
- var keystore_service_exports = /* @__PURE__ */ require_chunk.__exportAll({
109
- KeyServiceAPI: () => KeyServiceAPI,
110
- getKeyServiceAPI: () => getKeyServiceAPI
111
- });
112
-
113
- //#endregion
114
- exports.KeyServiceAPI = KeyServiceAPI;
115
- exports.getKeyServiceAPI = getKeyServiceAPI;
116
- Object.defineProperty(exports, 'keystore_service_exports', {
117
- enumerable: true,
118
- get: function () {
119
- return keystore_service_exports;
120
- }
121
- });
122
- //# sourceMappingURL=keystore-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keystore-service.js","names":["base64ToPublicKey"],"sources":["../src/keystore-service/api.ts","../src/keystore-service/index.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosError } from 'axios';\nimport { KeystoreType, EncryptedKeystore, PublicKeys, PublicKeysBase64 } from '../types';\nimport { base64ToPublicKey } from '../utils';\n\nexport class KeyServiceAPI {\n private readonly baseUrl: string;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n /**\n * Converts the specific client error into a proprietary error for our apps\n * @param error\n * @private\n */\n private normalizeError(error: AxiosError) {\n let errorMessage: string;\n if (error.response?.status === 401) {\n errorMessage = 'Unauthorized: Invalid or expired token';\n } else if (error.response?.status === 403) {\n errorMessage = 'Forbidden: Insufficient permissions';\n } else if (error.response?.status === 404) {\n errorMessage = 'Keystore not found for the specified user';\n } else {\n errorMessage = 'AxiosError:' + (error.message ?? 'Unknown error');\n }\n\n throw new Error(errorMessage);\n }\n\n /**\n * Sends a user's encrypted keystore to the server\n * @param keystore - The encrypted keystore\n * @param url - The user specific part of the url\n * @returns Server response\n */\n async uploadKeystoreToServer(encryptedKeystore: EncryptedKeystore): Promise<AxiosResponse> {\n try {\n const url = `${this.baseUrl}/uploadKeystore`;\n const response = await axios.post(\n url,\n { encryptedKeystore },\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n );\n return response;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n this.normalizeError(error);\n }\n throw new Error('Failed to send keystore', { cause: error });\n }\n }\n\n /**\n * Requests a user's encrypted keystore from the server\n * @param url - The user-specific part of the url\n * @returns The user's encrypted keystore as base64 string\n */\n async getKeystoreFromServer(userID: string, keystoreType: KeystoreType): Promise<EncryptedKeystore> {\n try {\n const url = `${this.baseUrl}/downloadKeystore`;\n const response = await axios.get<EncryptedKeystore>(url, {\n params: { userID, keystoreType },\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return response.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n this.normalizeError(error);\n }\n\n throw new Error('Failed to retrive keystore', { cause: error });\n }\n }\n\n /**\n * Obtains recipients public keys from the server\n *\n * @param emails - The recipients' emails\n * @returns The list of recipients' public keys\n */\n async getRecipientsPublicKeysFromServer(emails: string[]): Promise<PublicKeysBase64[]> {\n try {\n const url = `${this.baseUrl}/getPublicKeys`;\n const response = await axios.get<PublicKeysBase64[]>(url, {\n params: {\n emails: emails,\n },\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return response.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n this.normalizeError(error);\n }\n throw new Error('Failed to retrieve public keys', { cause: error });\n }\n }\n\n /**\n * Obtains the recipient public keys from the server\n *\n * @param email - The recipients' emails\n * @returns The list of recipients' public keys\n */\n async getRecipientsPublicKeys(emails: string[]): Promise<PublicKeys[]> {\n try {\n const publicKeysBase64: PublicKeysBase64[] = await this.getRecipientsPublicKeysFromServer(emails);\n const result: PublicKeys[] = [];\n for (const keyBase64 of publicKeysBase64) {\n const publicKeys = await base64ToPublicKey(keyBase64);\n result.push(publicKeys);\n }\n return result;\n } catch (error) {\n throw new Error('Failed to get recipients public keys', { cause: error });\n }\n }\n}\n\nexport function getKeyServiceAPI(baseUrl: string): KeyServiceAPI {\n return new KeyServiceAPI(baseUrl);\n}\n","export * from './api';\n"],"mappings":";;;;;;AAIA,IAAa,gBAAb,MAA2B;CAGzB,YAAY,SAAiB;AAC3B,OAAK,UAAU;;;;;;;CAQjB,AAAQ,eAAe,OAAmB;EACxC,IAAI;AACJ,MAAI,MAAM,UAAU,WAAW,IAC7B,gBAAe;WACN,MAAM,UAAU,WAAW,IACpC,gBAAe;WACN,MAAM,UAAU,WAAW,IACpC,gBAAe;MAEf,gBAAe,iBAAiB,MAAM,WAAW;AAGnD,QAAM,IAAI,MAAM,aAAa;;;;;;;;CAS/B,MAAM,uBAAuB,mBAA8D;AACzF,MAAI;GACF,MAAM,MAAM,GAAG,KAAK,QAAQ;AAW5B,UAViB,MAAM,cAAM,KAC3B,KACA,EAAE,mBAAmB,EACrB;IACE,iBAAiB;IACjB,SAAS,EACP,gBAAgB,oBACjB;IACF,CACF;WAEM,OAAO;AACd,OAAI,cAAM,aAAa,MAAM,CAC3B,MAAK,eAAe,MAAM;AAE5B,SAAM,IAAI,MAAM,2BAA2B,EAAE,OAAO,OAAO,CAAC;;;;;;;;CAShE,MAAM,sBAAsB,QAAgB,cAAwD;AAClG,MAAI;GACF,MAAM,MAAM,GAAG,KAAK,QAAQ;AAQ5B,WAPiB,MAAM,cAAM,IAAuB,KAAK;IACvD,QAAQ;KAAE;KAAQ;KAAc;IAChC,iBAAiB;IACjB,SAAS,EACP,gBAAgB,oBACjB;IACF,CAAC,EACc;WACT,OAAO;AACd,OAAI,cAAM,aAAa,MAAM,CAC3B,MAAK,eAAe,MAAM;AAG5B,SAAM,IAAI,MAAM,8BAA8B,EAAE,OAAO,OAAO,CAAC;;;;;;;;;CAUnE,MAAM,kCAAkC,QAA+C;AACrF,MAAI;GACF,MAAM,MAAM,GAAG,KAAK,QAAQ;AAU5B,WATiB,MAAM,cAAM,IAAwB,KAAK;IACxD,QAAQ,EACE,QACT;IACD,iBAAiB;IACjB,SAAS,EACP,gBAAgB,oBACjB;IACF,CAAC,EACc;WACT,OAAO;AACd,OAAI,cAAM,aAAa,MAAM,CAC3B,MAAK,eAAe,MAAM;AAE5B,SAAM,IAAI,MAAM,kCAAkC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;CAUvE,MAAM,wBAAwB,QAAyC;AACrE,MAAI;GACF,MAAM,mBAAuC,MAAM,KAAK,kCAAkC,OAAO;GACjG,MAAM,SAAuB,EAAE;AAC/B,QAAK,MAAM,aAAa,kBAAkB;IACxC,MAAM,aAAa,MAAMA,gCAAkB,UAAU;AACrD,WAAO,KAAK,WAAW;;AAEzB,UAAO;WACA,OAAO;AACd,SAAM,IAAI,MAAM,wCAAwC,EAAE,OAAO,OAAO,CAAC;;;;AAK/E,SAAgB,iBAAiB,SAAgC;AAC/D,QAAO,IAAI,cAAc,QAAQ"}
@@ -1,114 +0,0 @@
1
- import { t as __exportAll } from "./chunk-DWirmd9C.mjs";
2
- import { c as base64ToPublicKey } from "./utils-DS04iUcX.mjs";
3
- import axios from "axios";
4
-
5
- //#region src/keystore-service/api.ts
6
- var KeyServiceAPI = class {
7
- constructor(baseUrl) {
8
- this.baseUrl = baseUrl;
9
- }
10
- /**
11
- * Converts the specific client error into a proprietary error for our apps
12
- * @param error
13
- * @private
14
- */
15
- normalizeError(error) {
16
- let errorMessage;
17
- if (error.response?.status === 401) errorMessage = "Unauthorized: Invalid or expired token";
18
- else if (error.response?.status === 403) errorMessage = "Forbidden: Insufficient permissions";
19
- else if (error.response?.status === 404) errorMessage = "Keystore not found for the specified user";
20
- else errorMessage = "AxiosError:" + (error.message ?? "Unknown error");
21
- throw new Error(errorMessage);
22
- }
23
- /**
24
- * Sends a user's encrypted keystore to the server
25
- * @param keystore - The encrypted keystore
26
- * @param url - The user specific part of the url
27
- * @returns Server response
28
- */
29
- async uploadKeystoreToServer(encryptedKeystore) {
30
- try {
31
- const url = `${this.baseUrl}/uploadKeystore`;
32
- return await axios.post(url, { encryptedKeystore }, {
33
- withCredentials: true,
34
- headers: { "Content-Type": "application/json" }
35
- });
36
- } catch (error) {
37
- if (axios.isAxiosError(error)) this.normalizeError(error);
38
- throw new Error("Failed to send keystore", { cause: error });
39
- }
40
- }
41
- /**
42
- * Requests a user's encrypted keystore from the server
43
- * @param url - The user-specific part of the url
44
- * @returns The user's encrypted keystore as base64 string
45
- */
46
- async getKeystoreFromServer(userID, keystoreType) {
47
- try {
48
- const url = `${this.baseUrl}/downloadKeystore`;
49
- return (await axios.get(url, {
50
- params: {
51
- userID,
52
- keystoreType
53
- },
54
- withCredentials: true,
55
- headers: { "Content-Type": "application/json" }
56
- })).data;
57
- } catch (error) {
58
- if (axios.isAxiosError(error)) this.normalizeError(error);
59
- throw new Error("Failed to retrive keystore", { cause: error });
60
- }
61
- }
62
- /**
63
- * Obtains recipients public keys from the server
64
- *
65
- * @param emails - The recipients' emails
66
- * @returns The list of recipients' public keys
67
- */
68
- async getRecipientsPublicKeysFromServer(emails) {
69
- try {
70
- const url = `${this.baseUrl}/getPublicKeys`;
71
- return (await axios.get(url, {
72
- params: { emails },
73
- withCredentials: true,
74
- headers: { "Content-Type": "application/json" }
75
- })).data;
76
- } catch (error) {
77
- if (axios.isAxiosError(error)) this.normalizeError(error);
78
- throw new Error("Failed to retrieve public keys", { cause: error });
79
- }
80
- }
81
- /**
82
- * Obtains the recipient public keys from the server
83
- *
84
- * @param email - The recipients' emails
85
- * @returns The list of recipients' public keys
86
- */
87
- async getRecipientsPublicKeys(emails) {
88
- try {
89
- const publicKeysBase64 = await this.getRecipientsPublicKeysFromServer(emails);
90
- const result = [];
91
- for (const keyBase64 of publicKeysBase64) {
92
- const publicKeys = await base64ToPublicKey(keyBase64);
93
- result.push(publicKeys);
94
- }
95
- return result;
96
- } catch (error) {
97
- throw new Error("Failed to get recipients public keys", { cause: error });
98
- }
99
- }
100
- };
101
- function getKeyServiceAPI(baseUrl) {
102
- return new KeyServiceAPI(baseUrl);
103
- }
104
-
105
- //#endregion
106
- //#region src/keystore-service/index.ts
107
- var keystore_service_exports = /* @__PURE__ */ __exportAll({
108
- KeyServiceAPI: () => KeyServiceAPI,
109
- getKeyServiceAPI: () => getKeyServiceAPI
110
- });
111
-
112
- //#endregion
113
- export { KeyServiceAPI, getKeyServiceAPI, keystore_service_exports as t };
114
- //# sourceMappingURL=keystore-service.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keystore-service.mjs","names":[],"sources":["../src/keystore-service/api.ts","../src/keystore-service/index.ts"],"sourcesContent":["import axios, { AxiosResponse, AxiosError } from 'axios';\nimport { KeystoreType, EncryptedKeystore, PublicKeys, PublicKeysBase64 } from '../types';\nimport { base64ToPublicKey } from '../utils';\n\nexport class KeyServiceAPI {\n private readonly baseUrl: string;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n /**\n * Converts the specific client error into a proprietary error for our apps\n * @param error\n * @private\n */\n private normalizeError(error: AxiosError) {\n let errorMessage: string;\n if (error.response?.status === 401) {\n errorMessage = 'Unauthorized: Invalid or expired token';\n } else if (error.response?.status === 403) {\n errorMessage = 'Forbidden: Insufficient permissions';\n } else if (error.response?.status === 404) {\n errorMessage = 'Keystore not found for the specified user';\n } else {\n errorMessage = 'AxiosError:' + (error.message ?? 'Unknown error');\n }\n\n throw new Error(errorMessage);\n }\n\n /**\n * Sends a user's encrypted keystore to the server\n * @param keystore - The encrypted keystore\n * @param url - The user specific part of the url\n * @returns Server response\n */\n async uploadKeystoreToServer(encryptedKeystore: EncryptedKeystore): Promise<AxiosResponse> {\n try {\n const url = `${this.baseUrl}/uploadKeystore`;\n const response = await axios.post(\n url,\n { encryptedKeystore },\n {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n );\n return response;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n this.normalizeError(error);\n }\n throw new Error('Failed to send keystore', { cause: error });\n }\n }\n\n /**\n * Requests a user's encrypted keystore from the server\n * @param url - The user-specific part of the url\n * @returns The user's encrypted keystore as base64 string\n */\n async getKeystoreFromServer(userID: string, keystoreType: KeystoreType): Promise<EncryptedKeystore> {\n try {\n const url = `${this.baseUrl}/downloadKeystore`;\n const response = await axios.get<EncryptedKeystore>(url, {\n params: { userID, keystoreType },\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return response.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n this.normalizeError(error);\n }\n\n throw new Error('Failed to retrive keystore', { cause: error });\n }\n }\n\n /**\n * Obtains recipients public keys from the server\n *\n * @param emails - The recipients' emails\n * @returns The list of recipients' public keys\n */\n async getRecipientsPublicKeysFromServer(emails: string[]): Promise<PublicKeysBase64[]> {\n try {\n const url = `${this.baseUrl}/getPublicKeys`;\n const response = await axios.get<PublicKeysBase64[]>(url, {\n params: {\n emails: emails,\n },\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n return response.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n this.normalizeError(error);\n }\n throw new Error('Failed to retrieve public keys', { cause: error });\n }\n }\n\n /**\n * Obtains the recipient public keys from the server\n *\n * @param email - The recipients' emails\n * @returns The list of recipients' public keys\n */\n async getRecipientsPublicKeys(emails: string[]): Promise<PublicKeys[]> {\n try {\n const publicKeysBase64: PublicKeysBase64[] = await this.getRecipientsPublicKeysFromServer(emails);\n const result: PublicKeys[] = [];\n for (const keyBase64 of publicKeysBase64) {\n const publicKeys = await base64ToPublicKey(keyBase64);\n result.push(publicKeys);\n }\n return result;\n } catch (error) {\n throw new Error('Failed to get recipients public keys', { cause: error });\n }\n }\n}\n\nexport function getKeyServiceAPI(baseUrl: string): KeyServiceAPI {\n return new KeyServiceAPI(baseUrl);\n}\n","export * from './api';\n"],"mappings":";;;;;AAIA,IAAa,gBAAb,MAA2B;CAGzB,YAAY,SAAiB;AAC3B,OAAK,UAAU;;;;;;;CAQjB,AAAQ,eAAe,OAAmB;EACxC,IAAI;AACJ,MAAI,MAAM,UAAU,WAAW,IAC7B,gBAAe;WACN,MAAM,UAAU,WAAW,IACpC,gBAAe;WACN,MAAM,UAAU,WAAW,IACpC,gBAAe;MAEf,gBAAe,iBAAiB,MAAM,WAAW;AAGnD,QAAM,IAAI,MAAM,aAAa;;;;;;;;CAS/B,MAAM,uBAAuB,mBAA8D;AACzF,MAAI;GACF,MAAM,MAAM,GAAG,KAAK,QAAQ;AAW5B,UAViB,MAAM,MAAM,KAC3B,KACA,EAAE,mBAAmB,EACrB;IACE,iBAAiB;IACjB,SAAS,EACP,gBAAgB,oBACjB;IACF,CACF;WAEM,OAAO;AACd,OAAI,MAAM,aAAa,MAAM,CAC3B,MAAK,eAAe,MAAM;AAE5B,SAAM,IAAI,MAAM,2BAA2B,EAAE,OAAO,OAAO,CAAC;;;;;;;;CAShE,MAAM,sBAAsB,QAAgB,cAAwD;AAClG,MAAI;GACF,MAAM,MAAM,GAAG,KAAK,QAAQ;AAQ5B,WAPiB,MAAM,MAAM,IAAuB,KAAK;IACvD,QAAQ;KAAE;KAAQ;KAAc;IAChC,iBAAiB;IACjB,SAAS,EACP,gBAAgB,oBACjB;IACF,CAAC,EACc;WACT,OAAO;AACd,OAAI,MAAM,aAAa,MAAM,CAC3B,MAAK,eAAe,MAAM;AAG5B,SAAM,IAAI,MAAM,8BAA8B,EAAE,OAAO,OAAO,CAAC;;;;;;;;;CAUnE,MAAM,kCAAkC,QAA+C;AACrF,MAAI;GACF,MAAM,MAAM,GAAG,KAAK,QAAQ;AAU5B,WATiB,MAAM,MAAM,IAAwB,KAAK;IACxD,QAAQ,EACE,QACT;IACD,iBAAiB;IACjB,SAAS,EACP,gBAAgB,oBACjB;IACF,CAAC,EACc;WACT,OAAO;AACd,OAAI,MAAM,aAAa,MAAM,CAC3B,MAAK,eAAe,MAAM;AAE5B,SAAM,IAAI,MAAM,kCAAkC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;CAUvE,MAAM,wBAAwB,QAAyC;AACrE,MAAI;GACF,MAAM,mBAAuC,MAAM,KAAK,kCAAkC,OAAO;GACjG,MAAM,SAAuB,EAAE;AAC/B,QAAK,MAAM,aAAa,kBAAkB;IACxC,MAAM,aAAa,MAAM,kBAAkB,UAAU;AACrD,WAAO,KAAK,WAAW;;AAEzB,UAAO;WACA,OAAO;AACd,SAAM,IAAI,MAAM,wCAAwC,EAAE,OAAO,OAAO,CAAC;;;;AAK/E,SAAgB,iBAAiB,SAAgC;AAC/D,QAAO,IAAI,cAAc,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"post-quantum-crypto-CAi-cEkV.js","names":["generateKyberKeys","ml_kem768","encapsulateKyber","decapsulateKyber","generateKyberKeys","ml_kem512","encapsulateKyber","decapsulateKyber","ml_kem1024"],"sources":["../src/post-quantum-crypto/kyber768.ts","../src/post-quantum-crypto/kyber512.ts","../src/post-quantum-crypto/kyber1024.ts","../src/post-quantum-crypto/index.ts"],"sourcesContent":["import { ml_kem768 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem768.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem768.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem768.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","import { ml_kem512 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem512.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem512.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem512.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","import { ml_kem1024 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem1024.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem1024.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem1024.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","export * from './kyber768';\nexport * as kyber512 from './kyber512';\nexport * as kyber1024 from './kyber1024';\n"],"mappings":";;;;;;;;;;AAQA,SAAgBA,oBAAkB,MAGhC;AACA,KAAI;AACF,SAAOC,wCAAU,OAAO,KAAK;UACtB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgBC,mBAAiB,WAG/B;AACA,KAAI;AACF,SAAOD,wCAAU,YAAY,UAAU;UAChC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgBE,mBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAOF,wCAAU,YAAY,YAAY,UAAU;UAC5C,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;ACvC9D,SAAgBG,oBAAkB,MAGhC;AACA,KAAI;AACF,SAAOC,wCAAU,OAAO,KAAK;UACtB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgBC,mBAAiB,WAG/B;AACA,KAAI;AACF,SAAOD,wCAAU,YAAY,UAAU;UAChC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgBE,mBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAOF,wCAAU,YAAY,YAAY,UAAU;UAC5C,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;ACvC9D,SAAgB,kBAAkB,MAGhC;AACA,KAAI;AACF,SAAOG,yCAAW,OAAO,KAAK;UACvB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgB,iBAAiB,WAG/B;AACA,KAAI;AACF,SAAOA,yCAAW,YAAY,UAAU;UACjC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgB,iBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAOA,yCAAW,YAAY,YAAY,UAAU;UAC7C,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"post-quantum-crypto-Vv34t6gX.mjs","names":["generateKyberKeys","encapsulateKyber","decapsulateKyber","generateKyberKeys","encapsulateKyber","decapsulateKyber"],"sources":["../src/post-quantum-crypto/kyber768.ts","../src/post-quantum-crypto/kyber512.ts","../src/post-quantum-crypto/kyber1024.ts","../src/post-quantum-crypto/index.ts"],"sourcesContent":["import { ml_kem768 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem768.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem768.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem768.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","import { ml_kem512 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem512.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem512.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem512.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","import { ml_kem1024 } from '@noble/post-quantum/ml-kem.js';\n\n/**\n * Generates public and secret Kyber keys\n *\n * @param seed - The optional seed\n * @returns The generated Kyber key pair.\n */\nexport function generateKyberKeys(seed?: Uint8Array): {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n} {\n try {\n return ml_kem1024.keygen(seed);\n } catch (error) {\n throw new Error('Failed to generate Kyber keys', { cause: error });\n }\n}\n\n/**\n * Generates a shared secret of 256-bits and encapsulates it to the given public key using Kyber algorithms\n *\n * @param publicKey - The public Kyber key\n * @returns The resulting encapsulation and the generated shared secret.\n */\nexport function encapsulateKyber(publicKey: Uint8Array): {\n cipherText: Uint8Array;\n sharedSecret: Uint8Array;\n} {\n try {\n return ml_kem1024.encapsulate(publicKey);\n } catch (error) {\n throw new Error('Failed to encapsulate', { cause: error });\n }\n}\n\n/**\n * Decapsulates the encapsulated shared secret using Kyber algorithms\n *\n * @param cipherText - The encapsulated key\n * @param secretKey - The private Kyber key\n * @returns The resulting decapsulated shared secret.\n */\nexport function decapsulateKyber(cipherText: Uint8Array, secretKey: Uint8Array): Uint8Array {\n try {\n return ml_kem1024.decapsulate(cipherText, secretKey);\n } catch (error) {\n throw new Error('Failed to decapsulate', { cause: error });\n }\n}\n","export * from './kyber768';\nexport * as kyber512 from './kyber512';\nexport * as kyber1024 from './kyber1024';\n"],"mappings":";;;;;;;;;;AAQA,SAAgBA,oBAAkB,MAGhC;AACA,KAAI;AACF,SAAO,UAAU,OAAO,KAAK;UACtB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgBC,mBAAiB,WAG/B;AACA,KAAI;AACF,SAAO,UAAU,YAAY,UAAU;UAChC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgBC,mBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAO,UAAU,YAAY,YAAY,UAAU;UAC5C,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;ACvC9D,SAAgBC,oBAAkB,MAGhC;AACA,KAAI;AACF,SAAO,UAAU,OAAO,KAAK;UACtB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgBC,mBAAiB,WAG/B;AACA,KAAI;AACF,SAAO,UAAU,YAAY,UAAU;UAChC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgBC,mBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAO,UAAU,YAAY,YAAY,UAAU;UAC5C,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;ACvC9D,SAAgB,kBAAkB,MAGhC;AACA,KAAI;AACF,SAAO,WAAW,OAAO,KAAK;UACvB,OAAO;AACd,QAAM,IAAI,MAAM,iCAAiC,EAAE,OAAO,OAAO,CAAC;;;;;;;;;AAUtE,SAAgB,iBAAiB,WAG/B;AACA,KAAI;AACF,SAAO,WAAW,YAAY,UAAU;UACjC,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC;;;;;;;;;;AAW9D,SAAgB,iBAAiB,YAAwB,WAAmC;AAC1F,KAAI;AACF,SAAO,WAAW,YAAY,YAAY,UAAU;UAC7C,OAAO;AACd,QAAM,IAAI,MAAM,yBAAyB,EAAE,OAAO,OAAO,CAAC"}
@@ -1,82 +0,0 @@
1
- const require_chunk = require('./chunk-Dt-PWiN7.js');
2
-
3
- //#region src/storage-service/localStorageService.ts
4
- var localStorageService_exports = /* @__PURE__ */ require_chunk.__exportAll({ default: () => localStorageService_default });
5
- function get$1(key) {
6
- return localStorage.getItem(key);
7
- }
8
- function set$1(key, value) {
9
- return localStorage.setItem(key, value);
10
- }
11
- function removeItem$1(key) {
12
- localStorage.removeItem(key);
13
- }
14
- function exists$1(key) {
15
- return !!localStorage.getItem(key);
16
- }
17
- function clear$1() {
18
- localStorage.clear();
19
- }
20
- const localStorageService = {
21
- set: set$1,
22
- get: get$1,
23
- removeItem: removeItem$1,
24
- exists: exists$1,
25
- clear: clear$1
26
- };
27
- var localStorageService_default = localStorageService;
28
-
29
- //#endregion
30
- //#region src/storage-service/sessionStorageService.ts
31
- var sessionStorageService_exports = /* @__PURE__ */ require_chunk.__exportAll({ default: () => sessionStorageService_default });
32
- function get(key) {
33
- return sessionStorage.getItem(key);
34
- }
35
- function set(key, value) {
36
- return sessionStorage.setItem(key, value);
37
- }
38
- function removeItem(key) {
39
- sessionStorage.removeItem(key);
40
- }
41
- function exists(key) {
42
- return !!sessionStorage.getItem(key);
43
- }
44
- function clear() {
45
- sessionStorage.clear();
46
- }
47
- const sessionStorageService = {
48
- set,
49
- get,
50
- removeItem,
51
- exists,
52
- clear
53
- };
54
- var sessionStorageService_default = sessionStorageService;
55
-
56
- //#endregion
57
- //#region src/storage-service/index.ts
58
- var storage_service_exports = /* @__PURE__ */ require_chunk.__exportAll({
59
- localStorageService: () => localStorageService_exports,
60
- sessionStorageService: () => sessionStorageService_exports
61
- });
62
-
63
- //#endregion
64
- Object.defineProperty(exports, 'localStorageService_exports', {
65
- enumerable: true,
66
- get: function () {
67
- return localStorageService_exports;
68
- }
69
- });
70
- Object.defineProperty(exports, 'sessionStorageService_exports', {
71
- enumerable: true,
72
- get: function () {
73
- return sessionStorageService_exports;
74
- }
75
- });
76
- Object.defineProperty(exports, 'storage_service_exports', {
77
- enumerable: true,
78
- get: function () {
79
- return storage_service_exports;
80
- }
81
- });
82
- //# sourceMappingURL=storage-service-BgIK2aYZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage-service-BgIK2aYZ.js","names":["get","set","removeItem","exists","clear"],"sources":["../src/storage-service/localStorageService.ts","../src/storage-service/sessionStorageService.ts","../src/storage-service/index.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","export * as localStorageService from './localStorageService';\nexport * as sessionStorageService from './sessionStorageService';\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;AAED,kCAAe;;;;;AC5Bf,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;AAED,oCAAe"}
@@ -1,65 +0,0 @@
1
- import { t as __exportAll } from "./chunk-DWirmd9C.mjs";
2
-
3
- //#region src/storage-service/localStorageService.ts
4
- var localStorageService_exports = /* @__PURE__ */ __exportAll({ default: () => localStorageService_default });
5
- function get$1(key) {
6
- return localStorage.getItem(key);
7
- }
8
- function set$1(key, value) {
9
- return localStorage.setItem(key, value);
10
- }
11
- function removeItem$1(key) {
12
- localStorage.removeItem(key);
13
- }
14
- function exists$1(key) {
15
- return !!localStorage.getItem(key);
16
- }
17
- function clear$1() {
18
- localStorage.clear();
19
- }
20
- const localStorageService = {
21
- set: set$1,
22
- get: get$1,
23
- removeItem: removeItem$1,
24
- exists: exists$1,
25
- clear: clear$1
26
- };
27
- var localStorageService_default = localStorageService;
28
-
29
- //#endregion
30
- //#region src/storage-service/sessionStorageService.ts
31
- var sessionStorageService_exports = /* @__PURE__ */ __exportAll({ default: () => sessionStorageService_default });
32
- function get(key) {
33
- return sessionStorage.getItem(key);
34
- }
35
- function set(key, value) {
36
- return sessionStorage.setItem(key, value);
37
- }
38
- function removeItem(key) {
39
- sessionStorage.removeItem(key);
40
- }
41
- function exists(key) {
42
- return !!sessionStorage.getItem(key);
43
- }
44
- function clear() {
45
- sessionStorage.clear();
46
- }
47
- const sessionStorageService = {
48
- set,
49
- get,
50
- removeItem,
51
- exists,
52
- clear
53
- };
54
- var sessionStorageService_default = sessionStorageService;
55
-
56
- //#endregion
57
- //#region src/storage-service/index.ts
58
- var storage_service_exports = /* @__PURE__ */ __exportAll({
59
- localStorageService: () => localStorageService_exports,
60
- sessionStorageService: () => sessionStorageService_exports
61
- });
62
-
63
- //#endregion
64
- export { sessionStorageService_exports as n, localStorageService_exports as r, storage_service_exports as t };
65
- //# sourceMappingURL=storage-service-CubCbhY2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage-service-CubCbhY2.mjs","names":["get","set","removeItem","exists","clear"],"sources":["../src/storage-service/localStorageService.ts","../src/storage-service/sessionStorageService.ts","../src/storage-service/index.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","export * as localStorageService from './localStorageService';\nexport * as sessionStorageService from './sessionStorageService';\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;AAED,kCAAe;;;;;AC5Bf,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;AAED,oCAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"symmetric-crypto-CrdS1Che.mjs","names":[],"sources":["../src/symmetric-crypto/keys.ts","../src/symmetric-crypto/core.ts","../src/symmetric-crypto/aes.ts","../src/symmetric-crypto/index.ts"],"sourcesContent":["import { AES_ALGORITHM, AES_KEY_BIT_LENGTH, KEY_FORMAT } from '../constants';\nimport { getBytesFromData } from '../hash';\n\n/**\n * Converts Uint8Array into CryptoKey\n *\n * @param keyData - The Uint8Array representation of the symmetric key\n * @returns The resulting symmetric CryptoKey.\n */\nexport async function importSymmetricCryptoKey(keyData: Uint8Array | ArrayBuffer): Promise<CryptoKey> {\n return crypto.subtle.importKey(\n KEY_FORMAT,\n new Uint8Array(keyData),\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Converts CryptoKey into Uint8Array\n *\n * @param key - The symmetric CryptoKey\n * @returns The resulting Uint8Array.\n */\nexport async function exportSymmetricCryptoKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const rawKey = await crypto.subtle.exportKey(KEY_FORMAT, key);\n return new Uint8Array(rawKey);\n } catch (error) {\n throw new Error('Failed to export symmetric CryptoKey', { cause: error });\n }\n}\n\n/**\n * Generates symmetric CryptoKey\n *\n * @returns The generated CryptoKey.\n */\nexport async function genSymmetricCryptoKey(): Promise<CryptoKey> {\n return crypto.subtle.generateKey(\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Generates symmetric key as Uint8Array\n *\n * @returns The generated Uint8Array.\n */\nexport function genSymmetricKey(): Uint8Array {\n try {\n const key = new Uint8Array(AES_KEY_BIT_LENGTH / 8);\n crypto.getRandomValues(key);\n return key;\n } catch (error) {\n throw new Error('Failed to generate symmetric key', { cause: error });\n }\n}\n\n/**\n * Derives CryptoKey from the given key material\n *\n * @returns The derived CryptoKey.\n */\nexport async function deriveSymmetricCryptoKey(keyMaterial: Uint8Array): Promise<CryptoKey> {\n try {\n const hashBuffer = getBytesFromData(AES_KEY_BIT_LENGTH / 8, keyMaterial);\n return importSymmetricCryptoKey(hashBuffer);\n } catch (error) {\n throw new Error('Failed to derive CryptoKey from the given key material', { cause: error });\n }\n}\n","import { randomBytes } from '@noble/post-quantum/utils.js';\nimport { getBytesFromData } from '../hash';\nimport { AUX_BYTE_LEN, AES_ALGORITHM, IV_LEN_BYTES } from '../constants';\n\n/**\n * Creates an initialization vector (IV) using RGB-based construction (8.2.2 NIST Special Publication 800-38D)\n * Constructs a 128-bits IV from 2 fileds: the random field (at least 96 bits) and the free field (32 bits).\n * If free filed is empty, then the entier 128-bit IV is sampled randomly.\n *\n * @param freeFiled - The string with an unrestricted content. Can be a device identifier, etc.\n * @returns The resulting 128-bits initialization vector.\n */\nexport function createNISTbasedIV(freeField?: Uint8Array): Uint8Array {\n try {\n if (!freeField) {\n return randomBytes(IV_LEN_BYTES);\n }\n\n const iv = new Uint8Array(16);\n\n const randFiled = randomBytes(12);\n iv.set(randFiled, 0);\n\n const freeFiledFixedLength = getBytesFromData(4, freeField);\n iv.set(freeFiledFixedLength, 12);\n\n return iv;\n } catch (error) {\n throw new Error('Failed to create IV', { cause: error });\n }\n}\n\n/**\n * Hashes aux string to make it fixed-length\n *\n * @param aux - The auxilay string of arbitrary length\n * @returns The resulting fixed-length auxilary string.\n */\nexport async function makeAuxFixedLength(aux: Uint8Array): Promise<Uint8Array> {\n return getBytesFromData(AUX_BYTE_LEN, aux);\n}\n\n/**\n * Symmetrically encrypts message\n *\n * @param message - The message to encrypt\n * @param encryptionKey - The encryption key\n * @param iv - The initialization vector\n * @param additionalData - The auxilary data\n * @returns The resulting ciphertext\n */\nexport async function encryptMessage(\n message: Uint8Array,\n encryptionKey: CryptoKey,\n iv: Uint8Array,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const encrypted = await crypto.subtle.encrypt(\n { name: AES_ALGORITHM, iv: iv as BufferSource, additionalData: additionalData as BufferSource },\n encryptionKey,\n message as BufferSource,\n );\n return new Uint8Array(encrypted);\n } catch (error) {\n throw new Error('Failed to encrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Symmetrically decrypts message\n *\n * @param ciphertext - The encrypted message\n * @param ciphertext - The initialization vector\n * @param encryptionKey - The encryption key\n * @param additionalData - The auxilary data\n * @returns The resulting decrypted message\n */\nexport async function decryptMessage(\n ciphertext: Uint8Array,\n iv: Uint8Array,\n encryptionKey: CryptoKey,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const decrypted = await crypto.subtle.decrypt(\n { name: AES_ALGORITHM, iv: iv as BufferSource, additionalData: additionalData as BufferSource },\n encryptionKey,\n ciphertext as BufferSource,\n );\n return new Uint8Array(decrypted);\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n","import { createNISTbasedIV, makeAuxFixedLength, encryptMessage, decryptMessage } from './core';\nimport { concatBytes } from '@noble/hashes/utils.js';\nimport { IV_LEN_BYTES } from '../constants';\n\n/**\n * Symmetrically encrypts the message\n *\n * @param encryptionKey - The symmetric CryptoKey used for message encryption\n * @param message - The message to encrypt\n * @param freeField - The context of the message (required for IV generation)\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function encryptSymmetrically(\n encryptionKey: CryptoKey,\n message: Uint8Array,\n aux: Uint8Array,\n freeField?: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const iv = createNISTbasedIV(freeField);\n const additionalData = await makeAuxFixedLength(aux);\n const ciphertext = await encryptMessage(message, encryptionKey, iv, additionalData);\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 CryptoKey used for message encryption\n * @param encryptedMessage - The ciphertext\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function decryptSymmetrically(\n encryptionKey: CryptoKey,\n encryptedMessage: Uint8Array,\n aux: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const additionalData = await makeAuxFixedLength(aux);\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 decryptMessage(ciphertext, iv, encryptionKey, additionalData);\n return result;\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n","export * from './keys';\nexport * from './aes';\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"symmetric-crypto-D65zB396.js","names":["KEY_FORMAT","AES_ALGORITHM","AES_KEY_BIT_LENGTH","getBytesFromData","IV_LEN_BYTES","getBytesFromData","AUX_BYTE_LEN","AES_ALGORITHM","IV_LEN_BYTES"],"sources":["../src/symmetric-crypto/keys.ts","../src/symmetric-crypto/core.ts","../src/symmetric-crypto/aes.ts","../src/symmetric-crypto/index.ts"],"sourcesContent":["import { AES_ALGORITHM, AES_KEY_BIT_LENGTH, KEY_FORMAT } from '../constants';\nimport { getBytesFromData } from '../hash';\n\n/**\n * Converts Uint8Array into CryptoKey\n *\n * @param keyData - The Uint8Array representation of the symmetric key\n * @returns The resulting symmetric CryptoKey.\n */\nexport async function importSymmetricCryptoKey(keyData: Uint8Array | ArrayBuffer): Promise<CryptoKey> {\n return crypto.subtle.importKey(\n KEY_FORMAT,\n new Uint8Array(keyData),\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Converts CryptoKey into Uint8Array\n *\n * @param key - The symmetric CryptoKey\n * @returns The resulting Uint8Array.\n */\nexport async function exportSymmetricCryptoKey(key: CryptoKey): Promise<Uint8Array> {\n try {\n const rawKey = await crypto.subtle.exportKey(KEY_FORMAT, key);\n return new Uint8Array(rawKey);\n } catch (error) {\n throw new Error('Failed to export symmetric CryptoKey', { cause: error });\n }\n}\n\n/**\n * Generates symmetric CryptoKey\n *\n * @returns The generated CryptoKey.\n */\nexport async function genSymmetricCryptoKey(): Promise<CryptoKey> {\n return crypto.subtle.generateKey(\n {\n name: AES_ALGORITHM,\n length: AES_KEY_BIT_LENGTH,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n}\n\n/**\n * Generates symmetric key as Uint8Array\n *\n * @returns The generated Uint8Array.\n */\nexport function genSymmetricKey(): Uint8Array {\n try {\n const key = new Uint8Array(AES_KEY_BIT_LENGTH / 8);\n crypto.getRandomValues(key);\n return key;\n } catch (error) {\n throw new Error('Failed to generate symmetric key', { cause: error });\n }\n}\n\n/**\n * Derives CryptoKey from the given key material\n *\n * @returns The derived CryptoKey.\n */\nexport async function deriveSymmetricCryptoKey(keyMaterial: Uint8Array): Promise<CryptoKey> {\n try {\n const hashBuffer = getBytesFromData(AES_KEY_BIT_LENGTH / 8, keyMaterial);\n return importSymmetricCryptoKey(hashBuffer);\n } catch (error) {\n throw new Error('Failed to derive CryptoKey from the given key material', { cause: error });\n }\n}\n","import { randomBytes } from '@noble/post-quantum/utils.js';\nimport { getBytesFromData } from '../hash';\nimport { AUX_BYTE_LEN, AES_ALGORITHM, IV_LEN_BYTES } from '../constants';\n\n/**\n * Creates an initialization vector (IV) using RGB-based construction (8.2.2 NIST Special Publication 800-38D)\n * Constructs a 128-bits IV from 2 fileds: the random field (at least 96 bits) and the free field (32 bits).\n * If free filed is empty, then the entier 128-bit IV is sampled randomly.\n *\n * @param freeFiled - The string with an unrestricted content. Can be a device identifier, etc.\n * @returns The resulting 128-bits initialization vector.\n */\nexport function createNISTbasedIV(freeField?: Uint8Array): Uint8Array {\n try {\n if (!freeField) {\n return randomBytes(IV_LEN_BYTES);\n }\n\n const iv = new Uint8Array(16);\n\n const randFiled = randomBytes(12);\n iv.set(randFiled, 0);\n\n const freeFiledFixedLength = getBytesFromData(4, freeField);\n iv.set(freeFiledFixedLength, 12);\n\n return iv;\n } catch (error) {\n throw new Error('Failed to create IV', { cause: error });\n }\n}\n\n/**\n * Hashes aux string to make it fixed-length\n *\n * @param aux - The auxilay string of arbitrary length\n * @returns The resulting fixed-length auxilary string.\n */\nexport async function makeAuxFixedLength(aux: Uint8Array): Promise<Uint8Array> {\n return getBytesFromData(AUX_BYTE_LEN, aux);\n}\n\n/**\n * Symmetrically encrypts message\n *\n * @param message - The message to encrypt\n * @param encryptionKey - The encryption key\n * @param iv - The initialization vector\n * @param additionalData - The auxilary data\n * @returns The resulting ciphertext\n */\nexport async function encryptMessage(\n message: Uint8Array,\n encryptionKey: CryptoKey,\n iv: Uint8Array,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const encrypted = await crypto.subtle.encrypt(\n { name: AES_ALGORITHM, iv: iv as BufferSource, additionalData: additionalData as BufferSource },\n encryptionKey,\n message as BufferSource,\n );\n return new Uint8Array(encrypted);\n } catch (error) {\n throw new Error('Failed to encrypt symmetrically', { cause: error });\n }\n}\n\n/**\n * Symmetrically decrypts message\n *\n * @param ciphertext - The encrypted message\n * @param ciphertext - The initialization vector\n * @param encryptionKey - The encryption key\n * @param additionalData - The auxilary data\n * @returns The resulting decrypted message\n */\nexport async function decryptMessage(\n ciphertext: Uint8Array,\n iv: Uint8Array,\n encryptionKey: CryptoKey,\n additionalData: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const decrypted = await crypto.subtle.decrypt(\n { name: AES_ALGORITHM, iv: iv as BufferSource, additionalData: additionalData as BufferSource },\n encryptionKey,\n ciphertext as BufferSource,\n );\n return new Uint8Array(decrypted);\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n","import { createNISTbasedIV, makeAuxFixedLength, encryptMessage, decryptMessage } from './core';\nimport { concatBytes } from '@noble/hashes/utils.js';\nimport { IV_LEN_BYTES } from '../constants';\n\n/**\n * Symmetrically encrypts the message\n *\n * @param encryptionKey - The symmetric CryptoKey used for message encryption\n * @param message - The message to encrypt\n * @param freeField - The context of the message (required for IV generation)\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function encryptSymmetrically(\n encryptionKey: CryptoKey,\n message: Uint8Array,\n aux: Uint8Array,\n freeField?: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const iv = createNISTbasedIV(freeField);\n const additionalData = await makeAuxFixedLength(aux);\n const ciphertext = await encryptMessage(message, encryptionKey, iv, additionalData);\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 CryptoKey used for message encryption\n * @param encryptedMessage - The ciphertext\n * @param aux - The auxilary string\n * @returns The resulting ciphertext.\n */\nexport async function decryptSymmetrically(\n encryptionKey: CryptoKey,\n encryptedMessage: Uint8Array,\n aux: Uint8Array,\n): Promise<Uint8Array> {\n try {\n const additionalData = await makeAuxFixedLength(aux);\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 decryptMessage(ciphertext, iv, encryptionKey, additionalData);\n return result;\n } catch (error) {\n throw new Error('Failed to decrypt symmetrically', { cause: error });\n }\n}\n","export * from './keys';\nexport * from './aes';\n"],"mappings":"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"}
@@ -1,16 +0,0 @@
1
-
2
- //#region src/types.ts
3
- let KeystoreType = /* @__PURE__ */ function(KeystoreType) {
4
- KeystoreType["ENCRYPTION"] = "Encryption";
5
- KeystoreType["RECOVERY"] = "Recovery";
6
- return KeystoreType;
7
- }({});
8
-
9
- //#endregion
10
- Object.defineProperty(exports, 'KeystoreType', {
11
- enumerable: true,
12
- get: function () {
13
- return KeystoreType;
14
- }
15
- });
16
- //# sourceMappingURL=types-52g887Zi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-52g887Zi.js","names":[],"sources":["../src/types.ts"],"sourcesContent":["export type EncryptedKeystore = {\n userEmail: string;\n type: KeystoreType;\n encryptedKeys: EmailKeysEncrypted;\n};\n\nexport type User = {\n email: string;\n name: string;\n};\n\nexport type UserWithPublicKeys = User & {\n publicKeys: PublicKeys;\n};\n\nexport type PublicKeys = {\n eccPublicKey: CryptoKey;\n kyberPublicKey: Uint8Array;\n};\n\nexport type PublicKeysBase64 = {\n eccPublicKeyBase64: string;\n kyberPublicKeyBase64: string;\n};\n\nexport type PrivateKeys = {\n eccPrivateKey: CryptoKey;\n kyberPrivateKey: Uint8Array;\n};\n\nexport type PrivateKeysEncrypted = {\n eccPrivateKeyBase64: string;\n kyberPrivateKeyBase64: string;\n};\n\nexport type EmailKeys = {\n publicKeys: PublicKeys;\n privateKeys: PrivateKeys;\n};\n\nexport type EmailKeysEncrypted = {\n publicKeys: PublicKeysBase64;\n privateKeys: PrivateKeysEncrypted;\n};\n\nexport type HybridEncryptedEmail = {\n encryptedKey: HybridEncKey;\n enc: EmailBodyEncrypted;\n recipientEmail: string;\n params: EmailPublicParameters;\n id: string;\n isSubjectEncrypted: boolean;\n};\n\nexport type PwdProtectedEmail = {\n encryptedKey: PwdProtectedKey;\n enc: EmailBodyEncrypted;\n params: EmailPublicParameters;\n id: string;\n isSubjectEncrypted: boolean;\n};\n\nexport type StoredEmail = {\n params: EmailPublicParameters;\n enc: EmailBodyEncrypted;\n id: string;\n};\n\nexport type HybridEncKey = {\n kyberCiphertext: string;\n encryptedKey: string;\n};\n\nexport type PwdProtectedKey = {\n encryptedKey: string;\n salt: string;\n};\n\nexport type EmailBodyEncrypted = {\n encText: string;\n encAttachments?: string[];\n};\n\nexport type EmailBody = {\n text: string;\n attachments?: string[];\n};\n\nexport type EmailPublicParameters = {\n subject: string;\n createdAt: string;\n sender: User;\n recipient: User;\n recipients?: User[];\n replyToEmailID?: string;\n labels?: string[];\n};\n\nexport type Email = {\n id: string;\n body: EmailBody;\n params: EmailPublicParameters;\n};\n\nexport interface MailCache<Email> {\n esCache: Map<string, Email>;\n cacheSize: number;\n isCacheLimited: boolean;\n isCacheReady: boolean;\n}\nexport interface EmailSearchResult {\n email: Email;\n score?: number;\n}\n\nexport enum KeystoreType {\n ENCRYPTION = 'Encryption',\n RECOVERY = 'Recovery',\n}\n"],"mappings":";;AAmHA,IAAY,sDAAL;AACL;AACA"}
@@ -1,10 +0,0 @@
1
- //#region src/types.ts
2
- let KeystoreType = /* @__PURE__ */ function(KeystoreType) {
3
- KeystoreType["ENCRYPTION"] = "Encryption";
4
- KeystoreType["RECOVERY"] = "Recovery";
5
- return KeystoreType;
6
- }({});
7
-
8
- //#endregion
9
- export { KeystoreType as t };
10
- //# sourceMappingURL=types-BiEoleqw.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-BiEoleqw.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["export type EncryptedKeystore = {\n userEmail: string;\n type: KeystoreType;\n encryptedKeys: EmailKeysEncrypted;\n};\n\nexport type User = {\n email: string;\n name: string;\n};\n\nexport type UserWithPublicKeys = User & {\n publicKeys: PublicKeys;\n};\n\nexport type PublicKeys = {\n eccPublicKey: CryptoKey;\n kyberPublicKey: Uint8Array;\n};\n\nexport type PublicKeysBase64 = {\n eccPublicKeyBase64: string;\n kyberPublicKeyBase64: string;\n};\n\nexport type PrivateKeys = {\n eccPrivateKey: CryptoKey;\n kyberPrivateKey: Uint8Array;\n};\n\nexport type PrivateKeysEncrypted = {\n eccPrivateKeyBase64: string;\n kyberPrivateKeyBase64: string;\n};\n\nexport type EmailKeys = {\n publicKeys: PublicKeys;\n privateKeys: PrivateKeys;\n};\n\nexport type EmailKeysEncrypted = {\n publicKeys: PublicKeysBase64;\n privateKeys: PrivateKeysEncrypted;\n};\n\nexport type HybridEncryptedEmail = {\n encryptedKey: HybridEncKey;\n enc: EmailBodyEncrypted;\n recipientEmail: string;\n params: EmailPublicParameters;\n id: string;\n isSubjectEncrypted: boolean;\n};\n\nexport type PwdProtectedEmail = {\n encryptedKey: PwdProtectedKey;\n enc: EmailBodyEncrypted;\n params: EmailPublicParameters;\n id: string;\n isSubjectEncrypted: boolean;\n};\n\nexport type StoredEmail = {\n params: EmailPublicParameters;\n enc: EmailBodyEncrypted;\n id: string;\n};\n\nexport type HybridEncKey = {\n kyberCiphertext: string;\n encryptedKey: string;\n};\n\nexport type PwdProtectedKey = {\n encryptedKey: string;\n salt: string;\n};\n\nexport type EmailBodyEncrypted = {\n encText: string;\n encAttachments?: string[];\n};\n\nexport type EmailBody = {\n text: string;\n attachments?: string[];\n};\n\nexport type EmailPublicParameters = {\n subject: string;\n createdAt: string;\n sender: User;\n recipient: User;\n recipients?: User[];\n replyToEmailID?: string;\n labels?: string[];\n};\n\nexport type Email = {\n id: string;\n body: EmailBody;\n params: EmailPublicParameters;\n};\n\nexport interface MailCache<Email> {\n esCache: Map<string, Email>;\n cacheSize: number;\n isCacheLimited: boolean;\n isCacheReady: boolean;\n}\nexport interface EmailSearchResult {\n email: Email;\n score?: number;\n}\n\nexport enum KeystoreType {\n ENCRYPTION = 'Encryption',\n RECOVERY = 'Recovery',\n}\n"],"mappings":";AAmHA,IAAY,sDAAL;AACL;AACA"}