internxt-crypto 0.0.10-alpha → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -4
- package/dist/asymmetric-crypto-BORmLhnx.js +143 -0
- package/dist/asymmetric-crypto-BORmLhnx.js.map +1 -0
- package/dist/asymmetric-crypto-CyXsV4XT.mjs +102 -0
- package/dist/asymmetric-crypto-CyXsV4XT.mjs.map +1 -0
- package/dist/asymmetric-crypto.d.mts +9 -3
- package/dist/asymmetric-crypto.d.ts +9 -3
- package/dist/asymmetric-crypto.js +8 -92
- package/dist/asymmetric-crypto.mjs +2 -84
- package/dist/chunk-DWirmd9C.mjs +18 -0
- package/dist/chunk-Dt-PWiN7.js +60 -0
- package/dist/constants-Ccp21E03.js +208 -0
- package/dist/constants-Ccp21E03.js.map +1 -0
- package/dist/constants-kTeX-2T0.mjs +34 -0
- package/dist/constants-kTeX-2T0.mjs.map +1 -0
- package/dist/constants.d.mts +5 -11
- package/dist/constants.d.ts +5 -11
- package/dist/constants.js +30 -79
- package/dist/constants.mjs +2 -41
- package/dist/derive-key-Be7hS-cN.mjs +751 -0
- package/dist/derive-key-Be7hS-cN.mjs.map +1 -0
- package/dist/derive-key-CBf2WxJd.js +2513 -0
- package/dist/derive-key-CBf2WxJd.js.map +1 -0
- package/dist/derive-key.d.mts +14 -8
- package/dist/derive-key.d.ts +14 -8
- package/dist/derive-key.js +15 -795
- package/dist/derive-key.mjs +5 -783
- package/dist/email-crypto-BrT98taw.js +617 -0
- package/dist/email-crypto-BrT98taw.js.map +1 -0
- package/dist/email-crypto-DJUEjTxA.mjs +534 -0
- package/dist/email-crypto-DJUEjTxA.mjs.map +1 -0
- package/dist/email-crypto.d.mts +58 -78
- package/dist/email-crypto.d.ts +58 -78
- package/dist/email-crypto.js +17 -1409
- package/dist/email-crypto.mjs +8 -1381
- package/dist/email-search.d.mts +39 -32
- package/dist/email-search.d.ts +39 -32
- package/dist/email-search.js +572 -540
- package/dist/email-search.js.map +1 -1
- package/dist/email-search.mjs +567 -539
- package/dist/email-search.mjs.map +1 -1
- package/dist/hash-BoqwNkcd.js +190 -0
- package/dist/hash-BoqwNkcd.js.map +1 -0
- package/dist/hash-CXeGAwai.mjs +131 -0
- package/dist/hash-CXeGAwai.mjs.map +1 -0
- package/dist/hash.d.mts +21 -15
- package/dist/hash.d.ts +21 -15
- package/dist/hash.js +11 -95
- package/dist/hash.mjs +2 -84
- package/dist/index-CQqgKsbX.d.ts +50 -0
- package/dist/index-CintVUbp.d.ts +97 -0
- package/dist/index-D5pBU_A5.d.mts +50 -0
- package/dist/index-MaOov-ag.d.mts +97 -0
- package/dist/index.d.mts +35 -18
- package/dist/index.d.ts +35 -18
- package/dist/index.js +103 -2685
- package/dist/index.mjs +15 -2538
- package/dist/keystore-crypto-B4yCVo9l.js +182 -0
- package/dist/keystore-crypto-B4yCVo9l.js.map +1 -0
- package/dist/keystore-crypto-Bjgriq9h.mjs +159 -0
- package/dist/keystore-crypto-Bjgriq9h.mjs.map +1 -0
- package/dist/keystore-crypto.d.mts +20 -46
- package/dist/keystore-crypto.d.ts +20 -46
- package/dist/keystore-crypto.js +11 -530
- package/dist/keystore-crypto.mjs +9 -501
- package/dist/keystore-service.d.mts +44 -78
- package/dist/keystore-service.d.ts +44 -78
- package/dist/keystore-service.js +113 -340
- package/dist/keystore-service.js.map +1 -1
- package/dist/keystore-service.mjs +107 -335
- package/dist/keystore-service.mjs.map +1 -1
- package/dist/post-quantum-crypto-CAi-cEkV.js +189 -0
- package/dist/post-quantum-crypto-CAi-cEkV.js.map +1 -0
- package/dist/post-quantum-crypto-Vv34t6gX.mjs +154 -0
- package/dist/post-quantum-crypto-Vv34t6gX.mjs.map +1 -0
- package/dist/post-quantum-crypto.d.mts +2 -72
- package/dist/post-quantum-crypto.d.ts +2 -72
- package/dist/post-quantum-crypto.js +13 -92
- package/dist/post-quantum-crypto.mjs +2 -89
- package/dist/storage-service-BgIK2aYZ.js +82 -0
- package/dist/storage-service-BgIK2aYZ.js.map +1 -0
- package/dist/storage-service-CubCbhY2.mjs +65 -0
- package/dist/storage-service-CubCbhY2.mjs.map +1 -0
- package/dist/storage-service.d.mts +2 -53
- package/dist/storage-service.d.ts +2 -53
- package/dist/storage-service.js +12 -68
- package/dist/storage-service.mjs +2 -66
- package/dist/symmetric-crypto-CrdS1Che.mjs +197 -0
- package/dist/symmetric-crypto-CrdS1Che.mjs.map +1 -0
- package/dist/symmetric-crypto-D65zB396.js +244 -0
- package/dist/symmetric-crypto-D65zB396.js.map +1 -0
- package/dist/symmetric-crypto.d.mts +12 -8
- package/dist/symmetric-crypto.d.ts +12 -8
- package/dist/symmetric-crypto.js +10 -142
- package/dist/symmetric-crypto.mjs +3 -133
- package/dist/types-52g887Zi.js +16 -0
- package/dist/types-52g887Zi.js.map +1 -0
- package/dist/types-BiEoleqw.mjs +10 -0
- package/dist/types-BiEoleqw.mjs.map +1 -0
- package/dist/types-Ds3ivE9W.d.ts +104 -0
- package/dist/types-DwQJtrTx.d.mts +104 -0
- package/dist/types.d.mts +2 -102
- package/dist/types.d.ts +2 -102
- package/dist/types.js +2 -13
- package/dist/types.mjs +2 -11
- package/dist/utils-CNs3cyDj.js +263 -0
- package/dist/utils-CNs3cyDj.js.map +1 -0
- package/dist/utils-DS04iUcX.mjs +173 -0
- package/dist/utils-DS04iUcX.mjs.map +1 -0
- package/dist/utils.d.mts +37 -78
- package/dist/utils.d.ts +37 -78
- package/dist/utils.js +16 -313
- package/dist/utils.mjs +2 -272
- package/package.json +15 -90
- package/dist/asymmetric-crypto.js.map +0 -1
- package/dist/asymmetric-crypto.mjs.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/constants.mjs.map +0 -1
- package/dist/derive-key.js.map +0 -1
- package/dist/derive-key.mjs.map +0 -1
- package/dist/email-crypto.js.map +0 -1
- package/dist/email-crypto.mjs.map +0 -1
- package/dist/email-service.d.mts +0 -38
- package/dist/email-service.d.ts +0 -38
- package/dist/email-service.js +0 -154
- package/dist/email-service.js.map +0 -1
- package/dist/email-service.mjs +0 -147
- package/dist/email-service.mjs.map +0 -1
- package/dist/hash.js.map +0 -1
- package/dist/hash.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/keystore-crypto.js.map +0 -1
- package/dist/keystore-crypto.mjs.map +0 -1
- package/dist/kyber768-B87rMQ7u.d.mts +0 -30
- package/dist/kyber768-B87rMQ7u.d.ts +0 -30
- package/dist/post-quantum-crypto.js.map +0 -1
- package/dist/post-quantum-crypto.mjs.map +0 -1
- package/dist/storage-service.js.map +0 -1
- package/dist/storage-service.mjs.map +0 -1
- package/dist/symmetric-crypto.js.map +0 -1
- package/dist/symmetric-crypto.mjs.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/types.mjs.map +0 -1
- package/dist/utils-BDaK_d6T.d.ts +0 -114
- package/dist/utils-v34IRTIx.d.mts +0 -114
- package/dist/utils.js.map +0 -1
- package/dist/utils.mjs.map +0 -1
|
@@ -1,82 +1,48 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { c as EncryptedKeystore, d as KeystoreType, g as PublicKeysBase64, h as PublicKeys } from "./types-Ds3ivE9W.js";
|
|
2
|
+
import { AxiosResponse } from "axios";
|
|
3
3
|
|
|
4
|
+
//#region src/keystore-service/api.d.ts
|
|
4
5
|
declare class KeyServiceAPI {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Gets a user's encrypted Identity Keystore from the server
|
|
42
|
-
*
|
|
43
|
-
* @returns Encrypted Identity Keystore
|
|
44
|
-
*/
|
|
45
|
-
getIdentityKeystoreFromServer(): Promise<EncryptedKeystore>;
|
|
46
|
-
/**
|
|
47
|
-
* Gets a user's encrypted Recovery Keystore from the server
|
|
48
|
-
*
|
|
49
|
-
* @returns Encrypted Recovery Keystore
|
|
50
|
-
*/
|
|
51
|
-
getRecoveryKeystoreFromServer(): Promise<EncryptedKeystore>;
|
|
52
|
-
/**
|
|
53
|
-
* Gets a user's encrypted Index Keystore from the server
|
|
54
|
-
*
|
|
55
|
-
* @returns Encrypted Index Keytore
|
|
56
|
-
*/
|
|
57
|
-
getIndexKeystoreFromServer(): Promise<EncryptedKeystore>;
|
|
58
|
-
/**
|
|
59
|
-
* Gets a user's encrypted keystore from the server
|
|
60
|
-
*
|
|
61
|
-
* @param type - The requested keystore's type
|
|
62
|
-
* @returns Encrypted Keytore
|
|
63
|
-
*/
|
|
64
|
-
getKeystoreFromServer(type: KeystoreType): Promise<EncryptedKeystore>;
|
|
65
|
-
/**
|
|
66
|
-
* Obtains recipients public keys from the server
|
|
67
|
-
*
|
|
68
|
-
* @param emails - The recipients' emails
|
|
69
|
-
* @returns The list of recipients' public keys
|
|
70
|
-
*/
|
|
71
|
-
getRecipientsPublicKeysFromServer(emails: string[]): Promise<string[]>;
|
|
72
|
-
/**
|
|
73
|
-
* Obtains the recipient public keys from the server
|
|
74
|
-
*
|
|
75
|
-
* @param email - The recipients' emails
|
|
76
|
-
* @returns The list of recipients' public keys
|
|
77
|
-
*/
|
|
78
|
-
getRecipientsPublicKeys(emails: string[]): Promise<PublicKeys[]>;
|
|
6
|
+
private readonly baseUrl;
|
|
7
|
+
constructor(baseUrl: string);
|
|
8
|
+
/**
|
|
9
|
+
* Converts the specific client error into a proprietary error for our apps
|
|
10
|
+
* @param error
|
|
11
|
+
* @private
|
|
12
|
+
*/
|
|
13
|
+
private normalizeError;
|
|
14
|
+
/**
|
|
15
|
+
* Sends a user's encrypted keystore to the server
|
|
16
|
+
* @param keystore - The encrypted keystore
|
|
17
|
+
* @param url - The user specific part of the url
|
|
18
|
+
* @returns Server response
|
|
19
|
+
*/
|
|
20
|
+
uploadKeystoreToServer(encryptedKeystore: EncryptedKeystore): Promise<AxiosResponse>;
|
|
21
|
+
/**
|
|
22
|
+
* Requests a user's encrypted keystore from the server
|
|
23
|
+
* @param url - The user-specific part of the url
|
|
24
|
+
* @returns The user's encrypted keystore as base64 string
|
|
25
|
+
*/
|
|
26
|
+
getKeystoreFromServer(userID: string, keystoreType: KeystoreType): Promise<EncryptedKeystore>;
|
|
27
|
+
/**
|
|
28
|
+
* Obtains recipients public keys from the server
|
|
29
|
+
*
|
|
30
|
+
* @param emails - The recipients' emails
|
|
31
|
+
* @returns The list of recipients' public keys
|
|
32
|
+
*/
|
|
33
|
+
getRecipientsPublicKeysFromServer(emails: string[]): Promise<PublicKeysBase64[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Obtains the recipient public keys from the server
|
|
36
|
+
*
|
|
37
|
+
* @param email - The recipients' emails
|
|
38
|
+
* @returns The list of recipients' public keys
|
|
39
|
+
*/
|
|
40
|
+
getRecipientsPublicKeys(emails: string[]): Promise<PublicKeys[]>;
|
|
79
41
|
}
|
|
80
42
|
declare function getKeyServiceAPI(baseUrl: string): KeyServiceAPI;
|
|
81
|
-
|
|
82
|
-
export { KeyServiceAPI, getKeyServiceAPI };
|
|
43
|
+
declare namespace index_d_exports {
|
|
44
|
+
export { KeyServiceAPI, getKeyServiceAPI };
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { KeyServiceAPI, getKeyServiceAPI, index_d_exports as t };
|
|
48
|
+
//# sourceMappingURL=keystore-service.d.ts.map
|
package/dist/keystore-service.js
CHANGED
|
@@ -1,349 +1,122 @@
|
|
|
1
|
-
|
|
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);
|
|
2
5
|
|
|
3
|
-
|
|
4
|
-
require('@noble/hashes/utils.js');
|
|
5
|
-
|
|
6
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
-
|
|
8
|
-
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
9
|
-
|
|
10
|
-
// src/keystore-service/api.ts
|
|
11
|
-
|
|
12
|
-
// src/constants.ts
|
|
13
|
-
var ECC_ALGORITHM = "X25519";
|
|
14
|
-
function uint8ArrayToBase64(buffer) {
|
|
15
|
-
const array = Uint16Array.from(buffer);
|
|
16
|
-
const binaryString = new TextDecoder("UTF-16").decode(array);
|
|
17
|
-
return btoa(binaryString);
|
|
18
|
-
}
|
|
19
|
-
function base64ToUint8Array(str) {
|
|
20
|
-
const binaryString = atob(str);
|
|
21
|
-
const len = binaryString.length;
|
|
22
|
-
const array = new Uint8Array(len);
|
|
23
|
-
for (let i = 0; i < len; i++) {
|
|
24
|
-
array[i] = binaryString.charCodeAt(i);
|
|
25
|
-
}
|
|
26
|
-
return new Uint8Array(array.buffer);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// src/asymmetric-crypto/keys.ts
|
|
30
|
-
async function importPublicKey(spkiKeyData) {
|
|
31
|
-
try {
|
|
32
|
-
return await crypto.subtle.importKey(
|
|
33
|
-
"spki",
|
|
34
|
-
spkiKeyData,
|
|
35
|
-
{
|
|
36
|
-
name: ECC_ALGORITHM
|
|
37
|
-
},
|
|
38
|
-
true,
|
|
39
|
-
[]
|
|
40
|
-
);
|
|
41
|
-
} catch (error) {
|
|
42
|
-
throw new Error("Failed to import public key", { cause: error });
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// src/utils/aesConverters.ts
|
|
47
|
-
function ciphertextToBase64(encryptedMessage) {
|
|
48
|
-
try {
|
|
49
|
-
const ivBase64 = uint8ArrayToBase64(encryptedMessage.iv);
|
|
50
|
-
const ciphertextBase64 = uint8ArrayToBase64(encryptedMessage.ciphertext);
|
|
51
|
-
const json = JSON.stringify({ ciphertext: ciphertextBase64, iv: ivBase64 });
|
|
52
|
-
const base64 = btoa(json);
|
|
53
|
-
return base64;
|
|
54
|
-
} catch (error) {
|
|
55
|
-
throw new Error("Failed to convert ciphertext to base64", { cause: error });
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
function base64ToCiphertext(base64) {
|
|
59
|
-
try {
|
|
60
|
-
const json = atob(base64);
|
|
61
|
-
const obj = JSON.parse(json);
|
|
62
|
-
const iv = base64ToUint8Array(obj.iv);
|
|
63
|
-
const ciphertext = base64ToUint8Array(obj.ciphertext);
|
|
64
|
-
const result = {
|
|
65
|
-
ciphertext,
|
|
66
|
-
iv
|
|
67
|
-
};
|
|
68
|
-
return result;
|
|
69
|
-
} catch (error) {
|
|
70
|
-
throw new Error("Failed to convert base64 to ciphertext", { cause: error });
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// src/utils/keyConverters.ts
|
|
75
|
-
function encryptedKeystoreToBase64(keystore) {
|
|
76
|
-
try {
|
|
77
|
-
const ciphertext = ciphertextToBase64(keystore.encryptedKeys);
|
|
78
|
-
const json = JSON.stringify({
|
|
79
|
-
userID: keystore.userID,
|
|
80
|
-
type: keystore.type.toString(),
|
|
81
|
-
encryptedKeys: ciphertext
|
|
82
|
-
});
|
|
83
|
-
const base64 = btoa(json);
|
|
84
|
-
return base64;
|
|
85
|
-
} catch (error) {
|
|
86
|
-
throw new Error("Failed to convert encrypted keystore to base64", { cause: error });
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
function base64ToEncryptedKeystore(base64) {
|
|
90
|
-
try {
|
|
91
|
-
const json = atob(base64);
|
|
92
|
-
const obj = JSON.parse(json);
|
|
93
|
-
const ciphertext = base64ToCiphertext(obj.encryptedKeys);
|
|
94
|
-
const result = {
|
|
95
|
-
userID: obj.userID,
|
|
96
|
-
type: obj.type,
|
|
97
|
-
encryptedKeys: ciphertext
|
|
98
|
-
};
|
|
99
|
-
return result;
|
|
100
|
-
} catch (error) {
|
|
101
|
-
throw new Error("Failed to convert base64 to encrypted keystore", { cause: error });
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
async function base64ToPublicKey(base64) {
|
|
105
|
-
try {
|
|
106
|
-
const json = atob(base64);
|
|
107
|
-
const obj = JSON.parse(json);
|
|
108
|
-
const eccPublicKeyBytes = base64ToUint8Array(obj.eccPublicKey);
|
|
109
|
-
const eccPublicKey = await importPublicKey(eccPublicKeyBytes);
|
|
110
|
-
const kyberPublicKey = base64ToUint8Array(obj.kyberPublicKey);
|
|
111
|
-
return {
|
|
112
|
-
eccPublicKey,
|
|
113
|
-
kyberPublicKey
|
|
114
|
-
};
|
|
115
|
-
} catch (error) {
|
|
116
|
-
throw new Error("Failed to convert base64 to PublicKeys", { cause: error });
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// src/storage-service/sessionStorageService.ts
|
|
121
|
-
function get(key) {
|
|
122
|
-
return sessionStorage.getItem(key);
|
|
123
|
-
}
|
|
124
|
-
function set(key, value) {
|
|
125
|
-
return sessionStorage.setItem(key, value);
|
|
126
|
-
}
|
|
127
|
-
function removeItem(key) {
|
|
128
|
-
sessionStorage.removeItem(key);
|
|
129
|
-
}
|
|
130
|
-
function exists(key) {
|
|
131
|
-
return !!sessionStorage.getItem(key);
|
|
132
|
-
}
|
|
133
|
-
function clear() {
|
|
134
|
-
sessionStorage.clear();
|
|
135
|
-
}
|
|
136
|
-
var sessionStorageService = {
|
|
137
|
-
set,
|
|
138
|
-
get,
|
|
139
|
-
removeItem,
|
|
140
|
-
exists,
|
|
141
|
-
clear
|
|
142
|
-
};
|
|
143
|
-
var sessionStorageService_default = sessionStorageService;
|
|
144
|
-
|
|
145
|
-
// src/keystore-crypto/core.ts
|
|
146
|
-
function getUserID() {
|
|
147
|
-
try {
|
|
148
|
-
const userID = sessionStorageService_default.get("userID");
|
|
149
|
-
if (!userID) {
|
|
150
|
-
throw new Error("No UserID");
|
|
151
|
-
}
|
|
152
|
-
return userID;
|
|
153
|
-
} catch (error) {
|
|
154
|
-
throw new Error("Failed to get UserID from session storage", { cause: error });
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// src/keystore-service/api.ts
|
|
6
|
+
//#region src/keystore-service/api.ts
|
|
159
7
|
var KeyServiceAPI = class {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
*/
|
|
254
|
-
async getEncryptionKeystoreFromServer() {
|
|
255
|
-
return this.getKeystoreFromServer("encryption" /* ENCRYPTION */);
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Gets a user's encrypted Identity Keystore from the server
|
|
259
|
-
*
|
|
260
|
-
* @returns Encrypted Identity Keystore
|
|
261
|
-
*/
|
|
262
|
-
async getIdentityKeystoreFromServer() {
|
|
263
|
-
return this.getKeystoreFromServer("identity" /* IDENTITY */);
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Gets a user's encrypted Recovery Keystore from the server
|
|
267
|
-
*
|
|
268
|
-
* @returns Encrypted Recovery Keystore
|
|
269
|
-
*/
|
|
270
|
-
async getRecoveryKeystoreFromServer() {
|
|
271
|
-
return this.getKeystoreFromServer("recovery" /* RECOVERY */);
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Gets a user's encrypted Index Keystore from the server
|
|
275
|
-
*
|
|
276
|
-
* @returns Encrypted Index Keytore
|
|
277
|
-
*/
|
|
278
|
-
async getIndexKeystoreFromServer() {
|
|
279
|
-
return this.getKeystoreFromServer("index" /* INDEX */);
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Gets a user's encrypted keystore from the server
|
|
283
|
-
*
|
|
284
|
-
* @param type - The requested keystore's type
|
|
285
|
-
* @returns Encrypted Keytore
|
|
286
|
-
*/
|
|
287
|
-
async getKeystoreFromServer(type) {
|
|
288
|
-
try {
|
|
289
|
-
const userID = getUserID();
|
|
290
|
-
const response = await this.requestEncryptedKeystore(userID, type);
|
|
291
|
-
const result = base64ToEncryptedKeystore(response);
|
|
292
|
-
return result;
|
|
293
|
-
} catch (error) {
|
|
294
|
-
throw new Error("Failed to retrieve keystore from the server", { cause: error });
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
/**
|
|
298
|
-
* Obtains recipients public keys from the server
|
|
299
|
-
*
|
|
300
|
-
* @param emails - The recipients' emails
|
|
301
|
-
* @returns The list of recipients' public keys
|
|
302
|
-
*/
|
|
303
|
-
async getRecipientsPublicKeysFromServer(emails) {
|
|
304
|
-
try {
|
|
305
|
-
const response = await axios__default.default.get("/api/getPublicKeys", {
|
|
306
|
-
params: {
|
|
307
|
-
emails
|
|
308
|
-
},
|
|
309
|
-
withCredentials: true,
|
|
310
|
-
headers: {
|
|
311
|
-
"Content-Type": "application/json"
|
|
312
|
-
}
|
|
313
|
-
});
|
|
314
|
-
return response.data;
|
|
315
|
-
} catch (error) {
|
|
316
|
-
if (axios__default.default.isAxiosError(error)) {
|
|
317
|
-
this.normalizeError(error);
|
|
318
|
-
}
|
|
319
|
-
throw new Error("Failed to retrieve public keys", { cause: error });
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Obtains the recipient public keys from the server
|
|
324
|
-
*
|
|
325
|
-
* @param email - The recipients' emails
|
|
326
|
-
* @returns The list of recipients' public keys
|
|
327
|
-
*/
|
|
328
|
-
async getRecipientsPublicKeys(emails) {
|
|
329
|
-
try {
|
|
330
|
-
const publicKeysBase64 = await this.getRecipientsPublicKeysFromServer(emails);
|
|
331
|
-
const result = [];
|
|
332
|
-
for (const keyBase64 of publicKeysBase64) {
|
|
333
|
-
const publicKeys = await base64ToPublicKey(keyBase64);
|
|
334
|
-
result.push(publicKeys);
|
|
335
|
-
}
|
|
336
|
-
return result;
|
|
337
|
-
} catch (error) {
|
|
338
|
-
throw new Error("Failed to get recipients public keys", { cause: error });
|
|
339
|
-
}
|
|
340
|
-
}
|
|
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
|
+
}
|
|
341
101
|
};
|
|
342
102
|
function getKeyServiceAPI(baseUrl) {
|
|
343
|
-
|
|
103
|
+
return new KeyServiceAPI(baseUrl);
|
|
344
104
|
}
|
|
345
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
|
|
346
114
|
exports.KeyServiceAPI = KeyServiceAPI;
|
|
347
115
|
exports.getKeyServiceAPI = getKeyServiceAPI;
|
|
348
|
-
|
|
116
|
+
Object.defineProperty(exports, 'keystore_service_exports', {
|
|
117
|
+
enumerable: true,
|
|
118
|
+
get: function () {
|
|
119
|
+
return keystore_service_exports;
|
|
120
|
+
}
|
|
121
|
+
});
|
|
349
122
|
//# sourceMappingURL=keystore-service.js.map
|