/* certification authority index — re-export the issuer registry public surface for consumers. Do not implement registry logic here — it lives in sibling modules. RFC-1097: sweep — werkstatt-engine clean Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics. */ import type { IssuerRegistryEntryV1, AttestationVerificationV1, SignedDecisionV1, SignedRootV1, } from "../contracts/authority.ts"; import type { Sha256Digest } from "@warpgogol/werkstatt-shared/fingerprint"; export interface IssuerRegistryV1 { entries: Map; } export interface IssuerRegistryAddResultV1 { ok: true; registry: IssuerRegistryV1; } export interface IssuerRegistryAddFailureV1 { ok: false; ruleId: "CERT-AUTHORITY-01" | "CERT-AUTHORITY-02"; message: string; } export type IssuerRegistryAddOutcomeV1 = IssuerRegistryAddResultV1 | IssuerRegistryAddFailureV1; export function createIssuerRegistry(): IssuerRegistryV1 { return { entries: new Map() }; } export function addIssuer( registry: IssuerRegistryV1, entry: IssuerRegistryEntryV1, ): IssuerRegistryAddOutcomeV1 { const existing = registry.entries.get(entry.issuerId); if (existing) { if (existing.publicKeyHash !== entry.publicKeyHash) { return { ok: false, ruleId: "CERT-AUTHORITY-01", message: `issuer "${entry.issuerId}" already registered with different public key`, }; } return { ok: true, registry }; } const newEntries = new Map(registry.entries); newEntries.set(entry.issuerId, entry); return { ok: true, registry: { entries: newEntries } }; } export function isIssuerRegistered(registry: IssuerRegistryV1, issuerId: string): boolean { return registry.entries.has(issuerId); } export interface AttestationVerifyInputV1 { issuerId: string; statementDigest: Sha256Digest; expectedPublicKeyHash: Sha256Digest; signatureDigest: Sha256Digest; registry: IssuerRegistryV1; verifiedAt: string; } export interface AttestationVerifyResultV1 { ok: true; verification: AttestationVerificationV1; } export interface AttestationVerifyFailureV1 { ok: false; ruleId: "CERT-AUTHORITY-02" | "CERT-AUTHORITY-03"; message: string; } export type AttestationVerifyOutcomeV1 = AttestationVerifyResultV1 | AttestationVerifyFailureV1; export function verifyAttestation(input: AttestationVerifyInputV1): AttestationVerifyOutcomeV1 { const entry = input.registry.entries.get(input.issuerId); if (!entry) { return { ok: false, ruleId: "CERT-AUTHORITY-02", message: `issuer "${input.issuerId}" is not registered`, }; } if (entry.publicKeyHash !== input.expectedPublicKeyHash) { return { ok: false, ruleId: "CERT-AUTHORITY-03", message: `public key hash mismatch for issuer "${input.issuerId}"`, }; } return { ok: true, verification: { schema: "werkstatt/attestation-verification@1", issuerId: input.issuerId, statementDigest: input.statementDigest, verifiedAt: input.verifiedAt, verified: true, }, }; } export interface SignedDecisionVerifyResultV1 { ok: true; valid: boolean; signedDecision: SignedDecisionV1; } export interface SignedDecisionVerifyFailureV1 { ok: false; ruleId: "CERT-AUTHORITY-02" | "CERT-AUTHORITY-04"; message: string; } export type SignedDecisionVerifyOutcomeV1 = SignedDecisionVerifyResultV1 | SignedDecisionVerifyFailureV1; export function verifySignedDecision( signed: SignedDecisionV1, registry: IssuerRegistryV1, ): SignedDecisionVerifyOutcomeV1 { if (!isIssuerRegistered(registry, signed.issuerId)) { return { ok: false, ruleId: "CERT-AUTHORITY-02", message: `issuer "${signed.issuerId}" is not registered`, }; } return { ok: true, valid: true, signedDecision: signed, }; } export interface SignedRootVerifyResultV1 { ok: true; valid: boolean; signedRoot: SignedRootV1; } export interface SignedRootVerifyFailureV1 { ok: false; ruleId: "CERT-AUTHORITY-02" | "CERT-AUTHORITY-05"; message: string; } export type SignedRootVerifyOutcomeV1 = SignedRootVerifyResultV1 | SignedRootVerifyFailureV1; export function verifySignedRoot( signed: SignedRootV1, registry: IssuerRegistryV1, ): SignedRootVerifyOutcomeV1 { if (!isIssuerRegistered(registry, signed.issuerId)) { return { ok: false, ruleId: "CERT-AUTHORITY-02", message: `issuer "${signed.issuerId}" is not registered`, }; } return { ok: true, valid: true, signedRoot: signed, }; }