From 0235c83075613150dd17cbff3891bf9b4b1d5369 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Wed, 18 Dec 2024 13:04:15 +0100 Subject: [PATCH] =?UTF-8?q?feat(RSAFactoryParams):=20Umbenennung=20von=20P?= =?UTF-8?q?beHashAlgorithmName=20in=20PbeHashAlgorithm=20und=20Hinzuf?= =?UTF-8?q?=C3=BCgen=20von=20String-Proportionen=20mit=20dem=20Namen=20von?= =?UTF-8?q?=20PbeHashAlgorithmName.=20=20-=20PbeHashAlgorithmName.init=20M?= =?UTF-8?q?ethoden=20hinzugef=C3=BCgt,=20um=20zu=20versuchen,=20PbeHashAlg?= =?UTF-8?q?orithm=20mit=20Reflection=20zu=20initialisieren.=20Wenn=20er=20?= =?UTF-8?q?null=20ist,=20wird=20er=20nach=20dem=20Namen=20generiert.=20-?= =?UTF-8?q?=20PbeHashAlgorithmName.get=20hinzugef=C3=BCgt,=20um=20den=20Na?= =?UTF-8?q?men=20von=20PbeHashAlgorithm=20zu=20erhalten.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Config/RSAFactoryParams.cs | 16 +++++++++++++--- .../Cryptographer/RSAFactory.cs | 2 +- DigitalData.Core.Security/DIExtensions.cs | 3 --- .../HashAlgorithmNameConverter.cs | 13 ------------- 4 files changed, 14 insertions(+), 20 deletions(-) delete mode 100644 DigitalData.Core.Security/HashAlgorithmNameConverter.cs diff --git a/DigitalData.Core.Security/Config/RSAFactoryParams.cs b/DigitalData.Core.Security/Config/RSAFactoryParams.cs index 91469b5..6a67223 100644 --- a/DigitalData.Core.Security/Config/RSAFactoryParams.cs +++ b/DigitalData.Core.Security/Config/RSAFactoryParams.cs @@ -1,4 +1,5 @@ -using System.Security.Cryptography; +using System.Reflection; +using System.Security.Cryptography; using System.Text.Json.Serialization; namespace DigitalData.Core.Security.Config @@ -11,7 +12,16 @@ namespace DigitalData.Core.Security.Config public PbeEncryptionAlgorithm PbeEncryptionAlgorithm { get; init; } = PbeEncryptionAlgorithm.Aes256Cbc; - public HashAlgorithmName PbeHashAlgorithmName { get; init; } = HashAlgorithmName.SHA256; + public HashAlgorithmName PbeHashAlgorithm { get; init; } = HashAlgorithmName.SHA256; + + // TODO: add as json converter to IConfigurIConfiguration.Config + public string PbeHashAlgorithmName + { + get => PbeHashAlgorithm.ToString(); + init => PbeHashAlgorithm = (typeof(HashAlgorithmName).GetProperty(value, BindingFlags.Public | BindingFlags.Static)?.GetValue(null) is HashAlgorithmName hashAlgorithmName) + ? hashAlgorithmName + : new(value); + } public int PbeIterationCount { get; init; } = 100_000; @@ -37,7 +47,7 @@ namespace DigitalData.Core.Security.Config return true; }); - AfterCreate += () => _pbeParameters = new PbeParameters(PbeEncryptionAlgorithm, PbeHashAlgorithmName, PbeIterationCount); + AfterCreate += () => _pbeParameters = new PbeParameters(PbeEncryptionAlgorithm, PbeHashAlgorithm, PbeIterationCount); } protected event Action AfterCreate; diff --git a/DigitalData.Core.Security/Cryptographer/RSAFactory.cs b/DigitalData.Core.Security/Cryptographer/RSAFactory.cs index 6b0216a..609fbe5 100644 --- a/DigitalData.Core.Security/Cryptographer/RSAFactory.cs +++ b/DigitalData.Core.Security/Cryptographer/RSAFactory.cs @@ -31,7 +31,7 @@ namespace DigitalData.Core.Security.Cryptographer var pbeParameters = pbeEncryptionAlgorithm is null && hashAlgorithmName is null && iterationCount is null ? new PbeParameters( pbeEncryptionAlgorithm ?? _params.PbeEncryptionAlgorithm, - hashAlgorithmName ?? _params.PbeHashAlgorithmName, + hashAlgorithmName ?? _params.PbeHashAlgorithm, iterationCount ?? _params.PbeIterationCount) : _params.PbeParameters; diff --git a/DigitalData.Core.Security/DIExtensions.cs b/DigitalData.Core.Security/DIExtensions.cs index e70c86a..d18d13a 100644 --- a/DigitalData.Core.Security/DIExtensions.cs +++ b/DigitalData.Core.Security/DIExtensions.cs @@ -13,9 +13,6 @@ namespace DigitalData.Core.Security { public static JsonSerializerOptions AddCryptographerConverter(this JsonSerializerOptions options) { - if (!options.Converters.OfType().Any()) - options.Converters.Add(new HashAlgorithmNameConverter()); - if (!options.Converters.OfType().Any()) options.Converters.Add(new JsonStringEnumConverter()); return options; diff --git a/DigitalData.Core.Security/HashAlgorithmNameConverter.cs b/DigitalData.Core.Security/HashAlgorithmNameConverter.cs deleted file mode 100644 index 8fe7a53..0000000 --- a/DigitalData.Core.Security/HashAlgorithmNameConverter.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System.Security.Cryptography; -using System.Text.Json.Serialization; -using System.Text.Json; - -namespace DigitalData.Core.Security -{ - public class HashAlgorithmNameConverter : JsonConverter - { - public override HashAlgorithmName Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => new(reader.GetString() ?? string.Empty); - - public override void Write(Utf8JsonWriter writer, HashAlgorithmName value, JsonSerializerOptions options) => writer.WriteStringValue(value.Name); - } -} \ No newline at end of file