Tidy up digest functions:

* Add sha512_half_hasher
* Move sha512Half functions to digest.h
* Add explicit OpenSSL equivalents
This commit is contained in:
Vinnie Falco
2015-07-08 11:52:35 -07:00
parent 362726de4a
commit c86a40a361
21 changed files with 193 additions and 157 deletions

View File

@@ -53,6 +53,38 @@ openssl_ripemd160_hasher::operator result_type() noexcept
return digest;
}
//------------------------------------------------------------------------------
openssl_sha512_hasher::openssl_sha512_hasher()
{
static_assert(sizeof(decltype(
openssl_sha512_hasher::ctx_)) ==
sizeof(SHA512_CTX), "");
auto const ctx = reinterpret_cast<
SHA512_CTX*>(ctx_);
SHA512_Init(ctx);
}
void
openssl_sha512_hasher::operator()(void const* data,
std::size_t size) noexcept
{
auto const ctx = reinterpret_cast<
SHA512_CTX*>(ctx_);
SHA512_Update(ctx, data, size);
}
openssl_sha512_hasher::operator result_type() noexcept
{
auto const ctx = reinterpret_cast<
SHA512_CTX*>(ctx_);
result_type digest;
SHA512_Final(digest.data(), ctx);
return digest;
}
//------------------------------------------------------------------------------
openssl_sha256_hasher::openssl_sha256_hasher()
{
static_assert(sizeof(decltype(