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
}));
}
}