export declare enum PredicateType { SevGuestV1 = "https://tinfoil.sh/predicate/sev-snp-guest/v1",// Deprecated SevGuestV2 = "https://tinfoil.sh/predicate/sev-snp-guest/v2", SnpTdxMultiplatformV1 = "https://tinfoil.sh/predicate/snp-tdx-multiplatform/v1" } export interface AttestationDocument { format: PredicateType; body: string; } /** * Complete attestation bundle from single-request verification. */ export interface AttestationBundle { /** Selected enclave domain hostname */ domain: string; /** Enclave attestation report (from router's /.well-known/tinfoil-attestation) */ enclaveAttestationReport: AttestationDocument; /** SHA256 digest of the release */ digest: string; /** Release tag selected for the digest, verified against Sigstore when present */ releaseTag?: string; /** Sigstore bundle for code provenance verification */ sigstoreBundle: unknown; /** Base64-encoded VCEK certificate (DER format) */ vcek: string; /** PEM-encoded enclave TLS certificate (contains HPKE key and attestation hash in SANs) */ enclaveCert: string; } export interface AttestationMeasurement { type: string; registers: string[]; } export interface AttestationResponse { tlsPublicKeyFingerprint?: string; hpkePublicKey?: string; measurement: AttestationMeasurement; } /** * Compares two measurements for equality. * Handles cross-platform comparison between SnpTdxMultiplatformV1 and SevGuestV2. * @throws AttestationError if the measurement types are incompatible or registers don't match */ export declare function compareMeasurements(a: AttestationMeasurement, b: AttestationMeasurement): void; /** * Computes the fingerprint of a measurement. * If there is only one register, returns that register directly. * Otherwise, returns SHA-256 hash of type + all registers concatenated. */ export declare function measurementFingerprint(m: AttestationMeasurement): Promise; /** * Computes the SHA-256 hash of an attestation document. * This matches the Go implementation: sha256(format + body) */ export declare function hashAttestationDocument(doc: AttestationDocument): Promise; export interface VerificationStepState { status: 'pending' | 'success' | 'failed' | 'skipped'; error?: string; } export interface HardwareMeasurement { ID?: string; MRTD?: string; RTMR0?: string; } export interface SoftwareIdentity { name: string; version: string; } export interface VerificationDocument { schemaVersion?: 1; configRepo: string; enclaveHost: string; releaseTag?: string; releaseDigest: string; codeMeasurement: AttestationMeasurement; enclaveMeasurement: AttestationResponse; tlsPublicKey: string; hpkePublicKey: string; hardwareMeasurement?: HardwareMeasurement; codeFingerprint: string; enclaveFingerprint: string; selectedRouterEndpoint: string; securityVerified: boolean; verifier?: SoftwareIdentity; verifiedAt?: string; steps: { fetchDigest: VerificationStepState; verifyCode: VerificationStepState; verifyEnclave: VerificationStepState; compareMeasurements: VerificationStepState; verifyCertificate?: VerificationStepState; otherError?: VerificationStepState; }; } //# sourceMappingURL=types.d.ts.map