/* */ #include "messageDigest.h" namespace aria2 { static MessageDigestContext::DigestAlgoMap::value_type digests[] = { #ifdef HAVE_LIBSSL MessageDigestContext::DigestAlgoMap::value_type("md5", EVP_md5()), MessageDigestContext::DigestAlgoMap::value_type("sha1", EVP_sha1()), # ifdef HAVE_EVP_SHA256 MessageDigestContext::DigestAlgoMap::value_type("sha256", EVP_sha256()), # endif // HAVE_EVP_SHA256 #elif HAVE_LIBGCRYPT MessageDigestContext::DigestAlgoMap::value_type("md5", GCRY_MD_MD5), MessageDigestContext::DigestAlgoMap::value_type("sha1", GCRY_MD_SHA1), MessageDigestContext::DigestAlgoMap::value_type("sha256", GCRY_MD_SHA256), #endif // HAVE_LIBGCRYPT }; MessageDigestContext::DigestAlgoMap MessageDigestContext::digestAlgos(&digests[0], &digests[sizeof(digests)/sizeof(DigestAlgoMap::value_type)]); std::string MessageDigestContext::digestFinal() { int32_t length = digestLength(algo); unsigned char* rawMD = new unsigned char[length]; digestFinal(rawMD); std::string rawMDString(&rawMD[0], &rawMD[length]); delete [] rawMD; return rawMDString; } } // namespace aria2