@zincapp/znvault-cli 4.22.1 → 4.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/commands/lmk-escrow.d.ts.map +1 -1
  2. package/dist/commands/lmk-escrow.js +71 -5
  3. package/dist/commands/lmk-escrow.js.map +1 -1
  4. package/dist/commands/lmk-preflight.d.ts +3 -0
  5. package/dist/commands/lmk-preflight.d.ts.map +1 -0
  6. package/dist/commands/lmk-preflight.js +117 -0
  7. package/dist/commands/lmk-preflight.js.map +1 -0
  8. package/dist/commands/lmk-restore-drill.d.ts +3 -0
  9. package/dist/commands/lmk-restore-drill.d.ts.map +1 -0
  10. package/dist/commands/lmk-restore-drill.js +160 -0
  11. package/dist/commands/lmk-restore-drill.js.map +1 -0
  12. package/dist/commands/lmk.d.ts.map +1 -1
  13. package/dist/commands/lmk.js +4 -0
  14. package/dist/commands/lmk.js.map +1 -1
  15. package/dist/index.js +35 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/bsk-source.d.ts +21 -0
  18. package/dist/lib/bsk-source.d.ts.map +1 -0
  19. package/dist/lib/bsk-source.js +89 -0
  20. package/dist/lib/bsk-source.js.map +1 -0
  21. package/dist/lib/config/index.d.ts +1 -1
  22. package/dist/lib/config/index.d.ts.map +1 -1
  23. package/dist/lib/config/index.js +1 -1
  24. package/dist/lib/config/index.js.map +1 -1
  25. package/dist/lib/config/profile.d.ts +14 -0
  26. package/dist/lib/config/profile.d.ts.map +1 -1
  27. package/dist/lib/config/profile.js +22 -0
  28. package/dist/lib/config/profile.js.map +1 -1
  29. package/dist/lib/config.d.ts +1 -1
  30. package/dist/lib/config.d.ts.map +1 -1
  31. package/dist/lib/config.js +1 -1
  32. package/dist/lib/config.js.map +1 -1
  33. package/dist/lib/db/index.d.ts +9 -1
  34. package/dist/lib/db/index.d.ts.map +1 -1
  35. package/dist/lib/db/index.js +9 -0
  36. package/dist/lib/db/index.js.map +1 -1
  37. package/dist/lib/db/lmk-escrow.d.ts +18 -0
  38. package/dist/lib/db/lmk-escrow.d.ts.map +1 -1
  39. package/dist/lib/db/lmk-escrow.js +25 -0
  40. package/dist/lib/db/lmk-escrow.js.map +1 -1
  41. package/dist/lib/db/preflight.d.ts +42 -0
  42. package/dist/lib/db/preflight.d.ts.map +1 -0
  43. package/dist/lib/db/preflight.js +165 -0
  44. package/dist/lib/db/preflight.js.map +1 -0
  45. package/dist/lib/kcv.d.ts +34 -0
  46. package/dist/lib/kcv.d.ts.map +1 -0
  47. package/dist/lib/kcv.js +89 -0
  48. package/dist/lib/kcv.js.map +1 -0
  49. package/dist/lib/lmk-escrow-restore.d.ts +6 -2
  50. package/dist/lib/lmk-escrow-restore.d.ts.map +1 -1
  51. package/dist/lib/lmk-escrow-restore.js +1 -1
  52. package/dist/lib/lmk-escrow-restore.js.map +1 -1
  53. package/dist/lib/lmk-escrow.d.ts +14 -1
  54. package/dist/lib/lmk-escrow.d.ts.map +1 -1
  55. package/dist/lib/lmk-escrow.js +5 -1
  56. package/dist/lib/lmk-escrow.js.map +1 -1
  57. package/dist/lib/preflight.d.ts +93 -0
  58. package/dist/lib/preflight.d.ts.map +1 -0
  59. package/dist/lib/preflight.js +129 -0
  60. package/dist/lib/preflight.js.map +1 -0
  61. package/dist/lib/restore-drill.d.ts +73 -0
  62. package/dist/lib/restore-drill.d.ts.map +1 -0
  63. package/dist/lib/restore-drill.js +185 -0
  64. package/dist/lib/restore-drill.js.map +1 -0
  65. package/dist/lib/sentinel-client.d.ts +26 -0
  66. package/dist/lib/sentinel-client.d.ts.map +1 -0
  67. package/dist/lib/sentinel-client.js +165 -0
  68. package/dist/lib/sentinel-client.js.map +1 -0
  69. package/package.json +1 -1
@@ -0,0 +1,165 @@
1
+ // Path: src/lib/db/preflight.ts
2
+ import { BaseDBClient } from './client.js';
3
+ /**
4
+ * Capture the key-hierarchy state a BSK rotation depends on.
5
+ *
6
+ * READ ONLY, AND SAID SO TO POSTGRESQL. The transaction is opened
7
+ * `REPEATABLE READ READ ONLY`, which makes any write on this connection fail
8
+ * with SQLSTATE 25006 rather than relying on nobody having added one. Test 1.1
9
+ * of the milestone is "preflight over production, and ZERO writes"; a promise
10
+ * kept only by inspection is not evidence.
11
+ *
12
+ * WHY NOT THE API. `/v1/superadmin/rootkey/status` and `.../verify` each WRITE
13
+ * AN AUDIT ROW. Reading the state through them would break the zero-writes
14
+ * property invisibly — the preflight would be the thing that falsified its own
15
+ * result. This reads PostgreSQL directly, exactly as the escrow snapshot does.
16
+ *
17
+ * REPEATABLE READ, not READ COMMITTED: every query below must see one instant.
18
+ * A version list read before a rotation commits and an envelope list read after
19
+ * would produce an inventory that never existed, and the gates would be
20
+ * evaluated over that.
21
+ *
22
+ * Nothing here selects key material. `wrapped_lmk` is read as `octet_length`
23
+ * only, `root_key_envelopes.ciphertext` is not read at all.
24
+ */
25
+ export class PreflightOperations extends BaseDBClient {
26
+ async capture() {
27
+ await this.connect();
28
+ const client = this.getRawClient();
29
+ await client.query('BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ READ ONLY');
30
+ try {
31
+ const identityResult = await client.query(`
32
+ SELECT
33
+ clock_timestamp() AS "capturedAt",
34
+ current_database() AS "databaseName",
35
+ current_setting('server_version') AS "postgresVersion",
36
+ pg_current_wal_lsn()::text AS "walLsn",
37
+ txid_current_snapshot()::text AS "transactionSnapshot",
38
+ (SELECT name FROM _migrations ORDER BY name DESC LIMIT 1) AS "latestMigration",
39
+ to_regclass('public.root_key_envelopes')::text AS "rootKeyEnvelopesTable"
40
+ `);
41
+ // pg's types claim `rows[0]` is always present. It is not, and a
42
+ // preflight that reads `undefined.databaseName` reports a crash where it
43
+ // should report an unreadable database.
44
+ const identity = identityResult.rows.at(0);
45
+ if (identity === undefined) {
46
+ throw new Error('Could not read PostgreSQL snapshot identity');
47
+ }
48
+ // octet_length, never the bytes. A preflight that pulled wrapped key
49
+ // material into a CLI process would put it in a core dump, a swap file
50
+ // and an error report, for no gain: every gate here is about presence.
51
+ const versionsResult = await client.query(`
52
+ SELECT
53
+ version,
54
+ status::text AS status,
55
+ octet_length(wrapped_lmk) AS "wrappedBytes"
56
+ FROM lmk_versions
57
+ ORDER BY version
58
+ `);
59
+ const rootKeyEnvelopesTablePresent = identity.rootKeyEnvelopesTable !== null;
60
+ // A node predating migration 092 has no such table, and `to_regclass`
61
+ // answering NULL is the only safe way to ask — a failing query would
62
+ // abort the whole transaction, losing the reads already taken.
63
+ const envelopesResult = rootKeyEnvelopesTablePresent
64
+ ? await client.query(`
65
+ SELECT
66
+ provider_id AS "providerId",
67
+ provider_type AS "providerType",
68
+ key_id AS "keyId",
69
+ kcv
70
+ FROM root_key_envelopes
71
+ ORDER BY provider_id
72
+ `)
73
+ : { rows: [] };
74
+ const rotationResult = await client.query(`
75
+ SELECT
76
+ rotation_id AS "rotationId",
77
+ old_lmk_version AS "oldLmkVersion",
78
+ new_lmk_version AS "newLmkVersion",
79
+ status::text AS status,
80
+ started_at AS "startedAt"
81
+ FROM lmk_rotation_progress
82
+ WHERE status IN ('IN_PROGRESS', 'FAILED')
83
+ ORDER BY started_at DESC
84
+ `);
85
+ const auditResult = await client.query(`
86
+ SELECT
87
+ id::text AS id,
88
+ ts AS timestamp,
89
+ curr_hmac AS "currentHmac",
90
+ lmk_version AS "lmkVersion",
91
+ hmac_format_version AS "hmacFormatVersion"
92
+ FROM audit_log
93
+ WHERE curr_hmac IS NOT NULL
94
+ ORDER BY id DESC
95
+ LIMIT 1
96
+ `);
97
+ const backupResult = await client.query(`
98
+ SELECT
99
+ id,
100
+ filename,
101
+ completed_at AS "completedAt",
102
+ verified_at AS "verifiedAt"
103
+ FROM backups
104
+ WHERE deleted_at IS NULL
105
+ AND status::text = 'VERIFIED'
106
+ AND encrypted = true
107
+ AND verified_at IS NOT NULL
108
+ AND completed_at IS NOT NULL
109
+ ORDER BY verified_at DESC
110
+ LIMIT 1
111
+ `);
112
+ await client.query('COMMIT');
113
+ const auditHeadRow = auditResult.rows.at(0);
114
+ const backupRow = backupResult.rows.at(0);
115
+ return {
116
+ capturedAt: identity.capturedAt,
117
+ databaseName: identity.databaseName,
118
+ postgresVersion: identity.postgresVersion,
119
+ walLsn: identity.walLsn,
120
+ transactionSnapshot: identity.transactionSnapshot,
121
+ latestMigration: identity.latestMigration,
122
+ lmkVersions: versionsResult.rows.map((row) => {
123
+ const bytes = row.wrappedBytes === null ? 0 : Number(row.wrappedBytes);
124
+ return {
125
+ version: row.version,
126
+ status: row.status,
127
+ hasWrappedLmk: bytes > 0,
128
+ wrappedBytes: bytes,
129
+ };
130
+ }),
131
+ rootKeyEnvelopes: envelopesResult.rows,
132
+ rootKeyEnvelopesTablePresent,
133
+ activeRotations: rotationResult.rows.map((row) => ({
134
+ rotationId: row.rotationId,
135
+ oldLmkVersion: row.oldLmkVersion,
136
+ newLmkVersion: row.newLmkVersion,
137
+ status: row.status,
138
+ startedAt: row.startedAt?.toISOString() ?? null,
139
+ })),
140
+ auditHead: auditHeadRow !== undefined
141
+ ? {
142
+ id: auditHeadRow.id,
143
+ timestamp: auditHeadRow.timestamp?.toISOString() ?? null,
144
+ currentHmacBase64: Buffer.from(auditHeadRow.currentHmac).toString('base64'),
145
+ lmkVersion: auditHeadRow.lmkVersion,
146
+ hmacFormatVersion: auditHeadRow.hmacFormatVersion,
147
+ }
148
+ : null,
149
+ latestVerifiedBackup: backupRow !== undefined
150
+ ? {
151
+ id: backupRow.id,
152
+ filename: backupRow.filename,
153
+ completedAt: backupRow.completedAt.toISOString(),
154
+ verifiedAt: backupRow.verifiedAt.toISOString(),
155
+ }
156
+ : null,
157
+ };
158
+ }
159
+ catch (error) {
160
+ await client.query('ROLLBACK');
161
+ throw error;
162
+ }
163
+ }
164
+ }
165
+ //# sourceMappingURL=preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/lib/db/preflight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /** Domain-separation label. Versioned; changing it is a new KCV format. */
2
+ export declare const BSK_KCV_CONTEXT = "zn-vault-bsk-kcv-v1";
3
+ /**
4
+ * Compute the publishable Key Check Value of a bootstrap key.
5
+ *
6
+ * Deterministic: same key, same KCV — across providers, nodes and sites.
7
+ * Safe to log and display; never reveals or accelerates recovery of the key.
8
+ *
9
+ * @throws if the key is not exactly 32 bytes. A short buffer would still
10
+ * produce a well-formed fingerprint — of the wrong thing — and the escrow
11
+ * gate would report it as "the two custodies hold different keys".
12
+ */
13
+ export declare function computeBskKcv(key: Buffer): string;
14
+ /**
15
+ * Is this string a KCV of the construction above?
16
+ *
17
+ * On this side of the port the values being gated arrive from PostgreSQL
18
+ * (`root_key_envelopes.kcv`, a TEXT column with no CHECK constraint) and from
19
+ * an unauthenticated `/v1/health` body. They are not merely compared: they are
20
+ * republished into signed preflight evidence that leaves the CPD. A
21
+ * "looks-plausible" check would let arbitrary text — including something
22
+ * shaped like key material — into that artefact.
23
+ *
24
+ * Pinning the ACTUAL construction closes it for free: anything a KCV
25
+ * comparison could ever legitimately succeed against matches this pattern, so
26
+ * refusing everything else costs nothing. A malformed value is a protocol
27
+ * violation, distinct from — and checked before — a well-formed KCV that
28
+ * disagrees.
29
+ *
30
+ * Non-strings return false rather than throwing: the caller is reading a
31
+ * nullable column.
32
+ */
33
+ export declare function isBskKcv(value: string): boolean;
34
+ //# sourceMappingURL=kcv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kcv.d.ts","sourceRoot":"","sources":["../../src/lib/kcv.ts"],"names":[],"mappings":"AAuCA,2EAA2E;AAC3E,eAAO,MAAM,eAAe,wBAAwB,CAAC;AAKrD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQjD;AASD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAG/C"}
@@ -0,0 +1,89 @@
1
+ // Path: src/lib/kcv.ts
2
+ //
3
+ // Key Check Value (KCV) for the vault's bootstrap key (BSK).
4
+ //
5
+ // PORT NOTICE. This is the CLI-side copy of
6
+ // zn-vault/src/vault-crypto/root-key/kcv.ts. The construction, the label, the
7
+ // truncation and the pattern are identical, and they must stay identical:
8
+ // this package compares its output against `root_key_envelopes.kcv` and
9
+ // against the `rootKey.kcv` that every node publishes on /v1/health.
10
+ //
11
+ // The copy exists because znvault-cli ships to npm on its own and has no path
12
+ // to the server's `src/`. Two copies of a contract are normally how a contract
13
+ // dies quietly — both suites green, the two sides agreeing on nothing. The
14
+ // defence is that NEITHER side is checked against the other: both are checked
15
+ // against the same frozen golden vectors (test/lib/kcv.test.ts here,
16
+ // src/vault-crypto/root-key/kcv.test.ts there). Change the label or the
17
+ // truncation on either side and both suites go red.
18
+ //
19
+ // If you are here to "fix" a golden-vector failure: don't. It means the
20
+ // fingerprint of every envelope already recorded in production just changed
21
+ // meaning.
22
+ //
23
+ // ---------------------------------------------------------------------------
24
+ //
25
+ // The KCV answers "is this the correct BSK?" WITHOUT exposing the key:
26
+ //
27
+ // KCV = "kcv1:" + hex( HMAC-SHA256(key = BSK, msg = "zn-vault-bsk-kcv-v1")[0..16) )
28
+ //
29
+ // HMAC-SHA256 is a PRF, so with the key unknown the output reveals nothing
30
+ // about it; publishing a KCV hands an attacker only an offline equality check
31
+ // at one HMAC per candidate, which is no speedup against a uniformly random
32
+ // 256-bit key. The dedicated, versioned label keeps the BSK out of the
33
+ // production AES-GCM cipher entirely and pins the value's purpose so it cannot
34
+ // collide with any other derivation. Truncation to 128 bits is for equality
35
+ // comparison, not collision resistance against an adversary who picks the
36
+ // keys; NIST SP 800-107 sanctions truncated HMAC at >= 112 bits.
37
+ import { createHmac } from 'node:crypto';
38
+ /** Domain-separation label. Versioned; changing it is a new KCV format. */
39
+ export const BSK_KCV_CONTEXT = 'zn-vault-bsk-kcv-v1';
40
+ const BSK_LEN = 32;
41
+ const KCV_TRUNC_BYTES = 16;
42
+ /**
43
+ * Compute the publishable Key Check Value of a bootstrap key.
44
+ *
45
+ * Deterministic: same key, same KCV — across providers, nodes and sites.
46
+ * Safe to log and display; never reveals or accelerates recovery of the key.
47
+ *
48
+ * @throws if the key is not exactly 32 bytes. A short buffer would still
49
+ * produce a well-formed fingerprint — of the wrong thing — and the escrow
50
+ * gate would report it as "the two custodies hold different keys".
51
+ */
52
+ export function computeBskKcv(key) {
53
+ if (key.length !== BSK_LEN) {
54
+ throw new Error(`KCV requires a ${String(BSK_LEN)}-byte key, got ${String(key.length)} bytes`);
55
+ }
56
+ const mac = createHmac('sha256', key).update(BSK_KCV_CONTEXT, 'utf-8').digest();
57
+ return `kcv1:${mac.subarray(0, KCV_TRUNC_BYTES).toString('hex')}`;
58
+ }
59
+ /**
60
+ * Exactly what {@link computeBskKcv} emits: the literal `kcv1:` prefix and the
61
+ * 128-bit truncated MAC as 32 LOWERCASE hex characters. Anchored at both ends,
62
+ * so nothing can be appended or prepended.
63
+ */
64
+ const BSK_KCV_PATTERN = /^kcv1:[0-9a-f]{32}$/;
65
+ /**
66
+ * Is this string a KCV of the construction above?
67
+ *
68
+ * On this side of the port the values being gated arrive from PostgreSQL
69
+ * (`root_key_envelopes.kcv`, a TEXT column with no CHECK constraint) and from
70
+ * an unauthenticated `/v1/health` body. They are not merely compared: they are
71
+ * republished into signed preflight evidence that leaves the CPD. A
72
+ * "looks-plausible" check would let arbitrary text — including something
73
+ * shaped like key material — into that artefact.
74
+ *
75
+ * Pinning the ACTUAL construction closes it for free: anything a KCV
76
+ * comparison could ever legitimately succeed against matches this pattern, so
77
+ * refusing everything else costs nothing. A malformed value is a protocol
78
+ * violation, distinct from — and checked before — a well-formed KCV that
79
+ * disagrees.
80
+ *
81
+ * Non-strings return false rather than throwing: the caller is reading a
82
+ * nullable column.
83
+ */
84
+ export function isBskKcv(value) {
85
+ if (typeof value !== 'string')
86
+ return false;
87
+ return BSK_KCV_PATTERN.test(value);
88
+ }
89
+ //# sourceMappingURL=kcv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kcv.js","sourceRoot":"","sources":["../../src/lib/kcv.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,EAAE;AACF,6DAA6D;AAC7D,EAAE;AACF,4CAA4C;AAC5C,8EAA8E;AAC9E,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,8EAA8E;AAC9E,qEAAqE;AACrE,wEAAwE;AACxE,oDAAoD;AACpD,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,WAAW;AACX,EAAE;AACF,8EAA8E;AAC9E,EAAE;AACF,uEAAuE;AACvE,EAAE;AACF,sFAAsF;AACtF,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,4EAA4E;AAC5E,uEAAuE;AACvE,+EAA+E;AAC/E,4EAA4E;AAC5E,0EAA0E;AAC1E,iEAAiE;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAErD,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,kBAAkB,MAAM,CAAC,OAAO,CAAC,kBAAkB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAC9E,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;IAChF,OAAO,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAE9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC"}
@@ -14,8 +14,12 @@ export interface RestoreBootstrapKeyReport {
14
14
  bundleId: string;
15
15
  copyLabel: string;
16
16
  activeLmkVersion: number;
17
- /** Publishable fingerprint. Safe for logs, receipts and drill records. */
18
- bskSha256: string;
17
+ /**
18
+ * Publishable fingerprint (`kcv1:`), safe for logs, receipts and drill
19
+ * records — and, unlike the raw digest it replaces, safe to publish in a
20
+ * document that outlives the drill. See LmkEscrowVerificationReport.bskKcv.
21
+ */
22
+ bskKcv: string;
19
23
  }
20
24
  /**
21
25
  * Restore the bootstrap key carried by `bundle` to `targetPath`.
@@ -1 +1 @@
1
- {"version":3,"file":"lmk-escrow-restore.d.ts","sourceRoot":"","sources":["../../src/lib/lmk-escrow-restore.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,0BAA0B;IACzC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,OAAO,EAAE,UAAU,GAAG,iBAAiB,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,0BAA0B,GAClC,yBAAyB,CAsD3B"}
1
+ {"version":3,"file":"lmk-escrow-restore.d.ts","sourceRoot":"","sources":["../../src/lib/lmk-escrow-restore.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,0BAA0B;IACzC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,OAAO,EAAE,UAAU,GAAG,iBAAiB,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,0BAA0B,GAClC,yBAAyB,CAsD3B"}
@@ -80,7 +80,7 @@ function describe(outcome, targetPath, report) {
80
80
  bundleId: report.bundleId,
81
81
  copyLabel: report.copyLabel,
82
82
  activeLmkVersion: report.activeLmkVersion,
83
- bskSha256: report.bskSha256,
83
+ bskKcv: report.bskKcv,
84
84
  };
85
85
  }
86
86
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"lmk-escrow-restore.js","sourceRoot":"","sources":["../../src/lib/lmk-escrow-restore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lmk-escrow-restore.js","sourceRoot":"","sources":["../../src/lib/lmk-escrow-restore.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,20 @@ export interface LmkEscrowVerificationReport {
19
19
  recoverability: 'COMPLETE' | 'KNOWN_HISTORICAL_GAPS';
20
20
  recoverableVersions: number[];
21
21
  unrecoverableVersions: number[];
22
- bskSha256: string;
22
+ /**
23
+ * Publishable fingerprint of the bootstrap key inside the bundle:
24
+ * `kcv1:` + 128-bit truncated HMAC under a dedicated label.
25
+ *
26
+ * NOT the raw SHA-256 that the on-disk metadata stores. This report is the
27
+ * artefact that LEAVES the CPD — it goes to an auditor, a drill log, a
28
+ * ticket — and a full, untruncated digest of the key published in writing is
29
+ * a verification oracle: it makes any future partial exposure of the key
30
+ * confirmable, by anyone holding the document, for as long as it exists. The
31
+ * KCV answers the only question a receipt needs to answer ("is this the same
32
+ * key?") and is the same fingerprint every node publishes on /v1/health, so
33
+ * the two can actually be compared. See ROOT_OF_TRUST.md.
34
+ */
35
+ bskKcv: string;
23
36
  backupId: string | null;
24
37
  activeRotationId: string | null;
25
38
  }
@@ -1 +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;AA0PD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,2BAA2B,CAOvF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,2BAA2B,KAAK,CAAC,GAC1D,CAAC,CAQH;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"}
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;AAiG/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;;;;;;;;;;;;OAYG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,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;AA6PD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,2BAA2B,CAOvF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,2BAA2B,KAAK,CAAC,GAC1D,CAAC,CAQH;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"}
@@ -2,6 +2,7 @@
2
2
  import { closeSync, constants as fsConstants, fchmodSync, fsyncSync, lstatSync, openSync, readFileSync, realpathSync, statSync, writeSync, } from 'node:fs';
3
3
  import { createDecipheriv, createHash, timingSafeEqual, } from 'node:crypto';
4
4
  import { dirname, isAbsolute, join, normalize, resolve, sep } from 'node:path';
5
+ import { computeBskKcv } from './kcv.js';
5
6
  const MAGIC = Buffer.from('ZNVAULT-LMK-ESCROW\n', 'ascii');
6
7
  const FORMAT_VERSION = 1;
7
8
  const DIGEST_BYTES = 32;
@@ -436,7 +437,10 @@ function validateParsedBundle(parsed) {
436
437
  recoverability: complete ? 'COMPLETE' : 'KNOWN_HISTORICAL_GAPS',
437
438
  recoverableVersions,
438
439
  unrecoverableVersions,
439
- bskSha256: parsed.metadata.bskSha256,
440
+ // Computed from the key the bundle actually carries, not copied out of
441
+ // the metadata block: a receipt that echoes the file it just read
442
+ // confirms nothing about the key inside it.
443
+ bskKcv: computeBskKcv(parsed.bsk),
440
444
  backupId: parsed.metadata.backup.state === 'VERIFIED' ? parsed.metadata.backup.id : null,
441
445
  activeRotationId: parsed.metadata.activeRotation?.rotationId ?? null,
442
446
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lmk-escrow.js","sourceRoot":"","sources":["../../src/lib/lmk-escrow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lmk-escrow.js","sourceRoot":"","sources":["../../src/lib/lmk-escrow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ export interface PreflightLmkVersion {
2
+ version: number;
3
+ status: string;
4
+ hasWrappedLmk: boolean;
5
+ wrappedBytes: number;
6
+ }
7
+ export interface PreflightEnvelope {
8
+ providerId: string;
9
+ providerType: string;
10
+ keyId: string | null;
11
+ kcv: string;
12
+ }
13
+ export interface PreflightRotation {
14
+ rotationId: string;
15
+ oldLmkVersion: number;
16
+ newLmkVersion: number;
17
+ status: string;
18
+ startedAt: string | null;
19
+ }
20
+ export interface PreflightAuditHead {
21
+ id: string;
22
+ timestamp: string | null;
23
+ currentHmacBase64: string;
24
+ lmkVersion: number;
25
+ hmacFormatVersion: number;
26
+ }
27
+ export interface PreflightBackup {
28
+ id: string;
29
+ filename: string;
30
+ completedAt: string;
31
+ verifiedAt: string;
32
+ }
33
+ /**
34
+ * The signed-in-A2 body. Everything a gate needs must live in here: a gate
35
+ * that reaches outside this object cannot be re-evaluated from the artefact.
36
+ */
37
+ export interface PreflightBody {
38
+ /** In-band artefact tag, so a file cannot be mistaken for another format. */
39
+ artifact: 'znvault-preflight-v1';
40
+ capturedAt: string;
41
+ cliVersion: string;
42
+ operator: string;
43
+ hostname: string;
44
+ database: {
45
+ databaseName: string;
46
+ postgresVersion: string;
47
+ walLsn: string;
48
+ transactionSnapshot: string;
49
+ latestMigration: string | null;
50
+ };
51
+ lmkVersions: PreflightLmkVersion[];
52
+ rootKeyEnvelopes: PreflightEnvelope[];
53
+ rootKeyEnvelopesTablePresent: boolean;
54
+ activeRotations: PreflightRotation[];
55
+ auditHead: PreflightAuditHead | null;
56
+ latestVerifiedBackup: PreflightBackup | null;
57
+ }
58
+ export type GateStatus = 'PASS' | 'FAIL' | 'NOT_APPLICABLE';
59
+ /**
60
+ * BLOCKING failures set the exit code. INFORMATIONAL failures are recorded and
61
+ * do not — see the module header for why the distinction is load-bearing
62
+ * rather than cosmetic.
63
+ */
64
+ export type GateSeverity = 'BLOCKING' | 'INFORMATIONAL';
65
+ export interface PreflightGate {
66
+ id: string;
67
+ severity: GateSeverity;
68
+ status: GateStatus;
69
+ /** One line an operator can act on. Never key material. */
70
+ detail: string;
71
+ }
72
+ export type PreflightVerdict = 'GREEN' | 'RED';
73
+ /**
74
+ * Evaluate every gate over a captured body.
75
+ *
76
+ * Pure: same input, same output, no side effects, no ambient state.
77
+ */
78
+ export declare function evaluateGates(body: PreflightBody): PreflightGate[];
79
+ /**
80
+ * RED when any BLOCKING gate failed; informational failures never change it.
81
+ *
82
+ * `NOT_APPLICABLE` on a blocking gate does not turn the run red on its own —
83
+ * the condition that made it inapplicable is itself reported by another
84
+ * blocking gate, and double-counting it would only obscure which one to fix.
85
+ */
86
+ export declare function overallVerdict(gates: PreflightGate[]): PreflightVerdict;
87
+ /** The full artefact: the captured body plus the gates evaluated over it. */
88
+ export interface PreflightEvidence extends PreflightBody {
89
+ gates: PreflightGate[];
90
+ verdict: PreflightVerdict;
91
+ }
92
+ export declare function buildEvidence(body: PreflightBody): PreflightEvidence;
93
+ //# sourceMappingURL=preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/lib/preflight.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,QAAQ,EAAE,sBAAsB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,4BAA4B,EAAE,OAAO,CAAC;IACtC,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrC,oBAAoB,EAAE,eAAe,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,eAAe,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,KAAK,CAAC;AA2B/C;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,EAAE,CA8JlE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAEvE;AAED,6EAA6E;AAC7E,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,CAGpE"}