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)); } }
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; }
} // 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
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)); }
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)); }
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)); }
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)); }
/// <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);
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; }