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));
        }
    }
Beispiel #11
0
        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()));
        }
Beispiel #12
0
        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 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));
        }
    }
Beispiel #15
0
    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 DisposeTransformsFinalBlock()
 {
     var hasher = new MockCryptoTransform(5);
     this.CreateCryptoStream(Stream.Null, hasher, CryptoStreamMode.Write).Dispose();
     Assert.True(hasher.FinalBlockTransformed);
 }
 public void DisposeDoesNotDisposeTransform()
 {
     var hasher = new MockCryptoTransform(5);
     this.CreateCryptoStream(Stream.Null, hasher, CryptoStreamMode.Write).Dispose();
     Assert.False(hasher.IsDisposed);
 }
    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()));
     }
 }