summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-11-11 03:23:08 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-11-11 03:23:08 +0000
commit1946b3341f3a2cb7e55829bc8af56ead2a5a4e6a (patch)
tree4b5c30f1e4bd4c93feea0304ca7aa8049afbd270 /src
parent89f997ec0d93345fa3134d1c906bf16246a51fc1 (diff)
2010-11-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added sha-224, sha-384, sha-512 hash function support. * m4/openssl.m4 * src/MessageDigest.cc * src/LibgcryptMessageDigestImpl.cc * src/LibsslMessageDigestImpl.cc
Diffstat (limited to 'src')
-rw-r--r--src/LibgcryptMessageDigestImpl.cc3
-rw-r--r--src/LibsslMessageDigestImpl.cc9
-rw-r--r--src/MessageDigest.cc8
3 files changed, 19 insertions, 1 deletions
diff --git a/src/LibgcryptMessageDigestImpl.cc b/src/LibgcryptMessageDigestImpl.cc
index 1794eb34..84c3f8bc 100644
--- a/src/LibgcryptMessageDigestImpl.cc
+++ b/src/LibgcryptMessageDigestImpl.cc
@@ -62,7 +62,10 @@ typedef FindHashFunc<int> CFindHashFunc;
namespace {
CHashFuncEntry hashFuncs[] = {
CHashFuncEntry("sha-1", GCRY_MD_SHA1),
+ CHashFuncEntry("sha-224", GCRY_MD_SHA224),
CHashFuncEntry("sha-256", GCRY_MD_SHA256),
+ CHashFuncEntry("sha-384", GCRY_MD_SHA384),
+ CHashFuncEntry("sha-512", GCRY_MD_SHA512),
CHashFuncEntry("md5", GCRY_MD_MD5)
};
} // namespace
diff --git a/src/LibsslMessageDigestImpl.cc b/src/LibsslMessageDigestImpl.cc
index 8b4a6349..74c7afd7 100644
--- a/src/LibsslMessageDigestImpl.cc
+++ b/src/LibsslMessageDigestImpl.cc
@@ -64,9 +64,18 @@ typedef FindHashFunc<const EVP_MD*> CFindHashFunc;
namespace {
CHashFuncEntry hashFuncs[] = {
CHashFuncEntry("sha-1", EVP_sha1()),
+#ifdef HAVE_EVP_SHA224
+ CHashFuncEntry("sha-224", EVP_sha224()),
+#endif // HAVE_EVP_SHA224
#ifdef HAVE_EVP_SHA256
CHashFuncEntry("sha-256", EVP_sha256()),
#endif // HAVE_EVP_SHA256
+#ifdef HAVE_EVP_SHA384
+ CHashFuncEntry("sha-384", EVP_sha384()),
+#endif // HAVE_EVP_SHA384
+#ifdef HAVE_EVP_SHA512
+ CHashFuncEntry("sha-512", EVP_sha512()),
+#endif // HAVE_EVP_SHA512
CHashFuncEntry("md5", EVP_md5())
};
} // namespace
diff --git a/src/MessageDigest.cc b/src/MessageDigest.cc
index f842bf89..4c2ea17e 100644
--- a/src/MessageDigest.cc
+++ b/src/MessageDigest.cc
@@ -51,7 +51,10 @@ struct HashTypeEntry {
namespace {
HashTypeEntry hashTypes[] = {
HashTypeEntry("sha-1", 1),
- HashTypeEntry("sha-256", 2),
+ HashTypeEntry("sha-224", 2),
+ HashTypeEntry("sha-256", 3),
+ HashTypeEntry("sha-384", 4),
+ HashTypeEntry("sha-512", 5),
HashTypeEntry("md5", 0)
};
} // namespace aria2
@@ -137,6 +140,9 @@ bool MessageDigest::isValidHash
std::string MessageDigest::getCanonicalHashType(const std::string& hashType)
{
+ // This is really backward compatibility for Metalink3. aria2 only
+ // supported sha-1, sha-256 and md5 at Metalink3 era. So we don't
+ // add alias for sha-224, sha-384 and sha-512.
if("sha1" == hashType) {
return "sha-1";
} else if("sha256" == hashType) {