summaryrefslogtreecommitdiff
path: root/src/messageDigest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-05-14 14:11:56 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-05-14 14:11:56 +0000
commitb305edd7c5ccd2c0ca78ecb3e92f9840065b5c31 (patch)
treec2af0bb7f71522652ea1cf71f915345e1889b691 /src/messageDigest.cc
parent88475a6aa092f402ca8bad19378e7e030480c533 (diff)
2010-05-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
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
Diffstat (limited to 'src/messageDigest.cc')
-rw-r--r--src/messageDigest.cc33
1 files changed, 24 insertions, 9 deletions
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