borgmcp 2.10.2 → 2.11.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/cli-help.js +3 -3
- package/dist/cli-help.js.map +1 -1
- package/dist/config.d.ts +34 -9
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +487 -105
- package/dist/config.js.map +1 -1
- package/dist/enrollment-lock.d.ts +10 -0
- package/dist/enrollment-lock.d.ts.map +1 -0
- package/dist/enrollment-lock.js +49 -0
- package/dist/enrollment-lock.js.map +1 -0
- package/dist/enrollment-types.d.ts +47 -0
- package/dist/enrollment-types.d.ts.map +1 -0
- package/dist/enrollment-types.js +2 -0
- package/dist/enrollment-types.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/invitation-artifact.d.ts +3 -1
- package/dist/invitation-artifact.d.ts.map +1 -1
- package/dist/invitation-artifact.js +3 -1
- package/dist/invitation-artifact.js.map +1 -1
- package/dist/recover-enrollment-cmd.d.ts.map +1 -1
- package/dist/recover-enrollment-cmd.js +34 -15
- package/dist/recover-enrollment-cmd.js.map +1 -1
- package/dist/remote-client.d.ts +3 -2
- package/dist/remote-client.d.ts.map +1 -1
- package/dist/remote-client.js +32 -11
- package/dist/remote-client.js.map +1 -1
- package/dist/server-errors.d.ts +4 -0
- package/dist/server-errors.d.ts.map +1 -1
- package/dist/server-errors.js +8 -0
- package/dist/server-errors.js.map +1 -1
- package/dist/server-handshake.d.ts +11 -3
- package/dist/server-handshake.d.ts.map +1 -1
- package/dist/server-handshake.js +103 -45
- package/dist/server-handshake.js.map +1 -1
- package/dist/server-trust.d.ts +14 -1
- package/dist/server-trust.d.ts.map +1 -1
- package/dist/server-trust.js +363 -66
- package/dist/server-trust.js.map +1 -1
- package/dist/tool-manifest.d.ts.map +1 -1
- package/dist/tool-manifest.js +4 -10
- package/dist/tool-manifest.js.map +1 -1
- package/docs/EXTRACTION_PROVENANCE.md +3 -3
- package/docs/RELEASING.md +7 -2
- package/package.json +1 -1
- package/src/cli-help.ts +3 -3
- package/src/config.ts +544 -101
- package/src/enrollment-lock.ts +53 -0
- package/src/enrollment-types.ts +51 -0
- package/src/index.ts +1 -1
- package/src/invitation-artifact.ts +7 -1
- package/src/recover-enrollment-cmd.ts +39 -15
- package/src/remote-client.ts +36 -10
- package/src/server-errors.ts +7 -0
- package/src/server-handshake.ts +130 -52
- package/src/server-trust.ts +392 -66
- package/src/tool-manifest.ts +4 -10
package/dist/server-trust.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Buffer } from 'node:buffer';
|
|
2
2
|
import { createHash, timingSafeEqual, X509Certificate } from 'node:crypto';
|
|
3
3
|
import { constants } from 'node:fs';
|
|
4
|
-
import { access, mkdir, open, rename, rm, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { access, lstat, mkdir, open, rename, rm, unlink, writeFile } from 'node:fs/promises';
|
|
5
5
|
import { request as httpsRequest } from 'node:https';
|
|
6
6
|
import { connect as tlsConnect } from 'node:tls';
|
|
7
7
|
import { homedir } from 'node:os';
|
|
@@ -9,6 +9,9 @@ import { join, resolve } from 'node:path';
|
|
|
9
9
|
import { Readable } from 'node:stream';
|
|
10
10
|
import { BorgServerTrustError } from './server-errors.js';
|
|
11
11
|
import { InvitationArtifactCompatibilityError, InvitationArtifactRecoveryError, InvitationArtifactStorageError, InvitationArtifactTransportError, InvitationArtifactTrustError, } from './invitation-artifact.js';
|
|
12
|
+
import { atomicWrite0600 } from './seat-store.js';
|
|
13
|
+
import { withEnrollmentOriginLock } from './enrollment-lock.js';
|
|
14
|
+
import { finalizeAcceptedEnrollment, getAcceptedEnrollmentMarker, restoreAcceptedEnrollmentAccounts, } from './config.js';
|
|
12
15
|
// CR5 TLS LATTICE: OpenSSL/Node TLS certificate-verification error codes. A raw
|
|
13
16
|
// CA / cert-chain / SAN failure from the pinned transport is a potential MITM and
|
|
14
17
|
// MUST be a TERMINAL trust-mismatch verdict — never a transient 'restart' blip.
|
|
@@ -40,6 +43,18 @@ function isPinnedTransportTrustFailure(code) {
|
|
|
40
43
|
TLS_TRUST_ERROR_CODES.has(code));
|
|
41
44
|
}
|
|
42
45
|
const trustCache = new Map();
|
|
46
|
+
let enrollmentTrustFaultsForTest = new Set();
|
|
47
|
+
function injectEnrollmentTrustFault(point) {
|
|
48
|
+
if (enrollmentTrustFaultsForTest.has(point))
|
|
49
|
+
throw new Error(`injected ${point} failure`);
|
|
50
|
+
}
|
|
51
|
+
function invalidateOriginTrustCache(origin) {
|
|
52
|
+
for (const key of trustCache.keys()) {
|
|
53
|
+
if (key === origin || key.startsWith(`${origin}\0`) || key.endsWith(`\0${origin}`)) {
|
|
54
|
+
trustCache.delete(key);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
43
58
|
function serverDataDirectory() {
|
|
44
59
|
return resolve(process.env.BORG_SERVER_DATA_DIR ?? join(homedir(), '.borg', 'server'));
|
|
45
60
|
}
|
|
@@ -47,6 +62,20 @@ function remoteTrustDirectory(origin) {
|
|
|
47
62
|
const key = createHash('sha256').update(origin).digest('hex');
|
|
48
63
|
return join(homedir(), '.borg', 'server-trust', key);
|
|
49
64
|
}
|
|
65
|
+
function trustGenerationsDirectory(origin) {
|
|
66
|
+
return join(remoteTrustDirectory(origin), 'generations');
|
|
67
|
+
}
|
|
68
|
+
function trustGenerationDirectory(origin, generationId) {
|
|
69
|
+
return join(trustGenerationsDirectory(origin), generationId);
|
|
70
|
+
}
|
|
71
|
+
function trustPointerPath(origin) {
|
|
72
|
+
return join(remoteTrustDirectory(origin), 'current.json');
|
|
73
|
+
}
|
|
74
|
+
function trustGenerationId(origin, certificate, identity) {
|
|
75
|
+
return createHash('sha256')
|
|
76
|
+
.update(origin).update('\0').update(identity).update('\0').update(certificate)
|
|
77
|
+
.digest('hex');
|
|
78
|
+
}
|
|
50
79
|
async function trustFilesExist(directory) {
|
|
51
80
|
try {
|
|
52
81
|
await Promise.all([access(join(directory, 'ca.crt')), access(join(directory, 'server.json'))]);
|
|
@@ -56,6 +85,14 @@ async function trustFilesExist(directory) {
|
|
|
56
85
|
return false;
|
|
57
86
|
}
|
|
58
87
|
}
|
|
88
|
+
async function remoteTrustStateExists(origin) {
|
|
89
|
+
try {
|
|
90
|
+
await access(trustPointerPath(origin));
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
catch { /* continue */ }
|
|
94
|
+
return trustFilesExist(remoteTrustDirectory(origin));
|
|
95
|
+
}
|
|
59
96
|
async function readTrustFile(path) {
|
|
60
97
|
let handle;
|
|
61
98
|
try {
|
|
@@ -81,6 +118,15 @@ async function readTrustFile(path) {
|
|
|
81
118
|
await handle.close();
|
|
82
119
|
}
|
|
83
120
|
}
|
|
121
|
+
async function assertPrivateDirectory(path) {
|
|
122
|
+
const metadata = await lstat(path);
|
|
123
|
+
if (!metadata.isDirectory() || metadata.isSymbolicLink() || (metadata.mode & 0o077) !== 0) {
|
|
124
|
+
throw new Error('Borg server trust directories must be private real directories');
|
|
125
|
+
}
|
|
126
|
+
if (typeof process.getuid === 'function' && metadata.uid !== process.getuid()) {
|
|
127
|
+
throw new Error('Borg server trust directories must be owned by the current user');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
84
130
|
async function syncPath(path) {
|
|
85
131
|
const handle = await open(path, 'r');
|
|
86
132
|
try {
|
|
@@ -126,6 +172,123 @@ function verifyCaIdentity(certificate, expected) {
|
|
|
126
172
|
}
|
|
127
173
|
return `spki-sha256:${actual.toString('hex')}`;
|
|
128
174
|
}
|
|
175
|
+
async function readGeneration(origin, generationId) {
|
|
176
|
+
if (!/^[a-f0-9]{64}$/.test(generationId))
|
|
177
|
+
throw new Error('Borg server trust pointer is invalid');
|
|
178
|
+
const directory = trustGenerationDirectory(origin, generationId);
|
|
179
|
+
const [certificate, configText] = await Promise.all([
|
|
180
|
+
readTrustFile(join(directory, 'ca.crt')),
|
|
181
|
+
readTrustFile(join(directory, 'server.json')),
|
|
182
|
+
]);
|
|
183
|
+
const config = decodeTrustConfig(configText);
|
|
184
|
+
const identity = verifyCaIdentity(certificate, config.ca_spki_sha256);
|
|
185
|
+
if (trustGenerationId(origin, certificate, identity) !== generationId) {
|
|
186
|
+
throw new Error('Borg server trust generation digest is invalid');
|
|
187
|
+
}
|
|
188
|
+
return { certificate, identity };
|
|
189
|
+
}
|
|
190
|
+
async function readTrustPointer(origin) {
|
|
191
|
+
try {
|
|
192
|
+
await assertPrivateDirectory(remoteTrustDirectory(origin));
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
if (error.code === 'ENOENT')
|
|
196
|
+
return null;
|
|
197
|
+
throw error;
|
|
198
|
+
}
|
|
199
|
+
let raw;
|
|
200
|
+
try {
|
|
201
|
+
raw = await readTrustFile(trustPointerPath(origin));
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
if (error instanceof Error && /were not found/.test(error.message))
|
|
205
|
+
return null;
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
let pointer;
|
|
209
|
+
try {
|
|
210
|
+
pointer = JSON.parse(raw);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
throw new Error('Borg server trust pointer is invalid');
|
|
214
|
+
}
|
|
215
|
+
if (pointer.version !== 1 || pointer.origin !== origin ||
|
|
216
|
+
typeof pointer.generationId !== 'string' || !/^[a-f0-9]{64}$/.test(pointer.generationId) ||
|
|
217
|
+
typeof pointer.trustIdentity !== 'string')
|
|
218
|
+
throw new Error('Borg server trust pointer is invalid');
|
|
219
|
+
return pointer;
|
|
220
|
+
}
|
|
221
|
+
async function publishTrustPointer(pointer) {
|
|
222
|
+
const root = remoteTrustDirectory(pointer.origin);
|
|
223
|
+
await mkdir(root, { recursive: true, mode: 0o700 });
|
|
224
|
+
await assertPrivateDirectory(root);
|
|
225
|
+
await atomicWrite0600(trustPointerPath(pointer.origin), `${JSON.stringify(pointer)}\n`);
|
|
226
|
+
invalidateOriginTrustCache(pointer.origin);
|
|
227
|
+
}
|
|
228
|
+
async function removeTrustPointer(origin) {
|
|
229
|
+
try {
|
|
230
|
+
await unlink(trustPointerPath(origin));
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
if (error.code !== 'ENOENT')
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
await syncPath(remoteTrustDirectory(origin));
|
|
237
|
+
invalidateOriginTrustCache(origin);
|
|
238
|
+
}
|
|
239
|
+
async function publishGeneration(origin, certificate, identity) {
|
|
240
|
+
const generationId = trustGenerationId(origin, certificate, identity);
|
|
241
|
+
const generations = trustGenerationsDirectory(origin);
|
|
242
|
+
const target = trustGenerationDirectory(origin, generationId);
|
|
243
|
+
await mkdir(generations, { recursive: true, mode: 0o700 });
|
|
244
|
+
await assertPrivateDirectory(resolve(remoteTrustDirectory(origin), '..'));
|
|
245
|
+
await assertPrivateDirectory(remoteTrustDirectory(origin));
|
|
246
|
+
await assertPrivateDirectory(generations);
|
|
247
|
+
if (await trustFilesExist(target)) {
|
|
248
|
+
const verified = await readGeneration(origin, generationId);
|
|
249
|
+
if (verified.identity !== identity)
|
|
250
|
+
throw new Error('Borg server trust generation identity changed');
|
|
251
|
+
return generationId;
|
|
252
|
+
}
|
|
253
|
+
const temporary = `${target}.tmp-${process.pid}-${Date.now()}`;
|
|
254
|
+
try {
|
|
255
|
+
await mkdir(temporary, { mode: 0o700 });
|
|
256
|
+
const certificatePath = join(temporary, 'ca.crt');
|
|
257
|
+
const configPath = join(temporary, 'server.json');
|
|
258
|
+
await writeFile(certificatePath, certificate, { mode: 0o600, flag: 'wx' });
|
|
259
|
+
await syncPath(certificatePath);
|
|
260
|
+
await writeFile(configPath, JSON.stringify({
|
|
261
|
+
ca_spki_sha256: identity.replace(/^spki-sha256:/, ''),
|
|
262
|
+
}), { mode: 0o600, flag: 'wx' });
|
|
263
|
+
await syncPath(configPath);
|
|
264
|
+
await syncPath(temporary);
|
|
265
|
+
await rename(temporary, target);
|
|
266
|
+
await syncPath(generations);
|
|
267
|
+
const verified = await readGeneration(origin, generationId);
|
|
268
|
+
if (verified.identity !== identity)
|
|
269
|
+
throw new Error('Borg server trust generation identity changed');
|
|
270
|
+
return generationId;
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
await rm(temporary, { recursive: true, force: true }).catch(() => undefined);
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
async function migrateLegacyRemoteTrust(origin) {
|
|
278
|
+
const directory = remoteTrustDirectory(origin);
|
|
279
|
+
if (!await trustFilesExist(directory))
|
|
280
|
+
return null;
|
|
281
|
+
const [certificate, configText] = await Promise.all([
|
|
282
|
+
readTrustFile(join(directory, 'ca.crt')),
|
|
283
|
+
readTrustFile(join(directory, 'server.json')),
|
|
284
|
+
]);
|
|
285
|
+
const config = decodeTrustConfig(configText);
|
|
286
|
+
const identity = verifyCaIdentity(certificate, config.ca_spki_sha256);
|
|
287
|
+
const generationId = await publishGeneration(origin, certificate, identity);
|
|
288
|
+
const pointer = { version: 1, origin, generationId, trustIdentity: identity };
|
|
289
|
+
await publishTrustPointer(pointer);
|
|
290
|
+
return pointer;
|
|
291
|
+
}
|
|
129
292
|
function responseHeaders(rawHeaders) {
|
|
130
293
|
const headers = new Headers();
|
|
131
294
|
for (let index = 0; index < rawHeaders.length; index += 2) {
|
|
@@ -188,6 +351,10 @@ export function createPinnedServerFetch(origin, caCertificate) {
|
|
|
188
351
|
headers: Object.fromEntries(headers.entries()),
|
|
189
352
|
ca: caCertificate,
|
|
190
353
|
rejectUnauthorized: true,
|
|
354
|
+
// The pinned CA is the authority boundary. OpenSSL still validates
|
|
355
|
+
// the complete chain; only the leaf's address SAN check is skipped
|
|
356
|
+
// so a DHCP change does not require reissuing the leaf certificate.
|
|
357
|
+
checkServerIdentity: () => undefined,
|
|
191
358
|
minVersion: 'TLSv1.3',
|
|
192
359
|
}, (incoming) => {
|
|
193
360
|
const status = incoming.statusCode ?? 500;
|
|
@@ -233,32 +400,49 @@ export function createPinnedServerFetch(origin, caCertificate) {
|
|
|
233
400
|
});
|
|
234
401
|
}
|
|
235
402
|
export async function loadBorgServerTrust(origin, dataDirectory) {
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
pending = (
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
fetchImpl: createPinnedServerFetch(origin, certificate),
|
|
256
|
-
};
|
|
257
|
-
})();
|
|
258
|
-
trustCache.set(key, pending);
|
|
259
|
-
pending.catch(() => trustCache.delete(key));
|
|
403
|
+
const useRemoteState = dataDirectory === undefined && await remoteTrustStateExists(origin);
|
|
404
|
+
if (dataDirectory !== undefined || !useRemoteState && await trustFilesExist(serverDataDirectory())) {
|
|
405
|
+
const directory = dataDirectory ?? serverDataDirectory();
|
|
406
|
+
const key = `legacy\0${directory}\0${origin}`;
|
|
407
|
+
let pending = trustCache.get(key);
|
|
408
|
+
if (!pending) {
|
|
409
|
+
pending = (async () => {
|
|
410
|
+
const [certificate, configText] = await Promise.all([
|
|
411
|
+
readTrustFile(join(directory, 'ca.crt')),
|
|
412
|
+
readTrustFile(join(directory, 'server.json')),
|
|
413
|
+
]);
|
|
414
|
+
const config = decodeTrustConfig(configText);
|
|
415
|
+
const identity = verifyCaIdentity(certificate, config.ca_spki_sha256);
|
|
416
|
+
return { identity, fetchImpl: createPinnedServerFetch(origin, certificate) };
|
|
417
|
+
})();
|
|
418
|
+
trustCache.set(key, pending);
|
|
419
|
+
pending.catch(() => trustCache.delete(key));
|
|
420
|
+
}
|
|
421
|
+
return pending;
|
|
260
422
|
}
|
|
261
|
-
return
|
|
423
|
+
return withEnrollmentOriginLock(origin, async () => {
|
|
424
|
+
await recoverAcceptedEnrollment(origin);
|
|
425
|
+
const pointer = await readTrustPointer(origin) ?? await migrateLegacyRemoteTrust(origin);
|
|
426
|
+
if (!pointer)
|
|
427
|
+
throw new Error('Borg server trust files were not found');
|
|
428
|
+
const key = `${origin}\0${pointer.generationId}\0${pointer.trustIdentity}`;
|
|
429
|
+
let pending = trustCache.get(key);
|
|
430
|
+
if (!pending) {
|
|
431
|
+
pending = (async () => {
|
|
432
|
+
const generation = await readGeneration(origin, pointer.generationId);
|
|
433
|
+
if (generation.identity !== pointer.trustIdentity) {
|
|
434
|
+
throw new Error('Borg server trust pointer identity does not match its generation');
|
|
435
|
+
}
|
|
436
|
+
return {
|
|
437
|
+
identity: generation.identity,
|
|
438
|
+
fetchImpl: createPinnedServerFetch(origin, generation.certificate),
|
|
439
|
+
};
|
|
440
|
+
})();
|
|
441
|
+
trustCache.set(key, pending);
|
|
442
|
+
pending.catch(() => trustCache.delete(key));
|
|
443
|
+
}
|
|
444
|
+
return pending;
|
|
445
|
+
});
|
|
262
446
|
}
|
|
263
447
|
function pemCertificate(raw) {
|
|
264
448
|
const body = raw.toString('base64').match(/.{1,64}/g)?.join('\n') ?? '';
|
|
@@ -329,67 +513,180 @@ export async function loadBorgServerTrustFromPresentedChain(origin, caSpkiSha256
|
|
|
329
513
|
throw new InvitationArtifactTrustError();
|
|
330
514
|
}
|
|
331
515
|
export async function stageBorgServerTrust(origin, certificate, identity) {
|
|
332
|
-
|
|
333
|
-
const parent = resolve(directory, '..');
|
|
334
|
-
await mkdir(parent, { recursive: true, mode: 0o700 });
|
|
335
|
-
const suffix = `${process.pid}-${Date.now()}`;
|
|
336
|
-
const temporaryDirectory = `${directory}.tmp-${suffix}`;
|
|
337
|
-
const temporaryCertificate = join(temporaryDirectory, 'ca.crt');
|
|
338
|
-
const temporaryConfig = join(temporaryDirectory, 'server.json');
|
|
516
|
+
let generationId;
|
|
339
517
|
try {
|
|
340
|
-
await
|
|
341
|
-
await Promise.all([
|
|
342
|
-
writeFile(temporaryCertificate, certificate, { mode: 0o600, flag: 'wx' }),
|
|
343
|
-
writeFile(temporaryConfig, JSON.stringify({ ca_spki_sha256: identity.replace(/^spki-sha256:/, '') }), { mode: 0o600, flag: 'wx' }),
|
|
344
|
-
]);
|
|
345
|
-
await Promise.all([syncPath(temporaryCertificate), syncPath(temporaryConfig), syncPath(temporaryDirectory)]);
|
|
518
|
+
generationId = await withEnrollmentOriginLock(origin, () => publishGeneration(origin, certificate, identity));
|
|
346
519
|
}
|
|
347
520
|
catch {
|
|
348
|
-
await rm(temporaryDirectory, { recursive: true, force: true });
|
|
349
521
|
throw new InvitationArtifactStorageError();
|
|
350
522
|
}
|
|
351
|
-
|
|
523
|
+
return stagedTrustFromGeneration(origin, generationId, identity, certificate);
|
|
524
|
+
}
|
|
525
|
+
function stagedTrustFromGeneration(origin, generationId, identity, certificate) {
|
|
526
|
+
let finalized = false;
|
|
352
527
|
return {
|
|
353
528
|
identity,
|
|
529
|
+
generationId,
|
|
354
530
|
fetchImpl: createPinnedServerFetch(origin, certificate),
|
|
355
531
|
commitTrust: async (activate) => {
|
|
356
|
-
if (
|
|
532
|
+
if (finalized)
|
|
357
533
|
return;
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
534
|
+
await withEnrollmentOriginLock(origin, async () => {
|
|
535
|
+
const previousPointer = await readTrustPointer(origin) ?? await migrateLegacyRemoteTrust(origin);
|
|
536
|
+
let activated = false;
|
|
537
|
+
try {
|
|
538
|
+
await activate({ generationId, previousPointer });
|
|
539
|
+
const accepted = await getAcceptedEnrollmentMarker(origin);
|
|
540
|
+
if (!accepted || accepted.generationId !== generationId ||
|
|
541
|
+
accepted.trustIdentity !== identity)
|
|
542
|
+
throw new Error('Borg enrollment activation did not publish its accepted marker');
|
|
543
|
+
activated = true;
|
|
544
|
+
injectEnrollmentTrustFault('after-account-activation');
|
|
545
|
+
await publishTrustPointer({ version: 1, origin, generationId, trustIdentity: identity });
|
|
546
|
+
injectEnrollmentTrustFault('after-pointer-publish');
|
|
547
|
+
const verified = await readGeneration(origin, generationId);
|
|
548
|
+
if (verified.identity !== identity)
|
|
549
|
+
throw new Error('published Borg trust generation changed');
|
|
550
|
+
injectEnrollmentTrustFault('before-marker-finalize');
|
|
551
|
+
await finalizeAcceptedEnrollment(origin, identity, generationId);
|
|
552
|
+
finalized = true;
|
|
553
|
+
}
|
|
554
|
+
catch (error) {
|
|
555
|
+
let marker;
|
|
556
|
+
try {
|
|
557
|
+
marker = await getAcceptedEnrollmentMarker(origin);
|
|
558
|
+
}
|
|
559
|
+
catch {
|
|
560
|
+
throw new InvitationArtifactRecoveryError();
|
|
561
|
+
}
|
|
562
|
+
// Activation is one atomic account-map replacement, but a durable
|
|
563
|
+
// backend may report an error after rename and before/while syncing
|
|
564
|
+
// the parent directory. The accepted marker, not the callback's
|
|
565
|
+
// return value, is therefore the authority for whether rollback is
|
|
566
|
+
// required.
|
|
567
|
+
if (!marker && !activated)
|
|
363
568
|
throw error;
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
if (backedUp) {
|
|
375
|
-
await rename(backupDirectory, directory);
|
|
376
|
-
await syncPath(resolve(directory, '..'));
|
|
569
|
+
if (!marker)
|
|
570
|
+
throw new InvitationArtifactRecoveryError();
|
|
571
|
+
try {
|
|
572
|
+
await restoreEnrollmentPointer(marker);
|
|
573
|
+
await restoreAcceptedEnrollmentAccounts(marker);
|
|
574
|
+
}
|
|
575
|
+
catch {
|
|
576
|
+
throw new InvitationArtifactRecoveryError();
|
|
577
|
+
}
|
|
578
|
+
throw new InvitationArtifactRecoveryError();
|
|
377
579
|
}
|
|
378
|
-
|
|
379
|
-
}
|
|
580
|
+
});
|
|
380
581
|
},
|
|
381
582
|
discardTrust: async () => {
|
|
382
|
-
if (
|
|
583
|
+
if (finalized)
|
|
383
584
|
return;
|
|
384
|
-
await
|
|
585
|
+
await withEnrollmentOriginLock(origin, async () => {
|
|
586
|
+
const pointer = await readTrustPointer(origin);
|
|
587
|
+
if (pointer?.generationId === generationId)
|
|
588
|
+
return;
|
|
589
|
+
await rm(trustGenerationDirectory(origin, generationId), { recursive: true, force: true });
|
|
590
|
+
await syncPath(trustGenerationsDirectory(origin)).catch(() => undefined);
|
|
591
|
+
});
|
|
385
592
|
},
|
|
386
593
|
};
|
|
387
594
|
}
|
|
595
|
+
async function restoreEnrollmentPointer(marker) {
|
|
596
|
+
injectEnrollmentTrustFault('during-pointer-rollback');
|
|
597
|
+
if (marker.previousPointer === null) {
|
|
598
|
+
await removeTrustPointer(marker.origin);
|
|
599
|
+
if (await readTrustPointer(marker.origin) !== null)
|
|
600
|
+
throw new Error('Borg trust pointer rollback failed');
|
|
601
|
+
return;
|
|
602
|
+
}
|
|
603
|
+
const previous = await readGeneration(marker.origin, marker.previousPointer.generationId);
|
|
604
|
+
if (previous.identity !== marker.previousPointer.trustIdentity) {
|
|
605
|
+
throw new Error('Borg previous trust generation is invalid');
|
|
606
|
+
}
|
|
607
|
+
await publishTrustPointer(marker.previousPointer);
|
|
608
|
+
const restored = await readTrustPointer(marker.origin);
|
|
609
|
+
if (restored?.generationId !== marker.previousPointer.generationId) {
|
|
610
|
+
throw new Error('Borg trust pointer rollback failed');
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
async function recoverAcceptedEnrollment(origin) {
|
|
614
|
+
const marker = await getAcceptedEnrollmentMarker(origin);
|
|
615
|
+
if (!marker)
|
|
616
|
+
return;
|
|
617
|
+
try {
|
|
618
|
+
const generation = await readGeneration(origin, marker.generationId);
|
|
619
|
+
if (generation.identity !== marker.trustIdentity)
|
|
620
|
+
throw new Error('Borg enrollment generation identity changed');
|
|
621
|
+
await publishTrustPointer({
|
|
622
|
+
version: 1,
|
|
623
|
+
origin,
|
|
624
|
+
generationId: marker.generationId,
|
|
625
|
+
trustIdentity: marker.trustIdentity,
|
|
626
|
+
});
|
|
627
|
+
await finalizeAcceptedEnrollment(origin, marker.trustIdentity, marker.generationId);
|
|
628
|
+
}
|
|
629
|
+
catch {
|
|
630
|
+
try {
|
|
631
|
+
await restoreEnrollmentPointer(marker);
|
|
632
|
+
await restoreAcceptedEnrollmentAccounts(marker);
|
|
633
|
+
}
|
|
634
|
+
catch {
|
|
635
|
+
throw new InvitationArtifactRecoveryError();
|
|
636
|
+
}
|
|
637
|
+
throw new InvitationArtifactRecoveryError();
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
/** Verify the exact persisted artifact binding before any resumed network I/O. */
|
|
641
|
+
export async function loadStagedBorgServerTrust(origin, binding) {
|
|
642
|
+
return withEnrollmentOriginLock(origin, async () => {
|
|
643
|
+
if (binding.endpoint !== origin || binding.trustIdentity !== `spki-sha256:${binding.caSpkiSha256}`)
|
|
644
|
+
throw new InvitationArtifactTrustError();
|
|
645
|
+
let generation;
|
|
646
|
+
try {
|
|
647
|
+
generation = await readGeneration(origin, binding.stagedGenerationId);
|
|
648
|
+
}
|
|
649
|
+
catch {
|
|
650
|
+
throw new InvitationArtifactRecoveryError();
|
|
651
|
+
}
|
|
652
|
+
if (generation.identity !== binding.trustIdentity)
|
|
653
|
+
throw new InvitationArtifactTrustError();
|
|
654
|
+
return stagedTrustFromGeneration(origin, binding.stagedGenerationId, generation.identity, generation.certificate);
|
|
655
|
+
});
|
|
656
|
+
}
|
|
657
|
+
/** Explicit operator recovery restores the exact accepted journal that was reviewed. */
|
|
658
|
+
export async function restoreBorgServerEnrollment(expected) {
|
|
659
|
+
return withEnrollmentOriginLock(expected.origin, async () => {
|
|
660
|
+
const marker = await getAcceptedEnrollmentMarker(expected.origin);
|
|
661
|
+
if (!marker || JSON.stringify(marker) !== JSON.stringify(expected))
|
|
662
|
+
return false;
|
|
663
|
+
await restoreEnrollmentPointer(expected);
|
|
664
|
+
await restoreAcceptedEnrollmentAccounts(expected);
|
|
665
|
+
return true;
|
|
666
|
+
});
|
|
667
|
+
}
|
|
668
|
+
export async function clearStagedBorgServerTrust(origin, generationId) {
|
|
669
|
+
if (!generationId)
|
|
670
|
+
return;
|
|
671
|
+
await withEnrollmentOriginLock(origin, async () => {
|
|
672
|
+
const pointer = await readTrustPointer(origin);
|
|
673
|
+
if (pointer?.generationId === generationId) {
|
|
674
|
+
throw new InvitationArtifactRecoveryError();
|
|
675
|
+
}
|
|
676
|
+
await rm(trustGenerationDirectory(origin, generationId), { recursive: true, force: true });
|
|
677
|
+
await syncPath(trustGenerationsDirectory(origin)).catch(() => undefined);
|
|
678
|
+
});
|
|
679
|
+
}
|
|
388
680
|
export function __clearServerTrustCacheForTest() {
|
|
389
681
|
trustCache.clear();
|
|
390
682
|
}
|
|
683
|
+
export function __setEnrollmentTrustFaultForTest(points) {
|
|
684
|
+
enrollmentTrustFaultsForTest = new Set(points === null ? [] : Array.isArray(points) ? points : [points]);
|
|
685
|
+
}
|
|
391
686
|
export async function clearBorgServerTrust(origin) {
|
|
392
|
-
await
|
|
393
|
-
|
|
687
|
+
await withEnrollmentOriginLock(origin, async () => {
|
|
688
|
+
await rm(remoteTrustDirectory(origin), { recursive: true, force: true });
|
|
689
|
+
invalidateOriginTrustCache(origin);
|
|
690
|
+
});
|
|
394
691
|
}
|
|
395
692
|
//# sourceMappingURL=server-trust.js.map
|
package/dist/server-trust.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-trust.js","sourceRoot":"","sources":["../src/server-trust.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server-trust.js","sourceRoot":"","sources":["../src/server-trust.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-manifest.d.ts","sourceRoot":"","sources":["../src/tool-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KACvC,CAAC;CACH;AAED,eAAO,MAAM,aAAa,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"tool-manifest.d.ts","sourceRoot":"","sources":["../src/tool-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KACvC,CAAC;CACH;AAED,eAAO,MAAM,aAAa,EAAE,iBAAiB,EA0kB5C,CAAC"}
|
package/dist/tool-manifest.js
CHANGED
|
@@ -299,9 +299,9 @@ export const TOOL_MANIFEST = [
|
|
|
299
299
|
properties: {
|
|
300
300
|
name: {
|
|
301
301
|
type: 'string',
|
|
302
|
-
description: 'Cube name (
|
|
303
|
-
pattern: '^[
|
|
304
|
-
maxLength:
|
|
302
|
+
description: 'Cube name (starts with a letter or digit; letters, digits, spaces, dots, underscores, or hyphens; max 120 UTF-8 bytes).',
|
|
303
|
+
pattern: '^[A-Za-z0-9][A-Za-z0-9 ._-]*$',
|
|
304
|
+
maxLength: 120,
|
|
305
305
|
},
|
|
306
306
|
cube_directive: { type: 'string', description: 'Project-specific Markdown shown to every drone when it refreshes cube context.' },
|
|
307
307
|
template: {
|
|
@@ -314,17 +314,11 @@ export const TOOL_MANIFEST = [
|
|
|
314
314
|
},
|
|
315
315
|
{
|
|
316
316
|
name: 'borg_update-cube',
|
|
317
|
-
description: 'Update a cube\'s
|
|
317
|
+
description: 'Update a cube\'s cube_directive and/or message_taxonomy. Pass only what changes.',
|
|
318
318
|
inputSchema: {
|
|
319
319
|
type: 'object',
|
|
320
320
|
properties: {
|
|
321
321
|
cube_id: { type: 'string', description: 'UUID of the cube to update.' },
|
|
322
|
-
name: {
|
|
323
|
-
type: 'string',
|
|
324
|
-
description: 'New name (optional). Lowercase letters, digits, hyphens; max 64 chars.',
|
|
325
|
-
pattern: '^[a-z0-9-]+$',
|
|
326
|
-
maxLength: 64,
|
|
327
|
-
},
|
|
328
322
|
cube_directive: { type: 'string', description: 'New cube directive markdown (optional).' },
|
|
329
323
|
message_taxonomy: {
|
|
330
324
|
type: 'array',
|