using DigitalData.Core.Abstractions.Security; using DigitalData.Core.Security.Config; using DigitalData.Core.Security.Services; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System.Security.Claims; namespace DigitalData.Core.Security { public static class DIExtensions { /// /// Registers a custom asym crypt service with specified parameters from the given configuration section. /// /// /// /// The updated with the RSA Factory registered. public static IServiceCollection AddCryptoFactory(this IServiceCollection services, IConfiguration configuration) => services .Configure(configuration) .AddAutoMapper(typeof(MappingProfile).Assembly) .AddSingleton() .AddSingleton() .AddHostedService(); public static IServiceCollection AddJwtSignatureHandler(this IServiceCollection services, Func>? claimsMapper = null, Func? subjectMapper = null) => services .AddSingleton, JwtSignatureHandler>() .AddSingleton(sp => Options.Create(new ClaimDescriptor { CreateClaims = claimsMapper, CreateSubject = subjectMapper })); } }