public async Task <string> DecryptAsync(DecryptionModel model) { byte[] iv = new byte[16]; byte[] buffer = Convert.FromBase64String(model.Data); using (Aes aes = Aes.Create()) { try { aes.Key = Encoding.UTF8.GetBytes(_encryptionKeyService.GetKey()); aes.IV = iv; ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); using (MemoryStream memoryStream = new MemoryStream(buffer)) { using (CryptoStream cryptoStream = new CryptoStream((Stream)memoryStream, decryptor, CryptoStreamMode.Read)) { using (StreamReader streamReader = new StreamReader((Stream)cryptoStream)) { return(await streamReader.ReadToEndAsync()); } } } } catch (Exception) { throw new Exception("Message could not be decrypted with current encryption key"); } } }
public async Task <IActionResult> Decrypt(DecryptionModel model) { var result = new ExpandoObject(); result.TryAdd("secret", await _encryptionService.DecryptAsync(model)); return(Ok(result)); }
public async Task <string> DecryptAsync(DecryptionModel model) { try { var response = await _apiClient.Client.PostAsJsonAsync("decrypt", model); var result = await response.Content.ReadAsStringAsync(); if (response.IsSuccessStatusCode) { return(JsonConvert.DeserializeObject <string>(result)); } else { throw new ApiException(JsonConvert.DeserializeObject <ApiErrorResult>(result)); } } catch (Exception) { throw new ApiException("Encryption service is unavailable"); } }
public async Task <IActionResult> Decrypt([FromBody] DecryptionModel model) { return(Ok(await _encryptionService.DecryptAsync(model))); }