From 608d266d1c4ae1c109a201f92d7bead6bce6a99e Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Tue, 7 Jan 2025 16:53:05 +0100 Subject: [PATCH] refactor(IAsymmetricKey): Umwandlung von RsaSecurityKey in SecurityKey zur besseren Abstraktion. - RSAEncryptionPadding entfernen - Pem als Inhalt Content --- .../Security/IAsymmetricKey.cs | 6 ++---- DigitalData.Core.Security/RSAKey/RSAFactory.cs | 2 +- DigitalData.Core.Security/RSAKey/RSAKeyBase.cs | 4 ++-- DigitalData.Core.Security/RSAKey/RSAPrivateKey.cs | 12 ++++++------ DigitalData.Core.Security/RSAKey/RSAPublicKey.cs | 6 +++--- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/DigitalData.Core.Abstractions/Security/IAsymmetricKey.cs b/DigitalData.Core.Abstractions/Security/IAsymmetricKey.cs index 196e1d4..d2ed20b 100644 --- a/DigitalData.Core.Abstractions/Security/IAsymmetricKey.cs +++ b/DigitalData.Core.Abstractions/Security/IAsymmetricKey.cs @@ -5,14 +5,12 @@ namespace DigitalData.Core.Abstractions.Security { public interface IAsymmetricKey : IUniqueSecurityContext { - public string Pem { get; init; } - - public RSAEncryptionPadding Padding { get; init; } + public string Content { get; init; } public new string Issuer { get; init; } public new string Audience { get; init; } - public RsaSecurityKey RsaSecurityKey { get; } + public SecurityKey SecurityKey { get; } } } \ No newline at end of file diff --git a/DigitalData.Core.Security/RSAKey/RSAFactory.cs b/DigitalData.Core.Security/RSAKey/RSAFactory.cs index d3a7802..db789a0 100644 --- a/DigitalData.Core.Security/RSAKey/RSAFactory.cs +++ b/DigitalData.Core.Security/RSAKey/RSAFactory.cs @@ -58,7 +58,7 @@ namespace DigitalData.Core.Security.RSAKey public IAsymmetricPrivateKey CreatePrivateKey(string pem, string? issuer = null, string? audience = null, bool encrypt = false, RSAEncryptionPadding? padding = null) => new RSAPrivateKey() { - Pem = pem, + Content = pem, Issuer = issuer ?? string.Empty, Audience = audience ?? string.Empty, IsEncrypted = encrypt, diff --git a/DigitalData.Core.Security/RSAKey/RSAKeyBase.cs b/DigitalData.Core.Security/RSAKey/RSAKeyBase.cs index cbaf373..f2bb84f 100644 --- a/DigitalData.Core.Security/RSAKey/RSAKeyBase.cs +++ b/DigitalData.Core.Security/RSAKey/RSAKeyBase.cs @@ -7,7 +7,7 @@ namespace DigitalData.Core.Security.RSAKey { public class RSAKeyBase : IAsymmetricKey { - public virtual string Pem { get; init; } + public virtual string Content { get; init; } public RSAEncryptionPadding Padding { get; init; } = RSAEncryptionPadding.OaepSHA256; @@ -26,7 +26,7 @@ namespace DigitalData.Core.Security.RSAKey private readonly Lazy _lazyRsaSecurityKey; - public RsaSecurityKey RsaSecurityKey => _lazyRsaSecurityKey.Value; + public SecurityKey SecurityKey => _lazyRsaSecurityKey.Value; #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. internal RSAKeyBase() diff --git a/DigitalData.Core.Security/RSAKey/RSAPrivateKey.cs b/DigitalData.Core.Security/RSAKey/RSAPrivateKey.cs index a1a5a84..a62d4e9 100644 --- a/DigitalData.Core.Security/RSAKey/RSAPrivateKey.cs +++ b/DigitalData.Core.Security/RSAKey/RSAPrivateKey.cs @@ -8,7 +8,7 @@ namespace DigitalData.Core.Security.RSAKey { private string? _pem; - public override string Pem + public override string Content { #pragma warning disable CS8603 // Possible null reference return. get => _pem; @@ -38,7 +38,7 @@ namespace DigitalData.Core.Security.RSAKey { _lazyPublicKey = new(() => new RSAPublicKey() { - Pem = RSA.ExportRSAPublicKeyPem(), + Content = RSA.ExportRSAPublicKeyPem(), Padding = Padding }); @@ -70,14 +70,14 @@ namespace DigitalData.Core.Security.RSAKey throw PemIsNullException; if (IsEncrypted) - RSA.ImportFromEncryptedPem(Pem, Secrets.PBE_PASSWORD.AsSpan()); + RSA.ImportFromEncryptedPem(Content, Secrets.PBE_PASSWORD.AsSpan()); else - RSA.ImportFromPem(Pem); + RSA.ImportFromPem(Content); } - private InvalidOperationException PemIsNullException => new($"Pem is null or empty. Issuer: {Issuer}, Audience: {Audience}."); + private InvalidOperationException PemIsNullException => new($"Content is null or empty. Issuer: {Issuer}, Audience: {Audience}."); public SigningCredentials CreateSigningCredentials(string algorithm = SecurityAlgorithms.RsaSha256, string? digest = null) - => digest is null ? new(RsaSecurityKey, algorithm) : new(RsaSecurityKey, algorithm, digest); + => digest is null ? new(SecurityKey, algorithm) : new(SecurityKey, algorithm, digest); } } \ No newline at end of file diff --git a/DigitalData.Core.Security/RSAKey/RSAPublicKey.cs b/DigitalData.Core.Security/RSAKey/RSAPublicKey.cs index 5caf179..efcd335 100644 --- a/DigitalData.Core.Security/RSAKey/RSAPublicKey.cs +++ b/DigitalData.Core.Security/RSAKey/RSAPublicKey.cs @@ -4,12 +4,12 @@ namespace DigitalData.Core.Security.RSAKey { public class RSAPublicKey : RSAKeyBase, IAsymmetricPublicKey, IAsymmetricKey { - public override string Pem + public override string Content { - get => base.Pem; + get => base.Content; init { - base.Pem = value; + base.Content = value; RSA.ImportFromPem(value); } }