private void runTest(Case dc) { SkeinDigest digest = new SkeinDigest(dc.getBlockSize(), dc.getOutputSize()); byte[] message = dc.getMessage(); digest.BlockUpdate(message, 0, message.Length); byte[] output = new byte[digest.GetDigestSize()]; digest.DoFinal(output, 0); if (!AreEqual(output, dc.getDigest())) { Fail(digest.AlgorithmName + " message mismatch.\n Message " + Hex.ToHexString(dc.getMessage()), Hex.ToHexString(dc.getDigest()), Hex.ToHexString(output)); } // Clone test digest.BlockUpdate(message, 0, message.Length / 2); // clone the Digest IDigest d = new SkeinDigest(digest); digest.BlockUpdate(message, message.Length / 2, message.Length - message.Length / 2); digest.DoFinal(output, 0); if (!AreEqual(dc.getDigest(), output)) { Fail("failing clone vector test", Hex.ToHexString(dc.getDigest()), Hex.ToHexString(output)); } d.BlockUpdate(message, message.Length / 2, message.Length - message.Length / 2); d.DoFinal(output, 0); if (!AreEqual(dc.getDigest(), output)) { Fail("failing second clone vector test", Hex.ToHexString(dc.getDigest()), Hex.ToHexString(output)); } // // // // memo test // // // Memoable m = (Memoable)digest; // // digest.Update(message, 0, message.Length / 2); // // // copy the Digest // Memoable copy1 = m.copy(); // Memoable copy2 = copy1.copy(); // // digest.Update(message, message.Length / 2, message.Length - message.Length / 2); // digest.DoFinal(output, 0); // // if (!AreEqual(dc.getDigest(), output)) // { // Fail("failing memo vector test", Hex.ToHexString(dc.getDigest()), Hex.ToHexString(output)); // } // // m.reset(copy1); // // digest.Update(message, message.Length / 2, message.Length - message.Length / 2); // digest.DoFinal(output, 0); // // if (!AreEqual(dc.getDigest(), output)) // { // fail("failing memo reset vector test", Hex.ToHexString(dc.getDigest()), Hex.ToHexString(output)); // } // // IDigest md = (IDigest)copy2; // // md.Update(message, message.Length / 2, message.Length - message.Length / 2); // md.DoFinal(output, 0); // // if (!AreEqual(dc.getDigest(), output)) // { // Fail("failing memo copy vector test", Hex.ToHexString(dc.getDigest()), Hex.ToHexString(output)); // } }
private static byte[] GetHash(string filePath) { var data = File.ReadAllBytes(filePath); var digest = new SkeinDigest(512, 512); digest.BlockUpdate(data, 0, data.Length); var hash = new byte[digest.GetDigestSize()]; digest.DoFinal(hash, 0); return hash; }