public async Task GetDecryptionStreamAsync_WithNullEncryptionKey_Throws() { using (MemoryStream ms = new MemoryStream()) { await Assert.ThrowsAsync <ArgumentNullException>(async() => await EncryptionHelpers.GetDecryptionStreamAsync(null, ms)); } }
/// <summary> /// Opens a read-only stream to the given blob path. /// </summary> public override async Task <Stream?> GetBlobReadStreamAsync(string path) { Stream?underlying = await base.GetBlobReadStreamAsync(path); if (underlying == null) { return(null); } else { Stream seekable = new MemoryStream(); using (CryptographicStream s = await EncryptionHelpers.GetDecryptionStreamAsync(_encryptionKey, underlying)) { await s.CopyToAsync(seekable); seekable.Seek(0, SeekOrigin.Begin); } return(seekable); } }
public async Task GetDecryptionStreamAsync_WithValidData_WritesDecryptedData() { byte[] key = EncryptionHelpers.CreateEncryptionKey(); byte[] original = new byte[128]; new Random().NextBytes(original); byte[] encrypted = await EncryptionHelpers.EncryptDataAsync(original, key); byte[] result; using (MemoryStream ms = new MemoryStream(encrypted)) using (MemoryStream output = new MemoryStream()) { using (Stream stream = await EncryptionHelpers.GetDecryptionStreamAsync(key, ms)) { await stream.CopyToAsync(output); } result = output.ToArray(); } Assert.NotNull(result); Assert.NotEmpty(result); Assert.Equal(original, result); }
public async Task GetDecryptionStreamAsync_WithNonReadableStream_Throws() { byte[] key = EncryptionHelpers.CreateEncryptionKey(); await Assert.ThrowsAsync <ArgumentOutOfRangeException>(async() => await EncryptionHelpers.GetDecryptionStreamAsync(key, new NonReadableStream())); }
public async Task GetDecryptionStreamAsync_WithEmptyEncryptionKey_Throws() { using (MemoryStream ms = new MemoryStream()) { await Assert.ThrowsAsync <ArgumentOutOfRangeException>(async() => await EncryptionHelpers.GetDecryptionStreamAsync(Array.Empty <byte>(), ms)); } }
public async Task GetDecryptionStreamAsync_WithNullStream_Throws() { byte[] key = EncryptionHelpers.CreateEncryptionKey(); await Assert.ThrowsAsync <ArgumentNullException>(async() => await EncryptionHelpers.GetDecryptionStreamAsync(key, null)); }