refactor(IRSAFactory): Erstellt, um die Funktionalität von RSAFactory zu trennen
This commit is contained in:
parent
a4b96c2f3e
commit
f720ea9cd6
@ -1,23 +1,7 @@
|
|||||||
using System.Security.Cryptography;
|
namespace DigitalData.Core.Abstractions.Security
|
||||||
|
|
||||||
namespace DigitalData.Core.Abstractions.Security
|
|
||||||
{
|
{
|
||||||
public interface IAsymCryptService
|
public interface IAsymCryptService : IRSAFactory
|
||||||
{
|
{
|
||||||
int KeySizeInBits { get; init; }
|
|
||||||
|
|
||||||
string PbePassword { init; }
|
|
||||||
|
|
||||||
PbeEncryptionAlgorithm PbeEncryptionAlgorithm { get; init; }
|
|
||||||
|
|
||||||
HashAlgorithmName PbeHashAlgorithmName { get; init; }
|
|
||||||
|
|
||||||
int PbeIterationCount { get; init; }
|
|
||||||
|
|
||||||
PbeParameters PbeParameters { get; }
|
|
||||||
|
|
||||||
string EncryptedPrivateKeyPemLabel { get; init; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the formatter function for generating RSA key names.
|
/// Gets the formatter function for generating RSA key names.
|
||||||
/// This formatter takes an issuer, audience, isPrivate, and optional version and separator
|
/// This formatter takes an issuer, audience, isPrivate, and optional version and separator
|
||||||
@ -32,15 +16,6 @@ namespace DigitalData.Core.Abstractions.Security
|
|||||||
/// <exception cref="ArgumentException">Thrown when the issuer, audience, or separator contains invalid characters or when the separator is present within the issuer or audience.</exception>
|
/// <exception cref="ArgumentException">Thrown when the issuer, audience, or separator contains invalid characters or when the separator is present within the issuer or audience.</exception>
|
||||||
Func<string, string, bool, Version?, string?, string> RSAKeyNameFormatter { get; }
|
Func<string, string, bool, Version?, string?, string> RSAKeyNameFormatter { get; }
|
||||||
|
|
||||||
string CreateRSAPrivateKeyPem(int? keySizeInBits = null);
|
|
||||||
|
|
||||||
string CreateEncryptedPrivateKeyPem(
|
|
||||||
int? keySizeInBits = null,
|
|
||||||
string? password = null,
|
|
||||||
PbeEncryptionAlgorithm? pbeEncryptionAlgorithm = null,
|
|
||||||
HashAlgorithmName? hashAlgorithmName = null,
|
|
||||||
int? iterationCount = null);
|
|
||||||
|
|
||||||
IRSADecryptor this[string key] { get; }
|
IRSADecryptor this[string key] { get; }
|
||||||
|
|
||||||
bool TryGetRSADecryptor(string key, out IRSADecryptor? decryptor);
|
bool TryGetRSADecryptor(string key, out IRSADecryptor? decryptor);
|
||||||
|
|||||||
32
DigitalData.Core.Abstractions/Security/IRSAFactory.cs
Normal file
32
DigitalData.Core.Abstractions/Security/IRSAFactory.cs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
|
namespace DigitalData.Core.Abstractions.Security
|
||||||
|
{
|
||||||
|
public interface IRSAFactory
|
||||||
|
{
|
||||||
|
int KeySizeInBits { get; init; }
|
||||||
|
|
||||||
|
string PbePassword { init; }
|
||||||
|
|
||||||
|
PbeEncryptionAlgorithm PbeEncryptionAlgorithm { get; init; }
|
||||||
|
|
||||||
|
HashAlgorithmName PbeHashAlgorithmName { get; init; }
|
||||||
|
|
||||||
|
int PbeIterationCount { get; init; }
|
||||||
|
|
||||||
|
PbeParameters PbeParameters { get; }
|
||||||
|
|
||||||
|
string EncryptedPrivateKeyPemLabel { get; init; }
|
||||||
|
|
||||||
|
string CreateRSAPrivateKeyPem(int? keySizeInBits = null);
|
||||||
|
|
||||||
|
string CreateEncryptedPrivateKeyPem(
|
||||||
|
int? keySizeInBits = null,
|
||||||
|
string? password = null,
|
||||||
|
PbeEncryptionAlgorithm? pbeEncryptionAlgorithm = null,
|
||||||
|
HashAlgorithmName? hashAlgorithmName = null,
|
||||||
|
int? iterationCount = null);
|
||||||
|
|
||||||
|
Task<IRSADecryptor> ReadRSADecryptorAsync(string path, Version? version = null, CancellationToken cancellationToken = default);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -3,7 +3,7 @@ using Microsoft.Extensions.Logging;
|
|||||||
|
|
||||||
namespace DigitalData.Core.Security
|
namespace DigitalData.Core.Security
|
||||||
{
|
{
|
||||||
public class AsymCryptService : RSAFactory, IAsymCryptService
|
public class AsymCryptService : RSAFactory, IAsymCryptService, IRSAFactory
|
||||||
{
|
{
|
||||||
private readonly IDictionary<string, IRSADecryptor> _decryptors;
|
private readonly IDictionary<string, IRSADecryptor> _decryptors;
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ namespace DigitalData.Core.Security
|
|||||||
|
|
||||||
public Func<string, string, bool, Version?, string?, string> RSAKeyNameFormatter { get; }
|
public Func<string, string, bool, Version?, string?, string> RSAKeyNameFormatter { get; }
|
||||||
|
|
||||||
public AsymCryptService(ILogger<AsymCryptService> logger, IDictionary<string, IRSADecryptor> decryptors, Func<string, string, bool, Version?, string?, string> rsaKeyNameFormatter) : base()
|
public AsymCryptService(IDictionary<string, IRSADecryptor> decryptors, Func<string, string, bool, Version?, string?, string> rsaKeyNameFormatter, ILogger<AsymCryptService>? logger = null) : base()
|
||||||
{
|
{
|
||||||
_decryptors = decryptors ?? new Dictionary<string, IRSADecryptor>();
|
_decryptors = decryptors ?? new Dictionary<string, IRSADecryptor>();
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ namespace DigitalData.Core.Security
|
|||||||
{
|
{
|
||||||
public static IServiceCollection AddSecurity(this IServiceCollection services)
|
public static IServiceCollection AddSecurity(this IServiceCollection services)
|
||||||
{
|
{
|
||||||
|
services.TryAddScoped<IRSAFactory>(sp => RSAFactory.Static);
|
||||||
services.TryAddScoped<IAsymCryptService, AsymCryptService>();
|
services.TryAddScoped<IAsymCryptService, AsymCryptService>();
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
|
|||||||
@ -4,7 +4,7 @@ using System.Text;
|
|||||||
|
|
||||||
namespace DigitalData.Core.Security
|
namespace DigitalData.Core.Security
|
||||||
{
|
{
|
||||||
public class RSAFactory
|
public class RSAFactory : IRSAFactory
|
||||||
{
|
{
|
||||||
private static readonly Lazy<RSAFactory> LazyInstance = new(() => new());
|
private static readonly Lazy<RSAFactory> LazyInstance = new(() => new());
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user