@agora-sdk/secure-chat-core 0.6.5 → 0.7.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/cjs/context/secure-chat-context.d.ts +19 -3
- package/dist/cjs/context/secure-chat-context.js +53 -13
- package/dist/cjs/context/secure-chat-context.js.map +1 -1
- package/dist/cjs/hooks/useSecureConversations.js +11 -0
- package/dist/cjs/hooks/useSecureConversations.js.map +1 -1
- package/dist/cjs/hooks/useSecureDevice.js +15 -1
- package/dist/cjs/hooks/useSecureDevice.js.map +1 -1
- package/dist/cjs/hooks/useSecureHandshakes.js +36 -2
- package/dist/cjs/hooks/useSecureHandshakes.js.map +1 -1
- package/dist/cjs/hooks/useSecureMessages.js +131 -16
- package/dist/cjs/hooks/useSecureMessages.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/persistence/repository.d.ts +24 -0
- package/dist/cjs/persistence/repository.js +35 -0
- package/dist/cjs/persistence/repository.js.map +1 -1
- package/dist/cjs/persistence/store.js +11 -0
- package/dist/cjs/persistence/store.js.map +1 -1
- package/dist/cjs/transport/rest.d.ts +2 -2
- package/dist/cjs/transport/rest.js +2 -2
- package/dist/cjs/transport/rest.js.map +1 -1
- package/dist/cjs/transport/socket.d.ts +1 -1
- package/dist/cjs/transport/socket.js +17 -1
- package/dist/cjs/transport/socket.js.map +1 -1
- package/dist/cjs/version.d.ts +13 -0
- package/dist/cjs/version.js +19 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/context/secure-chat-context.d.ts +19 -3
- package/dist/esm/context/secure-chat-context.js +53 -13
- package/dist/esm/context/secure-chat-context.js.map +1 -1
- package/dist/esm/hooks/useSecureConversations.js +11 -0
- package/dist/esm/hooks/useSecureConversations.js.map +1 -1
- package/dist/esm/hooks/useSecureDevice.js +15 -1
- package/dist/esm/hooks/useSecureDevice.js.map +1 -1
- package/dist/esm/hooks/useSecureHandshakes.js +36 -2
- package/dist/esm/hooks/useSecureHandshakes.js.map +1 -1
- package/dist/esm/hooks/useSecureMessages.js +131 -16
- package/dist/esm/hooks/useSecureMessages.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/persistence/repository.d.ts +24 -0
- package/dist/esm/persistence/repository.js +35 -0
- package/dist/esm/persistence/repository.js.map +1 -1
- package/dist/esm/persistence/store.js +11 -0
- package/dist/esm/persistence/store.js.map +1 -1
- package/dist/esm/transport/rest.d.ts +2 -2
- package/dist/esm/transport/rest.js +2 -2
- package/dist/esm/transport/rest.js.map +1 -1
- package/dist/esm/transport/socket.d.ts +1 -1
- package/dist/esm/transport/socket.js +17 -1
- package/dist/esm/transport/socket.js.map +1 -1
- package/dist/esm/version.d.ts +13 -0
- package/dist/esm/version.js +16 -0
- package/dist/esm/version.js.map +1 -0
- package/package.json +2 -3
|
@@ -11,6 +11,29 @@ import { padPlaintext, unpadPlaintext } from "../util/padding.js";
|
|
|
11
11
|
import { createDebugLogger } from "../util/debug.js";
|
|
12
12
|
import { useSecureChat } from "../context/secure-chat-context.js";
|
|
13
13
|
const log = createDebugLogger("messages");
|
|
14
|
+
/**
|
|
15
|
+
* Merge two copies of the SAME message (same id) seen via different paths (REST load, retry, live
|
|
16
|
+
* echo), keeping the more-resolved one. A row's status may only ever IMPROVE.
|
|
17
|
+
*
|
|
18
|
+
* This is load-bearing for E2EE correctness, not just de-dup hygiene: MLS application-message keys are
|
|
19
|
+
* single-use (forward secrecy), so the ONE decrypt attempt that succeeds is the only one that ever
|
|
20
|
+
* will — that attempt also *consumes* the key, so a later re-attempt necessarily fails. If a message
|
|
21
|
+
* is loaded as `pending` (group not resolved yet) and then the live echo decrypts it `ok`, naively
|
|
22
|
+
* "keep the first-seen row" would discard the only successful decryption and strand the message on
|
|
23
|
+
* "waiting for key update" forever. So `ok` always wins; a failed re-attempt (`pending`/`rejected`)
|
|
24
|
+
* must never overwrite an `ok`; otherwise keep the existing row (the retry effect handles `pending`).
|
|
25
|
+
*
|
|
26
|
+
* @param existing - The row already in state.
|
|
27
|
+
* @param incoming - A freshly-produced row for the same message id.
|
|
28
|
+
* @returns Whichever row is more resolved (`ok` \> anything; else `existing`).
|
|
29
|
+
*/
|
|
30
|
+
function preferResolved(existing, incoming) {
|
|
31
|
+
if (existing.status === "ok")
|
|
32
|
+
return existing; // never downgrade a successful decrypt
|
|
33
|
+
if (incoming.status === "ok")
|
|
34
|
+
return incoming; // upgrade pending/rejected → ok
|
|
35
|
+
return existing; // both unresolved: keep existing (a `pending` row is retried by the group effect)
|
|
36
|
+
}
|
|
14
37
|
/**
|
|
15
38
|
* Load, decrypt, send, and live-receive messages in one secure conversation.
|
|
16
39
|
*
|
|
@@ -29,7 +52,7 @@ const log = createDebugLogger("messages");
|
|
|
29
52
|
* ```
|
|
30
53
|
*/
|
|
31
54
|
export function useSecureMessages(conversationId, options = {}) {
|
|
32
|
-
const { rest, crypto, socket, repo, resolveGroup, getGroupVersion, subscribeGroupChange, padding } = useSecureChat();
|
|
55
|
+
const { rest, crypto, socket, repo, resolveGroup, persistGroupState, getGroupVersion, subscribeGroupChange, padding, } = useSecureChat();
|
|
33
56
|
const [messages, setMessages] = useState([]);
|
|
34
57
|
const [before, setBefore] = useState(undefined);
|
|
35
58
|
const [hasMore, setHasMore] = useState(true);
|
|
@@ -45,6 +68,21 @@ export function useSecureMessages(conversationId, options = {}) {
|
|
|
45
68
|
// making `messages` one of its deps (which would loop).
|
|
46
69
|
const messagesRef = useRef(messages);
|
|
47
70
|
messagesRef.current = messages;
|
|
71
|
+
// `decrypt` reads the LIVE group through this ref, not its closure. A message page that finishes
|
|
72
|
+
// loading AFTER the group resolves must decrypt with the now-current handle instead of stranding as
|
|
73
|
+
// `pending` — the load's closure may have captured `group` while it was still null.
|
|
74
|
+
const groupRef = useRef(group);
|
|
75
|
+
groupRef.current = group;
|
|
76
|
+
// Decrypt-once cache, by message id — the in-memory tier of a TWO-tier store. MLS application keys
|
|
77
|
+
// are SINGLE-USE (forward secrecy): the one decrypt that succeeds consumes the key, so any later
|
|
78
|
+
// attempt fails (`"Desired gen in the past"`). The hook decrypts the same message from several
|
|
79
|
+
// effects (load, retry, live echo) and React StrictMode double-invokes them — so without this cache
|
|
80
|
+
// the key could be consumed on a run whose `ok` result is then discarded, leaving the message
|
|
81
|
+
// permanently un-decryptable. This cache covers within-session repeats; `decrypt` ALSO write-throughs
|
|
82
|
+
// each `ok` to the durable plaintext store (repo.saveMessagePlaintext) so history survives reload
|
|
83
|
+
// without ever replaying the consumed ratchet. Only `ok` is cached (terminal); `pending`/`rejected`
|
|
84
|
+
// stay retryable. Ids are globally-unique server uuids, so this never needs clearing per-conversation.
|
|
85
|
+
const okCache = useRef(new Map());
|
|
48
86
|
// Subscribe to provider group-change signals; only a change to OUR conversation's version updates
|
|
49
87
|
// state (React bails on an unchanged primitive), so unrelated conversations don't re-resolve us.
|
|
50
88
|
useEffect(() => {
|
|
@@ -62,12 +100,22 @@ export function useSecureMessages(conversationId, options = {}) {
|
|
|
62
100
|
let alive = true;
|
|
63
101
|
resolveGroup(conversationId)
|
|
64
102
|
.then((g) => {
|
|
65
|
-
if (alive)
|
|
103
|
+
if (alive) {
|
|
66
104
|
setGroup(g);
|
|
105
|
+
log.debug("group handle set in messages hook", {
|
|
106
|
+
conversationId,
|
|
107
|
+
resolved: !!g,
|
|
108
|
+
epoch: g?.epoch?.toString(),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
67
111
|
})
|
|
68
|
-
.catch(() => {
|
|
112
|
+
.catch((err) => {
|
|
69
113
|
if (alive)
|
|
70
114
|
setGroup(null);
|
|
115
|
+
log.debug("group resolve failed in messages hook", {
|
|
116
|
+
conversationId,
|
|
117
|
+
error: err instanceof Error ? err.message : String(err),
|
|
118
|
+
});
|
|
71
119
|
});
|
|
72
120
|
return () => {
|
|
73
121
|
alive = false;
|
|
@@ -96,6 +144,24 @@ export function useSecureMessages(conversationId, options = {}) {
|
|
|
96
144
|
};
|
|
97
145
|
}, [options.senderDeviceId, repo]);
|
|
98
146
|
const decrypt = useCallback(async (model) => {
|
|
147
|
+
// Decrypt-once (in-memory tier): a message decoded earlier this session is returned from cache —
|
|
148
|
+
// never re-run the MLS decrypt (its single-use key is already consumed; a second attempt fails).
|
|
149
|
+
const cached = okCache.current.get(model.id);
|
|
150
|
+
if (cached)
|
|
151
|
+
return cached;
|
|
152
|
+
// Decrypt-once (durable tier): a message decoded in a PRIOR session is served from the local
|
|
153
|
+
// plaintext store. This is what makes history survive reload — the re-imported ratchet can't
|
|
154
|
+
// reproduce a consumed key, so re-decrypting would throw "Desired gen in the past". A store hit
|
|
155
|
+
// therefore must NOT touch the ratchet. (The blind server never sees this plaintext.)
|
|
156
|
+
const stored = await repo.loadMessagePlaintext(conversationId, model.id);
|
|
157
|
+
if (stored !== null) {
|
|
158
|
+
const restored = { model, plaintext: stored, status: "ok" };
|
|
159
|
+
okCache.current.set(model.id, restored);
|
|
160
|
+
return restored;
|
|
161
|
+
}
|
|
162
|
+
// Read the LIVE group via the ref (not a stale closure): a load that finishes after the group
|
|
163
|
+
// resolved must decrypt with the now-current handle, not the null it captured when it started.
|
|
164
|
+
const group = groupRef.current;
|
|
99
165
|
// No handle yet (still resolving) → retryable once it arrives.
|
|
100
166
|
if (!group) {
|
|
101
167
|
log.trace("decrypt deferred — no group handle yet", { messageId: model.id, epoch: model.epoch });
|
|
@@ -132,13 +198,23 @@ export function useSecureMessages(conversationId, options = {}) {
|
|
|
132
198
|
// size-bucket padding frame (see util/padding). A bad frame here is NOT a decrypt failure — it's a
|
|
133
199
|
// framing/version mismatch from an authenticated sender — so fail closed as "malformed" rather
|
|
134
200
|
// than rendering raw padded bytes as text.
|
|
201
|
+
let text;
|
|
135
202
|
try {
|
|
136
|
-
|
|
203
|
+
text = bytesToUtf8(unpadPlaintext(plaintext));
|
|
137
204
|
}
|
|
138
205
|
catch {
|
|
139
206
|
return { model, plaintext: null, status: "rejected", rejectedReason: "malformed" };
|
|
140
207
|
}
|
|
141
|
-
|
|
208
|
+
const ok = { model, plaintext: text, status: "ok" };
|
|
209
|
+
okCache.current.set(model.id, ok); // cache the (single) successful decode for all later callers
|
|
210
|
+
// Write-through to the durable store so this decode survives reload, and persist the now-advanced
|
|
211
|
+
// RECEIVE ratchet: decrypt moved the group's generation in memory, so if we don't persist it a
|
|
212
|
+
// reload rewinds the ratchet and the next send/receive desyncs. Persist plaintext FIRST — if the
|
|
213
|
+
// group-state write somehow fails, the message is still recoverable from the plaintext store.
|
|
214
|
+
await repo.saveMessagePlaintext(conversationId, model.id, text);
|
|
215
|
+
await persistGroupState(conversationId, group);
|
|
216
|
+
return ok;
|
|
217
|
+
}, [crypto, repo, conversationId, persistGroupState]);
|
|
142
218
|
const load = useCallback(async (reset) => {
|
|
143
219
|
setLoading(true);
|
|
144
220
|
setError(null);
|
|
@@ -151,8 +227,26 @@ export function useSecureMessages(conversationId, options = {}) {
|
|
|
151
227
|
const oldest = page.messages[page.messages.length - 1];
|
|
152
228
|
setBefore(oldest ? oldest.createdAt : before);
|
|
153
229
|
setHasMore(page.hasMore);
|
|
154
|
-
// Server returns created_at DESC; keep newest-first in state.
|
|
155
|
-
|
|
230
|
+
// Server returns created_at DESC; keep newest-first in state. Merge by id when appending an
|
|
231
|
+
// older page: a row already in state (one that arrived live, or an overlap at the page
|
|
232
|
+
// boundary) must not be appended twice (duplicate React key) — but if this page decrypted a row
|
|
233
|
+
// we're still holding as `pending`, UPGRADE it in place rather than dropping the decode (same
|
|
234
|
+
// forward-secrecy reasoning as the live path). `reset` replaces wholesale.
|
|
235
|
+
setMessages((prev) => {
|
|
236
|
+
if (reset)
|
|
237
|
+
return decrypted;
|
|
238
|
+
const indexById = new Map(prev.map((p, idx) => [p.model.id, idx]));
|
|
239
|
+
const next = prev.slice();
|
|
240
|
+
const appended = [];
|
|
241
|
+
for (const m of decrypted) {
|
|
242
|
+
const idx = indexById.get(m.model.id);
|
|
243
|
+
if (idx === undefined)
|
|
244
|
+
appended.push(m);
|
|
245
|
+
else
|
|
246
|
+
next[idx] = preferResolved(next[idx], m);
|
|
247
|
+
}
|
|
248
|
+
return [...next, ...appended];
|
|
249
|
+
});
|
|
156
250
|
log.debug("loaded message page", {
|
|
157
251
|
conversationId,
|
|
158
252
|
reset,
|
|
@@ -195,11 +289,21 @@ export function useSecureMessages(conversationId, options = {}) {
|
|
|
195
289
|
// Pad the plaintext to a size bucket BEFORE encryption so the ciphertext length leaks less
|
|
196
290
|
// (the receiver strips the frame in `decrypt`). See util/padding for the framing.
|
|
197
291
|
const { ciphertext, epoch } = await crypto.encryptMessage(group, padPlaintext(utf8ToBytes(text), padding));
|
|
292
|
+
// The send ratchet just advanced in memory. Persist NOW — BEFORE the network send — because the
|
|
293
|
+
// ratchet moved regardless of whether the send succeeds. If we skipped this, a reload would
|
|
294
|
+
// re-import the last-committed state, rewind the send ratchet to a consumed generation, and the
|
|
295
|
+
// peer would reject our next message as a replay (the exact bug this fixes). A failed network
|
|
296
|
+
// send instead leaves at most a one-generation forward gap, which the peer tolerates within its
|
|
297
|
+
// key-retention window — fail-safe-forward, never a replay.
|
|
298
|
+
await persistGroupState(conversationId, group);
|
|
198
299
|
const sent = await rest.sendMessage(conversationId, {
|
|
199
300
|
ciphertext: toBase64(ciphertext),
|
|
200
301
|
epoch: epoch.toString(),
|
|
201
302
|
senderDeviceId,
|
|
202
303
|
});
|
|
304
|
+
// Persist our own plaintext: we can't re-decrypt our own single-use MLS message after reload (and
|
|
305
|
+
// the server's echo of it self-rejects), so without this our own history would blank on reload.
|
|
306
|
+
await repo.saveMessagePlaintext(conversationId, sent.id, text);
|
|
203
307
|
log.debug("sent message", {
|
|
204
308
|
conversationId,
|
|
205
309
|
messageId: sent.id,
|
|
@@ -216,7 +320,7 @@ export function useSecureMessages(conversationId, options = {}) {
|
|
|
216
320
|
{ model: sent, plaintext: text, status: "ok" },
|
|
217
321
|
...prev.filter((p) => p.model.id !== sent.id),
|
|
218
322
|
]);
|
|
219
|
-
}, [crypto, rest, conversationId, group, senderDeviceId, padding]);
|
|
323
|
+
}, [crypto, rest, repo, conversationId, group, senderDeviceId, padding, persistGroupState]);
|
|
220
324
|
useEffect(() => {
|
|
221
325
|
refresh();
|
|
222
326
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -246,16 +350,27 @@ export function useSecureMessages(conversationId, options = {}) {
|
|
|
246
350
|
if (model.conversationId !== conversationId)
|
|
247
351
|
return;
|
|
248
352
|
decrypt(model).then((m) => setMessages((prev) => {
|
|
249
|
-
|
|
250
|
-
|
|
353
|
+
const i = prev.findIndex((p) => p.model.id === m.model.id);
|
|
354
|
+
if (i === -1) {
|
|
355
|
+
log.debug("live message received", {
|
|
356
|
+
conversationId,
|
|
357
|
+
messageId: m.model.id,
|
|
358
|
+
status: m.status,
|
|
359
|
+
});
|
|
360
|
+
return [m, ...prev];
|
|
361
|
+
}
|
|
362
|
+
// Already present (e.g. loaded as `pending` before the group resolved): keep the more-resolved
|
|
363
|
+
// copy in place — NEVER drop this `ok` for a stale `pending`. The decrypt above consumed the
|
|
364
|
+
// single-use MLS key, so this may be the only successful decode the message ever gets.
|
|
365
|
+
const merged = preferResolved(prev[i], m);
|
|
366
|
+
if (merged === prev[i]) {
|
|
367
|
+
log.trace("live message deduped (kept existing)", { messageId: m.model.id, status: prev[i].status });
|
|
251
368
|
return prev;
|
|
252
369
|
}
|
|
253
|
-
log.debug("live message
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
});
|
|
258
|
-
return [m, ...prev];
|
|
370
|
+
log.debug("live message upgraded", { conversationId, messageId: m.model.id, status: merged.status });
|
|
371
|
+
const next = prev.slice();
|
|
372
|
+
next[i] = merged;
|
|
373
|
+
return next;
|
|
259
374
|
}));
|
|
260
375
|
});
|
|
261
376
|
return off;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSecureMessages.js","sourceRoot":"","sources":["../../../src/hooks/useSecureMessages.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSecureMessages.js","sourceRoot":"","sources":["../../../src/hooks/useSecureMessages.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { VERSION } from "./version.js";
|
|
1
2
|
export { SecureChatProvider, useSecureChat } from "./context/secure-chat-context.js";
|
|
2
3
|
export type { SecureChatProviderProps, SecureChatContextValue, } from "./context/secure-chat-context.js";
|
|
3
4
|
export { useSecureDevice } from "./hooks/useSecureDevice.js";
|
package/dist/esm/index.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
// Transport (REST + /secure socket) + provider/hooks, with MLS crypto supplied by dependency
|
|
4
4
|
// injection of a `SecureChatCrypto`. Platform packages (@agora-sdk/secure-chat-react-js, etc.)
|
|
5
5
|
// re-export this and add the concrete crypto + persistence.
|
|
6
|
+
// ── version (generated from package.json; see scripts/write-version.mjs) ──────
|
|
7
|
+
export { VERSION } from "./version.js";
|
|
6
8
|
// ── context / provider ──────────────────────────────────────────────────────
|
|
7
9
|
export { SecureChatProvider, useSecureChat } from "./context/secure-chat-context.js";
|
|
8
10
|
// ── hooks ────────────────────────────────────────────────────────────────────
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,EAAE;AACF,6FAA6F;AAC7F,+FAA+F;AAC/F,4DAA4D;AAE5D,+EAA+E;AAC/E,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAMrF,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAMjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,iFAAiF;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E,gFAAgF;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAoB/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAOvE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,gFAAgF;AAChF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,iFAAiF;AACjF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,EAAE;AACF,6FAA6F;AAC7F,+FAA+F;AAC/F,4DAA4D;AAE5D,iFAAiF;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,+EAA+E;AAC/E,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAMrF,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAMjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,iFAAiF;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E,gFAAgF;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAoB/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAOvE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,gFAAgF;AAChF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,iFAAiF;AACjF,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -27,6 +27,30 @@ export declare class SecureChatRepository {
|
|
|
27
27
|
deleteGroupState(conversationId: string): Promise<void>;
|
|
28
28
|
/** List the conversation ids that have persisted group state. */
|
|
29
29
|
listGroupConversationIds(): Promise<string[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Persist the decrypted plaintext of a message (local-only, decrypt-once history).
|
|
32
|
+
*
|
|
33
|
+
* Called after a message is successfully decrypted (or, for our own sends, the known plaintext).
|
|
34
|
+
* The single-use MLS key is consumed by that one decrypt, so this stored copy — not the ratchet —
|
|
35
|
+
* is what renders the message on every later reload. The blind server never receives this; it lives
|
|
36
|
+
* only in the platform store (web: IndexedDB; tests: MemoryStore).
|
|
37
|
+
*
|
|
38
|
+
* @param conversationId - The conversation the message belongs to.
|
|
39
|
+
* @param messageId - The globally-unique server message id.
|
|
40
|
+
* @param plaintext - The decoded UTF-8 message text.
|
|
41
|
+
*/
|
|
42
|
+
saveMessagePlaintext(conversationId: string, messageId: string, plaintext: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Load a message's previously-decrypted plaintext, or `null` if it was never stored.
|
|
45
|
+
*
|
|
46
|
+
* A non-null result lets the decrypt path short-circuit BEFORE touching the MLS ratchet — essential
|
|
47
|
+
* because re-decrypting would throw `"Desired gen in the past"` (the key is gone after first use).
|
|
48
|
+
*
|
|
49
|
+
* @param conversationId - The conversation the message belongs to.
|
|
50
|
+
* @param messageId - The globally-unique server message id.
|
|
51
|
+
* @returns The stored UTF-8 plaintext, or `null` on a miss.
|
|
52
|
+
*/
|
|
53
|
+
loadMessagePlaintext(conversationId: string, messageId: string): Promise<string | null>;
|
|
30
54
|
/** Load this device row's persisted handshake delivery cursor (`seq`), or `null`. */
|
|
31
55
|
loadHandshakeCursor(deviceRowId: string): Promise<string | null>;
|
|
32
56
|
/** Persist this device row's handshake delivery cursor (`seq`). */
|
|
@@ -12,6 +12,12 @@ const GROUP_PREFIX = "group:";
|
|
|
12
12
|
// and receives its own Welcome. A global key let a stale cursor outlive its device and mask the
|
|
13
13
|
// Welcome whose `seq` it had already passed (the handshakes query is strictly `seq > since`).
|
|
14
14
|
const CURSOR_PREFIX = "handshake:cursor:";
|
|
15
|
+
// Decrypted message plaintext, keyed `msg:<conversationId>:<messageId>` (messageId is a globally-
|
|
16
|
+
// unique server uuid). This is the durable conversation history: MLS application keys are single-use
|
|
17
|
+
// (forward secrecy), so a message can be decrypted exactly once — we persist that one plaintext so
|
|
18
|
+
// reload renders history from the store instead of replaying the (consumed) ratchet. Plaintext at
|
|
19
|
+
// rest here is LOCAL ONLY; the blind server never sees it. See store.ts for the at-rest posture.
|
|
20
|
+
const MESSAGE_PREFIX = "msg:";
|
|
15
21
|
/** Typed persistence for device identity, per-conversation group state, and the handshake cursor. */
|
|
16
22
|
export class SecureChatRepository {
|
|
17
23
|
constructor(store) {
|
|
@@ -55,6 +61,35 @@ export class SecureChatRepository {
|
|
|
55
61
|
const keys = await this.store.list(GROUP_PREFIX);
|
|
56
62
|
return keys.map((k) => k.slice(GROUP_PREFIX.length));
|
|
57
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Persist the decrypted plaintext of a message (local-only, decrypt-once history).
|
|
66
|
+
*
|
|
67
|
+
* Called after a message is successfully decrypted (or, for our own sends, the known plaintext).
|
|
68
|
+
* The single-use MLS key is consumed by that one decrypt, so this stored copy — not the ratchet —
|
|
69
|
+
* is what renders the message on every later reload. The blind server never receives this; it lives
|
|
70
|
+
* only in the platform store (web: IndexedDB; tests: MemoryStore).
|
|
71
|
+
*
|
|
72
|
+
* @param conversationId - The conversation the message belongs to.
|
|
73
|
+
* @param messageId - The globally-unique server message id.
|
|
74
|
+
* @param plaintext - The decoded UTF-8 message text.
|
|
75
|
+
*/
|
|
76
|
+
async saveMessagePlaintext(conversationId, messageId, plaintext) {
|
|
77
|
+
await this.store.set(MESSAGE_PREFIX + conversationId + ":" + messageId, utf8ToBytes(plaintext));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Load a message's previously-decrypted plaintext, or `null` if it was never stored.
|
|
81
|
+
*
|
|
82
|
+
* A non-null result lets the decrypt path short-circuit BEFORE touching the MLS ratchet — essential
|
|
83
|
+
* because re-decrypting would throw `"Desired gen in the past"` (the key is gone after first use).
|
|
84
|
+
*
|
|
85
|
+
* @param conversationId - The conversation the message belongs to.
|
|
86
|
+
* @param messageId - The globally-unique server message id.
|
|
87
|
+
* @returns The stored UTF-8 plaintext, or `null` on a miss.
|
|
88
|
+
*/
|
|
89
|
+
async loadMessagePlaintext(conversationId, messageId) {
|
|
90
|
+
const bytes = await this.store.get(MESSAGE_PREFIX + conversationId + ":" + messageId);
|
|
91
|
+
return bytes ? bytesToUtf8(bytes) : null;
|
|
92
|
+
}
|
|
58
93
|
/** Load this device row's persisted handshake delivery cursor (`seq`), or `null`. */
|
|
59
94
|
async loadHandshakeCursor(deviceRowId) {
|
|
60
95
|
const bytes = await this.store.get(CURSOR_PREFIX + deviceRowId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/persistence/repository.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,0FAA0F;AAC1F,8FAA8F;AAC9F,gFAAgF;AAIhF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnF,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC9B,qGAAqG;AACrG,sGAAsG;AACtG,qGAAqG;AACrG,gGAAgG;AAChG,8FAA8F;AAC9F,MAAM,aAAa,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../../src/persistence/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,16 @@
|
|
|
3
3
|
// This is ALL a platform must implement: web ships an IndexedDB-backed store, native swaps a
|
|
4
4
|
// keystore later. The SDK owns the key schema and (de)serialization on top of this (see
|
|
5
5
|
// ./repository.ts); the store itself never interprets keys or values. Values are opaque bytes.
|
|
6
|
+
//
|
|
7
|
+
// AT-REST POSTURE (honest, per CLAUDE.md §1): besides device identity and MLS group state, this
|
|
8
|
+
// store now also holds DECRYPTED MESSAGE PLAINTEXT (`msg:` keys) — the durable conversation history,
|
|
9
|
+
// because forward-secret MLS keys are single-use and a message can be decrypted only once. This
|
|
10
|
+
// plaintext is LOCAL ONLY; the blind server never sees it. The base implementations store it as a
|
|
11
|
+
// plain blob (web: IndexedDB; tests: MemoryStore), so THEY are unencrypted at rest. Encryption at rest
|
|
12
|
+
// is a drop-in decorator: on web, wrap the base store with `createEncryptedStore(...)` from
|
|
13
|
+
// `@agora-sdk/secure-chat-react-js` — it seals every VALUE with AES-256-GCM under an argon2id-derived,
|
|
14
|
+
// password-wrapped DEK, leaving the repository and hooks untouched (store KEYS still pass through in
|
|
15
|
+
// the clear; see that module's header for the honest values-only / keys-readable scope). The seam is
|
|
16
|
+
// the storage abstraction.
|
|
6
17
|
export {};
|
|
7
18
|
//# sourceMappingURL=store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/persistence/store.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,6FAA6F;AAC7F,wFAAwF;AACxF,+FAA+F"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/persistence/store.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,6FAA6F;AAC7F,wFAAwF;AACxF,+FAA+F;AAC/F,EAAE;AACF,gGAAgG;AAChG,qGAAqG;AACrG,gGAAgG;AAChG,kGAAkG;AAClG,uGAAuG;AACvG,4FAA4F;AAC5F,uGAAuG;AACvG,qGAAqG;AACrG,qGAAqG;AACrG,2BAA2B"}
|
|
@@ -5,7 +5,7 @@ import { AddSecureMemberBody, CreateSecureConversationBody, PublishKeyPackagesBo
|
|
|
5
5
|
* effect on the next request without rebuilding the client.
|
|
6
6
|
*/
|
|
7
7
|
export interface SecureChatRestConfig {
|
|
8
|
-
/** Resolve the API base URL (e.g. `
|
|
8
|
+
/** Resolve the API base URL incl. the version prefix (e.g. `() => "https://host/v7"`). */
|
|
9
9
|
getBaseUrl: () => string;
|
|
10
10
|
/** Resolve the current access token, or undefined when signed out. */
|
|
11
11
|
getAccessToken: () => string | undefined;
|
|
@@ -28,7 +28,7 @@ export interface SecureChatRestConfig {
|
|
|
28
28
|
* ```typescript
|
|
29
29
|
* const rest = new SecureChatRestClient({
|
|
30
30
|
* projectId,
|
|
31
|
-
* getBaseUrl: () =>
|
|
31
|
+
* getBaseUrl: () => "https://host/v7",
|
|
32
32
|
* getAccessToken: () => session.accessToken,
|
|
33
33
|
* });
|
|
34
34
|
* const device = await rest.registerDevice(body);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Typed REST client for the secure-chat blind Delivery Service.
|
|
2
2
|
//
|
|
3
3
|
// Covers every endpoint in agora-server `docs/SECURE_CHAT.md` §9. Base URL and access token are
|
|
4
|
-
// resolved **lazily per request**
|
|
4
|
+
// resolved **lazily per request** via caller-supplied resolvers, so a token
|
|
5
5
|
// refresh or a late-set baseUrl always wins. All binary is base64 on the wire; this client never
|
|
6
6
|
// inspects payloads.
|
|
7
7
|
import axios from "axios";
|
|
@@ -22,7 +22,7 @@ import { createDebugLogger } from "../util/debug.js";
|
|
|
22
22
|
* ```typescript
|
|
23
23
|
* const rest = new SecureChatRestClient({
|
|
24
24
|
* projectId,
|
|
25
|
-
* getBaseUrl: () =>
|
|
25
|
+
* getBaseUrl: () => "https://host/v7",
|
|
26
26
|
* getAccessToken: () => session.accessToken,
|
|
27
27
|
* });
|
|
28
28
|
* const device = await rest.registerDevice(body);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../src/transport/rest.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,gGAAgG;AAChG,
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../src/transport/rest.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,gGAAgG;AAChG,4EAA4E;AAC5E,iGAAiG;AACjG,qBAAqB;AAErB,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAgCrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,oBAAoB;IAI/B,YAA6B,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;QAFxC,QAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAG/C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACpD,GAAG,CAAC,OAAO,GAAG,GAAG,IAAI,IAAI,MAAM,CAAC,SAAS,cAAc,CAAC;YACxD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;YACtC,IAAI,KAAK;gBAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;YAC/D,4FAA4F;YAC5F,8FAA8F;YAC9F,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACjC,CAAC,GAAG,EAAE,EAAE;YACN,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,IAAI,KAAK,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO,GAAG,CAAC;QACb,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,6FAA6F;YAC7F,0FAA0F;YAC1F,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;gBACxE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,eAAe,IAAI,KAAK,EAAE,EAAE;oBACtE,IAAI,EAAG,GAAG,CAAC,QAAQ,EAAE,IAA0B,EAAE,IAAI;oBACrD,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CACF,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,IAAwB;QAC3C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAoB,UAAU,EAAE,IAAI,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgC,UAAU,EAAE;YAC9E,MAAM,EAAE,EAAE,MAAM,EAAE;SACnB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,kBAAkB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;YACnF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IACE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC;gBACvB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG;gBAC3B,GAAG,CAAC,QAAQ,CAAC,IAAsC,EAAE,IAAI,KAAK,8BAA8B,EAC7F,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF;;;;;;;OAOG;IACH,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,IAA4B;QACrE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,YAAY,kBAAkB,CAAC,QAAQ,CAAC,eAAe,EACvD,IAAI,CACL,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,8FAA8F;IAC9F,KAAK,CAAC,eAAe,CAAC,QAAgB;QACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,YAAY,kBAAkB,CAAC,QAAQ,CAAC,qBAAqB,CAC9D,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,YAAY,kBAAkB,CAAC,cAAc,CAAC,qBAAqB,CACpE,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gFAAgF;IAChF;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAkC;QACzD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAA0B,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAGvB;QACC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAGjC,gBAAgB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,cAAsB;QAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,kBAAkB,kBAAkB,CAAC,cAAc,CAAC,EAAE,CACvD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,QAAQ,CAAC,cAAsB;QACnC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;IAED,kFAAkF;IAClF;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CACb,cAAsB,EACtB,IAAyB;QAEzB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,kBAAkB,kBAAkB,CAAC,cAAc,CAAC,UAAU,EAC9D,IAAI,CACL,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mGAAmG;IACnG,KAAK,CAAC,YAAY,CAChB,cAAsB,EACtB,MAAc,EACd,IAA4B;QAE5B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CACrC,kBAAkB,kBAAkB,CAAC,cAAc,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAC5F,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,iFAAiF;IACjF;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CACf,cAAsB,EACtB,IAA2B;QAE3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CACnC,kBAAkB,kBAAkB,CAAC,cAAc,CAAC,WAAW,EAC/D,IAAI,CACL,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAChB,cAAsB,EACtB,MAA4C;QAE5C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,kBAAkB,kBAAkB,CAAC,cAAc,CAAC,WAAW,EAC/D,EAAE,MAAM,EAAE,CACX,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kFAAkF;IAClF;;;OAGG;IACH,KAAK,CAAC,eAAe,CACnB,QAAgB,EAChB,MAA2C;QAE3C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,YAAY,kBAAkB,CAAC,QAAQ,CAAC,aAAa,EACrD,EAAE,MAAM,EAAE,CACX,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CAAC,IAAyB;QAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAClC,aAAa,EACb,IAAI,CACL,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACvC,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,YAAY,CAAC,QAAiB;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,aAAa,EAAE;gBACxE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;aAC5C,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACzE,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAA+B,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -50,7 +50,7 @@ export type SecureSocket = Socket<SecureServerEvents, SecureClientEvents>;
|
|
|
50
50
|
* (not captured once) so a refreshed token is used on the next (re)connect.
|
|
51
51
|
*/
|
|
52
52
|
export interface SecureChatSocketConfig {
|
|
53
|
-
/** Resolve the socket origin (e.g. `
|
|
53
|
+
/** Resolve the socket origin (the client strips any path; e.g. `() => "https://host/v7"`). */
|
|
54
54
|
getSocketUrl: () => string;
|
|
55
55
|
/** Resolve the current access token (sent in the socket `auth` handshake). */
|
|
56
56
|
getAccessToken: () => string | undefined;
|
|
@@ -23,7 +23,17 @@ export class SecureChatSocketClient {
|
|
|
23
23
|
* @returns The live socket; idempotent while already connected.
|
|
24
24
|
*/
|
|
25
25
|
connect() {
|
|
26
|
-
|
|
26
|
+
// Reuse an existing socket whether it's already connected OR still mid-handshake. Guarding on
|
|
27
|
+
// `.connected` (instead of existence) re-entered the io() + listener-wiring block on every
|
|
28
|
+
// connect() call made during the async connect window. socket.io multiplexes io(sameUrl) to ONE
|
|
29
|
+
// socket, so this didn't leak sockets — it stacked DUPLICATE lifecycle listeners
|
|
30
|
+
// (connect/disconnect/connect_error), N per mount, because every hook's .on()/joinConversation()
|
|
31
|
+
// calls connect() before the handshake settles. Each stacked listener is a console.debug, so the
|
|
32
|
+
// duplication shows up as N× "connecting /secure namespace" + N× "socket connected" and compounds
|
|
33
|
+
// the main thread's logging cost with DevTools open. Guard on existence so io() + listener wiring
|
|
34
|
+
// runs exactly once per socket lifetime; disconnect() nulls this.socket, so a later reconnect
|
|
35
|
+
// still builds a fresh one.
|
|
36
|
+
if (this.socket)
|
|
27
37
|
return this.socket;
|
|
28
38
|
// socket.io derives the NAMESPACE from the URL's path, so the origin handed to io() must be bare.
|
|
29
39
|
// getSocketUrl() returns the REST base (e.g. `http://host/v7`); `io(`${base}/secure`)` would
|
|
@@ -33,6 +43,12 @@ export class SecureChatSocketClient {
|
|
|
33
43
|
const origin = new URL(this.config.getSocketUrl()).origin;
|
|
34
44
|
log.debug("connecting /secure namespace", { origin, projectId: this.config.projectId });
|
|
35
45
|
this.socket = io(`${origin}/secure`, {
|
|
46
|
+
// The secure-chat DS runs its socket.io server on its OWN engine.io path "/secure-socket/"
|
|
47
|
+
// (NOT the default "/socket.io/"), so a path-routing reverse proxy can split secure realtime
|
|
48
|
+
// onto the standalone @agora/secure-chat process. Without this, the connection lands on the
|
|
49
|
+
// main API's "/socket.io/", which has no "/secure" namespace → endless connect_error. Must stay
|
|
50
|
+
// byte-identical to the server's `new Server(httpServer, { path: "/secure-socket/" })`.
|
|
51
|
+
path: "/secure-socket/",
|
|
36
52
|
auth: { token: this.config.getAccessToken() },
|
|
37
53
|
query: { projectId: this.config.projectId },
|
|
38
54
|
transports: ["websocket"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/transport/socket.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,EAAE;AACF,iGAAiG;AACjG,kGAAkG;AAClG,8FAA8F;AAC9F,kCAAkC;AAElC,OAAO,EAAE,EAAE,EAAU,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AA4CxC;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IAGjC,YAA6B,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;QAFnD,WAAM,GAAwB,IAAI,CAAC;IAEmB,CAAC;IAE/D;;;;OAIG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,MAAM
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/transport/socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The published version of `@agora-sdk/secure-chat-core` as a `major.minor.patch` string,
|
|
3
|
+
* re-exported by the platform packages (`@agora-sdk/secure-chat-react-js`, `…-react-native`,
|
|
4
|
+
* `…-expo`). Useful for diagnostics — e.g. logging which SDK build an app actually loaded when a
|
|
5
|
+
* stale bundle is suspected.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { VERSION } from "@agora-sdk/secure-chat-react-js";
|
|
10
|
+
* console.log(`secure-chat SDK ${VERSION}`);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare const VERSION = "0.7.0";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// GENERATED by scripts/write-version.mjs from this package's package.json — do not edit by hand.
|
|
2
|
+
// Re-run `pnpm run version:patch` / `version:minor` (which regenerate it) to change the version.
|
|
3
|
+
/**
|
|
4
|
+
* The published version of `@agora-sdk/secure-chat-core` as a `major.minor.patch` string,
|
|
5
|
+
* re-exported by the platform packages (`@agora-sdk/secure-chat-react-js`, `…-react-native`,
|
|
6
|
+
* `…-expo`). Useful for diagnostics — e.g. logging which SDK build an app actually loaded when a
|
|
7
|
+
* stale bundle is suspected.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { VERSION } from "@agora-sdk/secure-chat-react-js";
|
|
12
|
+
* console.log(`secure-chat SDK ${VERSION}`);
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export const VERSION = "0.7.0";
|
|
16
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,iGAAiG;AAEjG;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agora-sdk/secure-chat-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Agora SDK Plus, maintained by Jenova Marie",
|
|
@@ -38,10 +38,9 @@
|
|
|
38
38
|
"@agora-server/contract": "^0.9.3",
|
|
39
39
|
"axios": "^1.4.0",
|
|
40
40
|
"socket.io-client": "^4.8.1",
|
|
41
|
-
"@agora-sdk/secure-chat-crypto": "0.
|
|
41
|
+
"@agora-sdk/secure-chat-crypto": "0.7.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
-
"@agora-sdk/core": "^1.2.2",
|
|
45
44
|
"react": "^18.0.0 || ^19.0.0"
|
|
46
45
|
},
|
|
47
46
|
"scripts": {
|