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::operator result_type() noexcept
25{
26 auto const ctx = reinterpret_cast<RIPEMD160_CTX*>(ctx_);
28 RIPEMD160_Final(digest.data(), ctx);
29 return digest;
30}
31
32//------------------------------------------------------------------------------
33
35{
36 static_assert(sizeof(decltype(openssl_sha512_hasher::ctx_)) == sizeof(SHA512_CTX), "");
37 auto const ctx = reinterpret_cast<SHA512_CTX*>(ctx_);
38 SHA512_Init(ctx);
39}
40
41void
42openssl_sha512_hasher::operator()(void const* data, std::size_t size) noexcept
43{
44 auto const ctx = reinterpret_cast<SHA512_CTX*>(ctx_);
45 SHA512_Update(ctx, data, size);
46}
47
48openssl_sha512_hasher::operator result_type() noexcept
49{
50 auto const ctx = reinterpret_cast<SHA512_CTX*>(ctx_);
52 SHA512_Final(digest.data(), ctx);
53 return digest;
54}
55
56//------------------------------------------------------------------------------
57
59{
60 static_assert(sizeof(decltype(openssl_sha256_hasher::ctx_)) == sizeof(SHA256_CTX), "");
61 auto const ctx = reinterpret_cast<SHA256_CTX*>(ctx_);
62 SHA256_Init(ctx);
63}
64
65void
66openssl_sha256_hasher::operator()(void const* data, std::size_t size) noexcept
67{
68 auto const ctx = reinterpret_cast<SHA256_CTX*>(ctx_);
69 SHA256_Update(ctx, data, size);
70}
71
72openssl_sha256_hasher::operator result_type() noexcept
73{
74 auto const ctx = reinterpret_cast<SHA256_CTX*>(ctx_);
76 SHA256_Final(digest.data(), ctx);
77 return digest;
78}
79
80} // namespace xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
static Hasher::result_type digest(void const *data, std::size_t size) noexcept
Definition tokens.cpp:137
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:66
void operator()(void const *data, std::size_t size) noexcept
Definition digest.cpp:42