part #2
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.Extensions.Options;
|
||||
using StellaOps.Cryptography;
|
||||
|
||||
namespace StellaOps.Cryptography.DependencyInjection;
|
||||
|
||||
internal sealed class CryptoPluginProviderRegistry : ICryptoProviderRegistry
|
||||
{
|
||||
private readonly CryptoProviderRegistry _registry;
|
||||
|
||||
public CryptoPluginProviderRegistry(
|
||||
IReadOnlyList<ICryptoProvider> providers,
|
||||
IOptionsMonitor<CryptoProviderRegistryOptions>? optionsMonitor = null)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(providers);
|
||||
var preferred = optionsMonitor?.CurrentValue?.ResolvePreferredProviders();
|
||||
_registry = new CryptoProviderRegistry(providers, preferred);
|
||||
}
|
||||
|
||||
public IReadOnlyCollection<ICryptoProvider> Providers => _registry.Providers;
|
||||
public bool TryResolve(string preferredProvider, out ICryptoProvider provider)
|
||||
=> _registry.TryResolve(preferredProvider, out provider);
|
||||
public ICryptoProvider ResolveOrThrow(CryptoCapability capability, string algorithmId)
|
||||
=> _registry.ResolveOrThrow(capability, algorithmId);
|
||||
public CryptoSignerResolution ResolveSigner(
|
||||
CryptoCapability capability,
|
||||
string algorithmId,
|
||||
CryptoKeyReference keyReference,
|
||||
string? preferredProvider = null)
|
||||
=> _registry.ResolveSigner(capability, algorithmId, keyReference, preferredProvider);
|
||||
public CryptoHasherResolution ResolveHasher(string algorithmId, string? preferredProvider = null)
|
||||
=> _registry.ResolveHasher(algorithmId, preferredProvider);
|
||||
}
|
||||
Reference in New Issue
Block a user