summaryrefslogtreecommitdiff
path: root/test/check-implementation.sh
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@airbus.com>2019-02-04 08:50:22 +0100
committerKévin Le Gouguec <kevin.legouguec@airbus.com>2019-02-04 08:50:22 +0100
commit6726d240017eb64ea042115005251e457bbb112b (patch)
tree88c81a3e0103ad3124f4aee6d16bf271c2d6b16a /test/check-implementation.sh
parentfca886ea9494d7ae6178004d0080ed1a09f03cc9 (diff)
downloadlilliput-ae-implem-6726d240017eb64ea042115005251e457bbb112b.tar.xz
Finalisation du script de comparaison d'implémentations
Comme mentionné dans le commit précédent, ce test devrait permettre de détecter des déviations par rapport à l'implémentation de référence. Les tests de Lilliput-Ⅰ-128 remplissent le même rôle, mais je n'avais pas envie de passer du temps à les copier-coller puis à les adapter aux différentes tailles de clés et de tweaks.
Diffstat (limited to 'test/check-implementation.sh')
-rwxr-xr-xtest/check-implementation.sh43
1 files changed, 27 insertions, 16 deletions
diff --git a/test/check-implementation.sh b/test/check-implementation.sh
index 985ff04..0ce739d 100755
--- a/test/check-implementation.sh
+++ b/test/check-implementation.sh
@@ -6,7 +6,7 @@ set -eu
# well as another one, and compare vectors.
TEST_DIR=$(dirname $0)
-ROOT=${TEST_DIR}/..
+ROOT_DIR=${TEST_DIR}/..
implem=$1
@@ -17,8 +17,12 @@ run-genkat ()
local implem=$2
local mode=$3
local keylen=$4
+ echo "Testing mode ${mode}-${keylen}…"
- local src_dir=${ROOT}/src/
+ local src_dir=${ROOT_DIR}/src
+ local vectors_dir=${tmp_dir}/vectors/${implem}
+ local genkat_dir=${tmp_dir}/genkat/${implem}/${mode}-${keylen}
+ local genkat=${genkat_dir}/genkat
local source_files=(
ae-common.h
@@ -28,30 +32,34 @@ run-genkat ()
tweakey.{c,h}
)
+ mkdir -p ${genkat_dir} # "-p" to allow comparing ref against ref.
+
local f
for f in ${source_files[@]}
do
- cp ${src_dir}/${implem}/${f} ${tmp_dir}
+ cp ${src_dir}/${implem}/${f} ${genkat_dir}
done
- cp ${src_dir}/${mode}-${keylen}/_parameters.h ${tmp_dir}
- cp ${ROOT_DIR}/nist/{api.h,encrypt.c} ${tmp_dir}
+ cp ${src_dir}/${mode}-${keylen}/_parameters.h ${genkat_dir}
+ cp ${ROOT_DIR}/nist/{api.h,encrypt.c} ${genkat_dir}
+ cp ${ROOT_DIR}/nist/TestVectorGen/* ${genkat_dir}
local nist_flags=(-std=c99 -Wall -Wextra -Wshadow -fsanitize=address,undefined -O2)
- gcc ${nist_flags[@]} -Werror -I${tmp_dir} -o ${tmp_dir}/genkat
- (
- cd ${tmp_dir}
- ./genkat
- cat LWC_AEAD_KAT*.txt
- )
+ gcc ${nist_flags[@]} -Werror -I${genkat_dir} ${genkat_dir}/*.c -o ${genkat}
+
+ ${genkat}
+ mv LWC_AEAD_KAT*.txt ${vectors_dir}/${mode}-${keylen}
}
test-implem ()
{
- local implem=$1
- local tmp_dir=$(mktemp -d)
+ local tmp_dir=$1
+ local implem=$2
+ echo "Testing implementation ${implem}…"
+
+ mkdir -p ${tmp_dir}/{genkat,vectors}/${implem}
local mode
local keylen
@@ -63,9 +71,12 @@ test-implem ()
run-genkat ${tmp_dir} ${implem} ${mode} ${keylen}
done
done
-
- rm -r ${tmp_dir}
}
-diff -u <(test-implem ref) <(test-implem ${implem})
+tmp_dir=$(mktemp -d)
+
+test-implem ${tmp_dir} ref
+test-implem ${tmp_dir} ${implem}
+
+diff --brief --new-file --recursive ${tmp_dir}/vectors/ref ${tmp_dir}/vectors/${implem}