16 st->r[1] = (
ReadLE32(&key[ 3]) >> 2) & 0x3ffff03;
17 st->r[2] = (
ReadLE32(&key[ 6]) >> 4) & 0x3ffc0ff;
18 st->r[3] = (
ReadLE32(&key[ 9]) >> 6) & 0x3f03fff;
19 st->r[4] = (
ReadLE32(&key[12]) >> 8) & 0x00fffff;
84 h0 +=
c * 5;
c = (
h0 >> 26);
h0 =
h0 & 0x3ffffff;
106 size_t i =
st->leftover;
122 c =
h1 >> 26;
h1 =
h1 & 0x3ffffff;
126 h0 +=
c * 5;
c =
h0 >> 26;
h0 =
h0 & 0x3ffffff;
130 g0 =
h0 + 5;
c =
g0 >> 26;
g0 &= 0x3ffffff;
134 g4 =
h4 +
c - (1UL << 26);
137 mask = (
g4 >> ((
sizeof(
uint32_t) * 8) - 1)) - 1;
151 h0 = ((
h0 ) | (
h1 << 26)) & 0xffffffff;
152 h1 = ((
h1 >> 6) | (
h2 << 20)) & 0xffffffff;
153 h2 = ((
h2 >> 12) | (
h3 << 14)) & 0xffffffff;
154 h3 = ((
h3 >> 18) | (
h4 << 8)) & 0xffffffff;
193 for (i = 0; i < want; i++) {
194 st->buffer[
st->leftover + i] =
m[i];
198 st->leftover += want;
214 for (i = 0; i < bytes; i++) {
215 st->buffer[
st->leftover + i] =
m[i];
217 st->leftover += bytes;
void WriteLE32(B *ptr, uint32_t x)
uint32_t ReadLE32(const B *ptr)
void poly1305_update(poly1305_context *st, const unsigned char *m, size_t bytes) noexcept
void poly1305_init(poly1305_context *st, const unsigned char key[32]) noexcept
static void poly1305_blocks(poly1305_context *st, const unsigned char *m, size_t bytes) noexcept
void poly1305_finish(poly1305_context *st, unsigned char mac[16]) noexcept
#define POLY1305_BLOCK_SIZE
constexpr auto Ticks(Dur2 d)
Helper to count the seconds of a duration/time_point.