38 lines
1.5 KiB
C#
38 lines
1.5 KiB
C#
using System;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using StellaOps.Cryptography;
|
|
using StellaOps.Cryptography.PluginLoader;
|
|
|
|
namespace StellaOps.Cryptography.DependencyInjection;
|
|
|
|
public static partial class CryptoPluginServiceCollectionExtensions
|
|
{
|
|
/// <summary>
|
|
/// Registers crypto providers with plugin loading and compliance profile configuration.
|
|
/// </summary>
|
|
/// <param name="services">Service collection.</param>
|
|
/// <param name="configuration">Application configuration.</param>
|
|
/// <param name="configurePlugins">Optional plugin configuration.</param>
|
|
/// <param name="configureCompliance">Optional compliance configuration.</param>
|
|
/// <returns>The service collection.</returns>
|
|
public static IServiceCollection AddStellaOpsCryptoWithPluginsAndCompliance(
|
|
this IServiceCollection services,
|
|
IConfiguration configuration,
|
|
Action<CryptoPluginConfiguration>? configurePlugins = null,
|
|
Action<CryptoComplianceOptions>? configureCompliance = null)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(services);
|
|
ArgumentNullException.ThrowIfNull(configuration);
|
|
|
|
services.AddStellaOpsCryptoWithPlugins(configuration, configurePlugins);
|
|
services.Configure<CryptoComplianceOptions>(options =>
|
|
{
|
|
configuration.GetSection(CryptoComplianceOptions.SectionKey).Bind(options);
|
|
configureCompliance?.Invoke(options);
|
|
});
|
|
|
|
return services;
|
|
}
|
|
}
|