core-3nweb-client-lib 0.25.6 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/build/api-defs/asmail.d.ts +1 -1
- package/build/api-defs/files.d.ts +282 -70
- package/build/core/app-files.js +7 -7
- package/build/core/asmail/config/common.js +4 -4
- package/build/core/asmail/config/index.js +2 -2
- package/build/core/asmail/config/published-intro-key.js +1 -1
- package/build/core/asmail/delivery/common.js +7 -7
- package/build/core/asmail/delivery/index.js +7 -6
- package/build/core/asmail/delivery/msg.js +8 -7
- package/build/core/asmail/delivery/per-recipient-wip.js +3 -3
- package/build/core/asmail/inbox/attachments/fs.js +11 -1
- package/build/core/asmail/inbox/cached-msgs.js +3 -3
- package/build/core/asmail/inbox/inbox-events.js +5 -4
- package/build/core/asmail/inbox/index.js +12 -12
- package/build/core/asmail/inbox/msg-downloader.js +3 -3
- package/build/core/asmail/inbox/msg-indexing.js +4 -4
- package/build/core/asmail/inbox/msg-on-disk.js +7 -7
- package/build/core/asmail/index.d.ts +3 -3
- package/build/core/asmail/index.js +13 -8
- package/build/core/asmail/key-verification.js +5 -5
- package/build/core/asmail/keyring/common.js +7 -6
- package/build/core/asmail/keyring/correspondent-keys.js +8 -7
- package/build/core/asmail/keyring/id-to-email-map.js +2 -1
- package/build/core/asmail/keyring/index.d.ts +7 -8
- package/build/core/asmail/keyring/index.js +15 -14
- package/build/core/asmail/keyring/keyring-storage.js +4 -3
- package/build/core/asmail/msg/opener.js +3 -3
- package/build/core/asmail/msg/packer.js +13 -13
- package/build/core/asmail/sending-params/own-params.js +4 -4
- package/build/core/asmail/sending-params/params-from-others.js +3 -3
- package/build/core/id-manager.js +8 -5
- package/build/core/index.d.ts +2 -1
- package/build/core/index.js +14 -14
- package/build/core/sign-in.d.ts +5 -4
- package/build/core/sign-in.js +12 -14
- package/build/core/sign-up.d.ts +1 -0
- package/build/core/sign-up.js +15 -11
- package/build/core/storage/common/json-saving.d.ts +21 -0
- package/build/core/storage/common/json-saving.js +82 -0
- package/build/core/storage/common/obj-info-file.d.ts +51 -0
- package/build/core/storage/common/obj-info-file.js +153 -5
- package/build/core/storage/common/utils.d.ts +2 -0
- package/build/core/storage/common/utils.js +32 -0
- package/build/core/storage/index.d.ts +3 -17
- package/build/core/storage/index.js +57 -77
- package/build/core/storage/local/obj-files-gc.d.ts +2 -0
- package/build/core/storage/local/obj-files-gc.js +53 -39
- package/build/core/storage/local/obj-files.d.ts +6 -9
- package/build/core/storage/local/obj-files.js +16 -19
- package/build/core/storage/local/obj-status.d.ts +20 -30
- package/build/core/storage/local/obj-status.js +46 -113
- package/build/core/storage/local/storage.d.ts +15 -5
- package/build/core/storage/local/storage.js +37 -18
- package/build/core/storage/synced/downloader.js +7 -6
- package/build/core/storage/synced/obj-files-gc.d.ts +6 -1
- package/build/core/storage/synced/obj-files-gc.js +106 -13
- package/build/core/storage/synced/obj-files.d.ts +46 -47
- package/build/core/storage/synced/obj-files.js +207 -154
- package/build/core/storage/synced/obj-status.d.ts +103 -42
- package/build/core/storage/synced/obj-status.js +525 -137
- package/build/core/storage/synced/remote-events.d.ts +11 -12
- package/build/core/storage/synced/remote-events.js +80 -57
- package/build/core/storage/synced/storage.d.ts +24 -5
- package/build/core/storage/synced/storage.js +123 -38
- package/build/core/storage/synced/upload-header-file.d.ts +4 -0
- package/build/core/storage/synced/upload-header-file.js +64 -0
- package/build/core/storage/synced/upsyncer.d.ts +15 -9
- package/build/core/storage/synced/upsyncer.js +219 -246
- package/build/core/storage/system-folders/apps-data.d.ts +16 -0
- package/build/core/storage/system-folders/apps-data.js +110 -0
- package/build/core/storage/system-folders/index.d.ts +18 -0
- package/build/core/storage/system-folders/index.js +77 -0
- package/build/core-ipc/common-caps.js +3 -3
- package/build/core-ipc/generic.js +8 -8
- package/build/core-ipc/startup-caps.js +2 -2
- package/build/cryptors.js +6 -2
- package/build/ipc-via-protobuf/asmail-cap.js +67 -83
- package/build/ipc-via-protobuf/bytes.js +16 -17
- package/build/ipc-via-protobuf/connector-clients-side.d.ts +3 -0
- package/build/ipc-via-protobuf/connector-clients-side.js +62 -25
- package/build/ipc-via-protobuf/connector-services-side.js +10 -10
- package/build/ipc-via-protobuf/connector.js +4 -4
- package/build/ipc-via-protobuf/file.d.ts +48 -12
- package/build/ipc-via-protobuf/file.js +476 -120
- package/build/ipc-via-protobuf/fs.d.ts +8 -0
- package/build/ipc-via-protobuf/fs.js +592 -159
- package/build/ipc-via-protobuf/log-cap.js +2 -2
- package/build/ipc-via-protobuf/mailerid.js +3 -3
- package/build/ipc-via-protobuf/protobuf-msg.d.ts +1 -0
- package/build/ipc-via-protobuf/protobuf-msg.js +11 -7
- package/build/ipc-via-protobuf/startup-cap.js +23 -23
- package/build/ipc-via-protobuf/storage-cap.js +12 -12
- package/build/ipc.js +7 -2
- package/build/lib-client/3nstorage/exceptions.d.ts +12 -8
- package/build/lib-client/3nstorage/exceptions.js +31 -10
- package/build/lib-client/3nstorage/service.d.ts +16 -2
- package/build/lib-client/3nstorage/service.js +109 -39
- package/build/lib-client/3nstorage/util/file-based-json.d.ts +2 -1
- package/build/lib-client/3nstorage/util/file-based-json.js +1 -1
- package/build/lib-client/3nstorage/xsp-fs/attrs.js +17 -17
- package/build/lib-client/3nstorage/xsp-fs/common.d.ts +52 -14
- package/build/lib-client/3nstorage/xsp-fs/common.js +31 -16
- package/build/lib-client/3nstorage/xsp-fs/file-node.d.ts +1 -0
- package/build/lib-client/3nstorage/xsp-fs/file-node.js +18 -14
- package/build/lib-client/3nstorage/xsp-fs/file.d.ts +31 -6
- package/build/lib-client/3nstorage/xsp-fs/file.js +74 -23
- package/build/lib-client/3nstorage/xsp-fs/folder-node-serialization.js +4 -4
- package/build/lib-client/3nstorage/xsp-fs/folder-node.d.ts +24 -11
- package/build/lib-client/3nstorage/xsp-fs/folder-node.js +599 -189
- package/build/lib-client/3nstorage/xsp-fs/fs.d.ts +45 -9
- package/build/lib-client/3nstorage/xsp-fs/fs.js +326 -74
- package/build/lib-client/3nstorage/xsp-fs/link-node.d.ts +1 -0
- package/build/lib-client/3nstorage/xsp-fs/link-node.js +7 -2
- package/build/lib-client/3nstorage/xsp-fs/node-in-fs.d.ts +30 -20
- package/build/lib-client/3nstorage/xsp-fs/node-in-fs.js +239 -106
- package/build/lib-client/3nstorage/xsp-fs/node-persistence.d.ts +1 -1
- package/build/lib-client/3nstorage/xsp-fs/node-persistence.js +18 -19
- package/build/lib-client/3nstorage/xsp-fs/xsp-payload-v1.js +5 -5
- package/build/lib-client/3nstorage/xsp-fs/xsp-payload-v2.js +56 -56
- package/build/lib-client/3nweb-signup.js +4 -4
- package/build/lib-client/asmail/recipient.js +15 -15
- package/build/lib-client/asmail/sender.js +22 -22
- package/build/lib-client/asmail/service-config.js +3 -3
- package/build/lib-client/cryptor/cryptor-in-worker.js +19 -17
- package/build/lib-client/cryptor/cryptor-wasm.js +1 -1
- package/build/lib-client/cryptor/cryptor.js +4 -2
- package/build/lib-client/cryptor/cryptor.wasm +0 -0
- package/build/lib-client/cryptor/in-proc-js.js +1 -1
- package/build/lib-client/cryptor/in-proc-wasm.js +7 -7
- package/build/lib-client/cryptor/worker-js.js +2 -2
- package/build/lib-client/cryptor/worker-wasm.js +2 -2
- package/build/lib-client/files-select.js +1 -1
- package/build/lib-client/files.d.ts +1 -1
- package/build/lib-client/files.js +71 -4
- package/build/lib-client/fs-collection.js +3 -2
- package/build/lib-client/fs-sync-utils.d.ts +5 -0
- package/build/lib-client/fs-sync-utils.js +61 -0
- package/build/lib-client/fs-view.d.ts +14 -0
- package/build/lib-client/fs-view.js +33 -0
- package/build/lib-client/key-derivation.js +1 -1
- package/build/lib-client/local-files/dev-file-sink.js +9 -9
- package/build/lib-client/local-files/dev-file-src.js +2 -2
- package/build/lib-client/local-files/device-fs.d.ts +1 -1
- package/build/lib-client/local-files/device-fs.js +56 -54
- package/build/lib-client/logging/log-to-file.d.ts +1 -1
- package/build/lib-client/logging/log-to-file.js +11 -11
- package/build/lib-client/mailer-id/login.js +7 -7
- package/build/lib-client/mailer-id/provisioner.js +12 -12
- package/build/lib-client/objs-on-disk/file-writing-proc.js +5 -5
- package/build/lib-client/objs-on-disk/obj-folders.js +33 -33
- package/build/lib-client/objs-on-disk/obj-on-disk.d.ts +13 -2
- package/build/lib-client/objs-on-disk/obj-on-disk.js +24 -9
- package/build/lib-client/request-utils.d.ts +1 -0
- package/build/lib-client/request-utils.js +14 -14
- package/build/lib-client/server-events.d.ts +3 -3
- package/build/lib-client/server-events.js +12 -10
- package/build/lib-client/service-locator.js +10 -10
- package/build/lib-client/user-with-mid-session.js +7 -7
- package/build/lib-client/user-with-pkl-session.js +25 -25
- package/build/lib-client/ws-utils.js +3 -3
- package/build/lib-common/async-cryptor-wrap.js +4 -4
- package/build/lib-common/async-fs-node.d.ts +5 -3
- package/build/lib-common/async-fs-node.js +19 -18
- package/build/lib-common/byte-streaming/pipe.js +1 -1
- package/build/lib-common/byte-streaming/wrapping.js +17 -17
- package/build/lib-common/canonical-address.js +1 -1
- package/build/lib-common/exceptions/error.d.ts +1 -0
- package/build/lib-common/exceptions/error.js +7 -6
- package/build/lib-common/exceptions/file.js +10 -1
- package/build/lib-common/ipc/generic-ipc.js +2 -2
- package/build/lib-common/ipc/ws-ipc.js +2 -2
- package/build/lib-common/json-utils.js +2 -1
- package/build/lib-common/mid-sigs-NaCl-Ed.js +14 -14
- package/build/lib-common/objs-on-disk/file-layout.d.ts +19 -0
- package/build/lib-common/objs-on-disk/file-layout.js +130 -12
- package/build/lib-common/objs-on-disk/obj-file.d.ts +13 -2
- package/build/lib-common/objs-on-disk/obj-file.js +99 -37
- package/build/lib-common/objs-on-disk/utils.d.ts +1 -0
- package/build/lib-common/objs-on-disk/utils.js +4 -4
- package/build/lib-common/objs-on-disk/v1-obj-file-format.js +14 -14
- package/build/lib-common/processes/deferred.d.ts +6 -0
- package/build/lib-common/processes/deferred.js +30 -0
- package/build/lib-common/processes/labelled-exec-pools.d.ts +33 -0
- package/build/lib-common/processes/labelled-exec-pools.js +141 -0
- package/build/lib-common/processes/pressure.d.ts +7 -0
- package/build/lib-common/processes/pressure.js +56 -0
- package/build/lib-common/processes/sleep.d.ts +1 -0
- package/build/lib-common/processes/sleep.js +26 -0
- package/build/lib-common/{processes.d.ts → processes/synced.d.ts} +0 -40
- package/build/lib-common/{processes.js → processes/synced.js} +187 -204
- package/build/lib-common/processes/timeout.d.ts +1 -0
- package/build/lib-common/processes/timeout.js +51 -0
- package/build/lib-common/random-node.js +7 -7
- package/build/lib-common/service-api/3nstorage/owner.d.ts +100 -39
- package/build/lib-common/service-api/3nstorage/owner.js +85 -42
- package/build/lib-common/service-api/asmail/delivery.js +2 -2
- package/build/lib-common/service-api/asmail/retrieval.js +1 -1
- package/build/lib-common/timed-cache.d.ts +1 -0
- package/build/lib-common/timed-non-weak-cache.d.ts +1 -0
- package/build/lib-common/timed-non-weak-cache.js +11 -0
- package/build/lib-common/utils-for-observables.d.ts +15 -1
- package/build/lib-common/utils-for-observables.js +70 -19
- package/build/lib-common/weak-cache.d.ts +1 -0
- package/build/lib-common/weak-cache.js +12 -1
- package/build/lib-index.d.ts +2 -1
- package/build/lib-index.js +10 -7
- package/build/protos/asmail.proto.js +12912 -7127
- package/build/protos/file.proto.js +4848 -2399
- package/build/protos/fs.proto.js +9230 -3445
- package/package.json +8 -7
- package/protos/file.proto +91 -11
- package/protos/fs.proto +107 -8
- package/build/core/storage/synced/upsync-status.d.ts +0 -41
- package/build/core/storage/synced/upsync-status.js +0 -158
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
See the GNU General Public License for more details.
|
|
14
14
|
|
|
15
15
|
You should have received a copy of the GNU General Public License along with
|
|
16
|
-
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
17
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
19
|
exports.msgKeyPackSizeFor = exports.extractKeyBytes = exports.extractPKeyBytes = exports.extractSKeyBytes = exports.generateSymmetricKey = exports.generateKeyPair = exports.KEY_USE = exports.PID_LENGTH = exports.KID_LENGTH = void 0;
|
|
19
20
|
/**
|
|
@@ -21,7 +22,7 @@ exports.msgKeyPackSizeFor = exports.extractKeyBytes = exports.extractPKeyBytes =
|
|
|
21
22
|
*/
|
|
22
23
|
const ecma_nacl_1 = require("ecma-nacl");
|
|
23
24
|
const buffer_utils_1 = require("../../../lib-common/buffer-utils");
|
|
24
|
-
const
|
|
25
|
+
const random_node_1 = require("../../../lib-common/random-node");
|
|
25
26
|
exports.KID_LENGTH = 16;
|
|
26
27
|
exports.PID_LENGTH = 2;
|
|
27
28
|
exports.KEY_USE = {
|
|
@@ -37,9 +38,9 @@ Object.freeze(exports.KEY_USE);
|
|
|
37
38
|
* Key ids are the same in this intimate pair.
|
|
38
39
|
*/
|
|
39
40
|
async function generateKeyPair() {
|
|
40
|
-
const skeyBytes = await
|
|
41
|
+
const skeyBytes = await (0, random_node_1.bytes)(ecma_nacl_1.box.KEY_LENGTH);
|
|
41
42
|
const pkeyBytes = ecma_nacl_1.box.generate_pubkey(skeyBytes);
|
|
42
|
-
const kid = await
|
|
43
|
+
const kid = await (0, random_node_1.stringOfB64Chars)(exports.KID_LENGTH);
|
|
43
44
|
const skey = {
|
|
44
45
|
use: exports.KEY_USE.SECRET,
|
|
45
46
|
alg: ecma_nacl_1.box.JWK_ALG_NAME,
|
|
@@ -66,9 +67,9 @@ exports.generateKeyPair = generateKeyPair;
|
|
|
66
67
|
async function generateSymmetricKey() {
|
|
67
68
|
return {
|
|
68
69
|
use: exports.KEY_USE.SYMMETRIC,
|
|
69
|
-
k: buffer_utils_1.base64.pack(await
|
|
70
|
+
k: buffer_utils_1.base64.pack(await (0, random_node_1.bytes)(ecma_nacl_1.secret_box.KEY_LENGTH)),
|
|
70
71
|
alg: ecma_nacl_1.secret_box.JWK_ALG_NAME,
|
|
71
|
-
kid: await
|
|
72
|
+
kid: await (0, random_node_1.stringOfB64Chars)(exports.KID_LENGTH)
|
|
72
73
|
};
|
|
73
74
|
}
|
|
74
75
|
exports.generateSymmetricKey = generateSymmetricKey;
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
See the GNU General Public License for more details.
|
|
14
14
|
|
|
15
15
|
You should have received a copy of the GNU General Public License along with
|
|
16
|
-
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
17
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
19
|
exports.CorrespondentKeys = exports.msgMasterDecryptor = void 0;
|
|
19
20
|
/**
|
|
@@ -34,15 +35,15 @@ function generatePids() {
|
|
|
34
35
|
}
|
|
35
36
|
function msgMasterDecryptor(cryptor, skey, pkey) {
|
|
36
37
|
const msgMasterKey = calcMsgMasterKey(skey, pkey);
|
|
37
|
-
const masterDecr = async_cryptor_wrap_1.makeDecryptor(cryptor, msgMasterKey);
|
|
38
|
+
const masterDecr = (0, async_cryptor_wrap_1.makeDecryptor)(cryptor, msgMasterKey);
|
|
38
39
|
msgMasterKey.fill(0);
|
|
39
40
|
return masterDecr;
|
|
40
41
|
}
|
|
41
42
|
exports.msgMasterDecryptor = msgMasterDecryptor;
|
|
42
43
|
function calcMsgMasterKey(skey, pkey) {
|
|
43
44
|
if (skey.alg === ecma_nacl_1.box.JWK_ALG_NAME) {
|
|
44
|
-
const sk = common_1.extractSKeyBytes(skey);
|
|
45
|
-
const pk = common_1.extractKeyBytes(pkey);
|
|
45
|
+
const sk = (0, common_1.extractSKeyBytes)(skey);
|
|
46
|
+
const pk = (0, common_1.extractKeyBytes)(pkey);
|
|
46
47
|
const dhShared = ecma_nacl_1.box.calc_dhshared_key(pk, sk);
|
|
47
48
|
sk.fill(0);
|
|
48
49
|
pk.fill(0);
|
|
@@ -126,7 +127,7 @@ class CorrespondentKeys {
|
|
|
126
127
|
// generate new suggested pair
|
|
127
128
|
const corrPKey = this.keys.sendingPair.recipientPKey;
|
|
128
129
|
const isSenderIntroKey = (this.keys.sendingPair.type === 'intro');
|
|
129
|
-
const recipientKey = await common_1.generateKeyPair();
|
|
130
|
+
const recipientKey = await (0, common_1.generateKeyPair)();
|
|
130
131
|
const msgMasterKey = calcMsgMasterKeyB64(recipientKey.skey, corrPKey);
|
|
131
132
|
const pair = {
|
|
132
133
|
pids: generatePids(),
|
|
@@ -249,7 +250,7 @@ class CorrespondentKeys {
|
|
|
249
250
|
};
|
|
250
251
|
}
|
|
251
252
|
catch (err) {
|
|
252
|
-
throw error_1.errWithCause(err, "Public key in a given pair cannot be used");
|
|
253
|
+
throw (0, error_1.errWithCause)(err, "Public key in a given pair cannot be used");
|
|
253
254
|
}
|
|
254
255
|
}
|
|
255
256
|
/**
|
|
@@ -294,7 +295,7 @@ class CorrespondentKeys {
|
|
|
294
295
|
let msgMasterKey;
|
|
295
296
|
let msgCount;
|
|
296
297
|
if (p.type === 'intro') {
|
|
297
|
-
const senderKey = await common_1.generateKeyPair();
|
|
298
|
+
const senderKey = await (0, common_1.generateKeyPair)();
|
|
298
299
|
msgMasterKey = calcMsgMasterKey(senderKey.skey, p.recipientPKey);
|
|
299
300
|
currentPair = {
|
|
300
301
|
senderPKey: senderKey.pkey,
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
See the GNU General Public License for more details.
|
|
14
14
|
|
|
15
15
|
You should have received a copy of the GNU General Public License along with
|
|
16
|
-
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
17
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
19
|
exports.IdToEmailMap = void 0;
|
|
19
20
|
/**
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { CorrespondentKeys } from './correspondent-keys';
|
|
2
1
|
import { IdToEmailMap } from './id-to-email-map';
|
|
3
2
|
import { MsgKeyRole } from './common';
|
|
4
3
|
import { AsyncSBoxCryptor } from 'xsp-files';
|
|
@@ -27,13 +26,13 @@ declare type WritableFS = web3n.files.WritableFS;
|
|
|
27
26
|
declare type SendingResources = ResourcesForSending['correspondents'];
|
|
28
27
|
declare type ReceptionResources = ResourcesForReceiving['correspondents'];
|
|
29
28
|
export declare class KeyRing {
|
|
30
|
-
private cryptor;
|
|
31
|
-
private publishedKeys;
|
|
29
|
+
private readonly cryptor;
|
|
30
|
+
private readonly publishedKeys;
|
|
32
31
|
/**
|
|
33
32
|
* This is a map from correspondents' canonical addresses to key objects.
|
|
34
33
|
*/
|
|
35
|
-
|
|
36
|
-
pairIdToEmailMap: IdToEmailMap;
|
|
34
|
+
private readonly corrKeys;
|
|
35
|
+
readonly pairIdToEmailMap: IdToEmailMap;
|
|
37
36
|
private storage;
|
|
38
37
|
constructor(cryptor: AsyncSBoxCryptor, publishedKeys: ConfigOfASMailServer['publishedKeys']);
|
|
39
38
|
private addCorrespondent;
|
|
@@ -41,8 +40,8 @@ export declare class KeyRing {
|
|
|
41
40
|
static makeAndStart(cryptor: AsyncSBoxCryptor, fs: WritableFS, publishedKeys: ConfigOfASMailServer['publishedKeys']): Promise<KeyRing>;
|
|
42
41
|
saveChanges(): void;
|
|
43
42
|
needIntroKeyFor: SendingResources['needIntroKeyFor'];
|
|
44
|
-
generateKeysToSend: SendingResources['generateKeysToSend'];
|
|
45
|
-
nextCrypto: SendingResources['nextCrypto'];
|
|
43
|
+
readonly generateKeysToSend: SendingResources['generateKeysToSend'];
|
|
44
|
+
readonly nextCrypto: SendingResources['nextCrypto'];
|
|
46
45
|
private decryptMsgKeyWithIntroPair;
|
|
47
46
|
private findEstablishedReceptionPairs;
|
|
48
47
|
private decryptMsgKeyWithEstablishedPair;
|
|
@@ -55,6 +54,6 @@ export declare class KeyRing {
|
|
|
55
54
|
*/
|
|
56
55
|
private updateReceivedMsgCountIn;
|
|
57
56
|
private absorbSuggestedNextKeyPair;
|
|
58
|
-
decrypt: ReceptionResources['msgDecryptor'];
|
|
57
|
+
readonly decrypt: ReceptionResources['msgDecryptor'];
|
|
59
58
|
close(): Promise<void>;
|
|
60
59
|
}
|
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
See the GNU General Public License for more details.
|
|
14
14
|
|
|
15
15
|
You should have received a copy of the GNU General Public License along with
|
|
16
|
-
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
17
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.KeyRing = void 0;
|
|
19
|
+
exports.KeyRing = exports.KEY_USE = void 0;
|
|
19
20
|
const correspondent_keys_1 = require("./correspondent-keys");
|
|
20
21
|
const id_to_email_map_1 = require("./id-to-email-map");
|
|
21
22
|
const common_1 = require("./common");
|
|
@@ -39,11 +40,11 @@ class KeyRing {
|
|
|
39
40
|
this.pairIdToEmailMap = new id_to_email_map_1.IdToEmailMap();
|
|
40
41
|
this.storage = undefined;
|
|
41
42
|
this.needIntroKeyFor = (address) => {
|
|
42
|
-
address = canonical_address_1.toCanonicalAddress(address);
|
|
43
|
+
address = (0, canonical_address_1.toCanonicalAddress)(address);
|
|
43
44
|
return !this.corrKeys.has(address);
|
|
44
45
|
};
|
|
45
46
|
this.generateKeysToSend = async (address, introPKeyFromServer) => {
|
|
46
|
-
address = canonical_address_1.toCanonicalAddress(address);
|
|
47
|
+
address = (0, canonical_address_1.toCanonicalAddress)(address);
|
|
47
48
|
let ck = this.corrKeys.get(address);
|
|
48
49
|
if (!ck) {
|
|
49
50
|
if (!introPKeyFromServer) {
|
|
@@ -54,12 +55,12 @@ class KeyRing {
|
|
|
54
55
|
const { msgMasterKey, currentPair, msgCount } = await ck.getSendingPair(introPKeyFromServer);
|
|
55
56
|
// prepare message encryptor
|
|
56
57
|
const nextNonce = await random.bytes(xsp_files_1.NONCE_LENGTH);
|
|
57
|
-
const encryptor = async_cryptor_wrap_1.makeEncryptor(this.cryptor, msgMasterKey, nextNonce);
|
|
58
|
+
const encryptor = (0, async_cryptor_wrap_1.makeEncryptor)(this.cryptor, msgMasterKey, nextNonce);
|
|
58
59
|
msgMasterKey.fill(0);
|
|
59
60
|
return { encryptor, currentPair, msgCount };
|
|
60
61
|
};
|
|
61
62
|
this.nextCrypto = async (address) => {
|
|
62
|
-
address = canonical_address_1.toCanonicalAddress(address);
|
|
63
|
+
address = (0, canonical_address_1.toCanonicalAddress)(address);
|
|
63
64
|
let ck = this.corrKeys.get(address);
|
|
64
65
|
if (!ck) {
|
|
65
66
|
throw new Error(`No correspondent keys found for ${address}`);
|
|
@@ -91,11 +92,11 @@ class KeyRing {
|
|
|
91
92
|
if (pkey.k !== msgMeta.senderPKey) {
|
|
92
93
|
throw new Error(`Key certificates in the message are not for a key that encrypted this message.`);
|
|
93
94
|
}
|
|
94
|
-
decrInfo.correspondent = canonical_address_1.toCanonicalAddress(address);
|
|
95
|
+
decrInfo.correspondent = (0, canonical_address_1.toCanonicalAddress)(address);
|
|
95
96
|
}
|
|
96
97
|
// check that sender is the same as the trusted correspondent
|
|
97
98
|
const sender = openedMsg.sender;
|
|
98
|
-
if (!sender || !canonical_address_1.areAddressesEqual(sender, decrInfo.correspondent)) {
|
|
99
|
+
if (!sender || !(0, canonical_address_1.areAddressesEqual)(sender, decrInfo.correspondent)) {
|
|
99
100
|
throw new Error(`Mismatch between message sender field '${sender}', and address '${decrInfo.correspondent}', associated with decrypting key.`);
|
|
100
101
|
}
|
|
101
102
|
// update received msg counts and a time stamp
|
|
@@ -137,7 +138,7 @@ class KeyRing {
|
|
|
137
138
|
if (this.storage) {
|
|
138
139
|
throw new Error("Keyring has already been initialized.");
|
|
139
140
|
}
|
|
140
|
-
this.storage = keyring_storage_1.makeKeyringStorage(fs);
|
|
141
|
+
this.storage = (0, keyring_storage_1.makeKeyringStorage)(fs);
|
|
141
142
|
await this.storage.start();
|
|
142
143
|
const serialForm = await this.storage.load();
|
|
143
144
|
if (serialForm) {
|
|
@@ -175,11 +176,11 @@ class KeyRing {
|
|
|
175
176
|
return;
|
|
176
177
|
}
|
|
177
178
|
const h = await getMainObjHeader();
|
|
178
|
-
const msgKeyPackLen = common_1.msgKeyPackSizeFor(recipKey.pair.skey.alg);
|
|
179
|
+
const msgKeyPackLen = (0, common_1.msgKeyPackSizeFor)(recipKey.pair.skey.alg);
|
|
179
180
|
if (h.length < msgKeyPackLen) {
|
|
180
181
|
return;
|
|
181
182
|
}
|
|
182
|
-
const masterDecr = correspondent_keys_1.msgMasterDecryptor(this.cryptor, recipKey.pair.skey, { kid: '', k: senderPKey });
|
|
183
|
+
const masterDecr = (0, correspondent_keys_1.msgMasterDecryptor)(this.cryptor, recipKey.pair.skey, { kid: '', k: senderPKey });
|
|
183
184
|
try {
|
|
184
185
|
const mainObjFileKey = await masterDecr.open(h.subarray(0, msgKeyPackLen));
|
|
185
186
|
const info = {
|
|
@@ -232,7 +233,7 @@ class KeyRing {
|
|
|
232
233
|
const h = await getMainObjHeader();
|
|
233
234
|
for (const { correspondent, pair, role } of pairs) {
|
|
234
235
|
const masterKey = buffer_utils_1.base64.open(pair.msgMasterKey);
|
|
235
|
-
const masterDecr = async_cryptor_wrap_1.makeDecryptor(this.cryptor, masterKey);
|
|
236
|
+
const masterDecr = (0, async_cryptor_wrap_1.makeDecryptor)(this.cryptor, masterKey);
|
|
236
237
|
masterKey.fill(0);
|
|
237
238
|
try {
|
|
238
239
|
const msgKeyPackLen = msgKeyPackLenForPair(pair);
|
|
@@ -278,7 +279,7 @@ class KeyRing {
|
|
|
278
279
|
if (!rp.receivedMsgs) {
|
|
279
280
|
rp.receivedMsgs = { counts: [], lastTS };
|
|
280
281
|
}
|
|
281
|
-
common_2.addToNumberLineSegments(rp.receivedMsgs.counts, msgCount);
|
|
282
|
+
(0, common_2.addToNumberLineSegments)(rp.receivedMsgs.counts, msgCount);
|
|
282
283
|
rp.receivedMsgs.lastTS = lastTS;
|
|
283
284
|
this.saveChanges();
|
|
284
285
|
}
|
|
@@ -308,6 +309,6 @@ exports.KeyRing = KeyRing;
|
|
|
308
309
|
Object.freeze(KeyRing.prototype);
|
|
309
310
|
Object.freeze(KeyRing);
|
|
310
311
|
function msgKeyPackLenForPair(p) {
|
|
311
|
-
return common_1.msgKeyPackSizeFor(p.recipientKey.skey.alg);
|
|
312
|
+
return (0, common_1.msgKeyPackSizeFor)(p.recipientKey.skey.alg);
|
|
312
313
|
}
|
|
313
314
|
Object.freeze(exports);
|
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
See the GNU General Public License for more details.
|
|
14
14
|
|
|
15
15
|
You should have received a copy of the GNU General Public License along with
|
|
16
|
-
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
17
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
19
|
exports.makeKeyringStorage = void 0;
|
|
19
|
-
const
|
|
20
|
+
const synced_1 = require("../../../lib-common/processes/synced");
|
|
20
21
|
const KEYRING_FNAME = 'keyring.json';
|
|
21
22
|
function makeKeyringStorage(fs) {
|
|
22
|
-
const proc = new
|
|
23
|
+
const proc = new synced_1.SingleProc();
|
|
23
24
|
// initialization for code that works only with version 1
|
|
24
25
|
proc.start(async () => {
|
|
25
26
|
fs = await checkAndUpgradeDataToV1(fs);
|
|
@@ -77,8 +77,8 @@ Object.freeze(OpenedMsg);
|
|
|
77
77
|
async function openMsg(msgId, mainObjId, mainObj, headerOfs, fKey, cryptor) {
|
|
78
78
|
try {
|
|
79
79
|
const header = await mainObj.readHeader();
|
|
80
|
-
const segReader = await xsp_files_1.makeSegmentsReader(fKey, xsp_files_1.idToHeaderNonce(mainObjId), 0, header.subarray(headerOfs), cryptor);
|
|
81
|
-
const byteSrc = await xsp_files_1.makeDecryptedByteSource(mainObj.segSrc, segReader);
|
|
80
|
+
const segReader = await (0, xsp_files_1.makeSegmentsReader)(fKey, (0, xsp_files_1.idToHeaderNonce)(mainObjId), 0, header.subarray(headerOfs), cryptor);
|
|
81
|
+
const byteSrc = await (0, xsp_files_1.makeDecryptedByteSource)(mainObj.segSrc, segReader);
|
|
82
82
|
const bytes = await byteSrc.read(undefined);
|
|
83
83
|
if (!bytes) {
|
|
84
84
|
throw new Error(`End of bytes is reached too soon`);
|
|
@@ -87,7 +87,7 @@ async function openMsg(msgId, mainObjId, mainObj, headerOfs, fKey, cryptor) {
|
|
|
87
87
|
return new OpenedMsg(msgId, jsonOfMain);
|
|
88
88
|
}
|
|
89
89
|
catch (err) {
|
|
90
|
-
throw error_1.errWithCause(err, `Cannot open main object of message ${msgId}`);
|
|
90
|
+
throw (0, error_1.errWithCause)(err, `Cannot open main object of message ${msgId}`);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
exports.openMsg = openMsg;
|
|
@@ -97,7 +97,7 @@ class MsgPacker {
|
|
|
97
97
|
const packer = new MsgPacker(segSizeIn256bs);
|
|
98
98
|
packer.readyPack = p;
|
|
99
99
|
packer.mainObjId = p.meta.objIds[0];
|
|
100
|
-
Object.values(json_utils_1.copy(p.objs))
|
|
100
|
+
Object.values((0, json_utils_1.copy)(p.objs))
|
|
101
101
|
.forEach(obj => {
|
|
102
102
|
packer.allObjs.set(obj.id, obj);
|
|
103
103
|
turnKeyStingsToBytes(obj);
|
|
@@ -286,12 +286,12 @@ class MsgPacker {
|
|
|
286
286
|
const attachments = { nodes: {}, ctime: Date.now() };
|
|
287
287
|
// populate attachments json
|
|
288
288
|
const path = { start: 'attachments', path: [] };
|
|
289
|
-
if (att.container && !attachments_container_1.isContainerEmpty(att.container)) {
|
|
290
|
-
for (const f of attachments_container_1.iterFilesIn(att.container)) {
|
|
289
|
+
if (att.container && !(0, attachments_container_1.isContainerEmpty)(att.container)) {
|
|
290
|
+
for (const f of (0, attachments_container_1.iterFilesIn)(att.container)) {
|
|
291
291
|
const filePath = appendedPath(path, f.fileName);
|
|
292
292
|
this.addFileInto(attachments, f.fileName, filePath);
|
|
293
293
|
}
|
|
294
|
-
for (const f of attachments_container_1.iterFoldersIn(att.container)) {
|
|
294
|
+
for (const f of (0, attachments_container_1.iterFoldersIn)(att.container)) {
|
|
295
295
|
const fsPath = appendedPath(path, f.folderName);
|
|
296
296
|
await this.addFolderInto(attachments, f.folderName, f.folder, fsPath);
|
|
297
297
|
}
|
|
@@ -347,7 +347,7 @@ class MsgPacker {
|
|
|
347
347
|
}
|
|
348
348
|
const msgKeyPack = await msgKeyEnc.pack(obj.key);
|
|
349
349
|
const bytes = buffer_utils_1.utf8.pack(JSON.stringify(obj.json));
|
|
350
|
-
const segWriter = await xsp_files_1.makeSegmentsWriter(obj.key, xsp_files_1.idToHeaderNonce(obj.id), 0, { type: 'new', segSize: this.segSizeIn256bs, payloadFormat: 1 }, random.bytes, cryptor);
|
|
350
|
+
const segWriter = await (0, xsp_files_1.makeSegmentsWriter)(obj.key, (0, xsp_files_1.idToHeaderNonce)(obj.id), 0, { type: 'new', segSize: this.segSizeIn256bs, payloadFormat: 1 }, random.bytes, cryptor);
|
|
351
351
|
// make source that inserts message key pack into header
|
|
352
352
|
return makeMainObjSrc(msgKeyPack, bytes, segWriter);
|
|
353
353
|
}
|
|
@@ -410,24 +410,24 @@ class MsgPacker {
|
|
|
410
410
|
// make object segments writer
|
|
411
411
|
let segWriter;
|
|
412
412
|
if (header) {
|
|
413
|
-
segWriter = await xsp_files_1.makeSegmentsWriter(obj.key, xsp_files_1.idToHeaderNonce(obj.id), 0, { type: 'restart', header }, random.bytes, cryptor);
|
|
413
|
+
segWriter = await (0, xsp_files_1.makeSegmentsWriter)(obj.key, (0, xsp_files_1.idToHeaderNonce)(obj.id), 0, { type: 'restart', header }, random.bytes, cryptor);
|
|
414
414
|
}
|
|
415
415
|
else {
|
|
416
|
-
segWriter = await xsp_files_1.makeSegmentsWriter(obj.key, xsp_files_1.idToHeaderNonce(obj.id), 0, { type: 'new', segSize: this.segSizeIn256bs, payloadFormat: 1 }, random.bytes, cryptor);
|
|
416
|
+
segWriter = await (0, xsp_files_1.makeSegmentsWriter)(obj.key, (0, xsp_files_1.idToHeaderNonce)(obj.id), 0, { type: 'new', segSize: this.segSizeIn256bs, payloadFormat: 1 }, random.bytes, cryptor);
|
|
417
417
|
}
|
|
418
418
|
// make object source
|
|
419
419
|
let src;
|
|
420
420
|
if (obj.json) {
|
|
421
421
|
const bytes = buffer_utils_1.utf8.pack(JSON.stringify(obj.json));
|
|
422
|
-
src = await xsp_files_1.makeObjSourceFromArrays(bytes, segWriter);
|
|
422
|
+
src = await (0, xsp_files_1.makeObjSourceFromArrays)(bytes, segWriter);
|
|
423
423
|
}
|
|
424
424
|
else if (obj.file) {
|
|
425
425
|
const byteSrc = fileSrcToByteSrc(await this.getFileByteSrc(obj.file));
|
|
426
|
-
src = await xsp_files_1.makeEncryptingObjSource(byteSrc, segWriter);
|
|
426
|
+
src = await (0, xsp_files_1.makeEncryptingObjSource)(byteSrc, segWriter);
|
|
427
427
|
}
|
|
428
428
|
else if (obj.folder) {
|
|
429
|
-
const folderBytes = folder_node_serialization_1.serializeFolderInfo(obj.folder);
|
|
430
|
-
src = await xsp_files_1.makeObjSourceFromArrays(folderBytes, segWriter);
|
|
429
|
+
const folderBytes = (0, folder_node_serialization_1.serializeFolderInfo)(obj.folder);
|
|
430
|
+
src = await (0, xsp_files_1.makeObjSourceFromArrays)(folderBytes, segWriter);
|
|
431
431
|
}
|
|
432
432
|
else {
|
|
433
433
|
throw new Error(`Object ${objId} is broken`);
|
|
@@ -443,7 +443,7 @@ class MsgPacker {
|
|
|
443
443
|
meta.objIds = [];
|
|
444
444
|
const objs = {};
|
|
445
445
|
for (const objEntry of this.allObjs) {
|
|
446
|
-
const obj = json_utils_1.copy(objEntry[1]);
|
|
446
|
+
const obj = (0, json_utils_1.copy)(objEntry[1]);
|
|
447
447
|
turnKeysToB64(obj);
|
|
448
448
|
objs[objEntry[0]] = obj;
|
|
449
449
|
if (objEntry[0] !== this.mainObjId) {
|
|
@@ -460,7 +460,7 @@ exports.MsgPacker = MsgPacker;
|
|
|
460
460
|
Object.freeze(MsgPacker.prototype);
|
|
461
461
|
Object.freeze(MsgPacker);
|
|
462
462
|
async function makeMainObjSrc(msgKeyPack, content, segWriter) {
|
|
463
|
-
const src = await xsp_files_1.makeObjSourceFromArrays(content, segWriter);
|
|
463
|
+
const src = await (0, xsp_files_1.makeObjSourceFromArrays)(content, segWriter);
|
|
464
464
|
const wrap = {
|
|
465
465
|
version: src.version,
|
|
466
466
|
segSrc: src.segSrc,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.OwnSendingParams = void 0;
|
|
19
19
|
const file_based_json_1 = require("../../../lib-client/3nstorage/util/file-based-json");
|
|
20
|
-
const
|
|
20
|
+
const synced_1 = require("../../../lib-common/processes/synced");
|
|
21
21
|
const json_utils_1 = require("../../../lib-common/json-utils");
|
|
22
22
|
const DEFAULT_INVITE_LABEL = 'Default';
|
|
23
23
|
const DEFAULT_INVITE_MAX_MSG_SIZE = 1024 * 1024 * 1024;
|
|
@@ -33,7 +33,7 @@ class OwnSendingParams extends file_based_json_1.JsonFileProc {
|
|
|
33
33
|
this.anonInvites = anonInvites;
|
|
34
34
|
this.params = new Map();
|
|
35
35
|
this.defaultParams = undefined;
|
|
36
|
-
this.changesProc = new
|
|
36
|
+
this.changesProc = new synced_1.SingleProc();
|
|
37
37
|
this.getFor = async (address) => {
|
|
38
38
|
let p = this.params.get(address);
|
|
39
39
|
if (p) {
|
|
@@ -51,7 +51,7 @@ class OwnSendingParams extends file_based_json_1.JsonFileProc {
|
|
|
51
51
|
}
|
|
52
52
|
p = {
|
|
53
53
|
address,
|
|
54
|
-
suggested: json_utils_1.copy(this.defaultParams)
|
|
54
|
+
suggested: (0, json_utils_1.copy)(this.defaultParams)
|
|
55
55
|
};
|
|
56
56
|
p.suggested.timestamp = Date.now();
|
|
57
57
|
this.params.set(p.address, p);
|
|
@@ -116,7 +116,7 @@ class OwnSendingParams extends file_based_json_1.JsonFileProc {
|
|
|
116
116
|
this.defaultParams = json.default;
|
|
117
117
|
}
|
|
118
118
|
async onFileEvent(ev) {
|
|
119
|
-
if (
|
|
119
|
+
if (ev.src === 'local') {
|
|
120
120
|
return;
|
|
121
121
|
}
|
|
122
122
|
if (ev.type === 'removed') {
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.ParamsFromOthers = void 0;
|
|
19
19
|
const file_based_json_1 = require("../../../lib-client/3nstorage/util/file-based-json");
|
|
20
|
-
const
|
|
20
|
+
const synced_1 = require("../../../lib-common/processes/synced");
|
|
21
21
|
class ParamsFromOthers extends file_based_json_1.JsonFileProc {
|
|
22
22
|
constructor() {
|
|
23
23
|
super();
|
|
24
24
|
this.params = new Map();
|
|
25
|
-
this.changesProc = new
|
|
25
|
+
this.changesProc = new synced_1.SingleProc();
|
|
26
26
|
this.getFor = (address) => {
|
|
27
27
|
const p = this.params.get(address);
|
|
28
28
|
if (!p) {
|
|
@@ -55,7 +55,7 @@ class ParamsFromOthers extends file_based_json_1.JsonFileProc {
|
|
|
55
55
|
json.forEach(p => this.params.set(p.address, p));
|
|
56
56
|
}
|
|
57
57
|
async onFileEvent(ev) {
|
|
58
|
-
if (
|
|
58
|
+
if (ev.src === 'local') {
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
if (ev.type === 'removed') {
|
package/build/core/id-manager.js
CHANGED
|
@@ -20,7 +20,7 @@ exports.IdManager = void 0;
|
|
|
20
20
|
const ecma_nacl_1 = require("ecma-nacl");
|
|
21
21
|
const provisioner_1 = require("../lib-client/mailer-id/provisioner");
|
|
22
22
|
const jwkeys_1 = require("../lib-common/jwkeys");
|
|
23
|
-
const
|
|
23
|
+
const synced_1 = require("../lib-common/processes/synced");
|
|
24
24
|
const login_1 = require("../lib-client/mailer-id/login");
|
|
25
25
|
const CERTIFICATE_DURATION_SECONDS = 16 * 60 * 60;
|
|
26
26
|
const ASSERTION_VALIDITY = 15 * 60;
|
|
@@ -36,7 +36,7 @@ class IdManager {
|
|
|
36
36
|
this.signer = undefined;
|
|
37
37
|
this.localFS = undefined;
|
|
38
38
|
this.syncedFS = undefined;
|
|
39
|
-
this.provisioningProc = new
|
|
39
|
+
this.provisioningProc = new synced_1.SingleProc();
|
|
40
40
|
this.getSigner = async () => {
|
|
41
41
|
if (!this.address) {
|
|
42
42
|
throw new Error('Address is not set in id manager');
|
|
@@ -148,6 +148,9 @@ class IdManager {
|
|
|
148
148
|
};
|
|
149
149
|
await this.localFS.writeJSONFile(LOGIN_KEY_FILE_NAME, json);
|
|
150
150
|
await this.syncedFS.writeJSONFile(LOGIN_KEY_FILE_NAME, json);
|
|
151
|
+
// XXX must add work with not-online condition
|
|
152
|
+
await this.syncedFS.v.sync.upload(LOGIN_KEY_FILE_NAME);
|
|
153
|
+
await this.syncedFS.v.sync.upload('');
|
|
151
154
|
}
|
|
152
155
|
else {
|
|
153
156
|
await this.ensureLocalCacheOfKeys();
|
|
@@ -203,7 +206,7 @@ class IdManager {
|
|
|
203
206
|
if (!key) {
|
|
204
207
|
throw new Error(`No saved MailerId login key can be found`);
|
|
205
208
|
}
|
|
206
|
-
const skey = jwkeys_1.keyFromJson(key, jwkeys_1.use.MID_PKLOGIN, ecma_nacl_1.box.JWK_ALG_NAME, ecma_nacl_1.box.KEY_LENGTH);
|
|
209
|
+
const skey = (0, jwkeys_1.keyFromJson)(key, jwkeys_1.use.MID_PKLOGIN, ecma_nacl_1.box.JWK_ALG_NAME, ecma_nacl_1.box.KEY_LENGTH);
|
|
207
210
|
const provisioning = await provisioner.provisionSigner(skey.kid);
|
|
208
211
|
this.signer = await provisioning.complete(() => {
|
|
209
212
|
const dhshared = ecma_nacl_1.box.calc_dhshared_key(provisioning.serverPKey, skey.k);
|
|
@@ -252,11 +255,11 @@ function notFoundOrReThrow(exc) {
|
|
|
252
255
|
}
|
|
253
256
|
}
|
|
254
257
|
async function doMidLogin(loginUrl, userId, net, signer) {
|
|
255
|
-
const { sessionId, redirect } = await login_1.startMidSession(userId, net, loginUrl);
|
|
258
|
+
const { sessionId, redirect } = await (0, login_1.startMidSession)(userId, net, loginUrl);
|
|
256
259
|
if (!sessionId) {
|
|
257
260
|
throw Error(`Unexpected redirect of MailerId login from ${loginUrl} to ${redirect}`);
|
|
258
261
|
}
|
|
259
|
-
await login_1.authenticateMidSession(sessionId, signer, net, loginUrl);
|
|
262
|
+
await (0, login_1.authenticateMidSession)(sessionId, signer, net, loginUrl);
|
|
260
263
|
return sessionId;
|
|
261
264
|
}
|
|
262
265
|
Object.freeze(exports);
|
package/build/core/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export interface CoreConf {
|
|
|
8
8
|
dataDir: string;
|
|
9
9
|
signUpUrl: string;
|
|
10
10
|
}
|
|
11
|
+
export declare type MakeNet = () => NetClient;
|
|
11
12
|
export declare class Core {
|
|
12
13
|
private readonly makeNet;
|
|
13
14
|
private readonly makeResolver;
|
|
@@ -21,7 +22,7 @@ export declare class Core {
|
|
|
21
22
|
private isInitialized;
|
|
22
23
|
private closingProc;
|
|
23
24
|
private constructor();
|
|
24
|
-
static make(conf: CoreConf, makeNet:
|
|
25
|
+
static make(conf: CoreConf, makeNet: MakeNet, makeResolver: ServiceLocatorMaker, makeCryptor: makeCryptor): Core;
|
|
25
26
|
start(): {
|
|
26
27
|
capsForStartup: web3n.startup.W3N;
|
|
27
28
|
coreInit: Promise<string>;
|
package/build/core/index.js
CHANGED
|
@@ -42,7 +42,7 @@ class Core {
|
|
|
42
42
|
this.closingProc = undefined;
|
|
43
43
|
this.initForNewUser = async (u) => {
|
|
44
44
|
// 1) init of id manager without setting fs
|
|
45
|
-
const idManager = await id_manager_1.IdManager.initInOneStepWithoutStore(u.address, u.midSKey.default, this.makeResolver('mailerid'), this.makeNet, this.logger.logError, this.logger.logWarning);
|
|
45
|
+
const idManager = await id_manager_1.IdManager.initInOneStepWithoutStore(u.address, u.midSKey.default, this.makeResolver('mailerid'), () => this.makeNet(), this.logger.logError, this.logger.logWarning);
|
|
46
46
|
if (!idManager) {
|
|
47
47
|
throw new Error(`Failed to provision MailerId identity`);
|
|
48
48
|
}
|
|
@@ -57,7 +57,7 @@ class Core {
|
|
|
57
57
|
};
|
|
58
58
|
this.initForExistingUserWithoutCache = async (address) => {
|
|
59
59
|
// 1) init of id manager without setting fs
|
|
60
|
-
const stepTwo = await id_manager_1.IdManager.initWithoutStore(address, this.makeResolver('mailerid'), this.makeNet, this.logger.logError, this.logger.logWarning);
|
|
60
|
+
const stepTwo = await id_manager_1.IdManager.initWithoutStore(address, this.makeResolver('mailerid'), () => this.makeNet(), this.logger.logError, this.logger.logWarning);
|
|
61
61
|
if (!stepTwo) {
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
@@ -82,14 +82,14 @@ class Core {
|
|
|
82
82
|
if (!completeStorageInit) {
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
85
|
-
const idManager = await id_manager_1.IdManager.initFromLocalStore(address, await this.storages.makeLocalFSForApp(MAILERID_APP_NAME), this.makeResolver('mailerid'), this.makeNet, this.logger.logError, this.logger.logWarning);
|
|
85
|
+
const idManager = await id_manager_1.IdManager.initFromLocalStore(address, await this.storages.makeLocalFSForApp(MAILERID_APP_NAME), this.makeResolver('mailerid'), () => this.makeNet(), this.logger.logError, this.logger.logWarning);
|
|
86
86
|
if (idManager) {
|
|
87
87
|
const res = await completeStorageInit(idManager.getSigner);
|
|
88
88
|
await idManager.setStorages(undefined, await this.storages.makeSyncedFSForApp(MAILERID_APP_NAME));
|
|
89
89
|
return (res ? idManager : undefined);
|
|
90
90
|
}
|
|
91
91
|
return async (midLoginKey) => {
|
|
92
|
-
const idManager = await id_manager_1.IdManager.initInOneStepWithoutStore(address, midLoginKey, this.makeResolver('mailerid'), this.makeNet, this.logger.logError, this.logger.logWarning);
|
|
92
|
+
const idManager = await id_manager_1.IdManager.initInOneStepWithoutStore(address, midLoginKey, this.makeResolver('mailerid'), () => this.makeNet(), this.logger.logError, this.logger.logWarning);
|
|
93
93
|
if (!idManager) {
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
@@ -106,13 +106,13 @@ class Core {
|
|
|
106
106
|
Object.seal(this);
|
|
107
107
|
}
|
|
108
108
|
static make(conf, makeNet, makeResolver, makeCryptor) {
|
|
109
|
-
const dirs = app_files_1.appDirs(conf.dataDir);
|
|
110
|
-
const logger = log_to_file_1.makeLogger(dirs.getUtilFS());
|
|
109
|
+
const dirs = (0, app_files_1.appDirs)(conf.dataDir);
|
|
110
|
+
const logger = (0, log_to_file_1.makeLogger)(dirs.getUtilFS());
|
|
111
111
|
const core = new Core(makeNet, makeResolver, makeCryptor, dirs, logger, conf.signUpUrl);
|
|
112
112
|
return core;
|
|
113
113
|
}
|
|
114
114
|
start() {
|
|
115
|
-
const signUp = new sign_up_1.SignUp(this.signUpUrl, this.cryptor.cryptor, this.makeNet, this.appDirs.getUsersOnDisk, this.logger.logError);
|
|
115
|
+
const signUp = new sign_up_1.SignUp(this.signUpUrl, this.cryptor.cryptor, () => this.makeNet(), this.appDirs.getUsersOnDisk, this.logger.logError);
|
|
116
116
|
const signIn = new sign_in_1.SignIn(this.cryptor.cryptor, this.initForExistingUserWithoutCache, this.initForExistingUserWithCache, this.appDirs.getUsersOnDisk, this.logger.logError);
|
|
117
117
|
const capsForStartup = {
|
|
118
118
|
signUp: signUp.exposedService(),
|
|
@@ -120,10 +120,10 @@ class Core {
|
|
|
120
120
|
};
|
|
121
121
|
Object.freeze(capsForStartup);
|
|
122
122
|
const initFromSignUp$ = signUp.newUser$
|
|
123
|
-
.pipe(operators_1.mergeMap(this.initForNewUser, 1));
|
|
123
|
+
.pipe((0, operators_1.mergeMap)(this.initForNewUser, 1));
|
|
124
124
|
const initFromSignIn$ = signIn.existingUser$;
|
|
125
|
-
const coreInit = rxjs_1.merge(initFromSignIn$, initFromSignUp$)
|
|
126
|
-
.pipe(operators_1.take(1), operators_1.mergeMap(idManager => this.initCore(idManager), 1))
|
|
125
|
+
const coreInit = (0, rxjs_1.merge)(initFromSignIn$, initFromSignUp$)
|
|
126
|
+
.pipe((0, operators_1.take)(1), (0, operators_1.mergeMap)(idManager => this.initCore(idManager), 1))
|
|
127
127
|
.toPromise();
|
|
128
128
|
return { coreInit, capsForStartup };
|
|
129
129
|
}
|
|
@@ -201,7 +201,7 @@ class Core {
|
|
|
201
201
|
return this.idManager.getId();
|
|
202
202
|
}
|
|
203
203
|
catch (err) {
|
|
204
|
-
throw error_1.errWithCause(err, 'Failed to initialize core');
|
|
204
|
+
throw (0, error_1.errWithCause)(err, 'Failed to initialize core');
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
getStorages() {
|
|
@@ -229,7 +229,7 @@ function makeStoragePolicy(appDomain, requestedCAPs) {
|
|
|
229
229
|
const okDomains = capReq.appFS
|
|
230
230
|
.filter(fsInfo => (fsInfo.domain === appDomain) ||
|
|
231
231
|
fsInfo.domain.endsWith('.' + appDomain))
|
|
232
|
-
.map(fsInfo => json_utils_1.copy(fsInfo));
|
|
232
|
+
.map(fsInfo => (0, json_utils_1.copy)(fsInfo));
|
|
233
233
|
policy = {
|
|
234
234
|
canOpenAppFS: severalDomainsAppFSChecker(okDomains)
|
|
235
235
|
};
|
|
@@ -259,7 +259,7 @@ function makeStoragePolicy(appDomain, requestedCAPs) {
|
|
|
259
259
|
}
|
|
260
260
|
const noFS = () => false;
|
|
261
261
|
function singleDomainAppFSChecker(appFS) {
|
|
262
|
-
const revDomain = storage_1.reverseDomain(appFS.domain);
|
|
262
|
+
const revDomain = (0, storage_1.reverseDomain)(appFS.domain);
|
|
263
263
|
const allowedType = appFS.storage;
|
|
264
264
|
return (appFolder, type) => {
|
|
265
265
|
return (appFSTypeAllowed(allowedType, type) && (appFolder === revDomain));
|
|
@@ -286,7 +286,7 @@ function appFSTypeAllowed(allowed, type) {
|
|
|
286
286
|
}
|
|
287
287
|
function severalDomainsAppFSChecker(appFSs) {
|
|
288
288
|
const settings = appFSs.map(s => ({
|
|
289
|
-
revDomain: storage_1.reverseDomain(s.domain),
|
|
289
|
+
revDomain: (0, storage_1.reverseDomain)(s.domain),
|
|
290
290
|
storage: s.storage
|
|
291
291
|
}));
|
|
292
292
|
return (appFolder, type) => !!settings.find(s => ((s.revDomain === appFolder) && appFSTypeAllowed(s.storage, type)));
|
package/build/core/sign-in.d.ts
CHANGED
|
@@ -20,10 +20,11 @@ export declare class SignIn {
|
|
|
20
20
|
exposedService(): SignInService;
|
|
21
21
|
private startLoginToRemoteStorage;
|
|
22
22
|
private completeLoginAndLocalSetup;
|
|
23
|
-
private doneBroadcast;
|
|
24
|
-
existingUser$: import("rxjs").Observable<IdManager>;
|
|
23
|
+
private readonly doneBroadcast;
|
|
24
|
+
readonly existingUser$: import("rxjs").Observable<IdManager>;
|
|
25
25
|
private useExistingStorage;
|
|
26
|
-
private
|
|
26
|
+
private logAndWrap;
|
|
27
27
|
}
|
|
28
|
-
export declare
|
|
28
|
+
export declare type ProgressCB = (p: number) => void;
|
|
29
|
+
export declare function makeKeyGenProgressCB(progressStart: number, progressEnd: number, progressCB: ProgressCB): ProgressCB;
|
|
29
30
|
export {};
|