From 2e68a37944aee0ddfa24ce047393b13882e770b3 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 5 Dec 2024 11:06:11 +0100 Subject: [PATCH] =?UTF-8?q?feat(HashAlgorithmNameConverter):=20Erstellt=20?= =?UTF-8?q?f=C3=BCr=20benutzerfreundlichere=20json=20de/serilization.=20?= =?UTF-8?q?=20-=20DI-Erweiterungsmethoden=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DigitalData.Core.Security/DIExtensions.cs | 12 ++++++++++++ .../HashAlgorithmNameConverter.cs | 13 +++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 DigitalData.Core.Security/HashAlgorithmNameConverter.cs diff --git a/DigitalData.Core.Security/DIExtensions.cs b/DigitalData.Core.Security/DIExtensions.cs index 644e770..1ecb854 100644 --- a/DigitalData.Core.Security/DIExtensions.cs +++ b/DigitalData.Core.Security/DIExtensions.cs @@ -5,11 +5,23 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; +using System.Text.Json; +using System.Text.Json.Serialization; namespace DigitalData.Core.Security { public static class DIExtensions { + public static JsonSerializerOptions TryAddCryptographerConverter(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; + } + private static IServiceCollection AddAsymCryptService(this IServiceCollection services) where TAsymCryptParams : AsymCryptParams { diff --git a/DigitalData.Core.Security/HashAlgorithmNameConverter.cs b/DigitalData.Core.Security/HashAlgorithmNameConverter.cs new file mode 100644 index 0000000..8fe7a53 --- /dev/null +++ b/DigitalData.Core.Security/HashAlgorithmNameConverter.cs @@ -0,0 +1,13 @@ +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