From 5a31b4b854c700e9a3f5d2f420a66fbc7d9f7506 Mon Sep 17 00:00:00 2001 From: xvzcf Date: Wed, 13 Sep 2023 17:20:24 -0400 Subject: [PATCH] Added BoringSSL SHAKE benchmarks. --- benches/boringssl/CMakeLists.txt | 5 +++++ benches/boringssl/shake.cxx | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 benches/boringssl/shake.cxx diff --git a/benches/boringssl/CMakeLists.txt b/benches/boringssl/CMakeLists.txt index 5e51a98c3..69f98dbef 100644 --- a/benches/boringssl/CMakeLists.txt +++ b/benches/boringssl/CMakeLists.txt @@ -27,3 +27,8 @@ FetchContent_MakeAvailable(boringssl) add_executable(kyber768 kyber768.cxx) target_compile_options(kyber768 PRIVATE -Wall -Wextra) target_link_libraries(kyber768 crypto benchmark::benchmark) + +add_executable(shake shake.cxx) +target_include_directories(shake PRIVATE ${boringssl_SOURCE_DIR}) +target_compile_options(shake PRIVATE -Wall -Wextra) +target_link_libraries(shake crypto benchmark::benchmark) diff --git a/benches/boringssl/shake.cxx b/benches/boringssl/shake.cxx new file mode 100644 index 000000000..dd33d55a9 --- /dev/null +++ b/benches/boringssl/shake.cxx @@ -0,0 +1,33 @@ +#include +#include + +#include "crypto/kyber/internal.h" + +#include + +#define BYTES_TO_OUTPUT 10000 + +static void BM_SHAKE128(benchmark::State &state) { + uint8_t input[34] = {0}; + uint8_t output[BYTES_TO_OUTPUT]; + + for (auto _ : state) { + BORINGSSL_keccak(output, BYTES_TO_OUTPUT, input, sizeof(input), + boringssl_shake128); + } +} + +static void BM_SHAKE256(benchmark::State &state) { + uint8_t input[34] = {0}; + uint8_t output[BYTES_TO_OUTPUT]; + + for (auto _ : state) { + BORINGSSL_keccak(output, BYTES_TO_OUTPUT, input, sizeof(input), + boringssl_shake256); + } +} + +BENCHMARK(BM_SHAKE128); +BENCHMARK(BM_SHAKE256); + +BENCHMARK_MAIN();