diff options
Diffstat (limited to 'src/LibsslMessageDigestImpl.cc')
| -rw-r--r-- | src/LibsslMessageDigestImpl.cc | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/src/LibsslMessageDigestImpl.cc b/src/LibsslMessageDigestImpl.cc index 02cf1c3e..15ebccbe 100644 --- a/src/LibsslMessageDigestImpl.cc +++ b/src/LibsslMessageDigestImpl.cc @@ -43,19 +43,16 @@ namespace aria2 { #if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100001L namespace { -EVP_MD_CTX* EVP_MD_CTX_new() { - return EVP_MD_CTX_create(); -} +EVP_MD_CTX* EVP_MD_CTX_new() { return EVP_MD_CTX_create(); } } // namespace namespace { -void EVP_MD_CTX_free(EVP_MD_CTX* ctx) { - EVP_MD_CTX_destroy(ctx); -} +void EVP_MD_CTX_free(EVP_MD_CTX* ctx) { EVP_MD_CTX_destroy(ctx); } } // namespace namespace { -int EVP_MD_CTX_reset(EVP_MD_CTX* ctx) { +int EVP_MD_CTX_reset(EVP_MD_CTX* ctx) +{ EVP_MD_CTX_init(ctx); return 1; } @@ -63,28 +60,22 @@ int EVP_MD_CTX_reset(EVP_MD_CTX* ctx) { #endif // defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < // 0x10100001L -template<const EVP_MD* (*init_fn)()> +template <const EVP_MD* (*init_fn)()> class MessageDigestBase : public MessageDigestImpl { public: MessageDigestBase() - : ctx_(EVP_MD_CTX_new()), md_(init_fn()), len_(EVP_MD_size(md_)) { + : ctx_(EVP_MD_CTX_new()), md_(init_fn()), len_(EVP_MD_size(md_)) + { EVP_MD_CTX_reset(ctx_); reset(); } - virtual ~MessageDigestBase() { - EVP_MD_CTX_free(ctx_); - } + virtual ~MessageDigestBase() { EVP_MD_CTX_free(ctx_); } - static size_t length() { - return EVP_MD_size(init_fn()); - } - virtual size_t getDigestLength() const CXX11_OVERRIDE { - return len_; - } - virtual void reset() CXX11_OVERRIDE { - EVP_DigestInit_ex(ctx_, md_, nullptr); - } - virtual void update(const void* data, size_t length) CXX11_OVERRIDE { + static size_t length() { return EVP_MD_size(init_fn()); } + virtual size_t getDigestLength() const CXX11_OVERRIDE { return len_; } + virtual void reset() CXX11_OVERRIDE { EVP_DigestInit_ex(ctx_, md_, nullptr); } + virtual void update(const void* data, size_t length) CXX11_OVERRIDE + { auto bytes = reinterpret_cast<const char*>(data); while (length) { size_t l = std::min(length, (size_t)std::numeric_limits<uint32_t>::max()); @@ -93,13 +84,14 @@ public: bytes += l; } } - virtual void digest(unsigned char* md) CXX11_OVERRIDE { + virtual void digest(unsigned char* md) CXX11_OVERRIDE + { unsigned int len; EVP_DigestFinal_ex(ctx_, md, &len); } private: - EVP_MD_CTX *ctx_; + EVP_MD_CTX* ctx_; const EVP_MD* md_; const size_t len_; }; @@ -113,21 +105,20 @@ std::unique_ptr<MessageDigestImpl> MessageDigestImpl::sha1() } MessageDigestImpl::hashes_t MessageDigestImpl::hashes = { - { "sha-1", make_hi<MessageDigestSHA1>() }, + {"sha-1", make_hi<MessageDigestSHA1>()}, #ifdef HAVE_EVP_SHA224 - { "sha-224", make_hi<MessageDigestBase<EVP_sha224> >() }, + {"sha-224", make_hi<MessageDigestBase<EVP_sha224>>()}, #endif #ifdef HAVE_EVP_SHA224 - { "sha-256", make_hi<MessageDigestBase<EVP_sha256> >() }, + {"sha-256", make_hi<MessageDigestBase<EVP_sha256>>()}, #endif #ifdef HAVE_EVP_SHA224 - { "sha-384", make_hi<MessageDigestBase<EVP_sha384> >() }, + {"sha-384", make_hi<MessageDigestBase<EVP_sha384>>()}, #endif #ifdef HAVE_EVP_SHA224 - { "sha-512", make_hi<MessageDigestBase<EVP_sha512> >() }, + {"sha-512", make_hi<MessageDigestBase<EVP_sha512>>()}, #endif - { "md5", make_hi<MessageDigestMD5>() }, - ADLER32_MESSAGE_DIGEST -}; + {"md5", make_hi<MessageDigestMD5>()}, + ADLER32_MESSAGE_DIGEST}; } // namespace aria2 |
