78 lines
2 KiB
Bash
Executable file
78 lines
2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
# Parametrisation to this script is as follows:
|
|
# * The first argument will be taken as suffix to the result folder
|
|
# e.g. `./bench.sh _config0`
|
|
# * It is possible to make its output a bit more verbose by setting
|
|
# the `VERBOSE` environment variable to '1', e.g. via
|
|
# `VERBOSE=1 ./bench.sh` or to make it quiet by setting it to '0'
|
|
# * Per default we read from /dev/ttyUSB2, by setting the `WC_TTY`
|
|
# environment variable this can adapted
|
|
# e.g. `WC_TTY=/dev/ttyACM0 ./bench.sh`
|
|
|
|
###
|
|
# Preamble
|
|
###
|
|
|
|
my_path=$(dirname $(readlink -f $0)) || exit $?
|
|
readonly my_path
|
|
readonly csv_path_suffix="$1"
|
|
|
|
readonly common_opts="-blocks 128"
|
|
readonly ccm_gcm_opts="-all_aad -aad_size 13"
|
|
|
|
# options used in `small_block()`
|
|
readonly cbc_opts="$common_opts"
|
|
readonly ccm_opts="$common_opts $ccm_gcm_opts"
|
|
readonly gcm_opts="$common_opts $ccm_gcm_opts"
|
|
readonly small_block_ciphers="cbc ccm gcm"
|
|
readonly small_block_ciphers_hw="gcm"
|
|
readonly small_block_sizes="16 528 1024 4112 7696 15888 32768 65536 131072"
|
|
|
|
# options used in `large_block()`
|
|
readonly ccm_fast_opts="$common_opts -all_aad"
|
|
readonly gcm_fast_opts="$common_opts -all_aad"
|
|
# 512 MiB transfer, 128 MiB max. blocksize
|
|
readonly large_block_ciphers="gcm"
|
|
readonly large_num_bytes=$((512 * 1024 * 1024))
|
|
readonly large_max_blocksize=$((128 * 1024 * 1024))
|
|
|
|
|
|
source "$my_path"/../../scripts/bench/bench_functions.sh
|
|
|
|
|
|
###
|
|
# Implementation
|
|
###
|
|
|
|
[ "$1" == "_HW" ] && small_block "$small_block_ciphers_hw" \
|
|
|| small_block "$small_block_ciphers"
|
|
|
|
# No large blocksizes for analysis
|
|
#[ "$1" == "_HW" ] && large_block
|
|
|
|
# Benchmark only on HW and SW
|
|
if [ "$1" != "_ARMv8" ]; then
|
|
bench "ecc" "-ecc -ecc-all -ecc-kg"
|
|
|
|
bench "sha3" "-sha3-384"
|
|
|
|
for keysize in 2048 3072 4096
|
|
do
|
|
bench "rsa" "-rsa-sz -rsa-kg $keysize" "_$keysize"
|
|
done
|
|
|
|
bench "rng" "-rng"
|
|
fi
|
|
|
|
# Benchmark only on ARMv8 and SW
|
|
if [ "$1" != "_HW" ]; then
|
|
bench "sha2" "-sha2"
|
|
|
|
bench "cmac" "-cmac"
|
|
fi
|
|
|
|
#eof
|