rippled
Loading...
Searching...
No Matches
digest.cpp
1#include <xrpl/protocol/digest.h>
2
3#include <openssl/ripemd.h>
4#include <openssl/sha.h>
5
6#include <cstddef>
7
8namespace xrpl {
9
11{
12 static_assert(sizeof(decltype(openssl_ripemd160_hasher::ctx_)) == sizeof(RIPEMD160_CTX), "");
13 auto const ctx = reinterpret_cast<RIPEMD160_CTX*>(ctx_);
14 RIPEMD160_Init(ctx);
15}
16
17void
18openssl_ripemd160_hasher::operator()(void const* data, std::size_t size) noexcept
19{
20 auto const ctx = reinterpret_cast<RIPEMD160_CTX*>(ctx_);
21 RIPEMD160_Update(ctx, data, size);
22}
23
24openssl_ripemd160_hasher::
25operator result_type() noexcept
26{
27 auto const ctx = reinterpret_cast<RIPEMD160_CTX*>(ctx_);
29 RIPEMD160_Final(digest.data(), ctx);
30 return digest;
31}
32
33//------------------------------------------------------------------------------
34
36{
37 static_assert(sizeof(decltype(openssl_sha512_hasher::ctx_)) == sizeof(SHA512_CTX), "");
38 auto const ctx = reinterpret_cast<SHA512_CTX*>(ctx_);
39 SHA512_Init(ctx);
40}
41
42void
43openssl_sha512_hasher::operator()(void const* data, std::size_t size) noexcept
44{
45 auto const ctx = reinterpret_cast<SHA512_CTX*>(ctx_);
46 SHA512_Update(ctx, data, size);
47}
48
49openssl_sha512_hasher::
50operator result_type() noexcept
51{
52 auto const ctx = reinterpret_cast<SHA512_CTX*>(ctx_);
54 SHA512_Final(digest.data(), ctx);
55 return digest;
56}
57
58//------------------------------------------------------------------------------
59
61{
62 static_assert(sizeof(decltype(openssl_sha256_hasher::ctx_)) == sizeof(SHA256_CTX), "");
63 auto const ctx = reinterpret_cast<SHA256_CTX*>(ctx_);
64 SHA256_Init(ctx);
65}
66
67void
68openssl_sha256_hasher::operator()(void const* data, std::size_t size) noexcept
69{
70 auto const ctx = reinterpret_cast<SHA256_CTX*>(ctx_);
71 SHA256_Update(ctx, data, size);
72}
73
74openssl_sha256_hasher::
75operator result_type() noexcept
76{
77 auto const ctx = reinterpret_cast<SHA256_CTX*>(ctx_);
79 SHA256_Final(digest.data(), ctx);
80 return digest;
81}
82
83} // namespace xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
static Hasher::result_type digest(void const *data, std::size_t size) noexcept
Definition tokens.cpp:138
void operator()(void const *data, std::size_t size) noexcept
Definition digest.cpp:18
void operator()(void const *data, std::size_t size) noexcept
Definition digest.cpp:68
void operator()(void const *data, std::size_t size) noexcept
Definition digest.cpp:43