salt-agent-sdk 0.22.0 → 0.24.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 +163 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +116 -4
- 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 +44 -1
- package/dist/webhook.d.ts.map +1 -1
- package/dist/webhook.js +99 -18
- package/dist/webhook.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { SaltId } from "./ids.js";
|
|
2
|
+
export declare const AUTH_ITERATIONS = 600000;
|
|
3
|
+
/** What Devise receives as "the password": base64 of PBKDF2-HMAC-SHA256(NFKC(password), "saltfor.com/auth/v1", 600000, 256 bits). */
|
|
4
|
+
export declare function authString(password: string, iterations?: number): Promise<string>;
|
|
5
|
+
/** A key row as `GET /api/v1/userkeys` serves it (the active row at the top level, older generations under `retired`). */
|
|
6
|
+
export interface KeyRow {
|
|
7
|
+
generation?: number;
|
|
8
|
+
public_key?: string;
|
|
9
|
+
public_fingerprint: string;
|
|
10
|
+
encrypted_private_key?: string;
|
|
11
|
+
retired_at?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface UserKeysResponse extends KeyRow {
|
|
14
|
+
retired?: KeyRow[];
|
|
15
|
+
}
|
|
16
|
+
/** `GET /api/v1/vault`. */
|
|
17
|
+
export interface VaultRow {
|
|
18
|
+
version: number;
|
|
19
|
+
salt_password: string;
|
|
20
|
+
salt_recovery: string;
|
|
21
|
+
kdf_iterations: number;
|
|
22
|
+
kdf_algo?: string;
|
|
23
|
+
lock_mode?: string;
|
|
24
|
+
phrase_ciphertext?: string;
|
|
25
|
+
wrapped_deks: Record<string, Record<string, string>>;
|
|
26
|
+
}
|
|
27
|
+
/** One row of `GET /api/v1/linked_devices`. */
|
|
28
|
+
export interface LinkedDeviceRow {
|
|
29
|
+
id: SaltId;
|
|
30
|
+
name?: string;
|
|
31
|
+
kind?: string;
|
|
32
|
+
public_key: string;
|
|
33
|
+
sealed_key_generation?: number | null;
|
|
34
|
+
/** Armored PGP signed message (data: canonical JSON {v:1,user_id,kind,device_fingerprint}) made by an owner key when the device was approved; null for a device linked before certification. */
|
|
35
|
+
key_certification?: string | null;
|
|
36
|
+
}
|
|
37
|
+
/** An agent key wrapped under the owner's messages DEK that must move to the new DEK. The dry run names the agent (`{id, handle, public_fingerprint}`); the wrapped key is read from `GET /api/v1/agents/:id/admin` (`userkeys.encrypted_private_key`), as the web does. */
|
|
38
|
+
export interface AgentKeyToRewrap {
|
|
39
|
+
agent_id: SaltId;
|
|
40
|
+
public_fingerprint: string;
|
|
41
|
+
encrypted_private_key: string;
|
|
42
|
+
}
|
|
43
|
+
/** A hidden identity section as `GET /api/v1/identity` serves it: its value is sealed under the messages DEK with AAD `identity:<key>`. */
|
|
44
|
+
export interface IdentitySectionCiphertext {
|
|
45
|
+
key: string;
|
|
46
|
+
ciphertext: string;
|
|
47
|
+
}
|
|
48
|
+
export interface BuildChatKeyResetInput {
|
|
49
|
+
userKeys: UserKeysResponse;
|
|
50
|
+
vault: VaultRow;
|
|
51
|
+
/** The owner's login password: the Devise gate (as an auth string) and, in lock mode "login", the vault's lock. */
|
|
52
|
+
password: string;
|
|
53
|
+
/** The separate lock password, when `vault.lock_mode` is "separate". */
|
|
54
|
+
vaultPassword?: string;
|
|
55
|
+
userId: SaltId;
|
|
56
|
+
/** Every device linked right now (`linked_set`). */
|
|
57
|
+
linkedDevices: LinkedDeviceRow[];
|
|
58
|
+
/** Ids of the devices that keep working (re-sealed). Every other linked device is unlinked by the server. */
|
|
59
|
+
keepDeviceIds: SaltId[];
|
|
60
|
+
agentKeys?: AgentKeyToRewrap[];
|
|
61
|
+
/** Every identity section holding ciphertext: re-encrypted under the new DEK (`identity_rewraps`). */
|
|
62
|
+
identitySections?: IdentitySectionCiphertext[];
|
|
63
|
+
expectedGeneration?: number;
|
|
64
|
+
expectedVaultVersion?: number;
|
|
65
|
+
/** Tests only: the real login string costs 600k PBKDF2 rounds. */
|
|
66
|
+
authIterations?: number;
|
|
67
|
+
}
|
|
68
|
+
export interface ChatKeyResetRequest {
|
|
69
|
+
public_key: string;
|
|
70
|
+
encrypted_private_key: string;
|
|
71
|
+
retired_rewraps: Array<{
|
|
72
|
+
generation: number;
|
|
73
|
+
encrypted_private_key: string;
|
|
74
|
+
}>;
|
|
75
|
+
vault: {
|
|
76
|
+
salt_password: string;
|
|
77
|
+
salt_recovery: string;
|
|
78
|
+
kdf_iterations: number;
|
|
79
|
+
kdf_algo: string;
|
|
80
|
+
lock_mode: string;
|
|
81
|
+
phrase_ciphertext: string;
|
|
82
|
+
wrapped_deks: Record<string, Record<string, string>>;
|
|
83
|
+
};
|
|
84
|
+
identity_rewraps: Array<{
|
|
85
|
+
key: string;
|
|
86
|
+
ciphertext: string;
|
|
87
|
+
}>;
|
|
88
|
+
agent_rewraps: Array<{
|
|
89
|
+
agent_id: SaltId;
|
|
90
|
+
encrypted_private_key: string;
|
|
91
|
+
fingerprint: string;
|
|
92
|
+
}>;
|
|
93
|
+
expected_generation: number;
|
|
94
|
+
expected_vault_version: number;
|
|
95
|
+
current_password: string;
|
|
96
|
+
linked_set: SaltId[];
|
|
97
|
+
reseals: Array<{
|
|
98
|
+
linked_device_id: SaltId;
|
|
99
|
+
sealed_key: string;
|
|
100
|
+
}>;
|
|
101
|
+
}
|
|
102
|
+
export interface BuiltChatKeyReset {
|
|
103
|
+
request: ChatKeyResetRequest;
|
|
104
|
+
/** The NEW recovery phrase. Shown to the owner once and kept by them; Salt never receives it. */
|
|
105
|
+
recoveryPhrase: string;
|
|
106
|
+
newGeneration: number;
|
|
107
|
+
newFingerprint: string;
|
|
108
|
+
/** Older generations that could not be opened with the current DEK: left out, that history stays unreadable. */
|
|
109
|
+
skippedGenerations: number[];
|
|
110
|
+
/** Kept devices that hold a generation we could not open, so no valid re-seal can be made: they are not re-sealed. */
|
|
111
|
+
notResealed: SaltId[];
|
|
112
|
+
/** Kept devices left out because their key certification is missing or did not verify (the server unlinks them): the person re-links each by scan. There is no override. */
|
|
113
|
+
uncertified: SaltId[];
|
|
114
|
+
}
|
|
115
|
+
/** Builds the whole reset request. Pure apart from randomness and PBKDF2; touches no network. */
|
|
116
|
+
export declare function buildChatKeyReset(input: BuildChatKeyResetInput): Promise<BuiltChatKeyReset>;
|
|
117
|
+
//# sourceMappingURL=keyReset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyReset.d.ts","sourceRoot":"","sources":["../src/keyReset.ts"],"names":[],"mappings":"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"}
|
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;
|
|
@@ -453,6 +471,27 @@ export interface ApprovalDecidedContext {
|
|
|
453
471
|
* doing. */
|
|
454
472
|
exercise: MandateExercise;
|
|
455
473
|
}
|
|
474
|
+
/**
|
|
475
|
+
* One of your asks (`client.requestGrant`) was decided. Fires on `mandate_activated` (approved) and on
|
|
476
|
+
* `approval_decided` (approved or declined), beside `onMandateActivated` / `onApprovalDecided`.
|
|
477
|
+
* Use `resumeToken` to find the parked step: on approval continue it, on decline change strategy.
|
|
478
|
+
*/
|
|
479
|
+
export interface GrantDecidedContext {
|
|
480
|
+
identity: AgentIdentity;
|
|
481
|
+
/** Whether the owner said yes. */
|
|
482
|
+
approved: boolean;
|
|
483
|
+
/** The `resumeToken` you supplied with the ask, echoed back (undefined if you gave none). */
|
|
484
|
+
resumeToken?: string;
|
|
485
|
+
/** What was granted (or asked for): the capability names. */
|
|
486
|
+
capabilities: string[];
|
|
487
|
+
/** Your own reason, echoed back. */
|
|
488
|
+
reason?: string;
|
|
489
|
+
/** The mandate (on approval) or the decided exercise (on an `approval_decided`). */
|
|
490
|
+
mandate?: Mandate;
|
|
491
|
+
exercise?: MandateExercise;
|
|
492
|
+
/** The raw event body. */
|
|
493
|
+
body: Record<string, unknown>;
|
|
494
|
+
}
|
|
456
495
|
/** The `end_reason` of a device session. `lost_contact` is the one this SDK names: the computer stopped answering for 15 s mid-session. Any other value is passed through verbatim. */
|
|
457
496
|
export declare const DEVICE_LOST_CONTACT = "lost_contact";
|
|
458
497
|
/** Who a device-lane message must be encrypted for: `{ids}` (account ids, sorted, the caller excluded) or `{open: true}`. */
|
|
@@ -629,6 +668,8 @@ export interface WebhookServerOptions {
|
|
|
629
668
|
onAppAction?: (ctx: AppActionContext) => Promise<void> | void;
|
|
630
669
|
onInvoicePaid?: (ctx: InvoicePaidContext) => Promise<void> | void;
|
|
631
670
|
onChatOpened?: (ctx: ChatOpenedContext) => Promise<void> | void;
|
|
671
|
+
/** A member of a chat you share reset their chat key (`member_key_changed`). See MemberKeyChangedContext. */
|
|
672
|
+
onMemberKeyChanged?: (ctx: MemberKeyChangedContext) => Promise<void> | void;
|
|
632
673
|
onHandoffConfirmed?: (ctx: HandoffConfirmedContext) => Promise<void> | void;
|
|
633
674
|
onHandoffReceived?: (ctx: HandoffReceivedContext) => Promise<void> | void;
|
|
634
675
|
/** A mandate was offered to this identity and is waiting to be accepted. See
|
|
@@ -645,6 +686,8 @@ export interface WebhookServerOptions {
|
|
|
645
686
|
onApprovalRequested?: (ctx: ApprovalRequestedContext) => Promise<void> | void;
|
|
646
687
|
/** This identity made the original ask-mode call and its exercise was just decided. */
|
|
647
688
|
onApprovalDecided?: (ctx: ApprovalDecidedContext) => Promise<void> | void;
|
|
689
|
+
/** An ask this identity filed with `client.requestGrant` was decided. See GrantDecidedContext (`ctx.resumeToken`, `ctx.capabilities`, `ctx.approved`). */
|
|
690
|
+
onGrantDecided?: (ctx: GrantDecidedContext) => Promise<void> | void;
|
|
648
691
|
/** Salt asked this agent to write its own public description (`describe_yourself`). The default is
|
|
649
692
|
* a no-op: an agent that does not handle it keeps whatever description its owner gave it. See
|
|
650
693
|
* DescribeYourselfContext -- call `ctx.write(text)`. */
|
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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"}
|