139 unsigned long h0,h1,h2,h3,h4,c;
140 unsigned long g0,g1,g2,g3,g4;
141 unsigned long long f;
161 c = h1 >> 26; h1 = h1 & 0x3ffffff;
162 h2 += c; c = h2 >> 26; h2 = h2 & 0x3ffffff;
163 h3 += c; c = h3 >> 26; h3 = h3 & 0x3ffffff;
164 h4 += c; c = h4 >> 26; h4 = h4 & 0x3ffffff;
165 h0 += c * 5; c = h0 >> 26; h0 = h0 & 0x3ffffff;
169 g0 = h0 + 5; c = g0 >> 26; g0 &= 0x3ffffff;
170 g1 = h1 + c; c = g1 >> 26; g1 &= 0x3ffffff;
171 g2 = h2 + c; c = g2 >> 26; g2 &= 0x3ffffff;
172 g3 = h3 + c; c = g3 >> 26; g3 &= 0x3ffffff;
173 g4 = h4 + c - (1UL << 26);
176 mask = (g4 >> ((
sizeof(
unsigned long) * 8) - 1)) - 1;
183 h0 = (h0 & mask) | g0;
184 h1 = (h1 & mask) | g1;
185 h2 = (h2 & mask) | g2;
186 h3 = (h3 & mask) | g3;
187 h4 = (h4 & mask) | g4;
190 h0 = ((h0 ) | (h1 << 26)) & 0xffffffff;
191 h1 = ((h1 >> 6) | (h2 << 20)) & 0xffffffff;
192 h2 = ((h2 >> 12) | (h3 << 14)) & 0xffffffff;
193 h3 = ((h3 >> 18) | (h4 << 8)) & 0xffffffff;
196 f = (
unsigned long long)h0 + st->
pad[0] ; h0 = (
unsigned long)f;
197 f = (
unsigned long long)h1 + st->
pad[1] + (f >> 32); h1 = (
unsigned long)f;
198 f = (
unsigned long long)h2 + st->
pad[2] + (f >> 32); h2 = (
unsigned long)f;
199 f = (
unsigned long long)h3 + st->
pad[3] + (f >> 32); h3 = (
unsigned long)f;
#define poly1305_block_size
Definition: sw_poly1305-donna-32.h:16
unsigned long r[5]
Definition: sw_poly1305-donna-32.h:20
unsigned long pad[4]
Definition: sw_poly1305-donna-32.h:22
static void U32TO8(unsigned char *p, unsigned long v)
Definition: sw_poly1305-donna-32.h:40
unsigned char final
Definition: sw_poly1305-donna-32.h:25
unsigned char buffer[poly1305_block_size]
Definition: sw_poly1305-donna-32.h:24
static void poly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, size_t bytes)
Definition: sw_poly1305-donna-32.h:76
size_t leftover
Definition: sw_poly1305-donna-32.h:23
Definition: sw_poly1305-donna-32.h:19
unsigned long h[5]
Definition: sw_poly1305-donna-32.h:21