@appforge-ci/core 0.3.0 → 0.3.2
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/agent-readiness.d.ts +11 -3
- package/dist/agent-readiness.d.ts.map +1 -1
- package/dist/agent-readiness.js +15 -5
- package/dist/agent-readiness.js.map +1 -1
- package/dist/agent-readiness.test.js +34 -10
- package/dist/agent-readiness.test.js.map +1 -1
- package/dist/api-client.d.ts +39 -1
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +52 -0
- package/dist/api-client.js.map +1 -1
- package/dist/appforge-verify.test.d.ts +2 -0
- package/dist/appforge-verify.test.d.ts.map +1 -0
- package/dist/appforge-verify.test.js +958 -0
- package/dist/appforge-verify.test.js.map +1 -0
- package/dist/attestation-keys.d.ts +20 -0
- package/dist/attestation-keys.d.ts.map +1 -0
- package/dist/attestation-keys.js +27 -0
- package/dist/attestation-keys.js.map +1 -0
- package/dist/attestation-keys.test.d.ts +2 -0
- package/dist/attestation-keys.test.d.ts.map +1 -0
- package/dist/attestation-keys.test.js +45 -0
- package/dist/attestation-keys.test.js.map +1 -0
- package/dist/attestation-signing.d.ts +226 -0
- package/dist/attestation-signing.d.ts.map +1 -0
- package/dist/attestation-signing.js +276 -0
- package/dist/attestation-signing.js.map +1 -0
- package/dist/attestation-signing.test.d.ts +2 -0
- package/dist/attestation-signing.test.d.ts.map +1 -0
- package/dist/attestation-signing.test.js +250 -0
- package/dist/attestation-signing.test.js.map +1 -0
- package/dist/attestation-workerd.test.d.ts +2 -0
- package/dist/attestation-workerd.test.d.ts.map +1 -0
- package/dist/attestation-workerd.test.js +183 -0
- package/dist/attestation-workerd.test.js.map +1 -0
- package/dist/attestation.d.ts +169 -22
- package/dist/attestation.d.ts.map +1 -1
- package/dist/attestation.js +42 -16
- package/dist/attestation.js.map +1 -1
- package/dist/build-vpn.d.ts +11 -1
- package/dist/build-vpn.d.ts.map +1 -1
- package/dist/build-vpn.js +27 -0
- package/dist/build-vpn.js.map +1 -1
- package/dist/fleet-vpn.d.ts +64 -0
- package/dist/fleet-vpn.d.ts.map +1 -0
- package/dist/fleet-vpn.js +88 -0
- package/dist/fleet-vpn.js.map +1 -0
- package/dist/fleet-vpn.test.d.ts +2 -0
- package/dist/fleet-vpn.test.d.ts.map +1 -0
- package/dist/fleet-vpn.test.js +69 -0
- package/dist/fleet-vpn.test.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/schemas-repo-url.test.d.ts +2 -0
- package/dist/schemas-repo-url.test.d.ts.map +1 -0
- package/dist/schemas-repo-url.test.js +67 -0
- package/dist/schemas-repo-url.test.js.map +1 -0
- package/dist/schemas.d.ts +18 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +56 -10
- package/dist/schemas.js.map +1 -1
- package/dist/ssh-deploy-key.d.ts +59 -0
- package/dist/ssh-deploy-key.d.ts.map +1 -0
- package/dist/ssh-deploy-key.js +124 -0
- package/dist/ssh-deploy-key.js.map +1 -0
- package/dist/ssh-deploy-key.test.d.ts +2 -0
- package/dist/ssh-deploy-key.test.d.ts.map +1 -0
- package/dist/ssh-deploy-key.test.js +117 -0
- package/dist/ssh-deploy-key.test.js.map +1 -0
- package/dist/types.d.ts +57 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +1 -1
- package/dist/vpn-attestation-workerd.test.d.ts +2 -0
- package/dist/vpn-attestation-workerd.test.d.ts.map +1 -0
- package/dist/vpn-attestation-workerd.test.js +184 -0
- package/dist/vpn-attestation-workerd.test.js.map +1 -0
- package/dist/vpn-attestation.d.ts +1015 -0
- package/dist/vpn-attestation.d.ts.map +1 -0
- package/dist/vpn-attestation.js +963 -0
- package/dist/vpn-attestation.js.map +1 -0
- package/dist/vpn-attestation.test.d.ts +2 -0
- package/dist/vpn-attestation.test.d.ts.map +1 -0
- package/dist/vpn-attestation.test.js +613 -0
- package/dist/vpn-attestation.test.js.map +1 -0
- package/dist/vpn-egress-presets.d.ts +1 -1
- package/dist/vpn-egress-presets.d.ts.map +1 -1
- package/dist/vpn-egress-presets.js +2 -2
- package/dist/vpn-egress-presets.js.map +1 -1
- package/dist/vpn-sandbox.d.ts +67 -0
- package/dist/vpn-sandbox.d.ts.map +1 -0
- package/dist/vpn-sandbox.js +22 -0
- package/dist/vpn-sandbox.js.map +1 -0
- package/dist/vpn-sandbox.test.d.ts +2 -0
- package/dist/vpn-sandbox.test.d.ts.map +1 -0
- package/dist/vpn-sandbox.test.js +34 -0
- package/dist/vpn-sandbox.test.js.map +1 -0
- package/dist/vpn-ssh.d.ts +93 -0
- package/dist/vpn-ssh.d.ts.map +1 -1
- package/dist/vpn-ssh.js +213 -1
- package/dist/vpn-ssh.js.map +1 -1
- package/dist/vpn-ssh.test.js +200 -1
- package/dist/vpn-ssh.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { test } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { spawn } from "node:child_process";
|
|
4
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
import { createServer } from "node:net";
|
|
7
|
+
import { tmpdir } from "node:os";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import { fileURLToPath } from "node:url";
|
|
10
|
+
/**
|
|
11
|
+
* Ed25519 signing and verification in the real Workers runtime (workerd, the
|
|
12
|
+
* engine production runs on), not only in Node. PR-J only had this from the
|
|
13
|
+
* documentation; this runs the actual signing module inside workerd, with the
|
|
14
|
+
* compatibility date apps/admin-api deploys with.
|
|
15
|
+
*
|
|
16
|
+
* What it proves, in workerd: WebCrypto `Ed25519` import of a PKCS#8 key (the
|
|
17
|
+
* form `ATTESTATION_SIGNING_KEY` takes), public-key derivation through JWK
|
|
18
|
+
* export (how the signer learns its own key id), signing, verification, and
|
|
19
|
+
* that the bytes equal the pinned vectors an independent Node implementation
|
|
20
|
+
* produced (Ed25519 is deterministic, so any runtime must agree exactly).
|
|
21
|
+
*
|
|
22
|
+
* The workerd binary and esbuild are not direct dependencies: they come with
|
|
23
|
+
* `wrangler` (a root devDependency) and are resolved from there, so the
|
|
24
|
+
* lockfile does not change. workerd is run directly rather than through
|
|
25
|
+
* Miniflare, whose 5.x alpha configuration API is still moving. If they cannot
|
|
26
|
+
* be loaded this skips locally, and FAILS when CI is set, so the check cannot
|
|
27
|
+
* silently disappear from the pipeline.
|
|
28
|
+
*/
|
|
29
|
+
const COMPAT_DATE = "2025-04-01"; // apps/admin-api/wrangler.jsonc
|
|
30
|
+
async function loadTooling() {
|
|
31
|
+
try {
|
|
32
|
+
const req = createRequire(import.meta.url);
|
|
33
|
+
const fromWrangler = createRequire(req.resolve("wrangler/package.json"));
|
|
34
|
+
const workerdMod = (await import(fromWrangler.resolve("workerd")));
|
|
35
|
+
const esbuild = (await import(fromWrangler.resolve("esbuild")));
|
|
36
|
+
const build = esbuild.build ?? esbuild.default?.build;
|
|
37
|
+
if (!build || typeof workerdMod.default !== "string")
|
|
38
|
+
return "workerd or esbuild did not expose the expected entry points";
|
|
39
|
+
return { workerd: workerdMod.default, build };
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
return `wrangler's workerd/esbuild could not be loaded (${err instanceof Error ? err.message : String(err)})`;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function freePort() {
|
|
46
|
+
return new Promise((resolve, reject) => {
|
|
47
|
+
const srv = createServer();
|
|
48
|
+
srv.once("error", reject);
|
|
49
|
+
srv.listen(0, "127.0.0.1", () => {
|
|
50
|
+
const { port } = srv.address();
|
|
51
|
+
srv.close(() => resolve(port));
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const WORKER_ENTRY = `
|
|
56
|
+
import { ed25519KeyId, ed25519SeedToPkcs8, bytesToBase64, auditCheckpointStatement, signAuditCheckpoint, createEd25519Signer, verifyEd25519, hexToBytes, bytesToHex } from ${JSON.stringify(fileURLToPath(new URL("./attestation.ts", import.meta.url)))};
|
|
57
|
+
import { ATTESTATION_DOMAIN, buildAttestationKeySet, loadAttestationSigner, signWithDomain, verifyAuditCheckpoint, verifyWithDomain } from ${JSON.stringify(fileURLToPath(new URL("./attestation-signing.ts", import.meta.url)))};
|
|
58
|
+
|
|
59
|
+
export default {
|
|
60
|
+
async fetch() {
|
|
61
|
+
const out = {};
|
|
62
|
+
// The same deterministic test key the Node tests pin (derived from a label, never a production key).
|
|
63
|
+
const seed = new Uint8Array(await crypto.subtle.digest("SHA-256", new TextEncoder().encode("appforge-test-vector-seed-v1")));
|
|
64
|
+
const pkcs8 = ed25519SeedToPkcs8(seed);
|
|
65
|
+
const secret = bytesToBase64(pkcs8);
|
|
66
|
+
|
|
67
|
+
// RFC 8032 test vector 1: the runtime's Ed25519 is the standard algorithm.
|
|
68
|
+
const rfcSigner = await createEd25519Signer("k", ed25519SeedToPkcs8(hexToBytes("9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60")));
|
|
69
|
+
const rfcSig = await rfcSigner.sign(new Uint8Array());
|
|
70
|
+
out.rfc8032 = bytesToHex(rfcSig) === "e5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e065224901555fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b"
|
|
71
|
+
&& (await verifyEd25519(hexToBytes("d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a"), new Uint8Array(), rfcSig));
|
|
72
|
+
|
|
73
|
+
// Derive the public key from the PKCS#8 secret exactly as the production signer does (JWK export), and publish it.
|
|
74
|
+
const probe = await loadAttestationSigner(secret, [], new Date("2026-10-02T00:00:00Z"));
|
|
75
|
+
out.unpublishedKeyId = probe.state === "unpublished" ? probe.keyId : probe.state;
|
|
76
|
+
const pub = await crypto.subtle.importKey("pkcs8", pkcs8, { name: "Ed25519" }, true, ["sign"]);
|
|
77
|
+
const jwk = await crypto.subtle.exportKey("jwk", pub);
|
|
78
|
+
const x = jwk.x.replace(/-/g, "+").replace(/_/g, "/");
|
|
79
|
+
const entry = { kid: probe.keyId, alg: "Ed25519", publicKey: x + "=".repeat((4 - (x.length % 4)) % 4), notBefore: "2026-01-01T00:00:00Z", status: "active" };
|
|
80
|
+
|
|
81
|
+
const state = await loadAttestationSigner(secret, [entry], new Date("2026-10-02T00:00:00Z"));
|
|
82
|
+
out.state = state.state;
|
|
83
|
+
out.keyId = state.keyId;
|
|
84
|
+
const keys = await buildAttestationKeySet([entry]);
|
|
85
|
+
out.keySetOk = keys.ok;
|
|
86
|
+
|
|
87
|
+
const stmt = auditCheckpointStatement({ orgId: "org_acme", seq: 7, hash: "ab".repeat(32), issuedAt: "2026-10-02T14:03:50Z" });
|
|
88
|
+
out.checkpointSignature = await signAuditCheckpoint(state.signer, stmt);
|
|
89
|
+
out.checkpointVerifies = (await verifyAuditCheckpoint(keys.keys, { orgId: "org_acme", seq: 7, hash: "ab".repeat(32), issuedAt: "2026-10-02T14:03:50Z", keyId: state.keyId, signature: out.checkpointSignature })).ok;
|
|
90
|
+
out.tamperRejected = (await verifyAuditCheckpoint(keys.keys, { orgId: "org_acme", seq: 8, hash: "ab".repeat(32), issuedAt: "2026-10-02T14:03:50Z", keyId: state.keyId, signature: out.checkpointSignature })).ok === false;
|
|
91
|
+
|
|
92
|
+
const doc = { issuedAt: "2026-10-02T14:03:50Z", subject: { buildId: "bld_1", orgId: "org_acme" } };
|
|
93
|
+
out.attestationSignature = await signWithDomain(state.signer, ATTESTATION_DOMAIN, doc);
|
|
94
|
+
out.attestationVerifies = (await verifyWithDomain(keys.keys, { domain: ATTESTATION_DOMAIN, value: doc, keyId: state.keyId, signature: out.attestationSignature, issuedAt: doc.issuedAt })).ok;
|
|
95
|
+
|
|
96
|
+
// A non-Ed25519 / garbage secret is refused in this runtime too.
|
|
97
|
+
out.garbageRefused = (await loadAttestationSigner("AAAA", [entry])).state === "invalid";
|
|
98
|
+
return Response.json(out);
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
`;
|
|
102
|
+
test("Ed25519 signing, key derivation and verification work in workerd and match the pinned vectors", async (t) => {
|
|
103
|
+
const tooling = await loadTooling();
|
|
104
|
+
if (typeof tooling === "string") {
|
|
105
|
+
if (process.env.CI)
|
|
106
|
+
assert.fail(tooling);
|
|
107
|
+
t.skip(tooling);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const built = await tooling.build({
|
|
111
|
+
stdin: { contents: WORKER_ENTRY, resolveDir: fileURLToPath(new URL(".", import.meta.url)), sourcefile: "worker-entry.js", loader: "js" },
|
|
112
|
+
bundle: true,
|
|
113
|
+
format: "esm",
|
|
114
|
+
platform: "neutral",
|
|
115
|
+
target: "es2022",
|
|
116
|
+
write: false,
|
|
117
|
+
logLevel: "silent",
|
|
118
|
+
// The sources import each other with ".js" specifiers that name their ".ts" files (NodeNext style).
|
|
119
|
+
plugins: [
|
|
120
|
+
{
|
|
121
|
+
name: "ts-js-specifiers",
|
|
122
|
+
setup(b) {
|
|
123
|
+
const src = fileURLToPath(new URL(".", import.meta.url));
|
|
124
|
+
b.onResolve({ filter: /^\.\.?\/.*\.js$/ }, (args) => {
|
|
125
|
+
if (!args.resolveDir.startsWith(src.replace(/\/$/, "")))
|
|
126
|
+
return undefined; // only this package's own sources (zod etc. resolve normally)
|
|
127
|
+
return { path: fileURLToPath(new URL(args.path.replace(/\.js$/, ".ts"), `file://${args.resolveDir}/`)) };
|
|
128
|
+
});
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
});
|
|
133
|
+
const dir = mkdtempSync(join(tmpdir(), "appforge-workerd-"));
|
|
134
|
+
let child;
|
|
135
|
+
try {
|
|
136
|
+
writeFileSync(join(dir, "worker.mjs"), built.outputFiles[0].text);
|
|
137
|
+
const port = await freePort();
|
|
138
|
+
writeFileSync(join(dir, "config.capnp"), `using Workerd = import "/workerd/workerd.capnp";
|
|
139
|
+
const config :Workerd.Config = (
|
|
140
|
+
services = [(name = "main", worker = .w)],
|
|
141
|
+
sockets = [(name = "http", address = "127.0.0.1:${port}", http = (), service = "main")]
|
|
142
|
+
);
|
|
143
|
+
const w :Workerd.Worker = (
|
|
144
|
+
modules = [(name = "worker", esModule = embed "worker.mjs")],
|
|
145
|
+
compatibilityDate = "${COMPAT_DATE}",
|
|
146
|
+
);
|
|
147
|
+
`);
|
|
148
|
+
child = spawn(tooling.workerd, ["serve", "config.capnp"], { cwd: dir, stdio: ["ignore", "pipe", "pipe"] });
|
|
149
|
+
let log = "";
|
|
150
|
+
child.stdout?.on("data", (d) => (log += d.toString()));
|
|
151
|
+
child.stderr?.on("data", (d) => (log += d.toString()));
|
|
152
|
+
let res;
|
|
153
|
+
for (let i = 0; i < 100 && !res; i++) {
|
|
154
|
+
try {
|
|
155
|
+
res = await fetch(`http://127.0.0.1:${port}/`);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
if (child.exitCode !== null)
|
|
159
|
+
assert.fail(`workerd exited early: ${log}`);
|
|
160
|
+
await new Promise((r) => setTimeout(r, 100));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
assert.ok(res, `workerd never answered: ${log}`);
|
|
164
|
+
assert.equal(res.status, 200, log);
|
|
165
|
+
const out = (await res.json());
|
|
166
|
+
assert.equal(out.rfc8032, true, "RFC 8032 vector 1 reproduces in workerd");
|
|
167
|
+
assert.equal(out.state, "ready");
|
|
168
|
+
assert.equal(out.keyId, "fa0e09426c7aabe2", "public-key derivation (JWK export) in workerd yields the same key id as Node");
|
|
169
|
+
assert.equal(out.unpublishedKeyId, "fa0e09426c7aabe2");
|
|
170
|
+
assert.equal(out.keySetOk, true);
|
|
171
|
+
assert.equal(out.checkpointSignature, "WaJ3iUH1znI8fEAV3o/zvtO6LaP9VIpOTcuuzE0PVqFb/DHJ636nUZXal7I1qME9CJcxGiQMb9S28CsmLHO5DQ==", "byte-identical to the signature Node produces");
|
|
172
|
+
assert.equal(out.attestationSignature, "5SPJuifSVWrD32lYkGeUQUGi9WZ9IP4axfjWSj0kDmaz3J9UUiBN99/zApL0zCtXr8cxnDRaSLwcAQuphHfvBA==");
|
|
173
|
+
assert.equal(out.checkpointVerifies, true);
|
|
174
|
+
assert.equal(out.attestationVerifies, true);
|
|
175
|
+
assert.equal(out.tamperRejected, true);
|
|
176
|
+
assert.equal(out.garbageRefused, true);
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
child?.kill("SIGKILL");
|
|
180
|
+
rmSync(dir, { recursive: true, force: true });
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
//# sourceMappingURL=attestation-workerd.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation-workerd.test.js","sourceRoot":"","sources":["../src/attestation-workerd.test.ts"],"names":[],"mappings":"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"}
|
package/dist/attestation.d.ts
CHANGED
|
@@ -73,19 +73,53 @@ export declare const auditVpnEventDataSchema: z.ZodObject<{
|
|
|
73
73
|
detail: string | null;
|
|
74
74
|
}>;
|
|
75
75
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
76
|
+
* A chain entry that registers a per-build attestation (PR-M): "this exact document, by this key (or by none),
|
|
77
|
+
* was issued". `docSha256` is the sha256 of the document's canonical JSON, which is what ties the entry to the
|
|
78
|
+
* signed document; the offline verifier requires the entry right after the document's own chain head to carry
|
|
79
|
+
* the document's hash and build id. `keyId` is null for an attestation issued while signing was unavailable.
|
|
80
|
+
*/
|
|
81
|
+
export declare const auditAttestationDataSchema: z.ZodObject<{
|
|
82
|
+
buildId: z.ZodString;
|
|
83
|
+
docSha256: z.ZodString;
|
|
84
|
+
keyId: z.ZodNullable<z.ZodString>;
|
|
85
|
+
completeness: z.ZodEnum<["full", "partial", "server_observed_only"]>;
|
|
86
|
+
}, "strict", z.ZodTypeAny, {
|
|
87
|
+
buildId: string;
|
|
88
|
+
docSha256: string;
|
|
89
|
+
keyId: string | null;
|
|
90
|
+
completeness: "full" | "partial" | "server_observed_only";
|
|
91
|
+
}, {
|
|
92
|
+
buildId: string;
|
|
93
|
+
docSha256: string;
|
|
94
|
+
keyId: string | null;
|
|
95
|
+
completeness: "full" | "partial" | "server_observed_only";
|
|
96
|
+
}>;
|
|
97
|
+
export type AuditAttestationData = z.infer<typeof auditAttestationDataSchema>;
|
|
98
|
+
/**
|
|
99
|
+
* A chain entry that records evidence which was expected and is missing, so the absence itself is part of the
|
|
100
|
+
* tamper-evident history (PR-M: a regulated build whose agent never reported).
|
|
101
|
+
*/
|
|
102
|
+
export declare const auditGapDataSchema: z.ZodObject<{
|
|
103
|
+
buildId: z.ZodString;
|
|
104
|
+
reason: z.ZodString;
|
|
105
|
+
detail: z.ZodString;
|
|
106
|
+
}, "strict", z.ZodTypeAny, {
|
|
107
|
+
buildId: string;
|
|
108
|
+
detail: string;
|
|
109
|
+
reason: string;
|
|
110
|
+
}, {
|
|
111
|
+
buildId: string;
|
|
112
|
+
detail: string;
|
|
113
|
+
reason: string;
|
|
114
|
+
}>;
|
|
115
|
+
export type AuditGapData = z.infer<typeof auditGapDataSchema>;
|
|
116
|
+
/**
|
|
117
|
+
* What a chain entry's `payload` column holds. The known `kind`s are `vpn_event`, `attestation` and `gap`;
|
|
118
|
+
* a verifier must reject a kind it does not know rather than skip it, and `scripts/appforge-verify.mjs`
|
|
119
|
+
* (KNOWN_KINDS) is kept to this list by a test.
|
|
79
120
|
*/
|
|
80
121
|
export declare const auditEntryPayloadSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
81
|
-
v: z.ZodLiteral<1>;
|
|
82
|
-
seq: z.ZodNumber;
|
|
83
|
-
orgId: z.ZodString;
|
|
84
122
|
kind: z.ZodLiteral<"vpn_event">;
|
|
85
|
-
/** `VpnEvent.id` */
|
|
86
|
-
ref: z.ZodString;
|
|
87
|
-
/** When the source event was recorded (UTC). */
|
|
88
|
-
at: z.ZodString;
|
|
89
123
|
data: z.ZodObject<{
|
|
90
124
|
type: z.ZodString;
|
|
91
125
|
tunnelId: z.ZodNullable<z.ZodString>;
|
|
@@ -105,13 +139,31 @@ export declare const auditEntryPayloadSchema: z.ZodDiscriminatedUnion<"kind", [z
|
|
|
105
139
|
agentId: string | null;
|
|
106
140
|
detail: string | null;
|
|
107
141
|
}>;
|
|
142
|
+
v: z.ZodLiteral<1>;
|
|
143
|
+
seq: z.ZodNumber;
|
|
144
|
+
orgId: z.ZodString;
|
|
145
|
+
/** The source row's id (`VpnEvent.id`), or the attestation / gap id this entry registers. */
|
|
146
|
+
ref: z.ZodString;
|
|
147
|
+
/** When the source event was recorded (UTC). */
|
|
148
|
+
at: z.ZodString;
|
|
108
149
|
}, "strict", z.ZodTypeAny, {
|
|
109
|
-
orgId: string;
|
|
110
|
-
at: string;
|
|
111
150
|
kind: "vpn_event";
|
|
151
|
+
at: string;
|
|
152
|
+
orgId: string;
|
|
153
|
+
data: {
|
|
154
|
+
type: string;
|
|
155
|
+
tunnelId: string | null;
|
|
156
|
+
buildId: string | null;
|
|
157
|
+
agentId: string | null;
|
|
158
|
+
detail: string | null;
|
|
159
|
+
};
|
|
112
160
|
v: 1;
|
|
113
161
|
seq: number;
|
|
114
162
|
ref: string;
|
|
163
|
+
}, {
|
|
164
|
+
kind: "vpn_event";
|
|
165
|
+
at: string;
|
|
166
|
+
orgId: string;
|
|
115
167
|
data: {
|
|
116
168
|
type: string;
|
|
117
169
|
tunnelId: string | null;
|
|
@@ -119,23 +171,111 @@ export declare const auditEntryPayloadSchema: z.ZodDiscriminatedUnion<"kind", [z
|
|
|
119
171
|
agentId: string | null;
|
|
120
172
|
detail: string | null;
|
|
121
173
|
};
|
|
174
|
+
v: 1;
|
|
175
|
+
seq: number;
|
|
176
|
+
ref: string;
|
|
177
|
+
}>, z.ZodObject<{
|
|
178
|
+
kind: z.ZodLiteral<"attestation">;
|
|
179
|
+
data: z.ZodObject<{
|
|
180
|
+
buildId: z.ZodString;
|
|
181
|
+
docSha256: z.ZodString;
|
|
182
|
+
keyId: z.ZodNullable<z.ZodString>;
|
|
183
|
+
completeness: z.ZodEnum<["full", "partial", "server_observed_only"]>;
|
|
184
|
+
}, "strict", z.ZodTypeAny, {
|
|
185
|
+
buildId: string;
|
|
186
|
+
docSha256: string;
|
|
187
|
+
keyId: string | null;
|
|
188
|
+
completeness: "full" | "partial" | "server_observed_only";
|
|
189
|
+
}, {
|
|
190
|
+
buildId: string;
|
|
191
|
+
docSha256: string;
|
|
192
|
+
keyId: string | null;
|
|
193
|
+
completeness: "full" | "partial" | "server_observed_only";
|
|
194
|
+
}>;
|
|
195
|
+
v: z.ZodLiteral<1>;
|
|
196
|
+
seq: z.ZodNumber;
|
|
197
|
+
orgId: z.ZodString;
|
|
198
|
+
/** The source row's id (`VpnEvent.id`), or the attestation / gap id this entry registers. */
|
|
199
|
+
ref: z.ZodString;
|
|
200
|
+
/** When the source event was recorded (UTC). */
|
|
201
|
+
at: z.ZodString;
|
|
202
|
+
}, "strict", z.ZodTypeAny, {
|
|
203
|
+
kind: "attestation";
|
|
204
|
+
at: string;
|
|
205
|
+
orgId: string;
|
|
206
|
+
data: {
|
|
207
|
+
buildId: string;
|
|
208
|
+
docSha256: string;
|
|
209
|
+
keyId: string | null;
|
|
210
|
+
completeness: "full" | "partial" | "server_observed_only";
|
|
211
|
+
};
|
|
212
|
+
v: 1;
|
|
213
|
+
seq: number;
|
|
214
|
+
ref: string;
|
|
122
215
|
}, {
|
|
216
|
+
kind: "attestation";
|
|
217
|
+
at: string;
|
|
123
218
|
orgId: string;
|
|
219
|
+
data: {
|
|
220
|
+
buildId: string;
|
|
221
|
+
docSha256: string;
|
|
222
|
+
keyId: string | null;
|
|
223
|
+
completeness: "full" | "partial" | "server_observed_only";
|
|
224
|
+
};
|
|
225
|
+
v: 1;
|
|
226
|
+
seq: number;
|
|
227
|
+
ref: string;
|
|
228
|
+
}>, z.ZodObject<{
|
|
229
|
+
kind: z.ZodLiteral<"gap">;
|
|
230
|
+
data: z.ZodObject<{
|
|
231
|
+
buildId: z.ZodString;
|
|
232
|
+
reason: z.ZodString;
|
|
233
|
+
detail: z.ZodString;
|
|
234
|
+
}, "strict", z.ZodTypeAny, {
|
|
235
|
+
buildId: string;
|
|
236
|
+
detail: string;
|
|
237
|
+
reason: string;
|
|
238
|
+
}, {
|
|
239
|
+
buildId: string;
|
|
240
|
+
detail: string;
|
|
241
|
+
reason: string;
|
|
242
|
+
}>;
|
|
243
|
+
v: z.ZodLiteral<1>;
|
|
244
|
+
seq: z.ZodNumber;
|
|
245
|
+
orgId: z.ZodString;
|
|
246
|
+
/** The source row's id (`VpnEvent.id`), or the attestation / gap id this entry registers. */
|
|
247
|
+
ref: z.ZodString;
|
|
248
|
+
/** When the source event was recorded (UTC). */
|
|
249
|
+
at: z.ZodString;
|
|
250
|
+
}, "strict", z.ZodTypeAny, {
|
|
251
|
+
kind: "gap";
|
|
124
252
|
at: string;
|
|
125
|
-
|
|
253
|
+
orgId: string;
|
|
254
|
+
data: {
|
|
255
|
+
buildId: string;
|
|
256
|
+
detail: string;
|
|
257
|
+
reason: string;
|
|
258
|
+
};
|
|
126
259
|
v: 1;
|
|
127
260
|
seq: number;
|
|
128
261
|
ref: string;
|
|
262
|
+
}, {
|
|
263
|
+
kind: "gap";
|
|
264
|
+
at: string;
|
|
265
|
+
orgId: string;
|
|
129
266
|
data: {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
agentId: string | null;
|
|
134
|
-
detail: string | null;
|
|
267
|
+
buildId: string;
|
|
268
|
+
detail: string;
|
|
269
|
+
reason: string;
|
|
135
270
|
};
|
|
271
|
+
v: 1;
|
|
272
|
+
seq: number;
|
|
273
|
+
ref: string;
|
|
136
274
|
}>]>;
|
|
137
275
|
export type AuditEntryPayload = z.infer<typeof auditEntryPayloadSchema>;
|
|
138
276
|
export type AuditVpnEventData = z.infer<typeof auditVpnEventDataSchema>;
|
|
277
|
+
/** The chain's known entry kinds, from the schema above. */
|
|
278
|
+
export declare const AUDIT_ENTRY_KINDS: readonly string[];
|
|
139
279
|
/** What a checkpoint signature covers: "org X's chain had head hash H at seq N when this was issued". */
|
|
140
280
|
export declare const auditCheckpointStatementSchema: z.ZodObject<{
|
|
141
281
|
v: z.ZodLiteral<1>;
|
|
@@ -174,17 +314,17 @@ export declare const auditCheckpointSchema: z.ZodObject<Omit<{
|
|
|
174
314
|
signature: z.ZodString;
|
|
175
315
|
}, "strict", z.ZodTypeAny, {
|
|
176
316
|
orgId: string;
|
|
317
|
+
keyId: string;
|
|
177
318
|
seq: number;
|
|
178
319
|
hash: string;
|
|
179
320
|
issuedAt: string;
|
|
180
|
-
keyId: string;
|
|
181
321
|
signature: string;
|
|
182
322
|
}, {
|
|
183
323
|
orgId: string;
|
|
324
|
+
keyId: string;
|
|
184
325
|
seq: number;
|
|
185
326
|
hash: string;
|
|
186
327
|
issuedAt: string;
|
|
187
|
-
keyId: string;
|
|
188
328
|
signature: string;
|
|
189
329
|
}>;
|
|
190
330
|
export type AuditCheckpoint = z.infer<typeof auditCheckpointSchema>;
|
|
@@ -242,12 +382,19 @@ export declare function verifyAuditChain(input: {
|
|
|
242
382
|
/**
|
|
243
383
|
* Signs bytes with a key the database does not hold. The interface exists
|
|
244
384
|
* so the sealer can issue checkpoints without knowing where the key lives;
|
|
245
|
-
* the production implementation (a Worker secret
|
|
246
|
-
*
|
|
385
|
+
* the production implementation (a Worker secret) lives in
|
|
386
|
+
* apps/admin-api/src/lib/audit-signing.ts. Implementations must be Ed25519 (RFC 8032).
|
|
247
387
|
*/
|
|
248
388
|
export interface AuditSigner {
|
|
249
389
|
/** Self-certifying key id: see `ed25519KeyId`. */
|
|
250
390
|
readonly keyId: string;
|
|
391
|
+
/**
|
|
392
|
+
* Optional guard: why this key may not vouch for something issued at `issuedAt`
|
|
393
|
+
* (ISO-8601 UTC), or null if it may. Callers that stamp an `issuedAt` check it
|
|
394
|
+
* at that instant, right before signing, and refuse to store a signature a
|
|
395
|
+
* verifier would reject.
|
|
396
|
+
*/
|
|
397
|
+
problemAt?(issuedAt: string): string | null;
|
|
251
398
|
sign(message: Uint8Array): Promise<Uint8Array>;
|
|
252
399
|
}
|
|
253
400
|
/** `sha256(raw 32-byte public key)`, first 16 hex characters. A key set cannot mislabel a key because the id is recomputed from it. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../src/attestation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AACxD,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AACjE,8GAA8G;AAC9G,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAiDlE;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAMD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAKlD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIvD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAMrD;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAG1E;AAID,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAIlF;AAOD,yKAAyK;AACzK,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;EAQzB,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../src/attestation.ts"],"names":[],"mappings":"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"}
|
package/dist/attestation.js
CHANGED
|
@@ -157,25 +157,51 @@ export const auditVpnEventDataSchema = z
|
|
|
157
157
|
})
|
|
158
158
|
.strict();
|
|
159
159
|
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
160
|
+
* A chain entry that registers a per-build attestation (PR-M): "this exact document, by this key (or by none),
|
|
161
|
+
* was issued". `docSha256` is the sha256 of the document's canonical JSON, which is what ties the entry to the
|
|
162
|
+
* signed document; the offline verifier requires the entry right after the document's own chain head to carry
|
|
163
|
+
* the document's hash and build id. `keyId` is null for an attestation issued while signing was unavailable.
|
|
164
|
+
*/
|
|
165
|
+
export const auditAttestationDataSchema = z
|
|
166
|
+
.object({
|
|
167
|
+
buildId: z.string().min(1).max(128),
|
|
168
|
+
docSha256: hex64,
|
|
169
|
+
keyId: z.string().min(1).max(64).nullable(),
|
|
170
|
+
completeness: z.enum(["full", "partial", "server_observed_only"]),
|
|
171
|
+
})
|
|
172
|
+
.strict();
|
|
173
|
+
/**
|
|
174
|
+
* A chain entry that records evidence which was expected and is missing, so the absence itself is part of the
|
|
175
|
+
* tamper-evident history (PR-M: a regulated build whose agent never reported).
|
|
176
|
+
*/
|
|
177
|
+
export const auditGapDataSchema = z
|
|
178
|
+
.object({
|
|
179
|
+
buildId: z.string().min(1).max(128),
|
|
180
|
+
reason: z.string().min(1).max(64),
|
|
181
|
+
detail: z.string().max(500),
|
|
182
|
+
})
|
|
183
|
+
.strict();
|
|
184
|
+
const auditEntryEnvelope = {
|
|
185
|
+
v: z.literal(1),
|
|
186
|
+
seq: z.number().int().min(1),
|
|
187
|
+
orgId: z.string().min(1),
|
|
188
|
+
/** The source row's id (`VpnEvent.id`), or the attestation / gap id this entry registers. */
|
|
189
|
+
ref: z.string().min(1),
|
|
190
|
+
/** When the source event was recorded (UTC). */
|
|
191
|
+
at: isoUtc,
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* What a chain entry's `payload` column holds. The known `kind`s are `vpn_event`, `attestation` and `gap`;
|
|
195
|
+
* a verifier must reject a kind it does not know rather than skip it, and `scripts/appforge-verify.mjs`
|
|
196
|
+
* (KNOWN_KINDS) is kept to this list by a test.
|
|
163
197
|
*/
|
|
164
198
|
export const auditEntryPayloadSchema = z.discriminatedUnion("kind", [
|
|
165
|
-
z
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
seq: z.number().int().min(1),
|
|
169
|
-
orgId: z.string().min(1),
|
|
170
|
-
kind: z.literal("vpn_event"),
|
|
171
|
-
/** `VpnEvent.id` */
|
|
172
|
-
ref: z.string().min(1),
|
|
173
|
-
/** When the source event was recorded (UTC). */
|
|
174
|
-
at: isoUtc,
|
|
175
|
-
data: auditVpnEventDataSchema,
|
|
176
|
-
})
|
|
177
|
-
.strict(),
|
|
199
|
+
z.object({ ...auditEntryEnvelope, kind: z.literal("vpn_event"), data: auditVpnEventDataSchema }).strict(),
|
|
200
|
+
z.object({ ...auditEntryEnvelope, kind: z.literal("attestation"), data: auditAttestationDataSchema }).strict(),
|
|
201
|
+
z.object({ ...auditEntryEnvelope, kind: z.literal("gap"), data: auditGapDataSchema }).strict(),
|
|
178
202
|
]);
|
|
203
|
+
/** The chain's known entry kinds, from the schema above. */
|
|
204
|
+
export const AUDIT_ENTRY_KINDS = auditEntryPayloadSchema.options.map((o) => o.shape.kind.value);
|
|
179
205
|
/** What a checkpoint signature covers: "org X's chain had head hash H at seq N when this was issued". */
|
|
180
206
|
export const auditCheckpointStatementSchema = z
|
|
181
207
|
.object({
|
package/dist/attestation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestation.js","sourceRoot":"","sources":["../src/attestation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attestation.js","sourceRoot":"","sources":["../src/attestation.ts"],"names":[],"mappings":"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"}
|
package/dist/build-vpn.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuildVpnStatus } from "./types.js";
|
|
1
|
+
import type { BuildAttestationStatus, BuildVpnStatus } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* One-line, human-readable summary of `Build.vpn`, shared by the dashboard's
|
|
4
4
|
* Network panel and `appforge build show` so they never disagree.
|
|
@@ -7,4 +7,14 @@ import type { BuildVpnStatus } from "./types.js";
|
|
|
7
7
|
* "No VPN"
|
|
8
8
|
*/
|
|
9
9
|
export declare function describeBuildVpn(vpn: BuildVpnStatus | undefined): string;
|
|
10
|
+
/**
|
|
11
|
+
* One-line, human-readable state of a build's attestation, shared by the dashboard and `appforge build show`. Says plainly when it
|
|
12
|
+
* is not (yet) evidence: pending, degraded, unsigned, or recording a violation.
|
|
13
|
+
* "Evidence: complete, signed, all controls enforced"
|
|
14
|
+
* "Evidence: complete, signed, 2 control violations recorded"
|
|
15
|
+
* "Evidence: DEGRADED (the agent did not report), signed: server-observed facts only"
|
|
16
|
+
* "Evidence: complete, NOT SIGNED (the platform had no signing key)"
|
|
17
|
+
* "Evidence: pending (the build's agent has not reported yet)"
|
|
18
|
+
*/
|
|
19
|
+
export declare function describeBuildAttestation(a: BuildAttestationStatus | undefined): string | null;
|
|
10
20
|
//# sourceMappingURL=build-vpn.d.ts.map
|
package/dist/build-vpn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-vpn.d.ts","sourceRoot":"","sources":["../src/build-vpn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"build-vpn.d.ts","sourceRoot":"","sources":["../src/build-vpn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,CAUxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,sBAAsB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAe7F"}
|