private IDigest GetDigest(THashAlgorithm hashAlgorithm) { IDigest result = null; switch (hashAlgorithm) { case THashAlgorithm.None: result = new NullDigest(); break; case THashAlgorithm.MD5: result = new MD5Digest(); break; case THashAlgorithm.SHA1: result = new Sha1Digest(); break; case THashAlgorithm.SHA224: result = new Sha224Digest(); break; case THashAlgorithm.SHA256: result = new Sha256Digest(); break; case THashAlgorithm.SHA384: result = new Sha384Digest(); break; case THashAlgorithm.SHA512: result = new Sha512Digest(); break; default: break; } return(result); }
public static IDigest GetDigest(string algorithm) { string text = Platform.ToUpperInvariant(algorithm); string text2 = (string)DigestUtilities.algorithms[text]; if (text2 == null) { text2 = text; } try { switch ((DigestUtilities.DigestAlgorithm)Enums.GetEnumValue(typeof(DigestUtilities.DigestAlgorithm), text2)) { case DigestUtilities.DigestAlgorithm.GOST3411: { IDigest result = new Gost3411Digest(); return(result); } case DigestUtilities.DigestAlgorithm.MD2: { IDigest result = new MD2Digest(); return(result); } case DigestUtilities.DigestAlgorithm.MD4: { IDigest result = new MD4Digest(); return(result); } case DigestUtilities.DigestAlgorithm.MD5: { IDigest result = new MD5Digest(); return(result); } case DigestUtilities.DigestAlgorithm.RIPEMD128: { IDigest result = new RipeMD128Digest(); return(result); } case DigestUtilities.DigestAlgorithm.RIPEMD160: { IDigest result = new RipeMD160Digest(); return(result); } case DigestUtilities.DigestAlgorithm.RIPEMD256: { IDigest result = new RipeMD256Digest(); return(result); } case DigestUtilities.DigestAlgorithm.RIPEMD320: { IDigest result = new RipeMD320Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_1: { IDigest result = new Sha1Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_224: { IDigest result = new Sha224Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_256: { IDigest result = new Sha256Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_384: { IDigest result = new Sha384Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_512: { IDigest result = new Sha512Digest(); return(result); } case DigestUtilities.DigestAlgorithm.SHA_512_224: { IDigest result = new Sha512tDigest(224); return(result); } case DigestUtilities.DigestAlgorithm.SHA_512_256: { IDigest result = new Sha512tDigest(256); return(result); } case DigestUtilities.DigestAlgorithm.SHA3_224: { IDigest result = new Sha3Digest(224); return(result); } case DigestUtilities.DigestAlgorithm.SHA3_256: { IDigest result = new Sha3Digest(256); return(result); } case DigestUtilities.DigestAlgorithm.SHA3_384: { IDigest result = new Sha3Digest(384); return(result); } case DigestUtilities.DigestAlgorithm.SHA3_512: { IDigest result = new Sha3Digest(512); return(result); } case DigestUtilities.DigestAlgorithm.TIGER: { IDigest result = new TigerDigest(); return(result); } case DigestUtilities.DigestAlgorithm.WHIRLPOOL: { IDigest result = new WhirlpoolDigest(); return(result); } } } catch (ArgumentException) { } throw new SecurityUtilityException("Digest " + text2 + " not recognised."); }
public ITestResult Perform() { IDigest digest = new Sha224Digest(); byte[] resBuf = new byte[digest.GetDigestSize()]; string resStr; // // test 1 // digest.DoFinal(resBuf, 0); resStr = Hex.ToHexString(resBuf); if (!resVec1.Equals(resStr)) { return(new SimpleTestResult(false, "SHA-224 failing standard vector test 1" + SimpleTest.NewLine + " expected: " + resVec1 + SimpleTest.NewLine + " got : " + resStr)); } // // test 2 // byte[] bytes = Hex.Decode(testVec2); digest.BlockUpdate(bytes, 0, bytes.Length); digest.DoFinal(resBuf, 0); resStr = Hex.ToHexString(resBuf); if (!resVec2.Equals(resStr)) { return(new SimpleTestResult(false, "SHA-224 failing standard vector test 2" + SimpleTest.NewLine + " expected: " + resVec2 + SimpleTest.NewLine + " got : " + resStr)); } // // test 3 // bytes = Hex.Decode(testVec3); digest.BlockUpdate(bytes, 0, bytes.Length); digest.DoFinal(resBuf, 0); resStr = Hex.ToHexString(resBuf); if (!resVec3.Equals(resStr)) { return(new SimpleTestResult(false, "SHA-224 failing standard vector test 3" + SimpleTest.NewLine + " expected: " + resVec3 + SimpleTest.NewLine + " got : " + resStr)); } // // test 4 // bytes = Hex.Decode(testVec4); digest.BlockUpdate(bytes, 0, bytes.Length); digest.DoFinal(resBuf, 0); resStr = Hex.ToHexString(resBuf); if (!resVec4.Equals(resStr)) { return(new SimpleTestResult(false, "SHA-224 failing standard vector test 4" + SimpleTest.NewLine + " expected: " + resVec4 + SimpleTest.NewLine + " got : " + resStr)); } // // test 5 // bytes = Hex.Decode(testVec4); digest.BlockUpdate(bytes, 0, bytes.Length / 2); // clone the IDigest IDigest d = new Sha224Digest((Sha224Digest)digest); digest.BlockUpdate(bytes, bytes.Length / 2, bytes.Length - bytes.Length / 2); digest.DoFinal(resBuf, 0); resStr = Hex.ToHexString(resBuf); if (!resVec4.Equals(resStr)) { return(new SimpleTestResult(false, "SHA-224 failing standard vector test 5" + SimpleTest.NewLine + " expected: " + resVec4 + SimpleTest.NewLine + " got : " + resStr)); } d.BlockUpdate(bytes, bytes.Length / 2, bytes.Length - bytes.Length / 2); d.DoFinal(resBuf, 0); resStr = Hex.ToHexString(resBuf); if (!resVec4.Equals(resStr)) { return(new SimpleTestResult(false, "SHA-224 failing standard vector test 5" + SimpleTest.NewLine + " expected: " + resVec4 + SimpleTest.NewLine + " got : " + resStr)); } // test 6 bytes = Hex.Decode(testVec5); for (int i = 0; i < 100000; i++) { digest.BlockUpdate(bytes, 0, bytes.Length); } digest.DoFinal(resBuf, 0); resStr = Hex.ToHexString(resBuf); if (!resVec5.Equals(resStr)) { return(new SimpleTestResult(false, "SHA-224 failing standard vector test 6" + SimpleTest.NewLine + " expected: " + resVec5 + SimpleTest.NewLine + " got : " + resStr)); } return(new SimpleTestResult(true, Name + ": Okay")); }
public SHA224CryptoServiceProvider() { _digest = new Sha224Digest(); }