示例#1
0
        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");
                }
            }
        }
示例#2
0
        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");
            }
        }
示例#4
0
 public async Task <IActionResult> Decrypt([FromBody] DecryptionModel model)
 {
     return(Ok(await _encryptionService.DecryptAsync(model)));
 }