예제 #1
0
        public void HashTest()
        {
            var block = new SimpleBlock(2, "2", 0, "new block");

            var hashProvider = new SHA256HashProvider();

            hashProvider.Hash(block);

            Assert.Equal(block.Hash, "b77f43514bcd6c8c963b94c0bb66cbd6da8f5606599f9a32581d22368df02a81");
        }
예제 #2
0
        public void VerifyTest()
        {
            var blockWithValidHash   = new SimpleBlock(2, "2", 0, "new block", "b77f43514bcd6c8c963b94c0bb66cbd6da8f5606599f9a32581d22368df02a81");
            var blockWithInvalidHash = new SimpleBlock(2, "2", 0, "new block", "b22f43514bcd6c8c963b94c0bb66cbd6da8f5606599f9a32581d22322df02a22");

            var hashProvider = new SHA256HashProvider();

            var validBlockResult   = hashProvider.Verify(blockWithValidHash);
            var invalidBlockResult = hashProvider.Verify(blockWithInvalidHash);

            Assert.True(validBlockResult);
            Assert.False(invalidBlockResult);
        }
예제 #3
0
        public void SHA256SignatureProvider_HashString_ReturnsCorrectHash()
        {
            //Arrange
            string hashedString;

            using (var hash = SHA256.Create())
            {
                hashedString = Convert.ToBase64String(hash.ComputeHash(Encoding.UTF8.GetBytes("test")));
            }
            var hashProvider = new SHA256HashProvider();

            //Act
            var signature = hashProvider.Hash("test");

            //Assert
            Assert.Equal(hashedString, signature);
        }
예제 #4
0
        public void IsValidNewBlockTest()
        {
            var hasher  = new SHA256HashProvider();
            var factory = new SimpleBlockFactory(hasher);

            var blockchain = new SimpleBlockChain(hasher, factory);

            var genesisBlock = factory.CreateGenesisBlock();

            var blockWithBadIndex = new SimpleBlock(0, "1", 0, "new block", "0");

            Assert.False(blockchain.IsValidNewBlock(genesisBlock, blockWithBadIndex));

            var blockWithBadHash = new SimpleBlock(1, "1", 0, "new block", "VERY BAD HASH");

            Assert.False(blockchain.IsValidNewBlock(genesisBlock, blockWithBadHash));

            var validBlock = new SimpleBlock(2, "2", 0, "new block");

            hasher.Hash(validBlock);
            Assert.False(blockchain.IsValidNewBlock(genesisBlock, blockWithBadHash));
        }