aboutsummaryrefslogtreecommitdiff
path: root/src/bench/chacha20.cpp
diff options
context:
space:
mode:
authorPieter Wuille <pieter@wuille.net>2023-06-30 13:06:54 -0400
committerPieter Wuille <pieter@wuille.net>2023-07-26 16:55:05 -0400
commitaf2b44c76e5de8ce880381e5535ead37ab0b3ba9 (patch)
tree3e5ecb06d2aeb6b01a0c540835f8e30db9b485c2 /src/bench/chacha20.cpp
parentaa8cee93342ee857931afec9af3ff5dbd8ce7749 (diff)
downloadbitcoin-af2b44c76e5de8ce880381e5535ead37ab0b3ba9.tar.xz
bench: add benchmark for FSChaCha20Poly1305
Add a benchmark for FSChaCha20Poly1305 encryption, so the overhead of key generation and authentication can be observed for various message sizes.
Diffstat (limited to 'src/bench/chacha20.cpp')
-rw-r--r--src/bench/chacha20.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/bench/chacha20.cpp b/src/bench/chacha20.cpp
index 3b57e29f39..d8bebf9319 100644
--- a/src/bench/chacha20.cpp
+++ b/src/bench/chacha20.cpp
@@ -5,6 +5,7 @@
#include <bench/bench.h>
#include <crypto/chacha20.h>
+#include <crypto/chacha20poly1305.h>
/* 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<std::byte> key(32);
+ FSChaCha20Poly1305 ctx(key, 224);
+ std::vector<std::byte> in(buffersize);
+ std::vector<std::byte> aad;
+ std::vector<std::byte> 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);