55
66#include < bench/bench.h>
77#include < crypto/chacha20.h>
8+ #include < crypto/chacha20poly1305.h>
89
910/* Number of bytes to process per iteration */
1011static const uint64_t BUFFER_SIZE_TINY = 64 ;
@@ -23,6 +24,18 @@ static void CHACHA20(benchmark::Bench& bench, size_t buffersize)
2324 });
2425}
2526
27+ static void FSCHACHA20POLY1305 (benchmark::Bench& bench, size_t buffersize)
28+ {
29+ std::vector<std::byte> key (32 );
30+ FSChaCha20Poly1305 ctx (key, 224 );
31+ std::vector<std::byte> in (buffersize);
32+ std::vector<std::byte> aad;
33+ std::vector<std::byte> out (buffersize + FSChaCha20Poly1305::EXPANSION);
34+ bench.batch (in.size ()).unit (" byte" ).run ([&] {
35+ ctx.Encrypt (in, aad, out);
36+ });
37+ }
38+
2639static void CHACHA20_64BYTES (benchmark::Bench& bench)
2740{
2841 CHACHA20 (bench, BUFFER_SIZE_TINY);
@@ -38,6 +51,24 @@ static void CHACHA20_1MB(benchmark::Bench& bench)
3851 CHACHA20 (bench, BUFFER_SIZE_LARGE);
3952}
4053
54+ static void FSCHACHA20POLY1305_64BYTES (benchmark::Bench& bench)
55+ {
56+ FSCHACHA20POLY1305 (bench, BUFFER_SIZE_TINY);
57+ }
58+
59+ static void FSCHACHA20POLY1305_256BYTES (benchmark::Bench& bench)
60+ {
61+ FSCHACHA20POLY1305 (bench, BUFFER_SIZE_SMALL);
62+ }
63+
64+ static void FSCHACHA20POLY1305_1MB (benchmark::Bench& bench)
65+ {
66+ FSCHACHA20POLY1305 (bench, BUFFER_SIZE_LARGE);
67+ }
68+
4169BENCHMARK (CHACHA20_64BYTES, benchmark::PriorityLevel::HIGH);
4270BENCHMARK (CHACHA20_256BYTES, benchmark::PriorityLevel::HIGH);
4371BENCHMARK (CHACHA20_1MB, benchmark::PriorityLevel::HIGH);
72+ BENCHMARK (FSCHACHA20POLY1305_64BYTES, benchmark::PriorityLevel::HIGH);
73+ BENCHMARK (FSCHACHA20POLY1305_256BYTES, benchmark::PriorityLevel::HIGH);
74+ BENCHMARK (FSCHACHA20POLY1305_1MB, benchmark::PriorityLevel::HIGH);
0 commit comments