4.4 KiB
4.4 KiB
Trust Root and Certificate Chain Verification
Module
Authority
Status
IMPLEMENTED
Description
Certificate chain validation checks, TSA certificate expiry monitoring, and timestamp token verification with configurable trust anchors and verification options.
Implementation Details
- Timestamp Token Verifier:
src/Authority/__Libraries/StellaOps.Authority.Timestamping/TimeStampTokenVerifier.cs(with partials.CertificateChain.cs,.Signature.cs,.Validation.cs,.Warnings.cs) -- verifies RFC 3161 timestamp tokens including certificate chain validation, signature verification, and trust anchor checks. - TSA Client:
src/Authority/__Libraries/StellaOps.Authority.Timestamping/HttpTsaClient.cs(with partials.GetTimeStamp.cs,.ProviderOrdering.cs,.ProviderRequest.cs,.Verification.cs) -- HTTP client for TSA servers implementingITimeStampAuthorityClient. - TSA Provider Registry:
src/Authority/__Libraries/StellaOps.Authority.Timestamping/TsaProviderRegistry.cs(with partials.HealthCheck.cs,.ProviderState.cs,.Providers.cs,.Reporting.cs,.Stats.cs) -- manages TSA providers with health monitoring and failover. - Verification Options:
src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampVerificationOptions.cs-- configurable trust anchors, allowed algorithms, certificate policies. - Verification Result:
src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/TimeStampVerificationResult.cs-- detailed result with errors and warnings. - Verification Error/Warning Codes:
src/Authority/__Libraries/StellaOps.Authority.Timestamping.Abstractions/VerificationError.cs,VerificationErrorCode.cs,VerificationWarning.cs,VerificationWarningCode.cs,VerificationStatus.cs. - TSA Health:
src/Authority/__Libraries/StellaOps.Authority.Timestamping/TsaProviderHealth.cs,TsaHealthStatus.cs-- health check types for TSA certificate expiry monitoring. - Signing Key Management:
src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthoritySigningKeyManager.cs-- manages authority signing keys with rotation;AuthoritySigningKeyStatus.cstracks key health. - JWKS Service:
src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthorityJwksService.cs-- serves the JSON Web Key Set for public key distribution. - DSSE Statement Signer:
src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/AuthorityDsseStatementSigner.cs-- signs in-toto/DSSE statements using authority keys. - KMS Key Source:
src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/KmsAuthoritySigningKeySource.cs-- resolves signing keys from a Key Management Service. - File Key Source:
src/Authority/StellaOps.Authority/StellaOps.Authority/Signing/FileAuthoritySigningKeySource.cs-- resolves signing keys from local files. - Tests:
src/Authority/__Tests/StellaOps.Authority.Timestamping.Tests/TimeStampTokenVerifierTests.cs,TsaProviderRegistryTests.cs;src/Authority/StellaOps.Authority/StellaOps.Authority.Tests/Signing/AuthorityJwksServiceTests.cs,AuthoritySigningKeyManagerTests.cs,KmsAuthoritySigningKeySourceTests.cs,TokenSignVerifyRoundtripTests.cs
E2E Test Plan
- Submit a timestamp request to a TSA server via
HttpTsaClientand verify the returned timestamp token passesTimeStampTokenVerifiervalidation - Verify certificate chain: provide a timestamp token with a valid chain and verify
TimeStampTokenVerifier.CertificateChainvalidates each certificate up to the trust anchor - Provide a timestamp token signed by an untrusted CA and verify the verifier rejects it with
VerificationErrorCode.UntrustedCertificate - Configure
TimeStampVerificationOptionsto reject weak algorithms (e.g., SHA-1) and verify tokens using SHA-1 are rejected - Verify TSA health monitoring: register a TSA provider and verify
TsaProviderRegistry.HealthCheckdetects certificate expiry within the warning threshold - Verify signing key rotation: rotate the authority signing key via
AuthoritySigningKeyManagerand verify the JWKS endpoint reflects the new key while the old key remains for validation - Verify DSSE signing: sign a statement via
AuthorityDsseStatementSignerand verify the signature can be validated using the JWKS public key - Verify KMS key source: configure
KmsAuthoritySigningKeySourceand verify signing operations use the KMS-managed key