@zincapp/znvault-cli 4.18.0 → 4.18.1

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/README.md CHANGED
@@ -231,6 +231,28 @@ znvault superadmin backup storage show
231
231
  znvault superadmin backup storage set-s3 --bucket my-bucket --region us-east-1
232
232
  ```
233
233
 
234
+ ### BSK/LMK Offline Escrow (local Vault node only)
235
+
236
+ Create a cumulative custody bundle directly on a dedicated mounted device.
237
+ The command reads the local BSK plus the PostgreSQL-wrapped LMK generations,
238
+ writes no temporary file, and performs a read-back verification before it
239
+ returns. Production snapshots require an encrypted backup record whose status
240
+ is `VERIFIED`.
241
+
242
+ ```bash
243
+ sudo znvault superadmin lmk escrow snapshot \
244
+ --mount /media/sysadmin/ZNVAULT-ESCROW-A \
245
+ --copy-label A \
246
+ --backup-id backup_...
247
+
248
+ znvault superadmin lmk escrow verify \
249
+ /media/sysadmin/ZNVAULT-ESCROW-A/znvault-lmk-escrow-*.znlmk
250
+ ```
251
+
252
+ The snapshot command does not export the BSK through the ZnVault API or print
253
+ key material. Use the explicit `--allow-unbound-lab-snapshot` bypass only in an
254
+ isolated lab.
255
+
234
256
  ### Schema Migrations
235
257
 
236
258
  Run schema migrations against a database through a short-lived dynamic-secrets lease.
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerLmkEscrowCommands(lmk: Command): void;
3
+ //# sourceMappingURL=lmk-escrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lmk-escrow.d.ts","sourceRoot":"","sources":["../../src/commands/lmk-escrow.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyEzC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAoG5D"}
@@ -0,0 +1,141 @@
1
+ // Path: src/commands/lmk-escrow.ts
2
+ import { hostname } from 'node:os';
3
+ import { dirname, join, resolve } from 'node:path';
4
+ import { lstatSync, readFileSync, realpathSync } from 'node:fs';
5
+ import { LocalDBClient, isLocalDbAvailable } from '../lib/db.js';
6
+ import { buildLmkEscrowBundle, makeLmkEscrowFilename, readAndVerifyLmkEscrowBundle, verifyLmkEscrowBundleBuffer, writeLmkEscrowBundleDirect, } from '../lib/lmk-escrow.js';
7
+ import { getLocalVaultVersion } from '../lib/local.js';
8
+ import { getVersion } from '../lib/version.js';
9
+ import * as output from '../lib/output.js';
10
+ function resolveBskPath(explicitPath) {
11
+ if (explicitPath !== undefined)
12
+ return resolve(explicitPath);
13
+ if (process.env.LMK_PATH !== undefined && process.env.LMK_PATH !== '') {
14
+ return resolve(process.env.LMK_PATH);
15
+ }
16
+ return resolve(join(process.env.DATA_DIR ?? './data', 'lmk.bin'));
17
+ }
18
+ function readBsk(path) {
19
+ const stat = lstatSync(path);
20
+ if (stat.isSymbolicLink() || !stat.isFile()) {
21
+ throw new Error('BSK path must be a regular file, not a symlink');
22
+ }
23
+ if (realpathSync(path) !== path) {
24
+ throw new Error('BSK path may not contain symlink components');
25
+ }
26
+ const bsk = readFileSync(path);
27
+ if (bsk.length !== 32) {
28
+ bsk.fill(0);
29
+ throw new Error(`BSK must be exactly 32 bytes; ${path} contains ${String(bsk.length)}`);
30
+ }
31
+ return bsk;
32
+ }
33
+ function printReport(report) {
34
+ output.keyValue({
35
+ 'Bundle ID': report.bundleId,
36
+ 'Copy label': report.copyLabel,
37
+ 'Active LMK': report.activeLmkVersion,
38
+ 'Recoverability': report.recoverability,
39
+ 'Recoverable versions': report.recoverableVersions.join(', '),
40
+ 'Historical gaps': report.unrecoverableVersions.length === 0
41
+ ? 'none'
42
+ : report.unrecoverableVersions.join(', '),
43
+ 'BSK fingerprint': `sha256:${report.bskSha256}`,
44
+ 'Backup binding': report.backupId ?? 'UNBOUND — LAB ONLY',
45
+ 'Active rotation': report.activeRotationId ?? 'none',
46
+ ...('path' in report ? {
47
+ 'Device path': report.path,
48
+ 'Bytes': report.bytes,
49
+ 'Full-file SHA-256': report.fullFileSha256,
50
+ } : {}),
51
+ });
52
+ }
53
+ export function registerLmkEscrowCommands(lmk) {
54
+ const escrow = lmk
55
+ .command('escrow')
56
+ .description('Local, direct-to-device BSK and versioned-LMK custody snapshots');
57
+ escrow
58
+ .command('snapshot')
59
+ .description('Capture the local BSK plus PostgreSQL-wrapped LMK generations and write ' +
60
+ 'once to a dedicated mounted device. No API export and no temporary file.')
61
+ .requiredOption('--mount <path>', 'Root of the mounted removable escrow device')
62
+ .requiredOption('--copy-label <label>', 'Physical copy label, for example A or B')
63
+ .option('--bsk-path <path>', 'Override LMK_PATH/DATA_DIR/lmk.bin')
64
+ .option('--backup-id <id>', 'Bind the snapshot to a VERIFIED ZnVault backup record')
65
+ .option('--allow-unbound-lab-snapshot', 'LAB ONLY: allow a snapshot with no verified backup binding')
66
+ .option('--json', 'Output only the redacted receipt as JSON')
67
+ .action(async (options) => {
68
+ if (!isLocalDbAvailable()) {
69
+ throw new Error('LMK escrow snapshot is local-only. Run it on a Vault node with local ' +
70
+ 'database configuration; it will not export the BSK through the API.');
71
+ }
72
+ if (options.backupId === undefined && options.allowUnboundLabSnapshot !== true) {
73
+ throw new Error('A VERIFIED --backup-id is required. Use --allow-unbound-lab-snapshot only in an isolated lab.');
74
+ }
75
+ const spinner = output.spinner('Capturing LMK custody state...').start();
76
+ const database = new LocalDBClient();
77
+ let bsk = null;
78
+ let bundle = null;
79
+ try {
80
+ // getLocalConfig(), called by LocalDBClient, loads DATA_DIR/LMK_PATH from
81
+ // the service environment before this path is resolved.
82
+ const bskPath = resolveBskPath(options.bskPath);
83
+ bsk = readBsk(bskPath);
84
+ const snapshot = await database.captureLmkEscrow(options.backupId);
85
+ bundle = buildLmkEscrowBundle({
86
+ snapshot,
87
+ bsk,
88
+ copyLabel: options.copyLabel,
89
+ operator: process.env.SUDO_USER ?? process.env.USER ?? `uid-${String(process.getuid?.() ?? 'unknown')}`,
90
+ hostname: hostname(),
91
+ vaultVersion: getLocalVaultVersion(),
92
+ cliVersion: getVersion(),
93
+ allowUnboundBackup: options.allowUnboundLabSnapshot === true,
94
+ });
95
+ const initialReport = verifyLmkEscrowBundleBuffer(bundle);
96
+ const filename = makeLmkEscrowFilename(initialReport);
97
+ const receipt = writeLmkEscrowBundleDirect(bundle, {
98
+ mountPath: options.mount,
99
+ filename,
100
+ });
101
+ spinner.stop();
102
+ if (options.json === true) {
103
+ output.json(receipt);
104
+ return;
105
+ }
106
+ output.section('LMK Escrow Snapshot Written and Read-Back Verified');
107
+ printReport(receipt);
108
+ if (receipt.backupId === null) {
109
+ output.warn('This snapshot is not bound to a verified database backup and is LAB-ONLY evidence.');
110
+ }
111
+ if (receipt.recoverability === 'KNOWN_HISTORICAL_GAPS') {
112
+ output.warn('The bundle preserves all material still available, but one or more historical LMK rows were already unrecoverable.');
113
+ }
114
+ output.success('Set the datAshur to Admin-enforced read-only, eject it cleanly, then lock it.');
115
+ }
116
+ catch (error) {
117
+ spinner.fail('LMK escrow snapshot failed');
118
+ throw error;
119
+ }
120
+ finally {
121
+ bsk?.fill(0);
122
+ bundle?.fill(0);
123
+ await database.close();
124
+ }
125
+ });
126
+ escrow
127
+ .command('verify <bundle>')
128
+ .description('Read and cryptographically verify an LMK escrow bundle without printing key material')
129
+ .option('--json', 'Output the redacted verification result as JSON')
130
+ .action((bundlePath, options) => {
131
+ const report = readAndVerifyLmkEscrowBundle(bundlePath);
132
+ if (options.json === true) {
133
+ output.json(report);
134
+ return;
135
+ }
136
+ output.section('LMK Escrow Verification Passed');
137
+ printReport(report);
138
+ output.success(`Verified directly from ${dirname(resolve(bundlePath))}`);
139
+ });
140
+ }
141
+ //# sourceMappingURL=lmk-escrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lmk-escrow.js","sourceRoot":"","sources":["../../src/commands/lmk-escrow.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,GAG3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAe3C,SAAS,cAAc,CAAC,YAAqB;IAC3C,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QACtE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,aAAa,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,MAA2D;IAC9E,MAAM,CAAC,QAAQ,CAAC;QACd,WAAW,EAAE,MAAM,CAAC,QAAQ;QAC5B,YAAY,EAAE,MAAM,CAAC,SAAS;QAC9B,YAAY,EAAE,MAAM,CAAC,gBAAgB;QACrC,gBAAgB,EAAE,MAAM,CAAC,cAAc;QACvC,sBAAsB,EAAE,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,iBAAiB,EAAE,MAAM,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC;YAC1D,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3C,iBAAiB,EAAE,UAAU,MAAM,CAAC,SAAS,EAAE;QAC/C,gBAAgB,EAAE,MAAM,CAAC,QAAQ,IAAI,oBAAoB;QACzD,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,IAAI,MAAM;QACpD,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC,IAAI;YAC1B,OAAO,EAAE,MAAM,CAAC,KAAK;YACrB,mBAAmB,EAAE,MAAM,CAAC,cAAc;SAC3C,CAAC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,MAAM,MAAM,GAAG,GAAG;SACf,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iEAAiE,CAAC,CAAC;IAElF,MAAM;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CACV,0EAA0E;QAC1E,0EAA0E,CAC3E;SACA,cAAc,CAAC,gBAAgB,EAAE,6CAA6C,CAAC;SAC/E,cAAc,CAAC,sBAAsB,EAAE,yCAAyC,CAAC;SACjF,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;SACjE,MAAM,CAAC,kBAAkB,EAAE,uDAAuD,CAAC;SACnF,MAAM,CACL,8BAA8B,EAC9B,4DAA4D,CAC7D;SACA,MAAM,CAAC,QAAQ,EAAE,0CAA0C,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,OAAwB,EAAE,EAAE;QACzC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,uEAAuE;gBACvE,qEAAqE,CACtE,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,uBAAuB,KAAK,IAAI,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,KAAK,EAAE,CAAC;QACzE,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,GAAG,GAAkB,IAAI,CAAC;QAC9B,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,CAAC;YACH,0EAA0E;YAC1E,wDAAwD;YACxD,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChD,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnE,MAAM,GAAG,oBAAoB,CAAC;gBAC5B,QAAQ;gBACR,GAAG;gBACH,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,SAAS,CAAC,EAAE;gBACvG,QAAQ,EAAE,QAAQ,EAAE;gBACpB,YAAY,EAAE,oBAAoB,EAAE;gBACpC,UAAU,EAAE,UAAU,EAAE;gBACxB,kBAAkB,EAAE,OAAO,CAAC,uBAAuB,KAAK,IAAI;aAC7D,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,EAAE;gBACjD,SAAS,EAAE,OAAO,CAAC,KAAK;gBACxB,QAAQ;aACT,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;YACrE,WAAW,CAAC,OAAO,CAAC,CAAC;YACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;YACpG,CAAC;YACD,IAAI,OAAO,CAAC,cAAc,KAAK,uBAAuB,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,CACT,oHAAoH,CACrH,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,+EAA+E,CAAC,CAAC;QAClG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,sFAAsF,CAAC;SACnG,MAAM,CAAC,QAAQ,EAAE,iDAAiD,CAAC;SACnE,MAAM,CAAC,CAAC,UAAkB,EAAE,OAAsB,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACjD,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,OAAO,CAAC,0BAA0B,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lmk.d.ts","sourceRoot":"","sources":["../../src/commands/lmk.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAwHzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoV1D"}
1
+ {"version":3,"file":"lmk.d.ts","sourceRoot":"","sources":["../../src/commands/lmk.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAyHzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsV1D"}
@@ -13,10 +13,12 @@
13
13
  import { client } from '../lib/client.js';
14
14
  import * as output from '../lib/output.js';
15
15
  import { promptConfirm } from '../lib/prompts.js';
16
+ import { registerLmkEscrowCommands } from './lmk-escrow.js';
16
17
  export function registerLmkCommands(program) {
17
18
  const lmk = program
18
19
  .command('lmk')
19
20
  .description('Local Master Key (LMK) management commands');
21
+ registerLmkEscrowCommands(lmk);
20
22
  const rotation = lmk
21
23
  .command('rotation')
22
24
  .description('LMK rotation operations');
@@ -296,9 +298,10 @@ async function runStart(options) {
296
298
  const automatic = options.manual !== true;
297
299
  if (options.force !== true) {
298
300
  output.warn('LMK rotation is a cluster-wide cryptographic operation. The readiness ' +
299
- 'gate will refuse traffic with a 503 while DEK re-wrap runs. Existing ' +
300
- 'lmk.bin will be rotated to a new file (lmk.bin.v<N+1>) back it up ' +
301
- 'before proceeding.');
301
+ 'gate will refuse traffic with a 503 while DEK re-wrap runs. Since v1.40, ' +
302
+ 'data/lmk.bin is the stable BSK and versioned LMKs live wrapped in ' +
303
+ 'PostgreSQL; no lmk.bin.v<N> file is created. The current rotation API is ' +
304
+ 'not yet automatically commit-gated on offline escrow.');
302
305
  if (!automatic) {
303
306
  output.info('Manual mode: only initiate() will run. You will need to follow up ' +
304
307
  'with `znvault lmk rotation resume` to finish the rewrap + complete.');
@@ -340,8 +343,9 @@ async function runStart(options) {
340
343
  '`znvault lmk rotation resume` after resolving the underlying cause.');
341
344
  }
342
345
  else {
343
- output.success(`LMK now at version ${String(result.newLmkVersion)}. Back up the new ` +
344
- `lmk.bin file (data/lmk.bin.v${String(result.newLmkVersion)}) on all nodes.`);
346
+ output.success(`LMK now at version ${String(result.newLmkVersion)}. Create and verify ` +
347
+ `a cumulative BSK + wrapped-LMK escrow snapshot; there is no versioned ` +
348
+ `lmk.bin file to copy.`);
345
349
  }
346
350
  }
347
351
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"lmk.js","sourceRoot":"","sources":["../../src/commands/lmk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lmk.js","sourceRoot":"","sources":["../../src/commands/lmk.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,9 @@ import { TenantOperations } from './tenants.js';
2
2
  import { UserOperations } from './users.js';
3
3
  import { LockdownOperations } from './lockdown.js';
4
4
  import { AuditOperations } from './audit.js';
5
+ import type { LmkEscrowDatabaseSnapshot } from './lmk-escrow.js';
5
6
  export * from './types.js';
7
+ export type { LmkEscrowActiveRotation, LmkEscrowAuditHead, LmkEscrowBackupBinding, LmkEscrowDatabaseSnapshot, LmkEscrowVersionRow, } from './lmk-escrow.js';
6
8
  /**
7
9
  * Composite database client that combines all operation modules.
8
10
  * Uses composition pattern to delegate to specialized operation classes.
@@ -14,6 +16,7 @@ export declare class LocalDBClient {
14
16
  private lockdownOps;
15
17
  private auditOps;
16
18
  private emergencyOps;
19
+ private lmkEscrowOps;
17
20
  constructor();
18
21
  connect(): Promise<void>;
19
22
  close(): Promise<void>;
@@ -37,6 +40,7 @@ export declare class LocalDBClient {
37
40
  resetPassword: (username: string, newPassword: string) => Promise<import("./emergency.js").OperationResult>;
38
41
  unlockUser: (username: string) => Promise<import("./emergency.js").OperationResult>;
39
42
  disableTotp: (username: string) => Promise<import("./emergency.js").OperationResult>;
43
+ captureLmkEscrow: (backupId?: string) => Promise<LmkEscrowDatabaseSnapshot>;
40
44
  }
41
45
  /**
42
46
  * Legacy EmergencyDBClient class (alias for LocalDBClient)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/db/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI7C,cAAc,YAAY,CAAC;AAE3B;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,YAAY,CAAsB;;IAapC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,MAAM,+DAAiC;IACvC,aAAa,8DAAwC;IAGrD,WAAW,GAAI,UAAU,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,+DACjC;IACtC,SAAS,GAAI,IAAI,MAAM,EAAE,YAAY,OAAO,oEACF;IAC1C,cAAc,GAAI,IAAI,MAAM,yDACQ;IAGpC,SAAS,GAAI,UAAU,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,oDAC/B;IAClC,OAAO,GAAI,IAAI,MAAM,yDACM;IAC3B,iBAAiB,GAAI,UAAU,MAAM,yDACM;IAC3C,eAAe,6DACkB;IAGjC,iBAAiB,+DACsB;IACvC,kBAAkB,GAAI,QAAQ,MAAM,oEACS;IAC7C,UAAU,GAAI,UAAU,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,2DAChC;IAGvC,SAAS,GAAI,UAAU,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,0DAC/B;IACnC,gBAAgB,kEACmB;IAGnC,cAAc,+DACuB;IACrC,aAAa,GAAI,UAAU,MAAM,wDACW;IAC5C,aAAa,GAAI,UAAU,MAAM,EAAE,aAAa,MAAM,uDACG;IACzD,UAAU,GAAI,UAAU,MAAM,uDACW;IACzC,WAAW,GAAI,UAAU,MAAM,uDACW;CAC3C;AAID;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;;CAWnD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/db/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAGjE,cAAc,YAAY,CAAC;AAC3B,YAAY,EACV,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAsB;;IAcpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,MAAM,+DAAiC;IACvC,aAAa,8DAAwC;IAGrD,WAAW,GAAI,UAAU,UAAU,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,+DACjC;IACtC,SAAS,GAAI,IAAI,MAAM,EAAE,YAAY,OAAO,oEACF;IAC1C,cAAc,GAAI,IAAI,MAAM,yDACQ;IAGpC,SAAS,GAAI,UAAU,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,oDAC/B;IAClC,OAAO,GAAI,IAAI,MAAM,yDACM;IAC3B,iBAAiB,GAAI,UAAU,MAAM,yDACM;IAC3C,eAAe,6DACkB;IAGjC,iBAAiB,+DACsB;IACvC,kBAAkB,GAAI,QAAQ,MAAM,oEACS;IAC7C,UAAU,GAAI,UAAU,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,2DAChC;IAGvC,SAAS,GAAI,UAAU,UAAU,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,0DAC/B;IACnC,gBAAgB,kEACmB;IAGnC,cAAc,+DACuB;IACrC,aAAa,GAAI,UAAU,MAAM,wDACW;IAC5C,aAAa,GAAI,UAAU,MAAM,EAAE,aAAa,MAAM,uDACG;IACzD,UAAU,GAAI,UAAU,MAAM,uDACW;IACzC,WAAW,GAAI,UAAU,MAAM,uDACW;IAG1C,gBAAgB,GAAI,WAAW,MAAM,KAAG,OAAO,CAAC,yBAAyB,CAAC,CACpC;CACvC;AAID;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;;CAWnD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C"}
@@ -10,6 +10,7 @@ import { UserOperations } from './users.js';
10
10
  import { LockdownOperations } from './lockdown.js';
11
11
  import { AuditOperations } from './audit.js';
12
12
  import { EmergencyOperations } from './emergency.js';
13
+ import { LmkEscrowOperations } from './lmk-escrow.js';
13
14
  // Re-export types
14
15
  export * from './types.js';
15
16
  /**
@@ -23,6 +24,7 @@ export class LocalDBClient {
23
24
  lockdownOps;
24
25
  auditOps;
25
26
  emergencyOps;
27
+ lmkEscrowOps;
26
28
  constructor() {
27
29
  // All operations share the same connection strategy via BaseDBClient
28
30
  this.healthOps = new HealthOperations();
@@ -31,6 +33,7 @@ export class LocalDBClient {
31
33
  this.lockdownOps = new LockdownOperations();
32
34
  this.auditOps = new AuditOperations();
33
35
  this.emergencyOps = new EmergencyOperations();
36
+ this.lmkEscrowOps = new LmkEscrowOperations();
34
37
  }
35
38
  // Connection management - delegate to health ops (or any op, they all have the same base)
36
39
  async connect() {
@@ -45,6 +48,7 @@ export class LocalDBClient {
45
48
  this.lockdownOps.close(),
46
49
  this.auditOps.close(),
47
50
  this.emergencyOps.close(),
51
+ this.lmkEscrowOps.close(),
48
52
  ]);
49
53
  }
50
54
  async disconnect() {
@@ -75,6 +79,8 @@ export class LocalDBClient {
75
79
  resetPassword = (username, newPassword) => this.emergencyOps.resetPassword(username, newPassword);
76
80
  unlockUser = (username) => this.emergencyOps.unlockUser(username);
77
81
  disableTotp = (username) => this.emergencyOps.disableTotp(username);
82
+ // ============ Local LMK Escrow (read-only DB capture) ============
83
+ captureLmkEscrow = (backupId) => this.lmkEscrowOps.capture(backupId);
78
84
  }
79
85
  // ============ Legacy exports for backward compatibility ============
80
86
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/db/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/db/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAE5B;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAS3B;;;GAGG;AACH,MAAM,OAAO,aAAa;IAChB,SAAS,CAAmB;IAC5B,SAAS,CAAmB;IAC5B,OAAO,CAAiB;IACxB,WAAW,CAAqB;IAChC,QAAQ,CAAkB;IAC1B,YAAY,CAAsB;IAClC,YAAY,CAAsB;IAE1C;QACE,qEAAqE;QACrE,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAChD,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,wBAAwB;QACxB,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;YACzB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,mCAAmC;IACnC,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;IACvC,aAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;IAErD,oCAAoC;IACpC,WAAW,GAAG,CAAC,OAAwD,EAAE,EAAE,CACzE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,SAAS,GAAG,CAAC,EAAU,EAAE,SAAmB,EAAE,EAAE,CAC9C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1C,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE,CAC9B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAEpC,kCAAkC;IAClC,SAAS,GAAG,CAAC,OAAoD,EAAE,EAAE,CACnE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3B,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE,CACvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,eAAe,GAAG,GAAG,EAAE,CACrB,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IAEjC,qCAAqC;IACrC,iBAAiB,GAAG,GAAG,EAAE,CACvB,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;IACvC,kBAAkB,GAAG,CAAC,KAAc,EAAE,EAAE,CACtC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7C,UAAU,GAAG,CAAC,OAAyD,EAAE,EAAE,CACzE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEvC,kCAAkC;IAClC,SAAS,GAAG,CAAC,OAAqD,EAAE,EAAE,CACpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACnC,gBAAgB,GAAG,GAAG,EAAE,CACtB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAEnC,iDAAiD;IACjD,cAAc,GAAG,GAAG,EAAE,CACpB,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;IACrC,aAAa,GAAG,CAAC,QAAgB,EAAE,EAAE,CACnC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC5C,aAAa,GAAG,CAAC,QAAgB,EAAE,WAAmB,EAAE,EAAE,CACxD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzD,UAAU,GAAG,CAAC,QAAgB,EAAE,EAAE,CAChC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,WAAW,GAAG,CAAC,QAAgB,EAAE,EAAE,CACjC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE1C,oEAAoE;IACpE,gBAAgB,GAAG,CAAC,QAAiB,EAAsC,EAAE,CAC3E,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;CACvC;AAED,sEAAsE;AAEtE;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClD;QACE,qDAAqD;QACrD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,2EAA2E;gBAC3E,gEAAgE,CACjE,CAAC;QACJ,CAAC;QACD,KAAK,EAAE,CAAC;IACV,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { BaseDBClient } from './client.js';
2
+ export interface LmkEscrowVersionRow {
3
+ version: number;
4
+ keyId: string;
5
+ status: string;
6
+ createdAt: Date | null;
7
+ activatedAt: Date | null;
8
+ deprecatedAt: Date | null;
9
+ retiredAt: Date | null;
10
+ description: string | null;
11
+ createdBy: string | null;
12
+ rotatedFromVersion: number | null;
13
+ deksMigratedCount: number;
14
+ deksPendingCount: number;
15
+ wrappedLmk: Buffer | null;
16
+ }
17
+ export interface LmkEscrowBackupBinding {
18
+ id: string;
19
+ filename: string;
20
+ checksum: string;
21
+ status: string;
22
+ encrypted: true;
23
+ completedAt: Date;
24
+ verifiedAt: Date;
25
+ }
26
+ export interface LmkEscrowAuditHead {
27
+ id: string;
28
+ timestamp: Date | null;
29
+ currentHmac: Buffer;
30
+ lmkVersion: number;
31
+ hmacFormatVersion: number;
32
+ }
33
+ export interface LmkEscrowActiveRotation {
34
+ rotationId: string;
35
+ oldLmkVersion: number;
36
+ newLmkVersion: number;
37
+ status: string;
38
+ startedAt: Date | null;
39
+ }
40
+ export interface LmkEscrowDatabaseSnapshot {
41
+ capturedAt: Date;
42
+ databaseName: string;
43
+ postgresVersion: string;
44
+ walLsn: string;
45
+ transactionSnapshot: string;
46
+ latestMigration: string | null;
47
+ versions: LmkEscrowVersionRow[];
48
+ auditHead: LmkEscrowAuditHead | null;
49
+ activeRotation: LmkEscrowActiveRotation | null;
50
+ backup: LmkEscrowBackupBinding | null;
51
+ }
52
+ /**
53
+ * Read the BSK-adjacent PostgreSQL state in one repeatable-read transaction.
54
+ * This class never unwraps LMKs and never writes to PostgreSQL.
55
+ */
56
+ export declare class LmkEscrowOperations extends BaseDBClient {
57
+ capture(backupId?: string): Promise<LmkEscrowDatabaseSnapshot>;
58
+ }
59
+ //# sourceMappingURL=lmk-escrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lmk-escrow.d.ts","sourceRoot":"","sources":["../../../src/lib/db/lmk-escrow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,IAAI,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,IAAI,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrC,cAAc,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC/C,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACvC;AAqBD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAqHrE"}
@@ -0,0 +1,119 @@
1
+ // Path: src/lib/db/lmk-escrow.ts
2
+ import { BaseDBClient } from './client.js';
3
+ /**
4
+ * Read the BSK-adjacent PostgreSQL state in one repeatable-read transaction.
5
+ * This class never unwraps LMKs and never writes to PostgreSQL.
6
+ */
7
+ export class LmkEscrowOperations extends BaseDBClient {
8
+ async capture(backupId) {
9
+ await this.connect();
10
+ const client = this.getRawClient();
11
+ await client.query('BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ READ ONLY');
12
+ try {
13
+ const identityResult = await client.query(`
14
+ SELECT
15
+ clock_timestamp() AS "capturedAt",
16
+ current_database() AS "databaseName",
17
+ current_setting('server_version') AS "postgresVersion",
18
+ pg_current_wal_lsn()::text AS "walLsn",
19
+ txid_current_snapshot()::text AS "transactionSnapshot",
20
+ (SELECT name FROM _migrations ORDER BY name DESC LIMIT 1) AS "latestMigration"
21
+ `);
22
+ if (identityResult.rows.length !== 1) {
23
+ throw new Error('Could not read PostgreSQL snapshot identity');
24
+ }
25
+ const identity = identityResult.rows[0];
26
+ const versionsResult = await client.query(`
27
+ SELECT
28
+ version,
29
+ key_id AS "keyId",
30
+ status::text AS status,
31
+ created_at AS "createdAt",
32
+ activated_at AS "activatedAt",
33
+ deprecated_at AS "deprecatedAt",
34
+ retired_at AS "retiredAt",
35
+ description,
36
+ created_by AS "createdBy",
37
+ rotated_from_version AS "rotatedFromVersion",
38
+ COALESCE(deks_migrated_count, 0) AS "deksMigratedCount",
39
+ COALESCE(deks_pending_count, 0) AS "deksPendingCount",
40
+ wrapped_lmk AS "wrappedLmk"
41
+ FROM lmk_versions
42
+ WHERE version > 0
43
+ ORDER BY version
44
+ `);
45
+ const auditResult = await client.query(`
46
+ SELECT
47
+ id::text AS id,
48
+ ts AS timestamp,
49
+ curr_hmac AS "currentHmac",
50
+ lmk_version AS "lmkVersion",
51
+ hmac_format_version AS "hmacFormatVersion"
52
+ FROM audit_log
53
+ WHERE curr_hmac IS NOT NULL
54
+ ORDER BY id DESC
55
+ LIMIT 1
56
+ `);
57
+ const rotationResult = await client.query(`
58
+ SELECT
59
+ rotation_id AS "rotationId",
60
+ old_lmk_version AS "oldLmkVersion",
61
+ new_lmk_version AS "newLmkVersion",
62
+ status::text AS status,
63
+ started_at AS "startedAt"
64
+ FROM lmk_rotation_progress
65
+ WHERE status IN ('IN_PROGRESS', 'FAILED')
66
+ ORDER BY started_at DESC
67
+ LIMIT 1
68
+ `);
69
+ let backup = null;
70
+ if (backupId !== undefined) {
71
+ const backupResult = await client.query(`
72
+ SELECT
73
+ id,
74
+ filename,
75
+ checksum,
76
+ status::text AS status,
77
+ encrypted,
78
+ completed_at AS "completedAt",
79
+ verified_at AS "verifiedAt"
80
+ FROM backups
81
+ WHERE id = $1
82
+ AND deleted_at IS NULL
83
+ `, [backupId]);
84
+ if (backupResult.rows.length === 0) {
85
+ throw new Error(`Backup ${backupId} was not found or has been deleted`);
86
+ }
87
+ const backupRow = backupResult.rows[0];
88
+ if (backupRow.status !== 'VERIFIED' ||
89
+ !backupRow.encrypted ||
90
+ backupRow.checksum === null ||
91
+ backupRow.checksum === '' ||
92
+ backupRow.completedAt === null ||
93
+ backupRow.verifiedAt === null) {
94
+ throw new Error(`Backup ${backupId} must be encrypted, VERIFIED and have a checksum`);
95
+ }
96
+ backup = {
97
+ ...backupRow,
98
+ checksum: backupRow.checksum,
99
+ encrypted: true,
100
+ completedAt: backupRow.completedAt,
101
+ verifiedAt: backupRow.verifiedAt,
102
+ };
103
+ }
104
+ await client.query('COMMIT');
105
+ return {
106
+ ...identity,
107
+ versions: versionsResult.rows,
108
+ auditHead: auditResult.rows[0] ?? null,
109
+ activeRotation: rotationResult.rows[0] ?? null,
110
+ backup,
111
+ };
112
+ }
113
+ catch (error) {
114
+ await client.query('ROLLBACK');
115
+ throw error;
116
+ }
117
+ }
118
+ }
119
+ //# sourceMappingURL=lmk-escrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lmk-escrow.js","sourceRoot":"","sources":["../../../src/lib/db/lmk-escrow.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA4E3C;;;GAGG;AACH,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,KAAK,CAAC,OAAO,CAAC,QAAiB;QAC7B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,MAAM,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAElF,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,KAAK,CAAsB;;;;;;;;OAQ9D,CAAC,CAAC;YACH,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAExC,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,KAAK,CAAsB;;;;;;;;;;;;;;;;;;OAkB9D,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,CAAqB;;;;;;;;;;;OAW1D,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,KAAK,CAA0B;;;;;;;;;;;OAWlE,CAAC,CAAC;YAEH,IAAI,MAAM,GAAkC,IAAI,CAAC;YACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAqB;;;;;;;;;;;;SAY3D,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACf,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,oCAAoC,CAAC,CAAC;gBAC1E,CAAC;gBACD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvC,IACE,SAAS,CAAC,MAAM,KAAK,UAAU;oBAC/B,CAAC,SAAS,CAAC,SAAS;oBACpB,SAAS,CAAC,QAAQ,KAAK,IAAI;oBAC3B,SAAS,CAAC,QAAQ,KAAK,EAAE;oBACzB,SAAS,CAAC,WAAW,KAAK,IAAI;oBAC9B,SAAS,CAAC,UAAU,KAAK,IAAI,EAC7B,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,kDAAkD,CAAC,CAAC;gBACxF,CAAC;gBACD,MAAM,GAAG;oBACP,GAAG,SAAS;oBACZ,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,SAAS,CAAC,WAAW;oBAClC,UAAU,EAAE,SAAS,CAAC,UAAU;iBACjC,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO;gBACL,GAAG,QAAQ;gBACX,QAAQ,EAAE,cAAc,CAAC,IAAI;gBAC7B,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI;gBACtC,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI;gBAC9C,MAAM;aACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,51 @@
1
+ import type { LmkEscrowDatabaseSnapshot } from './db/index.js';
2
+ export interface BuildLmkEscrowBundleOptions {
3
+ snapshot: LmkEscrowDatabaseSnapshot;
4
+ bsk: Buffer;
5
+ copyLabel: string;
6
+ operator: string;
7
+ hostname: string;
8
+ vaultVersion: string | null;
9
+ cliVersion: string;
10
+ allowUnboundBackup: boolean;
11
+ }
12
+ export interface LmkEscrowVerificationReport {
13
+ valid: true;
14
+ formatVersion: 1;
15
+ bundleId: string;
16
+ createdAt: string;
17
+ copyLabel: string;
18
+ activeLmkVersion: number;
19
+ recoverability: 'COMPLETE' | 'KNOWN_HISTORICAL_GAPS';
20
+ recoverableVersions: number[];
21
+ unrecoverableVersions: number[];
22
+ bskSha256: string;
23
+ backupId: string | null;
24
+ activeRotationId: string | null;
25
+ }
26
+ export interface WriteLmkEscrowBundleOptions {
27
+ mountPath: string;
28
+ filename: string;
29
+ /** Unit tests only. Production callers must require a dedicated mount. */
30
+ requireDedicatedMount?: boolean;
31
+ }
32
+ export interface LmkEscrowWriteReceipt extends LmkEscrowVerificationReport {
33
+ path: string;
34
+ bytes: number;
35
+ fullFileSha256: string;
36
+ }
37
+ /**
38
+ * Build the compact binary custody bundle entirely in memory. Callers must
39
+ * overwrite the returned Buffer after the direct write completes.
40
+ */
41
+ export declare function buildLmkEscrowBundle(options: BuildLmkEscrowBundleOptions): Buffer;
42
+ export declare function verifyLmkEscrowBundleBuffer(bundle: Buffer): LmkEscrowVerificationReport;
43
+ export declare function makeLmkEscrowFilename(report: LmkEscrowVerificationReport): string;
44
+ /**
45
+ * Write once to the final filename, flush, reopen from the destination and
46
+ * verify. A failed/partial final file is deliberately retained for evidence;
47
+ * the filename can never be reused because O_EXCL is mandatory.
48
+ */
49
+ export declare function writeLmkEscrowBundleDirect(bundle: Buffer, options: WriteLmkEscrowBundleOptions): LmkEscrowWriteReceipt;
50
+ export declare function readAndVerifyLmkEscrowBundle(filePath: string): LmkEscrowVerificationReport;
51
+ //# sourceMappingURL=lmk-escrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lmk-escrow.d.ts","sourceRoot":"","sources":["../../src/lib/lmk-escrow.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAoF/D,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,yBAAyB,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,IAAI,CAAC;IACZ,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,UAAU,GAAG,uBAAuB,CAAC;IACrD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,qBAAsB,SAAQ,2BAA2B;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AA8KD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,CA2CjF;AAgLD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,2BAA2B,CAyEvF;AAgCD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM,CAKjF;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,2BAA2B,GACnC,qBAAqB,CA+CvB;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,2BAA2B,CAa1F"}