public async Task GetEncryptionStreamAsync_WithValidData_WritesEncryptedData() { byte[] original = new byte[128]; byte[] result; byte[] key = EncryptionHelpers.CreateEncryptionKey(); new Random().NextBytes(original); using (MemoryStream ms = new MemoryStream()) { using (Stream stream = await EncryptionHelpers.GetEncryptionStreamAsync(key, ms)) { await stream.WriteAsync(original, 0, original.Length); } result = ms.ToArray(); } Assert.NotNull(result); Assert.NotEmpty(result); Assert.NotEqual(original, result); byte[] iv = new byte[16]; Array.Copy(result, iv, 16); byte[] encrypted = new byte[result.Length - iv.Length]; Array.Copy(result, encrypted, encrypted.Length); Assert.NotEqual(original, encrypted); Assert.Equal(result.Length, iv.Length + encrypted.Length); }
public async Task GetEncryptionStreamAsync_WithNullEncryptionKey_Throws() { using (MemoryStream ms = new MemoryStream()) { await Assert.ThrowsAsync <ArgumentNullException>(async() => await EncryptionHelpers.GetEncryptionStreamAsync(null, ms)); } }
/// <summary> /// Opens a write-only stream to the given blob path. /// </summary> public override async Task <Stream?> GetBlobWriteStreamAsync(string path, bool createNewBlob = false) { Stream?underlying = await base.GetBlobWriteStreamAsync(path, createNewBlob); if (underlying == null) { return(null); } else { return(await EncryptionHelpers.GetEncryptionStreamAsync(_encryptionKey, underlying)); } }
public async Task EnsureDisposeWorks() { FieldInfo f; byte[] key = EncryptionHelpers.CreateEncryptionKey(); using (MemoryStream ms = new MemoryStream()) { CryptographicStream s = await EncryptionHelpers.GetEncryptionStreamAsync(key, ms); f = s.GetType().GetField("_underlyingStream", BindingFlags.NonPublic | BindingFlags.Instance); Assert.NotNull(f.GetValue(s)); s.Dispose(); Assert.Null(f.GetValue(s)); } }
public async Task GetEncryptionStreamAsync_WithNonWritableStream_Throws() { byte[] key = EncryptionHelpers.CreateEncryptionKey(); await Assert.ThrowsAsync <ArgumentOutOfRangeException>(async() => await EncryptionHelpers.GetEncryptionStreamAsync(key, new NonWritableStream())); }
public async Task GetEncryptionStreamAsync_WithEmptyEncryptionKey_Throws() { using (MemoryStream ms = new MemoryStream()) { await Assert.ThrowsAsync <ArgumentOutOfRangeException>(async() => await EncryptionHelpers.GetEncryptionStreamAsync(Array.Empty <byte>(), ms)); } }
public async Task GetEncryptionStreamAsync_WithNullStream_Throws() { byte[] key = EncryptionHelpers.CreateEncryptionKey(); await Assert.ThrowsAsync <ArgumentNullException>(async() => await EncryptionHelpers.GetEncryptionStreamAsync(key, null)); }