From 6847b740959926dc4162ba57b68cc528c838d8a9 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Tue, 1 Oct 2024 16:04:44 +0200 Subject: [PATCH] feat(EncodeType): Enum zur Klassifizierung von Kodierungstypen erstellt. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Erweiterungsmethoden hinzugefügt, um zu versuchen, String mit out-keyworld zu dekodieren. - Erweiterungsmethode hinzugefügt, um den Typ des Kodierungstyps des dekodierten String-Arrays zu finden. --- EnvelopeGenerator.Application/EncodeType.cs | 9 ++++++++ .../EnvelopeGeneratorExtensions.cs | 22 ++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 EnvelopeGenerator.Application/EncodeType.cs diff --git a/EnvelopeGenerator.Application/EncodeType.cs b/EnvelopeGenerator.Application/EncodeType.cs new file mode 100644 index 00000000..677073df --- /dev/null +++ b/EnvelopeGenerator.Application/EncodeType.cs @@ -0,0 +1,9 @@ +namespace EnvelopeGenerator.Application +{ + public enum EncodeType + { + EnvelopeReceiver, + ReadOnly, + Undefined + } +} \ No newline at end of file diff --git a/EnvelopeGenerator.Application/EnvelopeGeneratorExtensions.cs b/EnvelopeGenerator.Application/EnvelopeGeneratorExtensions.cs index 875dad1c..b2a7475c 100644 --- a/EnvelopeGenerator.Application/EnvelopeGeneratorExtensions.cs +++ b/EnvelopeGenerator.Application/EnvelopeGeneratorExtensions.cs @@ -68,6 +68,26 @@ namespace EnvelopeGenerator.Application return input.IndexOf('=') == -1; // No padding allowed except at the end } + public static bool TryDecode(this string encoded, out string[] decoded) + { + if (!encoded.IsBase64String()) + { + decoded = Array.Empty(); + return false; + } + byte[] bytes = Convert.FromBase64String(encoded); + string decodedString = Encoding.UTF8.GetString(bytes); + decoded = decodedString.Split(new string[] { "::" }, StringSplitOptions.None); + return true; + } + + public static EncodeType GetEncodeType(string[] decoded) => decoded.Length switch + { + 2 => EncodeType.EnvelopeReceiver, + 3 => EncodeType.ReadOnly, + _ => EncodeType.Undefined, + }; + /// /// Decodes the envelope receiver ID and extracts the envelope UUID and receiver signature. /// @@ -80,7 +100,7 @@ namespace EnvelopeGenerator.Application return (null, null); } byte[] bytes = Convert.FromBase64String(envelopeReceiverId); - string decodedString = System.Text.Encoding.UTF8.GetString(bytes); + string decodedString = Encoding.UTF8.GetString(bytes); string[] parts = decodedString.Split(new string[] { "::" }, StringSplitOptions.None); if (parts.Length > 1)