From 26a68cd4773c45e06fbff4a25a6ed14290dd3a35 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Mon, 18 Nov 2024 17:14:42 +0100 Subject: [PATCH] fix(Core.Security): pem-Importprozess in den Initilizer mehetods verschoben --- DigitalData.Core.Security/RSACryptographer.cs | 2 +- DigitalData.Core.Security/RSADecryptor.cs | 21 ++++++++++++++++++- DigitalData.Core.Security/RSAEncryptor.cs | 14 ++++++++++--- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/DigitalData.Core.Security/RSACryptographer.cs b/DigitalData.Core.Security/RSACryptographer.cs index 72959a6..7717071 100644 --- a/DigitalData.Core.Security/RSACryptographer.cs +++ b/DigitalData.Core.Security/RSACryptographer.cs @@ -5,7 +5,7 @@ namespace DigitalData.Core.Security { public class RSACryptographer : IRSACryptographer { - public required string Pem { get; init; } + public required virtual string Pem { get; init; } public required RSAEncryptionPadding Padding { get; init; } diff --git a/DigitalData.Core.Security/RSADecryptor.cs b/DigitalData.Core.Security/RSADecryptor.cs index 8078837..a8ad4a7 100644 --- a/DigitalData.Core.Security/RSADecryptor.cs +++ b/DigitalData.Core.Security/RSADecryptor.cs @@ -1,5 +1,6 @@ using DigitalData.Core.Abstractions.Security; using DigitalData.Core.Security.Extensions; +using System.Runtime.Serialization; namespace DigitalData.Core.Security { @@ -21,8 +22,26 @@ namespace DigitalData.Core.Security } } - public RSADecryptor() + public RSADecryptor() { } + + public RSADecryptor(string pem, string? password = null) + { + Pem = pem; + Password = password; + Initialize(); + } + + [OnDeserialized] + private void OnDeserialized(StreamingContext context) { + Initialize(); + } + + private void Initialize() + { + if (string.IsNullOrWhiteSpace(Pem)) + throw new InvalidOperationException("Pem cannot be null or empty."); + if (Password is null) _rsa.ImportFromPem(Pem); else diff --git a/DigitalData.Core.Security/RSAEncryptor.cs b/DigitalData.Core.Security/RSAEncryptor.cs index e0c6334..4ee7e13 100644 --- a/DigitalData.Core.Security/RSAEncryptor.cs +++ b/DigitalData.Core.Security/RSAEncryptor.cs @@ -5,9 +5,17 @@ namespace DigitalData.Core.Security { public class RSAEncryptor : RSACryptographer, IRSAEncryptor, IRSACryptographer { - public RSAEncryptor() - { - _rsa.ImportFromPem(Pem); + public override required string Pem + { + get => base.Pem; + init + { + if (string.IsNullOrWhiteSpace(Pem)) + throw new InvalidOperationException("Pem cannot be null or empty."); + + _rsa.ImportFromPem(base.Pem); + base.Pem = value; + } } public byte[] Encrypt(byte[] data) => _rsa.Encrypt(data, Padding);