39constexpr uint32_t
rotr32(uint32_t w, uint32_t c)
41 return (w >> c) | (w << (32 - c));
44constexpr uint32_t
load32(
const uint8_t* src)
46 return (
static_cast<uint32_t
>(src[0]) << 0) | (
static_cast<uint32_t
>(src[1]) << 8) |
47 (
static_cast<uint32_t
>(src[2]) << 16) | (
static_cast<uint32_t
>(src[3]) << 24);
62constexpr void store32(uint8_t* dst, uint32_t w)
64 dst[0] =
static_cast<uint8_t
>(w >> 0);
65 dst[1] =
static_cast<uint8_t
>(w >> 8);
66 dst[2] =
static_cast<uint8_t
>(w >> 16);
67 dst[3] =
static_cast<uint8_t
>(w >> 24);
72 store32(&bytes_out[0], cv_words[0]);
73 store32(&bytes_out[4], cv_words[1]);
74 store32(&bytes_out[8], cv_words[2]);
75 store32(&bytes_out[12], cv_words[3]);
76 store32(&bytes_out[16], cv_words[4]);
77 store32(&bytes_out[20], cv_words[5]);
78 store32(&bytes_out[24], cv_words[6]);
79 store32(&bytes_out[28], cv_words[7]);
constexpr uint32_t load32(const uint8_t *src)
std::array< uint32_t, BLAKE3_KEY_LEN > key_array
constexpr void store_cv_words(out_array &bytes_out, key_array &cv_words)
constexpr void load_key_words(const std::array< uint8_t, BLAKE3_KEY_LEN > &key, key_array &key_words)
constexpr void store32(uint8_t *dst, uint32_t w)
std::array< uint8_t, BLAKE3_OUT_LEN > out_array
constexpr uint32_t rotr32(uint32_t w, uint32_t c)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept