@vex-chat/libvex 6.8.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Client.d.ts +18 -7
- package/dist/Client.d.ts.map +1 -1
- package/dist/Client.js +220 -124
- package/dist/Client.js.map +1 -1
- package/dist/Storage.d.ts +6 -0
- package/dist/Storage.d.ts.map +1 -1
- package/dist/__tests__/harness/memory-storage.d.ts +2 -1
- package/dist/__tests__/harness/memory-storage.d.ts.map +1 -1
- package/dist/__tests__/harness/memory-storage.js +27 -0
- package/dist/__tests__/harness/memory-storage.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/messageExtra.d.ts +18 -0
- package/dist/messageExtra.d.ts.map +1 -1
- package/dist/messageExtra.js +104 -0
- package/dist/messageExtra.js.map +1 -1
- package/dist/storage/sqlite.d.ts +2 -1
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +47 -1
- package/dist/storage/sqlite.js.map +1 -1
- package/package.json +4 -4
- package/src/Client.ts +330 -168
- package/src/Storage.ts +11 -0
- package/src/__tests__/harness/memory-storage.ts +42 -1
- package/src/__tests__/messageExtra.test.ts +38 -0
- package/src/index.ts +6 -1
- package/src/messageExtra.ts +145 -0
- package/src/storage/sqlite.ts +65 -3
package/dist/Client.d.ts
CHANGED
|
@@ -346,8 +346,6 @@ export interface NotificationSubscriptionInput {
|
|
|
346
346
|
* @public
|
|
347
347
|
*/
|
|
348
348
|
export interface Passkeys {
|
|
349
|
-
/** Approves a pending device-enrollment request using the passkey session. */
|
|
350
|
-
approveDeviceRequest: (requestID: string) => Promise<Device>;
|
|
351
349
|
/** Begin a public passkey authentication ceremony for `username`. */
|
|
352
350
|
beginAuthentication: (username: string) => Promise<{
|
|
353
351
|
options: any;
|
|
@@ -387,6 +385,12 @@ export interface Passkeys {
|
|
|
387
385
|
list: () => Promise<Passkey[]>;
|
|
388
386
|
/** List all of the account's devices using the passkey session. */
|
|
389
387
|
listDevices: () => Promise<Device[]>;
|
|
388
|
+
/**
|
|
389
|
+
* Recover the account onto a pending device using the passkey
|
|
390
|
+
* session. The server approves the pending device and revokes all
|
|
391
|
+
* previously-active devices for the account.
|
|
392
|
+
*/
|
|
393
|
+
recoverDeviceRequest: (requestID: string) => Promise<Device>;
|
|
390
394
|
/** Reject a pending device-enrollment request using the passkey session. */
|
|
391
395
|
rejectDeviceRequest: (requestID: string) => Promise<void>;
|
|
392
396
|
}
|
|
@@ -712,9 +716,9 @@ export declare class Client {
|
|
|
712
716
|
* Passkey ("recovery credential") methods.
|
|
713
717
|
*
|
|
714
718
|
* Passkeys are an account-bound second-class credential that can
|
|
715
|
-
* authenticate the owning user, list devices, delete devices,
|
|
716
|
-
*
|
|
717
|
-
*
|
|
719
|
+
* authenticate the owning user, list devices, delete devices, recover a
|
|
720
|
+
* pending device enrollment, and reject pending device-enrollment
|
|
721
|
+
* requests. They cannot send/decrypt mail.
|
|
718
722
|
*
|
|
719
723
|
* The host app drives the WebAuthn ceremony (e.g. via
|
|
720
724
|
* `@simplewebauthn/browser`) and hands the JSON response to
|
|
@@ -769,6 +773,9 @@ export declare class Client {
|
|
|
769
773
|
private isAlive;
|
|
770
774
|
private localMessageRetentionDays;
|
|
771
775
|
private localRetentionPurgeTimer;
|
|
776
|
+
private mailBatchFlushTimer;
|
|
777
|
+
private readonly mailBatchQueue;
|
|
778
|
+
private mailBatchUnsupported;
|
|
772
779
|
private readonly mailInterval?;
|
|
773
780
|
private manuallyClosing;
|
|
774
781
|
/** Negative cache for user lookups that returned 404. TTL = 30 minutes. */
|
|
@@ -989,6 +996,8 @@ export declare class Client {
|
|
|
989
996
|
private deletePasskey;
|
|
990
997
|
private deletePermission;
|
|
991
998
|
private deleteServer;
|
|
999
|
+
private deliverMailResource;
|
|
1000
|
+
private deliverMailResourceOverSocket;
|
|
992
1001
|
private deviceListFailureDetail;
|
|
993
1002
|
/**
|
|
994
1003
|
* Gets a list of permissions for a server.
|
|
@@ -1011,6 +1020,8 @@ export declare class Client {
|
|
|
1011
1020
|
*/
|
|
1012
1021
|
private finishPasskeyAuthentication;
|
|
1013
1022
|
private finishPasskeyRegistration;
|
|
1023
|
+
private flushMailBatchOverSocket;
|
|
1024
|
+
private flushMailBatchQueue;
|
|
1014
1025
|
private forward;
|
|
1015
1026
|
private getChannelByID;
|
|
1016
1027
|
private getChannelList;
|
|
@@ -1070,16 +1081,15 @@ export declare class Client {
|
|
|
1070
1081
|
private listPasskeys;
|
|
1071
1082
|
private markSessionVerified;
|
|
1072
1083
|
private negotiateOTK;
|
|
1073
|
-
private newEphemeralKeys;
|
|
1074
1084
|
/**
|
|
1075
1085
|
* Pipeline for decrypted messages — registered in `init`. After `close()` sets
|
|
1076
1086
|
* `manuallyClosing`, this becomes a no-op so fire-and-forget `forward` does not
|
|
1077
1087
|
* race HTTP teardown (we avoid `off()` here — it can interact badly with emit).
|
|
1078
1088
|
*/
|
|
1079
1089
|
private readonly onInternalMessage;
|
|
1080
|
-
private passkeyApproveDeviceRequest;
|
|
1081
1090
|
private passkeyDeleteDevice;
|
|
1082
1091
|
private passkeyListDevices;
|
|
1092
|
+
private passkeyRecoverDeviceRequest;
|
|
1083
1093
|
private passkeyRejectDeviceRequest;
|
|
1084
1094
|
private ping;
|
|
1085
1095
|
private pollPendingDeviceRegistration;
|
|
@@ -1109,6 +1119,7 @@ export declare class Client {
|
|
|
1109
1119
|
* of that crypto work.
|
|
1110
1120
|
*/
|
|
1111
1121
|
private runWithThisCryptoProfile;
|
|
1122
|
+
private scheduleMailBatchFlush;
|
|
1112
1123
|
private scheduleReconnect;
|
|
1113
1124
|
private scheduleRetentionPurge;
|
|
1114
1125
|
private send;
|
package/dist/Client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"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"}
|
package/dist/Client.js
CHANGED
|
@@ -269,6 +269,19 @@ const messageSchema = z.object({
|
|
|
269
269
|
timestamp: z.string(),
|
|
270
270
|
});
|
|
271
271
|
const MESSAGE_BLOB_PREFIX = "vex-message:1\n";
|
|
272
|
+
const MAIL_FANOUT_CONCURRENCY = 8;
|
|
273
|
+
const MAIL_BATCH_MAX_SIZE = 32;
|
|
274
|
+
const MAIL_BATCH_FLUSH_DELAY_MS = 8;
|
|
275
|
+
const mailBatchResponseSchema = z.object({
|
|
276
|
+
results: z.array(z.object({
|
|
277
|
+
error: z.string().optional(),
|
|
278
|
+
index: z.number().int().nonnegative(),
|
|
279
|
+
mailID: z.string().optional(),
|
|
280
|
+
ok: z.boolean(),
|
|
281
|
+
recipient: z.string().optional(),
|
|
282
|
+
status: z.number().int().optional(),
|
|
283
|
+
})),
|
|
284
|
+
});
|
|
272
285
|
function decodeMessageBlob(body) {
|
|
273
286
|
if (!body.startsWith(MESSAGE_BLOB_PREFIX)) {
|
|
274
287
|
return { message: body };
|
|
@@ -535,16 +548,15 @@ export class Client {
|
|
|
535
548
|
* Passkey ("recovery credential") methods.
|
|
536
549
|
*
|
|
537
550
|
* Passkeys are an account-bound second-class credential that can
|
|
538
|
-
* authenticate the owning user, list devices, delete devices,
|
|
539
|
-
*
|
|
540
|
-
*
|
|
551
|
+
* authenticate the owning user, list devices, delete devices, recover a
|
|
552
|
+
* pending device enrollment, and reject pending device-enrollment
|
|
553
|
+
* requests. They cannot send/decrypt mail.
|
|
541
554
|
*
|
|
542
555
|
* The host app drives the WebAuthn ceremony (e.g. via
|
|
543
556
|
* `@simplewebauthn/browser`) and hands the JSON response to
|
|
544
557
|
* `finish*`.
|
|
545
558
|
*/
|
|
546
559
|
passkeys = {
|
|
547
|
-
approveDeviceRequest: this.passkeyApproveDeviceRequest.bind(this),
|
|
548
560
|
beginAuthentication: this.beginPasskeyAuthentication.bind(this),
|
|
549
561
|
beginRegistration: this.beginPasskeyRegistration.bind(this),
|
|
550
562
|
delete: this.deletePasskey.bind(this),
|
|
@@ -553,6 +565,7 @@ export class Client {
|
|
|
553
565
|
finishRegistration: this.finishPasskeyRegistration.bind(this),
|
|
554
566
|
list: this.listPasskeys.bind(this),
|
|
555
567
|
listDevices: this.passkeyListDevices.bind(this),
|
|
568
|
+
recoverDeviceRequest: this.passkeyRecoverDeviceRequest.bind(this),
|
|
556
569
|
rejectDeviceRequest: this.passkeyRejectDeviceRequest.bind(this),
|
|
557
570
|
};
|
|
558
571
|
/**
|
|
@@ -668,6 +681,9 @@ export class Client {
|
|
|
668
681
|
isAlive = true;
|
|
669
682
|
localMessageRetentionDays;
|
|
670
683
|
localRetentionPurgeTimer = null;
|
|
684
|
+
mailBatchFlushTimer = null;
|
|
685
|
+
mailBatchQueue = [];
|
|
686
|
+
mailBatchUnsupported = false;
|
|
671
687
|
mailInterval;
|
|
672
688
|
manuallyClosing = false;
|
|
673
689
|
/* Retrieves the userID with the user identifier.
|
|
@@ -924,6 +940,14 @@ export class Client {
|
|
|
924
940
|
if (this.mailInterval) {
|
|
925
941
|
clearInterval(this.mailInterval);
|
|
926
942
|
}
|
|
943
|
+
if (this.mailBatchFlushTimer) {
|
|
944
|
+
clearTimeout(this.mailBatchFlushTimer);
|
|
945
|
+
this.mailBatchFlushTimer = null;
|
|
946
|
+
}
|
|
947
|
+
const pendingMailBatch = this.mailBatchQueue.splice(0);
|
|
948
|
+
for (const pending of pendingMailBatch) {
|
|
949
|
+
pending.reject(new Error("Client closed before mail batch sent."));
|
|
950
|
+
}
|
|
927
951
|
if (this.localRetentionPurgeTimer) {
|
|
928
952
|
clearInterval(this.localRetentionPurgeTimer);
|
|
929
953
|
this.localRetentionPurgeTimer = null;
|
|
@@ -1479,7 +1503,8 @@ export class Client {
|
|
|
1479
1503
|
// my keys
|
|
1480
1504
|
const IK_A = this.xKeyRing.identityKeys.secretKey;
|
|
1481
1505
|
const IK_AP = this.xKeyRing.identityKeys.publicKey;
|
|
1482
|
-
const
|
|
1506
|
+
const ephemeralKeys = await xBoxKeyPairAsync();
|
|
1507
|
+
const EK_A = ephemeralKeys.secretKey;
|
|
1483
1508
|
const fips = this.cryptoProfile === "fips";
|
|
1484
1509
|
// their keys — FIPS: `signKey` in bundle is the peer P-256 ECDH identity (raw, typically 65B).
|
|
1485
1510
|
const SPK_B = new Uint8Array(keyBundle.preKey.publicKey);
|
|
@@ -1519,10 +1544,10 @@ export class Client {
|
|
|
1519
1544
|
const nonce = xMakeNonce();
|
|
1520
1545
|
const cipher = await xSecretboxAsync(message, nonce, SK);
|
|
1521
1546
|
const signKeyWire = fips ? IK_AP : this.signKeys.publicKey;
|
|
1522
|
-
const ephKeyWire =
|
|
1547
|
+
const ephKeyWire = ephemeralKeys.publicKey;
|
|
1523
1548
|
const extra = fips
|
|
1524
1549
|
? encodeFipsInitialExtraV1(signKeyWire, ephKeyWire, PK, AD, IDX)
|
|
1525
|
-
: xConcat(this.signKeys.publicKey,
|
|
1550
|
+
: xConcat(this.signKeys.publicKey, ephemeralKeys.publicKey, PK, AD, IDX);
|
|
1526
1551
|
const mail = {
|
|
1527
1552
|
authorID: this.getUser().userID,
|
|
1528
1553
|
cipher,
|
|
@@ -1544,8 +1569,6 @@ export class Client {
|
|
|
1544
1569
|
transmissionID: uuid.v4(),
|
|
1545
1570
|
type: "resource",
|
|
1546
1571
|
};
|
|
1547
|
-
// discard the ephemeral keys
|
|
1548
|
-
await this.newEphemeralKeys();
|
|
1549
1572
|
const ratchet = await initRatchetSession(SK, "initiator");
|
|
1550
1573
|
const sessionEntry = {
|
|
1551
1574
|
...ratchet,
|
|
@@ -1585,33 +1608,7 @@ export class Client {
|
|
|
1585
1608
|
if (shouldEmitHandshakeMessage) {
|
|
1586
1609
|
this.emitter.emit("message", emitMsg);
|
|
1587
1610
|
}
|
|
1588
|
-
|
|
1589
|
-
await new Promise((res, rej) => {
|
|
1590
|
-
const callback = (packedMsg) => {
|
|
1591
|
-
const [_header, receivedMsg] = XUtils.unpackMessage(packedMsg);
|
|
1592
|
-
if (receivedMsg.transmissionID === msg.transmissionID) {
|
|
1593
|
-
this.socket.off("message", callback);
|
|
1594
|
-
const parsed = WSMessageSchema.safeParse(receivedMsg);
|
|
1595
|
-
if (parsed.success && parsed.data.type === "success") {
|
|
1596
|
-
res(parsed.data.data);
|
|
1597
|
-
}
|
|
1598
|
-
else {
|
|
1599
|
-
rej(new Error("Mail delivery failed: " +
|
|
1600
|
-
JSON.stringify(receivedMsg)));
|
|
1601
|
-
}
|
|
1602
|
-
}
|
|
1603
|
-
};
|
|
1604
|
-
this.socket.on("message", callback);
|
|
1605
|
-
// Forward send failures to the outer promise instead
|
|
1606
|
-
// of leaking them as an unhandled rejection: the
|
|
1607
|
-
// listener above can never resolve if the send didn't
|
|
1608
|
-
// make it onto the wire, so without this the caller
|
|
1609
|
-
// would hang for the full 30s send-loop timeout.
|
|
1610
|
-
this.send(msg, hmac).catch((err) => {
|
|
1611
|
-
this.socket.off("message", callback);
|
|
1612
|
-
rej(err instanceof Error ? err : new Error(String(err)));
|
|
1613
|
-
});
|
|
1614
|
-
});
|
|
1611
|
+
await this.deliverMailResource(msg, hmac, mail);
|
|
1615
1612
|
});
|
|
1616
1613
|
}
|
|
1617
1614
|
async deleteChannel(channelID) {
|
|
@@ -1641,6 +1638,49 @@ export class Client {
|
|
|
1641
1638
|
async deleteServer(serverID) {
|
|
1642
1639
|
await this.http.delete(this.getHost() + "/server/" + serverID);
|
|
1643
1640
|
}
|
|
1641
|
+
deliverMailResource(msg, header, mail) {
|
|
1642
|
+
if (this.mailBatchUnsupported) {
|
|
1643
|
+
return this.deliverMailResourceOverSocket(msg, header);
|
|
1644
|
+
}
|
|
1645
|
+
return new Promise((resolve, reject) => {
|
|
1646
|
+
this.mailBatchQueue.push({
|
|
1647
|
+
header,
|
|
1648
|
+
mail,
|
|
1649
|
+
msg,
|
|
1650
|
+
reject,
|
|
1651
|
+
resolve,
|
|
1652
|
+
});
|
|
1653
|
+
if (this.mailBatchQueue.length >= MAIL_BATCH_MAX_SIZE) {
|
|
1654
|
+
void this.flushMailBatchQueue();
|
|
1655
|
+
}
|
|
1656
|
+
else {
|
|
1657
|
+
this.scheduleMailBatchFlush();
|
|
1658
|
+
}
|
|
1659
|
+
});
|
|
1660
|
+
}
|
|
1661
|
+
async deliverMailResourceOverSocket(msg, header) {
|
|
1662
|
+
await new Promise((res, rej) => {
|
|
1663
|
+
const callback = (packedMsg) => {
|
|
1664
|
+
const [_header, receivedMsg] = XUtils.unpackMessage(packedMsg);
|
|
1665
|
+
if (receivedMsg.transmissionID === msg.transmissionID) {
|
|
1666
|
+
this.socket.off("message", callback);
|
|
1667
|
+
const parsed = WSMessageSchema.safeParse(receivedMsg);
|
|
1668
|
+
if (parsed.success && parsed.data.type === "success") {
|
|
1669
|
+
res();
|
|
1670
|
+
}
|
|
1671
|
+
else {
|
|
1672
|
+
rej(new Error("Mail delivery failed: " +
|
|
1673
|
+
JSON.stringify(receivedMsg)));
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
};
|
|
1677
|
+
this.socket.on("message", callback);
|
|
1678
|
+
this.send(msg, header).catch((err) => {
|
|
1679
|
+
this.socket.off("message", callback);
|
|
1680
|
+
rej(err instanceof Error ? err : new Error(String(err)));
|
|
1681
|
+
});
|
|
1682
|
+
});
|
|
1683
|
+
}
|
|
1644
1684
|
deviceListFailureDetail(err) {
|
|
1645
1685
|
if (!isHttpError(err)) {
|
|
1646
1686
|
return "";
|
|
@@ -1767,6 +1807,64 @@ export class Client {
|
|
|
1767
1807
|
const response = await this.http.post(this.getHost() + "/user/" + userID + "/passkeys/register/finish", msgpack.encode(args), { headers: { "Content-Type": "application/msgpack" } });
|
|
1768
1808
|
return decodeHttpResponse(PasskeyCodec, response.data);
|
|
1769
1809
|
}
|
|
1810
|
+
async flushMailBatchOverSocket(batch) {
|
|
1811
|
+
await Promise.all(batch.map(async (item) => {
|
|
1812
|
+
try {
|
|
1813
|
+
await this.deliverMailResourceOverSocket(item.msg, item.header);
|
|
1814
|
+
item.resolve();
|
|
1815
|
+
}
|
|
1816
|
+
catch (err) {
|
|
1817
|
+
item.reject(err);
|
|
1818
|
+
}
|
|
1819
|
+
}));
|
|
1820
|
+
}
|
|
1821
|
+
async flushMailBatchQueue() {
|
|
1822
|
+
if (this.mailBatchFlushTimer) {
|
|
1823
|
+
clearTimeout(this.mailBatchFlushTimer);
|
|
1824
|
+
this.mailBatchFlushTimer = null;
|
|
1825
|
+
}
|
|
1826
|
+
const batch = this.mailBatchQueue.splice(0, MAIL_BATCH_MAX_SIZE);
|
|
1827
|
+
if (this.mailBatchQueue.length > 0) {
|
|
1828
|
+
this.scheduleMailBatchFlush();
|
|
1829
|
+
}
|
|
1830
|
+
if (batch.length === 0) {
|
|
1831
|
+
return;
|
|
1832
|
+
}
|
|
1833
|
+
if (this.mailBatchUnsupported) {
|
|
1834
|
+
await this.flushMailBatchOverSocket(batch);
|
|
1835
|
+
return;
|
|
1836
|
+
}
|
|
1837
|
+
try {
|
|
1838
|
+
const response = await this.http.post(this.getHost() + "/mail/batch", msgpack.encode({
|
|
1839
|
+
mails: batch.map((item) => ({
|
|
1840
|
+
header: item.header,
|
|
1841
|
+
mail: item.mail,
|
|
1842
|
+
})),
|
|
1843
|
+
}), { headers: { "Content-Type": "application/msgpack" } });
|
|
1844
|
+
const decoded = mailBatchResponseSchema.parse(msgpack.decode(new Uint8Array(response.data)));
|
|
1845
|
+
const resultsByIndex = new Map(decoded.results.map((result) => [result.index, result]));
|
|
1846
|
+
for (const [index, item] of batch.entries()) {
|
|
1847
|
+
const result = resultsByIndex.get(index);
|
|
1848
|
+
if (result?.ok === true) {
|
|
1849
|
+
item.resolve();
|
|
1850
|
+
continue;
|
|
1851
|
+
}
|
|
1852
|
+
item.reject(new Error("Mail delivery failed: " +
|
|
1853
|
+
(result?.error ??
|
|
1854
|
+
`missing batch result for index ${String(index)}`)));
|
|
1855
|
+
}
|
|
1856
|
+
}
|
|
1857
|
+
catch (err) {
|
|
1858
|
+
if (isHttpError(err) && err.response?.status === 404) {
|
|
1859
|
+
this.mailBatchUnsupported = true;
|
|
1860
|
+
await this.flushMailBatchOverSocket(batch);
|
|
1861
|
+
return;
|
|
1862
|
+
}
|
|
1863
|
+
for (const item of batch) {
|
|
1864
|
+
item.reject(err);
|
|
1865
|
+
}
|
|
1866
|
+
}
|
|
1867
|
+
}
|
|
1770
1868
|
async forward(message) {
|
|
1771
1869
|
if (this.isManualCloseInFlight()) {
|
|
1772
1870
|
return;
|
|
@@ -1784,16 +1882,17 @@ export class Client {
|
|
|
1784
1882
|
}
|
|
1785
1883
|
const msgBytes = Uint8Array.from(msgpack.encode(copy));
|
|
1786
1884
|
const devices = await this.fetchUserDeviceListWithBackoff(this.getUser().userID, "own");
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1885
|
+
const targetDevices = devices.filter((device) => device.deviceID !== this.getDevice().deviceID);
|
|
1886
|
+
for (let index = 0; index < targetDevices.length; index += MAIL_FANOUT_CONCURRENCY) {
|
|
1887
|
+
const batch = targetDevices.slice(index, index + MAIL_FANOUT_CONCURRENCY);
|
|
1888
|
+
await Promise.all(batch.map(async (device) => {
|
|
1889
|
+
try {
|
|
1890
|
+
await this.sendMailWithRecovery(device, this.getUser(), msgBytes, null, copy.mailID, true);
|
|
1891
|
+
}
|
|
1892
|
+
catch {
|
|
1893
|
+
/* best-effort per device */
|
|
1894
|
+
}
|
|
1895
|
+
}));
|
|
1797
1896
|
}
|
|
1798
1897
|
}
|
|
1799
1898
|
async getChannelByID(channelID) {
|
|
@@ -2093,7 +2192,6 @@ export class Client {
|
|
|
2093
2192
|
this.scheduleReconnect();
|
|
2094
2193
|
return true;
|
|
2095
2194
|
}
|
|
2096
|
-
// ── Passkeys ────────────────────────────────────────────────────────
|
|
2097
2195
|
/**
|
|
2098
2196
|
* Initializes the keyring. This must be called before anything else.
|
|
2099
2197
|
*/
|
|
@@ -2108,7 +2206,6 @@ export class Client {
|
|
|
2108
2206
|
this.localRetentionPurgeTimer = setInterval(() => void this.runLocalRetentionPurge(), 6 * 60 * 60 * 1000);
|
|
2109
2207
|
this.emitter.emit("ready");
|
|
2110
2208
|
}
|
|
2111
|
-
// ── Passkeys ────────────────────────────────────────────────────────
|
|
2112
2209
|
initSocket() {
|
|
2113
2210
|
try {
|
|
2114
2211
|
if (!this.token) {
|
|
@@ -2263,15 +2360,6 @@ export class Client {
|
|
|
2263
2360
|
}
|
|
2264
2361
|
await this.submitOTK(needs);
|
|
2265
2362
|
}
|
|
2266
|
-
async newEphemeralKeys() {
|
|
2267
|
-
if (!this.xKeyRing) {
|
|
2268
|
-
if (this.manuallyClosing) {
|
|
2269
|
-
return;
|
|
2270
|
-
}
|
|
2271
|
-
throw new Error("Key ring not initialized.");
|
|
2272
|
-
}
|
|
2273
|
-
this.xKeyRing.ephemeralKeys = await xBoxKeyPairAsync();
|
|
2274
|
-
}
|
|
2275
2363
|
/**
|
|
2276
2364
|
* Pipeline for decrypted messages — registered in `init`. After `close()` sets
|
|
2277
2365
|
* `manuallyClosing`, this becomes a no-op so fire-and-forget `forward` does not
|
|
@@ -2293,16 +2381,6 @@ export class Client {
|
|
|
2293
2381
|
void this.database.saveMessage(message);
|
|
2294
2382
|
this.scheduleRetentionPurge();
|
|
2295
2383
|
};
|
|
2296
|
-
async passkeyApproveDeviceRequest(requestID) {
|
|
2297
|
-
const userID = this.getUser().userID;
|
|
2298
|
-
const response = await this.http.post(this.getHost() +
|
|
2299
|
-
"/user/" +
|
|
2300
|
-
userID +
|
|
2301
|
-
"/passkey/devices/requests/" +
|
|
2302
|
-
requestID +
|
|
2303
|
-
"/approve");
|
|
2304
|
-
return decodeHttpResponse(DeviceCodec, response.data);
|
|
2305
|
-
}
|
|
2306
2384
|
async passkeyDeleteDevice(deviceID) {
|
|
2307
2385
|
const userID = this.getUser().userID;
|
|
2308
2386
|
await this.http.delete(this.getHost() + "/user/" + userID + "/passkey/devices/" + deviceID);
|
|
@@ -2312,6 +2390,15 @@ export class Client {
|
|
|
2312
2390
|
const response = await this.http.get(this.getHost() + "/user/" + userID + "/passkey/devices");
|
|
2313
2391
|
return decodeHttpResponse(DeviceArrayCodec, response.data);
|
|
2314
2392
|
}
|
|
2393
|
+
async passkeyRecoverDeviceRequest(requestID) {
|
|
2394
|
+
const userID = this.getUser().userID;
|
|
2395
|
+
const response = await this.http.post(this.getHost() +
|
|
2396
|
+
"/user/" +
|
|
2397
|
+
userID +
|
|
2398
|
+
"/passkey/recover/devices/requests/" +
|
|
2399
|
+
requestID);
|
|
2400
|
+
return decodeHttpResponse(DeviceCodec, response.data);
|
|
2401
|
+
}
|
|
2315
2402
|
async passkeyRejectDeviceRequest(requestID) {
|
|
2316
2403
|
const userID = this.getUser().userID;
|
|
2317
2404
|
await this.http.post(this.getHost() +
|
|
@@ -3116,6 +3203,15 @@ export class Client {
|
|
|
3116
3203
|
leaveCryptoProfileScope();
|
|
3117
3204
|
}
|
|
3118
3205
|
}
|
|
3206
|
+
scheduleMailBatchFlush() {
|
|
3207
|
+
if (this.mailBatchFlushTimer) {
|
|
3208
|
+
return;
|
|
3209
|
+
}
|
|
3210
|
+
this.mailBatchFlushTimer = setTimeout(() => {
|
|
3211
|
+
this.mailBatchFlushTimer = null;
|
|
3212
|
+
void this.flushMailBatchQueue();
|
|
3213
|
+
}, MAIL_BATCH_FLUSH_DELAY_MS);
|
|
3214
|
+
}
|
|
3119
3215
|
scheduleReconnect() {
|
|
3120
3216
|
if (!this.autoReconnectEnabled ||
|
|
3121
3217
|
this.isManualCloseInFlight() ||
|
|
@@ -3235,20 +3331,31 @@ export class Client {
|
|
|
3235
3331
|
const stableDevices = [...targetDevices.values()].sort((a, b) => a.deviceID.localeCompare(b.deviceID, "en"));
|
|
3236
3332
|
let failCount = 0;
|
|
3237
3333
|
let lastErr;
|
|
3238
|
-
for (
|
|
3239
|
-
const
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3334
|
+
for (let index = 0; index < stableDevices.length; index += MAIL_FANOUT_CONCURRENCY) {
|
|
3335
|
+
const batch = stableDevices.slice(index, index + MAIL_FANOUT_CONCURRENCY);
|
|
3336
|
+
const results = await Promise.all(batch.map(async (device) => {
|
|
3337
|
+
const ownerRecord = device.owner === myUserID
|
|
3338
|
+
? this.getUser()
|
|
3339
|
+
: this.userRecords[device.owner];
|
|
3340
|
+
if (!ownerRecord) {
|
|
3341
|
+
return new Error(`Missing owner record for device ${device.deviceID}.`);
|
|
3342
|
+
}
|
|
3343
|
+
try {
|
|
3344
|
+
await this.sendMailWithRecovery(device, ownerRecord, msgBytes, uuidToUint8(channelID), mailID, false);
|
|
3345
|
+
return undefined;
|
|
3346
|
+
}
|
|
3347
|
+
catch (e) {
|
|
3348
|
+
return e;
|
|
3349
|
+
}
|
|
3350
|
+
}));
|
|
3351
|
+
for (const result of results) {
|
|
3352
|
+
if (result !== undefined) {
|
|
3353
|
+
lastErr = result;
|
|
3354
|
+
failCount += 1;
|
|
3355
|
+
}
|
|
3248
3356
|
}
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
failCount += 1;
|
|
3357
|
+
if (failCount === stableDevices.length) {
|
|
3358
|
+
break;
|
|
3252
3359
|
}
|
|
3253
3360
|
}
|
|
3254
3361
|
if (failCount === stableDevices.length) {
|
|
@@ -3370,31 +3477,7 @@ export class Client {
|
|
|
3370
3477
|
};
|
|
3371
3478
|
await this.database.saveSession(persisted);
|
|
3372
3479
|
this.sessionRecords[XUtils.encodeHex(session.publicKey)] = session;
|
|
3373
|
-
await
|
|
3374
|
-
const callback = (packedMsg) => {
|
|
3375
|
-
const [_header, receivedMsg] = XUtils.unpackMessage(packedMsg);
|
|
3376
|
-
if (receivedMsg.transmissionID === msgb.transmissionID) {
|
|
3377
|
-
this.socket.off("message", callback);
|
|
3378
|
-
const parsed = WSMessageSchema.safeParse(receivedMsg);
|
|
3379
|
-
if (parsed.success && parsed.data.type === "success") {
|
|
3380
|
-
res(parsed.data.data);
|
|
3381
|
-
}
|
|
3382
|
-
else {
|
|
3383
|
-
rej(new Error("Mail delivery failed: " +
|
|
3384
|
-
JSON.stringify(receivedMsg)));
|
|
3385
|
-
}
|
|
3386
|
-
}
|
|
3387
|
-
};
|
|
3388
|
-
this.socket.on("message", callback);
|
|
3389
|
-
// See the matching block above (sendMail handshake):
|
|
3390
|
-
// forward send failures to the outer promise so the
|
|
3391
|
-
// caller doesn't hang waiting for a response we never
|
|
3392
|
-
// sent.
|
|
3393
|
-
this.send(msgb, hmac).catch((err) => {
|
|
3394
|
-
this.socket.off("message", callback);
|
|
3395
|
-
rej(err instanceof Error ? err : new Error(String(err)));
|
|
3396
|
-
});
|
|
3397
|
-
});
|
|
3480
|
+
await this.deliverMailResource(msgb, hmac, mail);
|
|
3398
3481
|
}
|
|
3399
3482
|
finally {
|
|
3400
3483
|
this.sending.delete(device.deviceID);
|
|
@@ -3464,28 +3547,41 @@ export class Client {
|
|
|
3464
3547
|
// One logical DM fan-outs to multiple recipient devices. Reuse a
|
|
3465
3548
|
// single mailID so local/UI dedupe treats it as one message.
|
|
3466
3549
|
const messageMailID = uuid.v4();
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3550
|
+
const msgBytes = XUtils.decodeUTF8(payload);
|
|
3551
|
+
for (let index = 0; index < deviceList.length; index += MAIL_FANOUT_CONCURRENCY) {
|
|
3552
|
+
const batch = deviceList.slice(index, index + MAIL_FANOUT_CONCURRENCY);
|
|
3553
|
+
const results = await Promise.all(batch.map(async (device) => {
|
|
3554
|
+
try {
|
|
3555
|
+
if (libvexDebugDmEnabled()) {
|
|
3556
|
+
debugLibvexDm("sendMessage: sendMail start", {
|
|
3557
|
+
mailID: messageMailID,
|
|
3558
|
+
recipientDevice: device.deviceID,
|
|
3559
|
+
});
|
|
3560
|
+
}
|
|
3561
|
+
await this.sendMailWithRecovery(device, userEntry, msgBytes, null, messageMailID, false);
|
|
3562
|
+
if (libvexDebugDmEnabled()) {
|
|
3563
|
+
debugLibvexDm("sendMessage: sendMail ok", {
|
|
3564
|
+
recipientDevice: device.deviceID,
|
|
3565
|
+
});
|
|
3566
|
+
}
|
|
3567
|
+
return undefined;
|
|
3474
3568
|
}
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
}
|
|
3569
|
+
catch (e) {
|
|
3570
|
+
if (libvexDebugDmEnabled()) {
|
|
3571
|
+
// eslint-disable-next-line no-console -- LIBVEX_DEBUG_DM only
|
|
3572
|
+
console.error("[libvex:debug-dm] sendMessage: sendMail failed for device", device.deviceID, e);
|
|
3573
|
+
}
|
|
3574
|
+
return e;
|
|
3480
3575
|
}
|
|
3481
|
-
}
|
|
3482
|
-
|
|
3483
|
-
if (
|
|
3484
|
-
|
|
3485
|
-
|
|
3576
|
+
}));
|
|
3577
|
+
for (const result of results) {
|
|
3578
|
+
if (result !== undefined) {
|
|
3579
|
+
lastErr = result;
|
|
3580
|
+
failCount += 1;
|
|
3486
3581
|
}
|
|
3487
|
-
|
|
3488
|
-
|
|
3582
|
+
}
|
|
3583
|
+
if (failCount === deviceList.length) {
|
|
3584
|
+
break;
|
|
3489
3585
|
}
|
|
3490
3586
|
}
|
|
3491
3587
|
if (failCount > 0) {
|