xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
libxrpl
protocol
digest.cpp
1
#include <xrpl/protocol/digest.h>
2
3
#include <openssl/ripemd.h>
4
#include <openssl/sha.h>
5
6
#include <
cstddef
>
7
8
namespace
xrpl
{
9
10
OpensslRipemd160Hasher::OpensslRipemd160Hasher
()
11
{
12
static_assert
(
sizeof
(
decltype
(
OpensslRipemd160Hasher::ctx_
)) ==
sizeof
(RIPEMD160_CTX));
13
auto
const
ctx =
reinterpret_cast<
RIPEMD160_CTX*
>
(
ctx_
);
14
RIPEMD160_Init(ctx);
15
}
16
17
void
18
OpensslRipemd160Hasher::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
24
OpensslRipemd160Hasher::
25
operator
result_type
() noexcept
26
{
27
auto
const
ctx =
reinterpret_cast<
RIPEMD160_CTX*
>
(
ctx_
);
28
result_type
digest
;
29
RIPEMD160_Final(
digest
.data(), ctx);
30
return
digest
;
31
}
32
33
//------------------------------------------------------------------------------
34
35
OpensslSha512Hasher::OpensslSha512Hasher
()
36
{
37
static_assert
(
sizeof
(
decltype
(
OpensslSha512Hasher::ctx_
)) ==
sizeof
(SHA512_CTX));
38
auto
const
ctx =
reinterpret_cast<
SHA512_CTX*
>
(
ctx_
);
39
SHA512_Init(ctx);
40
}
41
42
void
43
OpensslSha512Hasher::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
49
OpensslSha512Hasher::
50
operator
result_type
() noexcept
51
{
52
auto
const
ctx =
reinterpret_cast<
SHA512_CTX*
>
(
ctx_
);
53
result_type
digest
;
54
SHA512_Final(
digest
.data(), ctx);
55
return
digest
;
56
}
57
58
//------------------------------------------------------------------------------
59
60
OpensslSha256Hasher::OpensslSha256Hasher
()
61
{
62
static_assert
(
sizeof
(
decltype
(
OpensslSha256Hasher::ctx_
)) ==
sizeof
(SHA256_CTX));
63
auto
const
ctx =
reinterpret_cast<
SHA256_CTX*
>
(
ctx_
);
64
SHA256_Init(ctx);
65
}
66
67
void
68
OpensslSha256Hasher::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
74
OpensslSha256Hasher::
75
operator
result_type
() noexcept
76
{
77
auto
const
ctx =
reinterpret_cast<
SHA256_CTX*
>
(
ctx_
);
78
result_type
digest
;
79
SHA256_Final(
digest
.data(), ctx);
80
return
digest
;
81
}
82
83
}
// namespace xrpl
cstddef
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::digest
static Hasher::result_type digest(void const *data, std::size_t size) noexcept
Definition
tokens.cpp:140
std::size_t
xrpl::OpensslRipemd160Hasher::operator()
void operator()(void const *data, std::size_t size) noexcept
Definition
digest.cpp:18
xrpl::OpensslRipemd160Hasher::OpensslRipemd160Hasher
OpensslRipemd160Hasher()
Definition
digest.cpp:10
xrpl::OpensslRipemd160Hasher::ctx_
char ctx_[96]
Definition
digest.h:48
xrpl::OpensslRipemd160Hasher::result_type
std::array< std::uint8_t, 20 > result_type
Definition
digest.h:37
xrpl::OpensslSha256Hasher::OpensslSha256Hasher
OpensslSha256Hasher()
Definition
digest.cpp:60
xrpl::OpensslSha256Hasher::operator()
void operator()(void const *data, std::size_t size) noexcept
Definition
digest.cpp:68
xrpl::OpensslSha256Hasher::ctx_
char ctx_[112]
Definition
digest.h:96
xrpl::OpensslSha256Hasher::result_type
std::array< std::uint8_t, 32 > result_type
Definition
digest.h:85
xrpl::OpensslSha512Hasher::result_type
std::array< std::uint8_t, 64 > result_type
Definition
digest.h:61
xrpl::OpensslSha512Hasher::OpensslSha512Hasher
OpensslSha512Hasher()
Definition
digest.cpp:35
xrpl::OpensslSha512Hasher::ctx_
char ctx_[216]
Definition
digest.h:72
xrpl::OpensslSha512Hasher::operator()
void operator()(void const *data, std::size_t size) noexcept
Definition
digest.cpp:43
Generated by
1.17.0