32 #define TRACE_LEVEL CRYPTO_TRACE_LEVEL
40 #if (POLY1305_SUPPORT == ENABLED)
62 context->
r[0] &= 0x0FFFFFFF;
63 context->
r[1] &= 0x0FFFFFFC;
64 context->
r[2] &= 0x0FFFFFFC;
65 context->
r[3] &= 0x0FFFFFFC;
107 if(context->
size == 16)
131 if(context->
size != 0)
137 temp = context->
a[4] & 0xFFFFFFFC;
138 temp += context->
a[4] >> 2;
139 temp += context->
a[0];
140 context->
a[0] = temp & 0xFFFFFFFF;
142 temp += context->
a[1];
143 context->
a[1] = temp & 0xFFFFFFFF;
145 temp += context->
a[2];
146 context->
a[2] = temp & 0xFFFFFFFF;
148 temp += context->
a[3];
149 context->
a[3] = temp & 0xFFFFFFFF;
151 temp += context->
a[4];
152 context->
a[4] = temp & 0x00000003;
156 temp += context->
a[0];
157 b[0] = temp & 0xFFFFFFFF;
159 temp += context->
a[1];
160 b[1] = temp & 0xFFFFFFFF;
162 temp += context->
a[2];
163 b[2] = temp & 0xFFFFFFFF;
165 temp += context->
a[3];
166 b[3] = temp & 0xFFFFFFFF;
168 temp += context->
a[4];
169 b[4] = temp & 0xFFFFFFFF;
173 mask = ((
b[4] & 0x04) >> 2) - 1;
176 context->
a[0] = (context->
a[0] &
mask) | (
b[0] & ~
mask);
177 context->
a[1] = (context->
a[1] &
mask) | (
b[1] & ~
mask);
178 context->
a[2] = (context->
a[2] &
mask) | (
b[2] & ~
mask);
179 context->
a[3] = (context->
a[3] &
mask) | (
b[3] & ~
mask);
182 temp = (uint64_t) context->
a[0] + context->
s[0];
183 b[0] = temp & 0xFFFFFFFF;
185 temp += (uint64_t) context->
a[1] + context->
s[1];
186 b[1] = temp & 0xFFFFFFFF;
188 temp += (uint64_t) context->
a[2] + context->
s[2];
189 b[2] = temp & 0xFFFFFFFF;
191 temp += (uint64_t) context->
a[3] + context->
s[3];
192 b[3] = temp & 0xFFFFFFFF;
255 temp = (uint64_t) context->
a[0] +
u[0];
256 context->
a[0] = temp & 0xFFFFFFFF;
258 temp += (uint64_t) context->
a[1] +
u[1];
259 context->
a[1] = temp & 0xFFFFFFFF;
261 temp += (uint64_t) context->
a[2] +
u[2];
262 context->
a[2] = temp & 0xFFFFFFFF;
264 temp += (uint64_t) context->
a[3] +
u[3];
265 context->
a[3] = temp & 0xFFFFFFFF;
267 temp += (uint64_t) context->
a[4] +
u[4];
268 context->
a[4] = temp & 0xFFFFFFFF;
271 temp = (uint64_t) context->
a[0] * context->
r[0];
272 u[0] = temp & 0xFFFFFFFF;
274 temp += (uint64_t) context->
a[0] * context->
r[1];
275 temp += (uint64_t) context->
a[1] * context->
r[0];
276 u[1] = temp & 0xFFFFFFFF;
278 temp += (uint64_t) context->
a[0] * context->
r[2];
279 temp += (uint64_t) context->
a[1] * context->
r[1];
280 temp += (uint64_t) context->
a[2] * context->
r[0];
281 u[2] = temp & 0xFFFFFFFF;
283 temp += (uint64_t) context->
a[0] * context->
r[3];
284 temp += (uint64_t) context->
a[1] * context->
r[2];
285 temp += (uint64_t) context->
a[2] * context->
r[1];
286 temp += (uint64_t) context->
a[3] * context->
r[0];
287 u[3] = temp & 0xFFFFFFFF;
289 temp += (uint64_t) context->
a[1] * context->
r[3];
290 temp += (uint64_t) context->
a[2] * context->
r[2];
291 temp += (uint64_t) context->
a[3] * context->
r[1];
292 temp += (uint64_t) context->
a[4] * context->
r[0];
293 u[4] = temp & 0xFFFFFFFF;
295 temp += (uint64_t) context->
a[2] * context->
r[3];
296 temp += (uint64_t) context->
a[3] * context->
r[2];
297 temp += (uint64_t) context->
a[4] * context->
r[1];
298 u[5] = temp & 0xFFFFFFFF;
300 temp += (uint64_t) context->
a[3] * context->
r[3];
301 temp += (uint64_t) context->
a[4] * context->
r[2];
302 u[6] = temp & 0xFFFFFFFF;
304 temp += (uint64_t) context->
a[4] * context->
r[3];
305 u[7] = temp & 0xFFFFFFFF;
309 temp +=
u[4] & 0xFFFFFFFC;
310 temp += (
u[4] >> 2) | (
u[5] << 30);
311 context->
a[0] = temp & 0xFFFFFFFF;
315 temp += (
u[5] >> 2) | (
u[6] << 30);
316 context->
a[1] = temp & 0xFFFFFFFF;
320 temp += (
u[6] >> 2) | (
u[7] << 30);
321 context->
a[2] = temp & 0xFFFFFFFF;
326 context->
a[3] = temp & 0xFFFFFFFF;
328 temp +=
u[4] & 0x00000003;
329 context->
a[4] = temp & 0xFFFFFFFF;