public void DisposeDoesNotDisposeTransform() { var hasher = new MockCryptoTransform(5); this.CreateCryptoStream(Stream.Null, hasher, CryptoStreamMode.Write).Dispose(); Assert.False(hasher.IsDisposed); }
public void DisposeTransformsFinalBlock() { var hasher = new MockCryptoTransform(5); this.CreateCryptoStream(Stream.Null, hasher, CryptoStreamMode.Write).Dispose(); Assert.True(hasher.FinalBlockTransformed); }
public void DisposeAlsoDisposesTargetStream() { var transform = new MockCryptoTransform(5); var targetStream = new MemoryStream(); this.CreateCryptoStream(targetStream, transform, CryptoStreamMode.Write).Dispose(); Assert.Throws<ObjectDisposedException>(() => { long dummy = targetStream.Length; }); }
public void CanTransformMultipleBlocksViaWrite() { var transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); var target = new MemoryStream(); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Write)) { stream.Write(Encoding.UTF8.GetBytes("abcdefghij"), 0, 10); stream.Write(Encoding.UTF8.GetBytes("klm"), 0, 3); stream.Write(Encoding.UTF8.GetBytes("nop"), 0, 3); stream.Write(Encoding.UTF8.GetBytes("qrstuvwxyz"), 0, 10); this.FlushFinalBlock(stream); Assert.Equal("-abcdefghij-klmno-pqrst-uvwxy_zZ", Encoding.UTF8.GetString(target.ToArray())); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Write)) { stream.Write(Encoding.UTF8.GetBytes("abc"), 0, 3); stream.Write(Encoding.UTF8.GetBytes("defghijklmnop"), 0, 13); this.FlushFinalBlock(stream); Assert.Equal("-abcde-fghijklmno_pZ", Encoding.UTF8.GetString(target.ToArray())); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Write)) { stream.Write(Encoding.UTF8.GetBytes("abcdefghijk"), 0, 11); this.FlushFinalBlock(stream); Assert.Equal("-abcdefghij_kZ", Encoding.UTF8.GetString(target.ToArray())); } }
public void DisposeAlsoDisposesTargetStream() { var transform = new MockCryptoTransform(5); var targetStream = new MemoryStream(); this.CreateCryptoStream(targetStream, transform, CryptoStreamMode.Write).Dispose(); Assert.Throws <ObjectDisposedException>(() => { long dummy = targetStream.Length; }); }
public void LeaveOpen_DoesNotDisposeTargetStream() { var transform = new MockCryptoTransform(5); var targetStream = new MemoryStream(); this.CreateCryptoStream(targetStream, transform, CryptoStreamMode.Write, leaveOpen: true).Dispose(); _ = targetStream.Length; }
public void CannotReadFromWriteStream() { var transform = new MockCryptoTransform(5); var target = new MemoryStream(); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Write)) { byte[] buffer = new byte[1]; Assert.Throws<NotSupportedException>( () => stream.Read(buffer, 0, 1)); } }
public void WriteTo() { var t1 = new MockCryptoTransform(6); var t2 = new MockCryptoTransform(9); var ms = new MemoryStream(); using (var cryptoStream = CryptoStream.WriteTo(ms, t1, t2)) { cryptoStream.Write(Encoding.UTF8.GetBytes("abcdefghijkl"), 0, 12); } Assert.AreEqual("--abcdef-g_hijkl_ZZ", Encoding.UTF8.GetString(ms.ToArray())); }
public void ReadFrom() { var t1 = new MockCryptoTransform(6); var t2 = new MockCryptoTransform(9); var ms = new MemoryStream(Encoding.UTF8.GetBytes("abcdefghijkl")); using (var cryptoStream = CryptoStream.ReadFrom(ms, t1, t2)) { var buffer = new byte[100]; int bytesRead = cryptoStream.Read(buffer, 0, 100); Assert.AreEqual("--abcdef-g_hijkl_ZZ", Encoding.UTF8.GetString(buffer, 0, bytesRead)); } }
public void CannotWriteToReadStream() { var transform = new MockCryptoTransform(5); var target = new MemoryStream(); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { byte[] buffer = new byte[1]; Assert.Throws <NotSupportedException>( () => stream.Write(buffer, 0, 1)); } }
public void CryptoStreamWithNonEmptyFinalBlockViaWrite() { var transform = new MockCryptoTransform(5); var target = new MemoryStream(); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Write)) { stream.Write(Encoding.UTF8.GetBytes("ABCD"), 1, 3); stream.Write(Encoding.UTF8.GetBytes("EFGHI"), 0, 4); stream.Write(Encoding.UTF8.GetBytes("JKLMNOPQRS"), 0, 10); this.FlushFinalBlock(stream); Assert.Equal("-BCDEF-GHJKL-MNOPQ_RSZ", Encoding.UTF8.GetString(target.ToArray())); } }
public void CanTransformMultipleBlocksViaRead() { var transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); var target = new MemoryStream(Encoding.UTF8.GetBytes("abcdefghijklmnopqrstuvwxyz")); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { var buffer = new byte[100]; Assert.Equal(12, stream.Read(buffer, 0, 12)); Assert.Equal("-abcdefghij-", Encoding.UTF8.GetString(buffer, 0, 12)); Assert.Equal(3, stream.Read(buffer, 12, 3)); Assert.Equal("klm", Encoding.UTF8.GetString(buffer, 12, 3)); Assert.Equal(4, stream.Read(buffer, 15, 4)); Assert.Equal("no-p", Encoding.UTF8.GetString(buffer, 15, 4)); Assert.Equal(13, stream.Read(buffer, 19, 13)); Assert.Equal("qrst-uvwxy_zZ", Encoding.UTF8.GetString(buffer, 19, 13)); Assert.Equal("-abcdefghij-klmno-pqrst-uvwxy_zZ", Encoding.UTF8.GetString(buffer, 0, 32)); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(Encoding.UTF8.GetBytes("abcdefghijklmnop")); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { var buffer = new byte[100]; Assert.Equal(4, stream.Read(buffer, 0, 4)); Assert.Equal("-abc", Encoding.UTF8.GetString(buffer, 0, 4)); Assert.Equal(16, stream.Read(buffer, 4, 16)); Assert.Equal("de-fghijklmno_pZ", Encoding.UTF8.GetString(buffer, 4, 16)); Assert.Equal("-abcde-fghijklmno_pZ", Encoding.UTF8.GetString(buffer, 0, 20)); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(Encoding.UTF8.GetBytes("abcdefghijk")); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { var buffer = new byte[100]; Assert.Equal(14, stream.Read(buffer, 0, 14)); Assert.Equal("-abcdefghij_kZ", Encoding.UTF8.GetString(buffer, 0, 14)); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { var buffer = new byte[100]; Assert.Equal(2, stream.Read(buffer, 0, 12)); Assert.Equal("_Z", Encoding.UTF8.GetString(buffer, 0, 2)); } }
public void CanTransformMultipleBlocksViaRead() { var transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); var target = new MemoryStream(Encoding.UTF8.GetBytes("abcdefghijklmnopqrstuvwxyz")); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { var buffer = new byte[100]; Assert.Equal(12, stream.Read(buffer, 0, 12)); Assert.Equal("-abcdefghij-", Encoding.UTF8.GetString(buffer, 0, 12)); Assert.Equal(3, stream.Read(buffer, 12, 3)); Assert.Equal("klm", Encoding.UTF8.GetString(buffer, 12, 3)); Assert.Equal(4, stream.Read(buffer, 15, 4)); Assert.Equal("no-p", Encoding.UTF8.GetString(buffer, 15, 4)); Assert.Equal(13, stream.Read(buffer, 19, 13)); Assert.Equal("qrst-uvwxy_zZ", Encoding.UTF8.GetString(buffer, 19, 13)); Assert.Equal("-abcdefghij-klmno-pqrst-uvwxy_zZ", Encoding.UTF8.GetString(buffer, 0, 32)); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(Encoding.UTF8.GetBytes("abcdefghijklmnop")); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { var buffer = new byte[100]; Assert.Equal(4, stream.Read(buffer, 0, 4)); Assert.Equal("-abc", Encoding.UTF8.GetString(buffer, 0, 4)); Assert.Equal(16, stream.Read(buffer, 4, 16)); Assert.Equal("de-fghijklmno_pZ", Encoding.UTF8.GetString(buffer, 4, 16)); Assert.Equal("-abcde-fghijklmno_pZ", Encoding.UTF8.GetString(buffer, 0, 20)); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(Encoding.UTF8.GetBytes("abcdefghijk")); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { var buffer = new byte[100]; Assert.Equal(14, stream.Read(buffer, 0, 14)); Assert.Equal("-abcdefghij_kZ", Encoding.UTF8.GetString(buffer, 0, 14)); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { var buffer = new byte[100]; Assert.Equal(2, stream.Read(buffer, 0, 12)); Assert.Equal("_Z", Encoding.UTF8.GetString(buffer, 0, 2)); } }
public void CryptoStreamWithNonEmptyFinalBlockViaRead() { var transform = new MockCryptoTransform(5); var target = new MemoryStream(Encoding.UTF8.GetBytes("BCDEFGHJKLMNOPQRS")); using (Stream? stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { byte[] buffer = new byte[100]; Assert.Equal(4, stream.Read(buffer, 0, 4)); Assert.Equal("-BCD", Encoding.UTF8.GetString(buffer, 0, 4)); Assert.Equal(5, stream.Read(buffer, 4, 5)); Assert.Equal("EF-GH", Encoding.UTF8.GetString(buffer, 4, 5)); Assert.Equal(13, stream.Read(buffer, 9, 14)); Assert.Equal("JKL-MNOPQ_RSZ", Encoding.UTF8.GetString(buffer, 9, 13)); Assert.Equal(0, stream.Read(buffer, 0, 10)); // EOF string expected = "-BCDEF-GHJKL-MNOPQ_RSZ"; Assert.Equal(expected, Encoding.UTF8.GetString(buffer, 0, expected.Length)); } }
public void CanTransformMultipleBlocksViaWrite() { var transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); var target = new MemoryStream(); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Write)) { stream.Write(Encoding.UTF8.GetBytes("abcdefghij"), 0, 10); stream.Write(Encoding.UTF8.GetBytes("klm"), 0, 3); stream.Write(Encoding.UTF8.GetBytes("nop"), 0, 3); stream.Write(Encoding.UTF8.GetBytes("qrstuvwxyz"), 0, 10); this.FlushFinalBlock(stream); Assert.Equal("-abcdefghij-klmno-pqrst-uvwxy_zZ", Encoding.UTF8.GetString(target.ToArray())); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Write)) { stream.Write(Encoding.UTF8.GetBytes("abc"), 0, 3); stream.Write(Encoding.UTF8.GetBytes("defghijklmnop"), 0, 13); this.FlushFinalBlock(stream); Assert.Equal("-abcde-fghijklmno_pZ", Encoding.UTF8.GetString(target.ToArray())); } transform = new MockCryptoTransform(5, canTransformMultipleBlocks: true); target = new MemoryStream(); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Write)) { stream.Write(Encoding.UTF8.GetBytes("abcdefghijk"), 0, 11); this.FlushFinalBlock(stream); Assert.Equal("-abcdefghij_kZ", Encoding.UTF8.GetString(target.ToArray())); } }
public void CryptoStreamWithNonEmptyFinalBlockViaRead() { var transform = new MockCryptoTransform(5); var target = new MemoryStream(Encoding.UTF8.GetBytes("BCDEFGHJKLMNOPQRS")); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Read)) { byte[] buffer = new byte[100]; Assert.Equal(4, stream.Read(buffer, 0, 4)); Assert.Equal("-BCD", Encoding.UTF8.GetString(buffer, 0, 4)); Assert.Equal(5, stream.Read(buffer, 4, 5)); Assert.Equal("EF-GH", Encoding.UTF8.GetString(buffer, 4, 5)); Assert.Equal(13, stream.Read(buffer, 9, 14)); Assert.Equal("JKL-MNOPQ_RSZ", Encoding.UTF8.GetString(buffer, 9, 13)); Assert.Equal(0, stream.Read(buffer, 0, 10)); // EOF string expected = "-BCDEF-GHJKL-MNOPQ_RSZ"; Assert.Equal(expected, Encoding.UTF8.GetString(buffer, 0, expected.Length)); } }
public void CryptoStreamWithNonEmptyFinalBlockViaWrite() { var transform = new MockCryptoTransform(5); var target = new MemoryStream(); using (var stream = this.CreateCryptoStream(target, transform, CryptoStreamMode.Write)) { stream.Write(Encoding.UTF8.GetBytes("ABCD"), 1, 3); stream.Write(Encoding.UTF8.GetBytes("EFGHI"), 0, 4); stream.Write(Encoding.UTF8.GetBytes("JKLMNOPQRS"), 0, 10); this.FlushFinalBlock(stream); Assert.Equal("-BCDEF-GHJKL-MNOPQ_RSZ", Encoding.UTF8.GetString(target.ToArray())); } }