salt-agent-sdk 0.22.0 → 0.23.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 +80 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +71 -1
- package/dist/client.js.map +1 -1
- package/dist/crypto.d.ts +18 -4
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +34 -11
- package/dist/crypto.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/keyReset.d.ts +117 -0
- package/dist/keyReset.d.ts.map +1 -0
- package/dist/keyReset.js +267 -0
- package/dist/keyReset.js.map +1 -0
- package/dist/webhook.d.ts +21 -1
- package/dist/webhook.d.ts.map +1 -1
- package/dist/webhook.js +67 -16
- package/dist/webhook.js.map +1 -1
- package/package.json +1 -1
package/dist/keyReset.js
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.AUTH_ITERATIONS = void 0;
|
|
37
|
+
exports.authString = authString;
|
|
38
|
+
exports.buildChatKeyReset = buildChatKeyReset;
|
|
39
|
+
// Reset your chat key -- the agent path (KEY_RESET_DESIGN.md sections 4 and 10). Everything a person's browser does
|
|
40
|
+
// when they tap "Reset your chat key", for a caller that holds the owner's login password (and, for a separate lock,
|
|
41
|
+
// the lock password): an owner's explicit grant, never a bare token. The server never sees any key in the clear.
|
|
42
|
+
//
|
|
43
|
+
// 1. open the current messages DEK from the vault (the password wrap), then the active key and every retired
|
|
44
|
+
// generation under it;
|
|
45
|
+
// 2. mint a NEW messages DEK -- never wrap the new key under the old DEK (section 4.1) -- and a new vault row:
|
|
46
|
+
// password + recovery wraps of the new DEK, the wallets wraps carried over (their recovery wrap is re-made for
|
|
47
|
+
// the new phrase), a new recovery phrase, `phrase_ciphertext` under the new DEK;
|
|
48
|
+
// 3. mint the new keypair; wrap it, and every older generation, under the new DEK;
|
|
49
|
+
// 4. rewrap the owner's vault-scheme agent keys under the new DEK (fingerprint-checked);
|
|
50
|
+
// 5. re-seal the whole keyring (v2 payload) to every linked device that stays, signed by BOTH the new key and the
|
|
51
|
+
// generation that device already holds, so a device refuses a key Salt planted.
|
|
52
|
+
//
|
|
53
|
+
// `buildChatKeyReset` is the pure builder (no network); `client.resetChatKey` fetches, calls it and POSTs. Guardian
|
|
54
|
+
// (social) wraps of the old messages DEK cannot be remade here: they are dropped and each guardian is asked to
|
|
55
|
+
// re-share (design section 5, Phase 3).
|
|
56
|
+
const node_crypto_1 = require("node:crypto");
|
|
57
|
+
const openpgp = __importStar(require("openpgp"));
|
|
58
|
+
const ethers_1 = require("ethers");
|
|
59
|
+
const crypto_js_1 = require("./crypto.js");
|
|
60
|
+
const subtle = node_crypto_1.webcrypto.subtle;
|
|
61
|
+
const te = new TextEncoder();
|
|
62
|
+
const td = new TextDecoder();
|
|
63
|
+
// A label, not a hostname: every account's login string was derived under it (salt-fe passwordDerivation.js).
|
|
64
|
+
const AUTH_SALT = "saltfor.com/auth/v1";
|
|
65
|
+
exports.AUTH_ITERATIONS = 600000;
|
|
66
|
+
const GCM_TAG_BITS = 128;
|
|
67
|
+
const IV_BYTES = 12;
|
|
68
|
+
const b64 = (bytes) => Buffer.from(bytes).toString("base64");
|
|
69
|
+
const unb64 = (s) => Buffer.from(s, "base64");
|
|
70
|
+
/** What Devise receives as "the password": base64 of PBKDF2-HMAC-SHA256(NFKC(password), "saltfor.com/auth/v1", 600000, 256 bits). */
|
|
71
|
+
async function authString(password, iterations = exports.AUTH_ITERATIONS) {
|
|
72
|
+
const material = await subtle.importKey("raw", te.encode(password.normalize("NFKC")), "PBKDF2", false, ["deriveBits"]);
|
|
73
|
+
const bits = await subtle.deriveBits({ name: "PBKDF2", hash: "SHA-256", salt: te.encode(AUTH_SALT), iterations }, material, 256);
|
|
74
|
+
return b64(new Uint8Array(bits));
|
|
75
|
+
}
|
|
76
|
+
async function deriveKek(secret, saltB64, iterations, form) {
|
|
77
|
+
const material = await subtle.importKey("raw", te.encode(secret.normalize(form)), "PBKDF2", false, ["deriveKey"]);
|
|
78
|
+
return subtle.deriveKey({ name: "PBKDF2", hash: "SHA-256", salt: unb64(saltB64), iterations }, material, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]);
|
|
79
|
+
}
|
|
80
|
+
async function gcmEncrypt(key, plain, aad) {
|
|
81
|
+
const iv = (0, node_crypto_1.randomBytes)(IV_BYTES);
|
|
82
|
+
const ct = new Uint8Array(await subtle.encrypt({ name: "AES-GCM", iv, additionalData: te.encode(aad), tagLength: GCM_TAG_BITS }, key, plain));
|
|
83
|
+
return b64(Buffer.concat([iv, ct]));
|
|
84
|
+
}
|
|
85
|
+
async function gcmDecrypt(key, blob, aad) {
|
|
86
|
+
const data = unb64(blob);
|
|
87
|
+
return new Uint8Array(await subtle.decrypt({ name: "AES-GCM", iv: data.subarray(0, IV_BYTES), additionalData: te.encode(aad), tagLength: GCM_TAG_BITS }, key, data.subarray(IV_BYTES)));
|
|
88
|
+
}
|
|
89
|
+
const importDek = (raw) => subtle.importKey("raw", raw, { name: "AES-GCM", length: 256 }, false, ["encrypt", "decrypt"]);
|
|
90
|
+
// GCM's AAD check is byte-exact and the fingerprint's case has varied: as served, then both cases.
|
|
91
|
+
const aadCandidates = (prefix, fingerprint) => [...new Set([fingerprint, fingerprint.toLowerCase(), fingerprint.toUpperCase()])].map((f) => `${prefix}:${f}`);
|
|
92
|
+
const gcmDecryptAny = gcmDecrypt;
|
|
93
|
+
async function openWithAad(dek, blob, prefix, fingerprint) {
|
|
94
|
+
let last = new Error("could not open");
|
|
95
|
+
for (const aad of aadCandidates(prefix, fingerprint)) {
|
|
96
|
+
try {
|
|
97
|
+
return JSON.parse(td.decode(await gcmDecrypt(dek, blob, aad)));
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
last = e;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
throw last;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Is `device.public_key` the key the owner approved? The certification is checked against public keys derived from the
|
|
107
|
+
* caller's LOCAL keyring -- never a server-served public key, which is the thing being defended against -- and must name
|
|
108
|
+
* this user, this kind and this key's fingerprint.
|
|
109
|
+
*/
|
|
110
|
+
async function deviceCertified(device, userId, ownerPrivateKeys) {
|
|
111
|
+
if (!device.key_certification)
|
|
112
|
+
return false;
|
|
113
|
+
try {
|
|
114
|
+
const verificationKeys = await Promise.all(ownerPrivateKeys.map(async (armoredKey) => (await openpgp.readPrivateKey({ armoredKey })).toPublic()));
|
|
115
|
+
const { data, signatures } = await openpgp.verify({ message: await openpgp.readMessage({ armoredMessage: device.key_certification }), verificationKeys });
|
|
116
|
+
let signed = false;
|
|
117
|
+
for (const sig of signatures) {
|
|
118
|
+
try {
|
|
119
|
+
if (await sig.verified)
|
|
120
|
+
signed = true;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// a bad signature does not count
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (!signed)
|
|
127
|
+
return false;
|
|
128
|
+
const cert = JSON.parse(String(data));
|
|
129
|
+
const actual = (await (0, crypto_js_1.fingerprintOf)(device.public_key)).toLowerCase();
|
|
130
|
+
return cert.v === 1 && String(cert.user_id) === String(userId) && cert.kind === device.kind && String(cert.device_fingerprint).toLowerCase() === actual;
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/** Builds the whole reset request. Pure apart from randomness and PBKDF2; touches no network. */
|
|
137
|
+
async function buildChatKeyReset(input) {
|
|
138
|
+
const { userKeys, vault } = input;
|
|
139
|
+
const iterations = vault.kdf_iterations;
|
|
140
|
+
const lockSecret = vault.lock_mode === "separate" ? input.vaultPassword : input.password;
|
|
141
|
+
if (!lockSecret)
|
|
142
|
+
throw new Error("This account uses a separate lock password: pass vaultPassword.");
|
|
143
|
+
// 1. The current messages (and wallets) DEK, from the password wrap.
|
|
144
|
+
const kekPw = await deriveKek(lockSecret, vault.salt_password, iterations, "NFKC");
|
|
145
|
+
const messagesWrap = vault.wrapped_deks?.messages?.password;
|
|
146
|
+
if (!messagesWrap)
|
|
147
|
+
throw new Error("This account has no messages wrap in its vault.");
|
|
148
|
+
const oldDekRaw = await gcmDecrypt(kekPw, messagesWrap, "wrap:messages:password");
|
|
149
|
+
const oldDek = await importDek(oldDekRaw);
|
|
150
|
+
oldDekRaw.fill(0);
|
|
151
|
+
let walletsDekRaw = null;
|
|
152
|
+
if (vault.wrapped_deks?.wallets?.password)
|
|
153
|
+
walletsDekRaw = await gcmDecrypt(kekPw, vault.wrapped_deks.wallets.password, "wrap:wallets:password");
|
|
154
|
+
// 2. Every generation we can open (active first, then retired); an unopenable one is skipped, never fatal.
|
|
155
|
+
const activeGeneration = input.expectedGeneration ?? userKeys.generation ?? 1;
|
|
156
|
+
if (!userKeys.encrypted_private_key)
|
|
157
|
+
throw new Error("This account's chat key is not vault-held; there is nothing to reset here.");
|
|
158
|
+
const active = await openWithAad(oldDek, userKeys.encrypted_private_key, "userkey", userKeys.public_fingerprint);
|
|
159
|
+
const generations = [{ generation: activeGeneration, fingerprint: userKeys.public_fingerprint.toUpperCase(), armored: String(active.private_key) }];
|
|
160
|
+
const skippedGenerations = [];
|
|
161
|
+
for (const row of userKeys.retired ?? []) {
|
|
162
|
+
try {
|
|
163
|
+
if (!row.encrypted_private_key)
|
|
164
|
+
throw new Error("no wrap");
|
|
165
|
+
const opened = await openWithAad(oldDek, row.encrypted_private_key, "userkey", row.public_fingerprint);
|
|
166
|
+
generations.push({ generation: Number(row.generation), fingerprint: row.public_fingerprint.toUpperCase(), armored: String(opened.private_key) });
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
skippedGenerations.push(Number(row.generation));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// 3. New keys, new DEK, new vault row.
|
|
173
|
+
const generated = await openpgp.generateKey({ type: "ecc", curve: "curve25519", userIDs: [{}], format: "armored" });
|
|
174
|
+
const newFingerprint = await (0, crypto_js_1.fingerprintOf)(generated.publicKey);
|
|
175
|
+
const newGeneration = activeGeneration + 1;
|
|
176
|
+
const newDekRaw = new Uint8Array((0, node_crypto_1.randomBytes)(32));
|
|
177
|
+
const newDek = await importDek(newDekRaw);
|
|
178
|
+
const recoveryPhrase = ethers_1.Mnemonic.entropyToPhrase((0, node_crypto_1.randomBytes)(16)); // 12 words
|
|
179
|
+
const saltRecovery = b64((0, node_crypto_1.randomBytes)(16));
|
|
180
|
+
const kekRec = await deriveKek(recoveryPhrase.trim().toLowerCase(), saltRecovery, iterations, "NFKD");
|
|
181
|
+
const wrapped_deks = {};
|
|
182
|
+
wrapped_deks.messages = {
|
|
183
|
+
password: await gcmEncrypt(kekPw, newDekRaw, "wrap:messages:password"),
|
|
184
|
+
recovery: await gcmEncrypt(kekRec, newDekRaw, "wrap:messages:recovery"),
|
|
185
|
+
};
|
|
186
|
+
if (walletsDekRaw) {
|
|
187
|
+
// Same wallets DEK; only its recovery wrap follows the new phrase. Password and guardian wraps carry over untouched.
|
|
188
|
+
wrapped_deks.wallets = { ...vault.wrapped_deks.wallets, recovery: await gcmEncrypt(kekRec, walletsDekRaw, "wrap:wallets:recovery") };
|
|
189
|
+
walletsDekRaw.fill(0);
|
|
190
|
+
}
|
|
191
|
+
else if (vault.wrapped_deks?.wallets) {
|
|
192
|
+
throw new Error("The vault's wallets password wrap is missing; refusing to drop the wallets key.");
|
|
193
|
+
}
|
|
194
|
+
newDekRaw.fill(0);
|
|
195
|
+
const phrase_ciphertext = await gcmEncrypt(newDek, te.encode(JSON.stringify(recoveryPhrase)), "recovery-phrase");
|
|
196
|
+
const wrapKey = (g, fingerprint) => gcmEncrypt(newDek, te.encode(JSON.stringify({ private_key: g.armored })), `userkey:${fingerprint}`);
|
|
197
|
+
const encrypted_private_key = await wrapKey({ armored: generated.privateKey }, newFingerprint);
|
|
198
|
+
const retired_rewraps = [];
|
|
199
|
+
for (const g of generations)
|
|
200
|
+
retired_rewraps.push({ generation: g.generation, encrypted_private_key: await wrapKey(g, g.fingerprint) });
|
|
201
|
+
// 4. The owner's vault-scheme agent keys move to the new DEK; each must still be the key its fingerprint names.
|
|
202
|
+
const agent_rewraps = [];
|
|
203
|
+
for (const a of input.agentKeys ?? []) {
|
|
204
|
+
const opened = await openWithAad(oldDek, a.encrypted_private_key, "agentkey", a.public_fingerprint);
|
|
205
|
+
const fpr = (await openpgp.readPrivateKey({ armoredKey: String(opened.private_key) })).getFingerprint().toUpperCase();
|
|
206
|
+
if (fpr !== a.public_fingerprint.toUpperCase())
|
|
207
|
+
throw new Error(`agent ${a.agent_id}: the stored key is not the one its fingerprint names; refusing to rewrap.`);
|
|
208
|
+
const aad = `agentkey:${a.public_fingerprint.toUpperCase()}`;
|
|
209
|
+
agent_rewraps.push({ agent_id: a.agent_id, fingerprint: a.public_fingerprint.toUpperCase(), encrypted_private_key: await gcmEncrypt(newDek, te.encode(JSON.stringify({ private_key: opened.private_key, revocation_cert: opened.revocation_cert ?? null })), aad) });
|
|
210
|
+
}
|
|
211
|
+
// 4b. Hidden identity sections are sealed under the same messages DEK (salt-fe identityValues.js: AAD `identity:<key>`).
|
|
212
|
+
const identity_rewraps = [];
|
|
213
|
+
for (const sec of input.identitySections ?? []) {
|
|
214
|
+
const value = td.decode(await gcmDecryptAny(oldDek, sec.ciphertext, `identity:${sec.key}`));
|
|
215
|
+
identity_rewraps.push({ key: sec.key, ciphertext: await gcmEncrypt(newDek, te.encode(value), `identity:${sec.key}`) });
|
|
216
|
+
}
|
|
217
|
+
// 5. Re-seal the keyring to every device that stays: v2, signed by the new key AND the generation the device holds.
|
|
218
|
+
const keyring = [
|
|
219
|
+
{ private_key: generated.privateKey, fingerprint: newFingerprint, generation: newGeneration, active: true },
|
|
220
|
+
...generations.map((g) => ({ private_key: g.armored, fingerprint: g.fingerprint, generation: g.generation, active: false })),
|
|
221
|
+
];
|
|
222
|
+
const newSigner = await openpgp.readPrivateKey({ armoredKey: generated.privateKey });
|
|
223
|
+
const reseals = [];
|
|
224
|
+
const notResealed = [];
|
|
225
|
+
const uncertified = [];
|
|
226
|
+
const ownerPrivateKeys = generations.map((g) => g.armored);
|
|
227
|
+
for (const device of input.linkedDevices.filter((d) => input.keepDeviceIds.includes(d.id))) {
|
|
228
|
+
if (!(await deviceCertified(device, input.userId, ownerPrivateKeys))) {
|
|
229
|
+
uncertified.push(device.id);
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
const heldGeneration = device.sealed_key_generation ?? activeGeneration;
|
|
233
|
+
const held = generations.find((g) => g.generation === heldGeneration);
|
|
234
|
+
if (!held) {
|
|
235
|
+
notResealed.push(device.id);
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
const sealed = (await openpgp.encrypt({
|
|
239
|
+
message: await openpgp.createMessage({ text: JSON.stringify({ v: 2, user_id: input.userId, keys: keyring }) }),
|
|
240
|
+
encryptionKeys: await openpgp.readKey({ armoredKey: device.public_key }),
|
|
241
|
+
signingKeys: [newSigner, await openpgp.readPrivateKey({ armoredKey: held.armored })],
|
|
242
|
+
}));
|
|
243
|
+
reseals.push({ linked_device_id: device.id, sealed_key: sealed });
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
recoveryPhrase,
|
|
247
|
+
newGeneration,
|
|
248
|
+
newFingerprint,
|
|
249
|
+
skippedGenerations,
|
|
250
|
+
notResealed,
|
|
251
|
+
uncertified,
|
|
252
|
+
request: {
|
|
253
|
+
public_key: generated.publicKey,
|
|
254
|
+
encrypted_private_key,
|
|
255
|
+
retired_rewraps,
|
|
256
|
+
vault: { salt_password: vault.salt_password, salt_recovery: saltRecovery, kdf_iterations: iterations, kdf_algo: vault.kdf_algo ?? "PBKDF2-SHA256", lock_mode: vault.lock_mode ?? "login", phrase_ciphertext, wrapped_deks },
|
|
257
|
+
identity_rewraps,
|
|
258
|
+
agent_rewraps,
|
|
259
|
+
expected_generation: activeGeneration,
|
|
260
|
+
expected_vault_version: input.expectedVaultVersion ?? vault.version,
|
|
261
|
+
current_password: await authString(input.password, input.authIterations),
|
|
262
|
+
linked_set: input.linkedDevices.map((d) => d.id),
|
|
263
|
+
reseals,
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=keyReset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyReset.js","sourceRoot":"","sources":["../src/keyReset.ts"],"names":[],"mappings":"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"}
|
package/dist/webhook.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Express } from "express";
|
|
2
2
|
import type { AskOptions, AskResult } from "./ask.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type AskForHelpParams, type Mandate, type MandateExercise, type ReactionSummary, type SaltClient } from "./client";
|
|
4
4
|
import type { HelpRequest } from "./help.js";
|
|
5
5
|
import * as identityShare from "./identityShare.js";
|
|
6
6
|
import type { IdentityAskHandler, IdentitySharedHandler } from "./identityShare.js";
|
|
@@ -433,6 +433,24 @@ export interface MandatePausedContext {
|
|
|
433
433
|
identity: AgentIdentity;
|
|
434
434
|
mandate: Mandate;
|
|
435
435
|
}
|
|
436
|
+
/**
|
|
437
|
+
* The owner of a chat key you may be writing to reset it (`member_key_changed`): everyone who shares a chat with that
|
|
438
|
+
* person, and their agents, hear it. The SDK holds NO cache of recipient keys -- every `reply()`, attachment and action
|
|
439
|
+
* resolves the chat's members fresh at send time -- so there is nothing here to invalidate for the SDK itself; this is
|
|
440
|
+
* for a cache of your own (a map of user id to public key, a stored "recipients" list). Drop the entry for `userId`, or
|
|
441
|
+
* compare `publicFingerprint` with what you hold, and fetch `client.getChatMembers` again before the next send.
|
|
442
|
+
*/
|
|
443
|
+
export interface MemberKeyChangedContext {
|
|
444
|
+
identity: AgentIdentity;
|
|
445
|
+
/** The member whose chat key changed. */
|
|
446
|
+
userId: SaltId;
|
|
447
|
+
/** Their new key generation (1 is the first key ever). */
|
|
448
|
+
keyGeneration: number;
|
|
449
|
+
/** The fingerprint of their new active key: what the server expects you to have encrypted to. */
|
|
450
|
+
publicFingerprint: string;
|
|
451
|
+
/** The raw event body. */
|
|
452
|
+
body: Record<string, unknown>;
|
|
453
|
+
}
|
|
436
454
|
export interface MandateRevokedContext {
|
|
437
455
|
identity: AgentIdentity;
|
|
438
456
|
mandate: Mandate;
|
|
@@ -629,6 +647,8 @@ export interface WebhookServerOptions {
|
|
|
629
647
|
onAppAction?: (ctx: AppActionContext) => Promise<void> | void;
|
|
630
648
|
onInvoicePaid?: (ctx: InvoicePaidContext) => Promise<void> | void;
|
|
631
649
|
onChatOpened?: (ctx: ChatOpenedContext) => Promise<void> | void;
|
|
650
|
+
/** A member of a chat you share reset their chat key (`member_key_changed`). See MemberKeyChangedContext. */
|
|
651
|
+
onMemberKeyChanged?: (ctx: MemberKeyChangedContext) => Promise<void> | void;
|
|
632
652
|
onHandoffConfirmed?: (ctx: HandoffConfirmedContext) => Promise<void> | void;
|
|
633
653
|
onHandoffReceived?: (ctx: HandoffReceivedContext) => Promise<void> | void;
|
|
634
654
|
/** A mandate was offered to this identity and is waiting to be accepted. See
|
package/dist/webhook.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../src/webhook.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../src/webhook.ts"],"names":[],"mappings":"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"}
|
package/dist/webhook.js
CHANGED
|
@@ -56,6 +56,7 @@ exports.createWebhookServer = createWebhookServer;
|
|
|
56
56
|
const node_crypto_1 = require("node:crypto");
|
|
57
57
|
const express_1 = __importDefault(require("express"));
|
|
58
58
|
const asks = __importStar(require("./ask.js"));
|
|
59
|
+
const client_1 = require("./client");
|
|
59
60
|
const pgp = __importStar(require("./crypto"));
|
|
60
61
|
const delegations = __importStar(require("./delegations"));
|
|
61
62
|
const identityShare = __importStar(require("./identityShare.js"));
|
|
@@ -96,6 +97,13 @@ function isTextLikeAttachment(contentType) {
|
|
|
96
97
|
return true;
|
|
97
98
|
return ["application/json", "application/csv", "application/markdown"].includes(contentType);
|
|
98
99
|
}
|
|
100
|
+
/** The members a 409 `stale_recipient_keys` refusal names (`members:[{id, public_key, public_fingerprint}]`), or null for any other error. */
|
|
101
|
+
function staleRecipientMembers(err) {
|
|
102
|
+
if (!(err instanceof client_1.SaltApiError) || err.status !== 409 || err.code !== "stale_recipient_keys")
|
|
103
|
+
return null;
|
|
104
|
+
const members = err.body?.members;
|
|
105
|
+
return Array.isArray(members) ? members : null;
|
|
106
|
+
}
|
|
99
107
|
// --- Device moments --------------------------------------------------------
|
|
100
108
|
//
|
|
101
109
|
// Two agent-rail deliveries (kind `device_session`) tell an agent that the
|
|
@@ -616,16 +624,23 @@ function createDispatcher(options) {
|
|
|
616
624
|
const replyTo = opts && Object.prototype.hasOwnProperty.call(opts, "replyTo") ? opts.replyTo ?? undefined : defaultReplyTo;
|
|
617
625
|
const startedAt = Date.now();
|
|
618
626
|
let recipientKeys;
|
|
627
|
+
let recipientFingerprints;
|
|
619
628
|
let memberCount = 0;
|
|
629
|
+
// Keys are resolved from the chat's members at send time, every time (never cached).
|
|
630
|
+
const keysOf = (members) => {
|
|
631
|
+
// Everyone but ourselves. parseInt made both sides NaN, and
|
|
632
|
+
// `NaN !== NaN` is true, so the sender's own key was left in the
|
|
633
|
+
// recipient list rather than filtered out of it.
|
|
634
|
+
const others = members.filter((u) => !(0, ids_js_1.sameId)(u.id, identity.saltAppId) && u.public_key);
|
|
635
|
+
const prints = Object.fromEntries(others.filter((u) => u.public_fingerprint).map((u) => [String(u.id), String(u.public_fingerprint).toUpperCase()]));
|
|
636
|
+
return { keys: others.map((u) => u.public_key), prints: Object.keys(prints).length === others.length && others.length > 0 ? prints : undefined };
|
|
637
|
+
};
|
|
620
638
|
try {
|
|
621
639
|
const members = await client.getChatMembers(identity.apiKey, chatId);
|
|
622
640
|
memberCount = members.length;
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
// recipient list rather than filtered out of it.
|
|
627
|
-
.filter((u) => !(0, ids_js_1.sameId)(u.id, identity.saltAppId) && u.public_key)
|
|
628
|
-
.map((u) => u.public_key);
|
|
641
|
+
const resolved = keysOf(members);
|
|
642
|
+
recipientKeys = resolved.keys;
|
|
643
|
+
recipientFingerprints = resolved.prints;
|
|
629
644
|
}
|
|
630
645
|
catch (err) {
|
|
631
646
|
logger.error(`[chat ${chatId}] fetching members failed: ${err.message}`);
|
|
@@ -651,20 +666,31 @@ function createDispatcher(options) {
|
|
|
651
666
|
// The ids, not the text: Salt only ever sees ciphertext, so an "@handle"
|
|
652
667
|
// in the body is invisible to it and notifies nobody by itself.
|
|
653
668
|
const mentions = explicitMentions ?? (addressHandle ? [addressee.id] : undefined);
|
|
654
|
-
let encryptedMessage, senderMessage;
|
|
655
|
-
try {
|
|
656
|
-
encryptedMessage = await pgp.encryptFor(outgoing, recipientKeys);
|
|
657
|
-
senderMessage = await pgp.encryptFor(outgoing, [identity.publicKey]);
|
|
658
|
-
}
|
|
659
|
-
catch (err) {
|
|
660
|
-
logger.error(`[chat ${chatId}] encryption failed: ${err.message}`);
|
|
661
|
-
return;
|
|
662
|
-
}
|
|
663
669
|
const trail = delegations.drainTrail(identity.saltAppId, chatId);
|
|
664
|
-
|
|
670
|
+
// Encrypt and post. On a 409 `stale_recipient_keys` (a member reset their chat key since the members were read)
|
|
671
|
+
// the refusal carries the current members: encrypt again to those and send once more.
|
|
672
|
+
const encryptAndPost = async (keys, prints) => {
|
|
673
|
+
const encryptedMessage = await pgp.encryptFor(outgoing, keys);
|
|
674
|
+
const senderMessage = await pgp.encryptFor(outgoing, [identity.publicKey]);
|
|
665
675
|
await client.postMessage(identity.apiKey, chatId, encryptedMessage, senderMessage, trail, mentions, {
|
|
666
676
|
replyTo,
|
|
677
|
+
recipientFingerprints: prints,
|
|
678
|
+
senderFingerprint: prints ? await pgp.fingerprintOf(identity.publicKey) : undefined,
|
|
667
679
|
});
|
|
680
|
+
};
|
|
681
|
+
try {
|
|
682
|
+
try {
|
|
683
|
+
await encryptAndPost(recipientKeys, recipientFingerprints);
|
|
684
|
+
}
|
|
685
|
+
catch (err) {
|
|
686
|
+
const stale = staleRecipientMembers(err);
|
|
687
|
+
if (!stale)
|
|
688
|
+
throw err;
|
|
689
|
+
const fresh = keysOf(stale);
|
|
690
|
+
if (fresh.keys.length === 0)
|
|
691
|
+
throw err;
|
|
692
|
+
await encryptAndPost(fresh.keys, fresh.prints);
|
|
693
|
+
}
|
|
668
694
|
}
|
|
669
695
|
catch (err) {
|
|
670
696
|
logger.error(`[chat ${chatId}] posting reply failed: ${err.message}`);
|
|
@@ -1311,6 +1337,29 @@ function createDispatcher(options) {
|
|
|
1311
1337
|
logger.error(`[chat ${chatId}] onChatOpened failed: ${err.message}`);
|
|
1312
1338
|
}
|
|
1313
1339
|
}
|
|
1340
|
+
async function handleMemberKeyChanged(body, headerAgentId) {
|
|
1341
|
+
if (!options.onMemberKeyChanged)
|
|
1342
|
+
return;
|
|
1343
|
+
const all = identities.all();
|
|
1344
|
+
const identity = (headerAgentId != null ? identities.get(String(headerAgentId)) : undefined) ?? (all.length === 1 ? all[0] : undefined);
|
|
1345
|
+
if (!identity)
|
|
1346
|
+
return;
|
|
1347
|
+
const userId = body.user_id;
|
|
1348
|
+
if (userId === undefined || userId === null)
|
|
1349
|
+
return;
|
|
1350
|
+
try {
|
|
1351
|
+
await options.onMemberKeyChanged({
|
|
1352
|
+
identity,
|
|
1353
|
+
userId,
|
|
1354
|
+
keyGeneration: Number(body.key_generation),
|
|
1355
|
+
publicFingerprint: String(body.public_fingerprint ?? ""),
|
|
1356
|
+
body,
|
|
1357
|
+
});
|
|
1358
|
+
}
|
|
1359
|
+
catch (err) {
|
|
1360
|
+
logger.error(`[user ${userId}] onMemberKeyChanged failed: ${err.message}`);
|
|
1361
|
+
}
|
|
1362
|
+
}
|
|
1314
1363
|
async function handleHandoffConfirmed(body) {
|
|
1315
1364
|
const identity = identities.get(String(body.from_agent_id));
|
|
1316
1365
|
if (!identity || !options.onHandoffConfirmed)
|
|
@@ -1729,6 +1778,8 @@ function createDispatcher(options) {
|
|
|
1729
1778
|
return handleInvoicePaid(body);
|
|
1730
1779
|
if (body?.type === "chat_opened")
|
|
1731
1780
|
return handleChatOpened(body);
|
|
1781
|
+
if (body?.type === "member_key_changed")
|
|
1782
|
+
return handleMemberKeyChanged(body, headerAgentId);
|
|
1732
1783
|
if (body?.type === "handoff_confirmed")
|
|
1733
1784
|
return handleHandoffConfirmed(body);
|
|
1734
1785
|
if (body?.type === "handoff_received")
|