From 9b250bf83f1711a3a39d366ba00ffb1f57be419f Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Sun, 1 Sep 2024 15:20:49 +0200 Subject: [PATCH] Prevent error when attempting to encrypt/decrypt empty string (#217) --- .../Controllers/Email/EmailBoxController.cs | 1 + .../Services/JsInteropService.cs | 22 +++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/AliasVault.Api/Controllers/Email/EmailBoxController.cs b/src/AliasVault.Api/Controllers/Email/EmailBoxController.cs index 0aefad46a..9ff1a2662 100644 --- a/src/AliasVault.Api/Controllers/Email/EmailBoxController.cs +++ b/src/AliasVault.Api/Controllers/Email/EmailBoxController.cs @@ -77,6 +77,7 @@ public class EmailBoxController(IDbContextFactory dbContex { Id = x.Id, Subject = x.Subject, + FromDisplay = x.From, FromDomain = x.FromDomain, FromLocal = x.FromLocal, ToDomain = x.ToDomain, diff --git a/src/AliasVault.Client/Services/JsInteropService.cs b/src/AliasVault.Client/Services/JsInteropService.cs index 232aa0a80..aa6ba4d9c 100644 --- a/src/AliasVault.Client/Services/JsInteropService.cs +++ b/src/AliasVault.Client/Services/JsInteropService.cs @@ -23,8 +23,15 @@ public sealed class JsInteropService(IJSRuntime jsRuntime) /// Plain text to encrypt. /// Encryption key to use. /// Encrypted ciphertext. - public async Task SymmetricEncrypt(string plaintext, string encryptionKey) => - await jsRuntime.InvokeAsync("cryptoInterop.encrypt", plaintext, encryptionKey); + public async Task SymmetricEncrypt(string plaintext, string encryptionKey) + { + if (string.IsNullOrEmpty(plaintext)) + { + return plaintext; + } + + return await jsRuntime.InvokeAsync("cryptoInterop.encrypt", plaintext, encryptionKey); + } /// /// Symmetrically decrypts a string using the provided encryption key. @@ -32,8 +39,15 @@ public sealed class JsInteropService(IJSRuntime jsRuntime) /// Cipher text to decrypt. /// Encryption key to use. /// Encrypted ciphertext. - public async Task SymmetricDecrypt(string ciphertext, string encryptionKey) => - await jsRuntime.InvokeAsync("cryptoInterop.decrypt", ciphertext, encryptionKey); + public async Task SymmetricDecrypt(string ciphertext, string encryptionKey) + { + if (string.IsNullOrEmpty(ciphertext)) + { + return ciphertext; + } + + return await jsRuntime.InvokeAsync("cryptoInterop.decrypt", ciphertext, encryptionKey); + } /// /// Downloads a file from a stream.