From b305edd7c5ccd2c0ca78ecb3e92f9840065b5c31 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Fri, 14 May 2010 14:11:56 +0000 Subject: 2010-05-14 Tatsuhiro Tsujikawa Left only IANA hash function textual name in messageDigest.cc. Assign only IANA hash function textual name to Checksum and ChunkChecksum. Fixed the value of MessageDigestContext::MD5. * src/Checksum.h * src/MetalinkParserController.cc * src/messageDigest.cc * src/messageDigest.h * test/IteratableChecksumValidatorTest.cc * test/IteratableChunkChecksumValidatorTest.cc * test/MessageDigestHelperTest.cc * test/Metalink2RequestGroupTest.cc * test/MetalinkProcessorTest.cc --- src/messageDigest.cc | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) (limited to 'src/messageDigest.cc') diff --git a/src/messageDigest.cc b/src/messageDigest.cc index ce860f89..02e7bfbf 100644 --- a/src/messageDigest.cc +++ b/src/messageDigest.cc @@ -42,7 +42,7 @@ const std::string MessageDigestContext::SHA1("sha-1"); const std::string MessageDigestContext::SHA256("sha-256"); -const std::string MessageDigestContext::MD5("md-5"); +const std::string MessageDigestContext::MD5("md5"); namespace { struct DigestAlgoEntry { @@ -68,13 +68,9 @@ static const DigestAlgoMap& getDigestAlgos() DigestAlgoMap::value_type("md5", DigestAlgoEntry(EVP_md5(), STRENGTH_MD5)), DigestAlgoMap::value_type ("sha-1", DigestAlgoEntry(EVP_sha1(), STRENGTH_SHA_1)), - DigestAlgoMap::value_type - ("sha1", DigestAlgoEntry(EVP_sha1(), STRENGTH_SHA_1)), # ifdef HAVE_EVP_SHA256 DigestAlgoMap::value_type ("sha-256", DigestAlgoEntry(EVP_sha256(), STRENGTH_SHA_256)), - DigestAlgoMap::value_type - ("sha256", DigestAlgoEntry(EVP_sha256(), STRENGTH_SHA_256)), # endif // HAVE_EVP_SHA256 #elif HAVE_LIBGCRYPT DigestAlgoMap::value_type @@ -82,17 +78,29 @@ static const DigestAlgoMap& getDigestAlgos() DigestAlgoMap::value_type ("sha-1", DigestAlgoEntry(GCRY_MD_SHA1, STRENGTH_SHA_1)), DigestAlgoMap::value_type - ("sha1", DigestAlgoEntry(GCRY_MD_SHA1, STRENGTH_SHA_1)), - DigestAlgoMap::value_type ("sha-256", DigestAlgoEntry(GCRY_MD_SHA256, STRENGTH_SHA_256)), - DigestAlgoMap::value_type - ("sha256", DigestAlgoEntry(GCRY_MD_SHA256, STRENGTH_SHA_256)), #endif // HAVE_LIBGCRYPT }; static const DigestAlgoMap algomap(vbegin(digests), vend(digests)); return algomap; } +std::string MessageDigestContext::getCanonicalAlgo +(const std::string& algostring) +{ + if(strcasecmp("sha-1", algostring.c_str()) == 0 || + strcasecmp("sha1", algostring.c_str()) == 0) { + return SHA1; + } else if(strcasecmp("sha-256", algostring.c_str()) == 0 || + strcasecmp("sha256", algostring.c_str()) == 0) { + return SHA256; + } else if(strcasecmp("md5", algostring.c_str()) == 0) { + return MD5; + } else { + return algostring; + } +} + std::string MessageDigestContext::digestFinal() { size_t length = digestLength(algo); @@ -151,4 +159,11 @@ bool MessageDigestContext::isStronger return (*lhsitr).second.strength > (*rhsitr).second.strength; } +bool MessageDigestContext::isValidHash +(const std::string& algostring, const std::string& hashstring) +{ + return util::isHexDigit(hashstring) && + supports(algostring) && digestLength(algostring)*2 == hashstring.size(); +} + } // namespace aria2 -- cgit