using EnvelopeGenerator.Application.Common.Configurations; using EnvelopeGenerator.Application.Common.Interfaces.Services; using EnvelopeGenerator.Infrastructure.Crypt.Services; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; namespace EnvelopeGenerator.Infrastructure.Crypt.DependencyInjection; public static class ServiceCollectionExtensions { public static IServiceCollection AddCryptInfrastructure(this IServiceCollection services, IConfiguration configuration) { services .AddOptions() .Bind(configuration.GetSection(Pkcs11Options.SectionName)) .ValidateDataAnnotations() .ValidateOnStart(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(sp => sp.GetRequiredService()); services.AddHostedService(); return services; } }