Esempio n. 1
0
        public void TestNullKeyVsUnKeyed()
        {
            IBlake2SConfig ConfigNoKeyed, ConfigNullKeyed;

            byte[] MainData = null;
            Int32  i;

            MainData = Converters.ConvertStringToBytes(TestConstants.DefaultData, Encoding.UTF8);
            for (i = 1; i <= 32; i++)
            {
                ConfigNoKeyed       = new Blake2SConfig(i);
                ConfigNullKeyed     = new Blake2SConfig(i);
                ConfigNullKeyed.Key = null;

                IHash  ExpectedHash   = HashFactory.Crypto.CreateBlake2S(ConfigNoKeyed);
                string ExpectedString = ExpectedHash.ComputeBytes(MainData).ToString();

                IHash  ActualHash   = HashFactory.Crypto.CreateBlake2S(ConfigNullKeyed);
                string ActualString = ActualHash.ComputeBytes(MainData).ToString();

                Assert.AreEqual(ExpectedString, ActualString,
                                String.Format("Expected {0} but got {1} at Index {2}",
                                              ExpectedString, ActualString, i));
            }
        }
Esempio n. 2
0
        public Blake2STests()
        {
            Int32          LIdx;
            IBlake2SConfig LConfig = new Blake2SConfig();

            byte[] LKey = new byte[32];

            for (LIdx = 0; LIdx < LKey.Length; LIdx++)
            {
                LKey[LIdx] = (byte)LIdx;
            }

            LConfig.Key = LKey;

            hash = HashFactory.Crypto.CreateBlake2S();

            HashInstanceWithKey = HashFactory.Crypto.CreateBlake2S(LConfig);

            ExpectedHashOfEmptyData   = "69217A3079908094E11121D042354A7C1F55B6482CA1A51E1B250DFD1ED0EEF9";
            ExpectedHashOfDefaultData = "D9DB23D51529BC163546C2C76F9FDC4611118A691352524D6BCCF5C79AF89E14";
            ExpectedHashOfOnetoNine   = "7ACC2DD21A2909140507F37396ACCE906864B5F118DFA766B107962B7A82A0D4";
            ExpectedHashOfabcde       = "4BD7246C13721CC5B96F045BE71D49D5C82535332C6903771AFE9EF7B772136F";
            ExpectedHashOfDefaultDataWithHMACWithLongKey  = "1CB9502C2FE830B46849F2C178BE527BF4B1B80B0B002F6FAC18C0A7ABD3B636";
            ExpectedHashOfDefaultDataWithHMACWithShortKey = "105C7994CB1F775C709A9FBC9641FB2495311258268134F460B9895915A7519A";

            UnkeyedTestVectors = Blake2STestVectors.UnkeyedBlake2S;
            KeyedTestVectors   = Blake2STestVectors.KeyedBlake2S;
        }
Esempio n. 3
0
            } // end function CreateBlake2XS

            public static IHash CreateBlake2XS(byte[] a_Key, UInt64 a_XofSizeInBits)
            {
                IBlake2SConfig config = new Blake2SConfig(32);

                config.Key = a_Key.DeepCopy();

                return(CreateBlake2XS(new Blake2XSConfig(config, null), a_XofSizeInBits));
            } // end function CreateBlake2XS
Esempio n. 4
0
        private Blake2S Blake2SPCreateRoot()
        {
            IBlake2SConfig blake2SConfig = new Blake2SConfig(HashSize);

            blake2SConfig.Key = Key.DeepCopy();

            IBlake2STreeConfig blake2STreeConfig = new Blake2STreeConfig();

            blake2STreeConfig.FanOut        = (byte)ParallelismDegree;
            blake2STreeConfig.MaxDepth      = 2;
            blake2STreeConfig.NodeDepth     = 1;
            blake2STreeConfig.LeafSize      = 0;
            blake2STreeConfig.NodeOffset    = 0;
            blake2STreeConfig.InnerHashSize = (byte)OutSizeInBytes;
            blake2STreeConfig.IsLastNode    = true;

            return(new Blake2S(blake2SConfig, blake2STreeConfig, false));
        }
Esempio n. 5
0
        private Blake2S Blake2SPCreateRoot()
        {
            var config = new Blake2SConfig(HashSize)
            {
                Key = _key
            };

            var treeConfig = new Blake2STreeConfig
            {
                FanOut        = ParallelismDegree,
                MaxDepth      = 2,
                NodeDepth     = 1,
                LeafSize      = 0,
                NodeOffset    = 0,
                InnerHashSize = OutSizeInBytes,
                IsLastNode    = true
            };

            return(new Blake2S(config, treeConfig, false));
        }
Esempio n. 6
0
        private Blake2S Blake2SPCreateLeaf(UInt64 a_Offset)
        {
            IBlake2SConfig blake2SConfig = new Blake2SConfig(HashSize);

            blake2SConfig.Key = Key.DeepCopy();

            IBlake2STreeConfig blake2STreeConfig = new Blake2STreeConfig();

            blake2STreeConfig.FanOut        = (byte)ParallelismDegree;
            blake2STreeConfig.MaxDepth      = 2;
            blake2STreeConfig.NodeDepth     = 0;
            blake2STreeConfig.LeafSize      = 0;
            blake2STreeConfig.NodeOffset    = a_Offset;
            blake2STreeConfig.InnerHashSize = (byte)OutSizeInBytes;

            if (a_Offset == (UInt64)(ParallelismDegree - 1))
            {
                blake2STreeConfig.IsLastNode = true;
            }

            return(Blake2SPCreateLeafParam(blake2SConfig, blake2STreeConfig));
        }
Esempio n. 7
0
        private Blake2S Blake2SPCreateLeaf(ulong offset)
        {
            var config = new Blake2SConfig(OutSizeInBytes)
            {
                Key = _key
            };

            var treeConfig = new Blake2STreeConfig
            {
                FanOut        = ParallelismDegree,
                MaxDepth      = 2,
                NodeDepth     = 0,
                LeafSize      = 0,
                NodeOffset    = offset,
                InnerHashSize = OutSizeInBytes
            };

            if (offset == ParallelismDegree - 1)
            {
                treeConfig.IsLastNode = true;
            }

            return(Blake2SPCreateLeafParam(config, treeConfig));
        }
Esempio n. 8
0
 /// <summary>
 /// <br />Blake2S defaults to setting the expected output length <br />
 /// from <c>Config.HashSize</c>. <br />In some cases, however,
 /// we do not want this, as the output length <br />
 /// of these instances is given by <c>TreeConfig.InnerSize</c>
 /// instead. <br />
 /// </summary>
 private static Blake2S Blake2SPCreateLeafParam(Blake2SConfig config, Blake2STreeConfig treeConfig) =>
 new Blake2S(config, treeConfig);
Esempio n. 9
0
 public static IHash CreateBlake2S(Blake2SConfig config = null, Blake2STreeConfig treeConfig = null) =>
 new Blake2S(config ?? Blake2SConfig.DefaultConfig, treeConfig);
 public static Blake2XSConfig CreateBlake2XSConfig(Blake2SConfig config, Blake2STreeConfig treeConfig) =>
 new Blake2XSConfig(config, treeConfig);
 private Blake2XSConfig(Blake2SConfig config, Blake2STreeConfig treeConfig)
 {
     Config     = config;
     TreeConfig = treeConfig;
 }