20 #include "lhashes/lhashes_Export.h"
43 LHASH_NO_EXPORT
void pack32 (
const unsigned char* str, std::uint32_t& x) noexcept;
45 LHASH_NO_EXPORT
void pack64 (
const unsigned char* str, std::uint64_t& x) noexcept;
48 LHASH_NO_EXPORT
void unpack32 (T x,
unsigned char* str) noexcept;
50 LHASH_NO_EXPORT
void unpack64 (std::uint64_t x,
unsigned char* str) noexcept;
53 LHASH_NO_EXPORT T ch (T x, T y, T z) noexcept;
56 LHASH_NO_EXPORT T maj (T x, T y, T z) noexcept;
58 LHASH_NO_EXPORT std::uint32_t sha256_F4 (std::uint32_t x) noexcept;
60 LHASH_NO_EXPORT std::uint32_t sha256_F3 (std::uint32_t x) noexcept;
62 LHASH_NO_EXPORT std::uint32_t sha256_F2 (std::uint32_t x) noexcept;
64 LHASH_NO_EXPORT std::uint32_t sha256_F1 (std::uint32_t x) noexcept;
66 LHASH_NO_EXPORT std::uint64_t sha512_F4 (std::uint64_t x) noexcept;
68 LHASH_NO_EXPORT std::uint64_t sha512_F3 (std::uint64_t x) noexcept;
70 LHASH_NO_EXPORT std::uint64_t sha512_F2 (std::uint64_t x) noexcept;
72 LHASH_NO_EXPORT std::uint64_t sha512_F1 (std::uint64_t x) noexcept;
74 LHASH_NO_EXPORT
inline constexpr std::uint32_t sha256_k[64] = { 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
75 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
76 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
77 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
78 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
79 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
80 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
81 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
82 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
83 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
84 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
85 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
86 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
87 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
88 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
89 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 };
91 LHASH_NO_EXPORT
inline constexpr std::uint64_t sha512_k[80] = { 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL,
92 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL,
93 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
94 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL,
95 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL,
96 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL,
97 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL,
98 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL,
99 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL,
100 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL,
101 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL,
102 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
103 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL,
104 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL,
105 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL,
106 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL,
107 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL,
108 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL,
109 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL,
110 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL,
111 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL,
112 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL,
113 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL,
114 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
115 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL,
116 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL,
117 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL,
118 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL,
119 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL,
120 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL,
121 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL,
122 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL,
123 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL,
124 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL,
125 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL,
126 0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
127 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL,
128 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL,
129 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL,
130 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL };
This namespace contains implementation details for the hash functions.