feat(domain-access): load trusted signer registry
This commit is contained in:
parent
fa2c868e0a
commit
6bd95c76e9
7 changed files with 318 additions and 17 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue