diff --git a/src/bench/chacha20.cpp b/src/bench/chacha20.cpp index 3b57e29f395..d8bebf9319a 100644 --- a/src/bench/chacha20.cpp +++ b/src/bench/chacha20.cpp @@ -5,6 +5,7 @@ #include #include +#include /* Number of bytes to process per iteration */ static const uint64_t BUFFER_SIZE_TINY = 64; @@ -23,6 +24,18 @@ static void CHACHA20(benchmark::Bench& bench, size_t buffersize) }); } +static void FSCHACHA20POLY1305(benchmark::Bench& bench, size_t buffersize) +{ + std::vector key(32); + FSChaCha20Poly1305 ctx(key, 224); + std::vector in(buffersize); + std::vector aad; + std::vector out(buffersize + FSChaCha20Poly1305::EXPANSION); + bench.batch(in.size()).unit("byte").run([&] { + ctx.Encrypt(in, aad, out); + }); +} + static void CHACHA20_64BYTES(benchmark::Bench& bench) { CHACHA20(bench, BUFFER_SIZE_TINY); @@ -38,6 +51,24 @@ static void CHACHA20_1MB(benchmark::Bench& bench) CHACHA20(bench, BUFFER_SIZE_LARGE); } +static void FSCHACHA20POLY1305_64BYTES(benchmark::Bench& bench) +{ + FSCHACHA20POLY1305(bench, BUFFER_SIZE_TINY); +} + +static void FSCHACHA20POLY1305_256BYTES(benchmark::Bench& bench) +{ + FSCHACHA20POLY1305(bench, BUFFER_SIZE_SMALL); +} + +static void FSCHACHA20POLY1305_1MB(benchmark::Bench& bench) +{ + FSCHACHA20POLY1305(bench, BUFFER_SIZE_LARGE); +} + BENCHMARK(CHACHA20_64BYTES, benchmark::PriorityLevel::HIGH); BENCHMARK(CHACHA20_256BYTES, benchmark::PriorityLevel::HIGH); BENCHMARK(CHACHA20_1MB, benchmark::PriorityLevel::HIGH); +BENCHMARK(FSCHACHA20POLY1305_64BYTES, benchmark::PriorityLevel::HIGH); +BENCHMARK(FSCHACHA20POLY1305_256BYTES, benchmark::PriorityLevel::HIGH); +BENCHMARK(FSCHACHA20POLY1305_1MB, benchmark::PriorityLevel::HIGH);