feat(domain-access): load trusted signer registry

This commit is contained in:
冰朔 2026-08-10 02:34:05 +08:00
commit 6bd95c76e9
7 changed files with 318 additions and 17 deletions

View file

@ -1,4 +1,8 @@
import { createHash, verify as verifySignature } from 'node:crypto';
import {
assertRegisteredTrustedManifestSigner,
type TrustedManifestSigner,
} from './trusted-signer-registry.js';
const MANIFEST_SCHEMA = 'gh-aios.domain-manifest/v1' as const;
const SHA256_PATTERN = /^[a-f0-9]{64}$/;
@ -30,13 +34,6 @@ export interface DomainManifestSignedPayload {
sourceCommit: string;
}
export interface TrustedManifestSigner {
algorithm: 'Ed25519';
publicKeyPem: string;
repositoryId: string;
signerId: string;
}
export interface DomainSessionCapability {
capabilityId: string;
domainId: string;
@ -117,6 +114,7 @@ export function parseDomainAccessHandoff(
trustedSigner: TrustedManifestSigner,
now = Date.now(),
): DomainAccessHandoff {
assertRegisteredTrustedManifestSigner(trustedSigner);
if (!isRecord(input) || !hasExactKeys(input, ['connectionReceipt', 'manifest', 'sessionCapability'])) invalidHandoff();
const manifest = input.manifest;
const capability = input.sessionCapability;