Files
git.stella-ops.org/src/__Libraries/StellaOps.Cryptography.DependencyInjection/CryptoPluginProviderRegistry.cs
2026-02-04 19:59:20 +02:00

35 lines
1.5 KiB
C#

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