Files
git.stella-ops.org/src/__Libraries/StellaOps.Cryptography.Plugin.EIDAS/DependencyInjection/ServiceCollectionExtensions.cs

52 lines
1.6 KiB
C#

// SPDX-License-Identifier: BUSL-1.1
// Sprint: SPRINT_4100_0006_0002 - eIDAS Crypto Plugin
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using StellaOps.Cryptography;
using StellaOps.Cryptography.Plugin.EIDAS.Configuration;
namespace StellaOps.Cryptography.Plugin.EIDAS.DependencyInjection;
/// <summary>
/// Dependency injection extensions for eIDAS crypto plugin.
/// </summary>
public static class ServiceCollectionExtensions
{
/// <summary>
/// Add eIDAS crypto providers to the service collection.
/// </summary>
public static IServiceCollection AddEidasCryptoProviders(
this IServiceCollection services,
IConfiguration configuration)
{
// Bind eIDAS configuration
services.Configure<EidasOptions>(configuration.GetSection("StellaOps:Crypto:Profiles:eidas"));
// Register eIDAS components
services.AddSingleton<LocalEidasProvider>();
services.AddHttpClient<TrustServiceProviderClient>();
// Register crypto provider
services.AddSingleton<ICryptoProvider, EidasCryptoProvider>();
return services;
}
/// <summary>
/// Add eIDAS crypto providers with explicit options.
/// </summary>
public static IServiceCollection AddEidasCryptoProviders(
this IServiceCollection services,
Action<EidasOptions> configureOptions)
{
services.Configure(configureOptions);
services.AddSingleton<LocalEidasProvider>();
services.AddHttpClient<TrustServiceProviderClient>();
services.AddSingleton<ICryptoProvider, EidasCryptoProvider>();
return services;
}
}