forked from wolfSSL/wolfssl
Fix AVX2 final func to reset state
This commit is contained in:
@ -2047,27 +2047,49 @@ void bench_poly1305()
|
|||||||
Poly1305 enc;
|
Poly1305 enc;
|
||||||
byte mac[16];
|
byte mac[16];
|
||||||
double start;
|
double start;
|
||||||
int ret, i, count;
|
int ret = 0, i, count;
|
||||||
|
|
||||||
ret = wc_Poly1305SetKey(&enc, bench_key, 32);
|
if (digest_stream) {
|
||||||
if (ret != 0) {
|
ret = wc_Poly1305SetKey(&enc, bench_key, 32);
|
||||||
printf("Poly1305SetKey failed, ret = %d\n", ret);
|
if (ret != 0) {
|
||||||
return;
|
printf("Poly1305SetKey failed, ret = %d\n", ret);
|
||||||
}
|
return;
|
||||||
|
|
||||||
bench_stats_start(&count, &start);
|
|
||||||
do {
|
|
||||||
for (i = 0; i < numBlocks; i++) {
|
|
||||||
ret = wc_Poly1305Update(&enc, bench_plain, BENCH_SIZE);
|
|
||||||
if (ret != 0) {
|
|
||||||
printf("Poly1305Update failed: %d\n", ret);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
wc_Poly1305Final(&enc, mac);
|
|
||||||
count += i;
|
bench_stats_start(&count, &start);
|
||||||
} while (bench_stats_sym_check(start));
|
do {
|
||||||
bench_stats_sym_finish("POLY1305", 0, count, bench_size, start, ret);
|
for (i = 0; i < numBlocks; i++) {
|
||||||
|
ret = wc_Poly1305Update(&enc, bench_plain, BENCH_SIZE);
|
||||||
|
if (ret != 0) {
|
||||||
|
printf("Poly1305Update failed: %d\n", ret);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wc_Poly1305Final(&enc, mac);
|
||||||
|
count += i;
|
||||||
|
} while (bench_stats_sym_check(start));
|
||||||
|
bench_stats_sym_finish("POLY1305", 0, count, bench_size, start, ret);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bench_stats_start(&count, &start);
|
||||||
|
do {
|
||||||
|
for (i = 0; i < numBlocks; i++) {
|
||||||
|
ret = wc_Poly1305SetKey(&enc, bench_key, 32);
|
||||||
|
if (ret != 0) {
|
||||||
|
printf("Poly1305SetKey failed, ret = %d\n", ret);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ret = wc_Poly1305Update(&enc, bench_plain, BENCH_SIZE);
|
||||||
|
if (ret != 0) {
|
||||||
|
printf("Poly1305Update failed: %d\n", ret);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
wc_Poly1305Final(&enc, mac);
|
||||||
|
}
|
||||||
|
count += i;
|
||||||
|
} while (bench_stats_sym_check(start));
|
||||||
|
bench_stats_sym_finish("POLY1305", 0, count, bench_size, start, ret);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif /* HAVE_POLY1305 */
|
#endif /* HAVE_POLY1305 */
|
||||||
|
|
||||||
|
@ -1008,6 +1008,10 @@ static void poly1305_final_avx2(Poly1305* ctx, byte* mac)
|
|||||||
[r3] "r" (ctx->r3), [r4] "r" (ctx->r4)
|
[r3] "r" (ctx->r3), [r4] "r" (ctx->r4)
|
||||||
: "memory", "ymm0"
|
: "memory", "ymm0"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
ctx->leftover = 0;
|
||||||
|
ctx->finished = 0;
|
||||||
|
ctx->started = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user