73 lines
2.9 KiB
C#
73 lines
2.9 KiB
C#
// -----------------------------------------------------------------------------
|
|
// CertificateStatusServiceCollectionExtensions.cs
|
|
// Sprint: SPRINT_20260119_008 Certificate Status Provider
|
|
// Task: CSP-006 - DI Registration
|
|
// Description: DI registration for certificate status services.
|
|
// -----------------------------------------------------------------------------
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
using StellaOps.Cryptography.CertificateStatus.Abstractions;
|
|
|
|
namespace StellaOps.Cryptography.CertificateStatus;
|
|
|
|
/// <summary>
|
|
/// Extension methods for registering certificate status services.
|
|
/// </summary>
|
|
public static class CertificateStatusServiceCollectionExtensions
|
|
{
|
|
/// <summary>
|
|
/// Adds certificate status provider services to the service collection.
|
|
/// </summary>
|
|
/// <param name="services">The service collection.</param>
|
|
/// <returns>The service collection for chaining.</returns>
|
|
public static IServiceCollection AddCertificateStatusProvider(this IServiceCollection services)
|
|
{
|
|
// Ensure HttpClient factory and memory cache are available
|
|
services.AddHttpClient();
|
|
services.AddMemoryCache();
|
|
|
|
// Register components
|
|
services.TryAddSingleton<OcspClient>();
|
|
services.TryAddSingleton<CrlFetcher>();
|
|
services.TryAddSingleton<ICertificateStatusProvider, CertificateStatusProvider>();
|
|
|
|
return services;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds certificate status provider with custom HTTP client configuration.
|
|
/// </summary>
|
|
/// <param name="services">The service collection.</param>
|
|
/// <param name="configureOcspClient">Action to configure the OCSP HTTP client.</param>
|
|
/// <param name="configureCrlClient">Action to configure the CRL HTTP client.</param>
|
|
/// <returns>The service collection for chaining.</returns>
|
|
public static IServiceCollection AddCertificateStatusProvider(
|
|
this IServiceCollection services,
|
|
Action<IHttpClientBuilder>? configureOcspClient = null,
|
|
Action<IHttpClientBuilder>? configureCrlClient = null)
|
|
{
|
|
var ocspBuilder = services.AddHttpClient("OCSP", client =>
|
|
{
|
|
client.Timeout = TimeSpan.FromSeconds(10);
|
|
client.DefaultRequestHeaders.Accept.Add(
|
|
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/ocsp-response"));
|
|
});
|
|
configureOcspClient?.Invoke(ocspBuilder);
|
|
|
|
var crlBuilder = services.AddHttpClient("CRL", client =>
|
|
{
|
|
client.Timeout = TimeSpan.FromSeconds(30);
|
|
});
|
|
configureCrlClient?.Invoke(crlBuilder);
|
|
|
|
services.AddMemoryCache();
|
|
|
|
services.TryAddSingleton<OcspClient>();
|
|
services.TryAddSingleton<CrlFetcher>();
|
|
services.TryAddSingleton<ICertificateStatusProvider, CertificateStatusProvider>();
|
|
|
|
return services;
|
|
}
|
|
}
|