diff options
Diffstat (limited to 'src/common/Cryptography/HMACSHA1.cpp')
-rw-r--r-- | src/common/Cryptography/HMACSHA1.cpp | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/src/common/Cryptography/HMACSHA1.cpp b/src/common/Cryptography/HMACSHA1.cpp index ce8df47b605..c5e6e448fe3 100644 --- a/src/common/Cryptography/HMACSHA1.cpp +++ b/src/common/Cryptography/HMACSHA1.cpp @@ -21,38 +21,53 @@ #include "Errors.h" #include <cstring> +#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER < 0x10100000L +HMAC_CTX* HMAC_CTX_new() +{ + HMAC_CTX *ctx = new HMAC_CTX(); + HMAC_CTX_init(ctx); + return ctx; +} + +void HMAC_CTX_free(HMAC_CTX* ctx) +{ + HMAC_CTX_cleanup(ctx); + delete ctx; +} +#endif + HmacHash::HmacHash(uint32 len, uint8* seed) { - HMAC_CTX_init(&m_ctx); - HMAC_Init_ex(&m_ctx, seed, len, EVP_sha1(), nullptr); + m_ctx = HMAC_CTX_new(); + HMAC_Init_ex(m_ctx, seed, len, EVP_sha1(), nullptr); memset(m_digest, 0, sizeof(m_digest)); } HmacHash::~HmacHash() { - HMAC_CTX_cleanup(&m_ctx); + HMAC_CTX_free(m_ctx); } void HmacHash::UpdateData(std::string const& str) { - HMAC_Update(&m_ctx, (uint8 const*)str.c_str(), str.length()); + HMAC_Update(m_ctx, reinterpret_cast<uint8 const*>(str.c_str()), str.length()); } void HmacHash::UpdateData(uint8 const* data, size_t len) { - HMAC_Update(&m_ctx, data, len); + HMAC_Update(m_ctx, data, len); } void HmacHash::Finalize() { uint32 length = 0; - HMAC_Final(&m_ctx, (uint8*)m_digest, &length); + HMAC_Final(m_ctx, m_digest, &length); ASSERT(length == SHA_DIGEST_LENGTH); } -uint8 *HmacHash::ComputeHash(BigNumber* bn) +uint8* HmacHash::ComputeHash(BigNumber* bn) { - HMAC_Update(&m_ctx, bn->AsByteArray().get(), bn->GetNumBytes()); + HMAC_Update(m_ctx, bn->AsByteArray().get(), bn->GetNumBytes()); Finalize(); - return (uint8*)m_digest; + return m_digest; } |