blob: 455dcde9de43b63c60e2bb7aa49931249291a412 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#!/bin/bash
set -Eeu
# Generate NIST's expected tree:
#
# crypto_aead
# │
# └── lilliputae${mode}${keylen}v1
# │
# ├── add_${someimplementation}
# │ ├── api.h
# │ └── encrypt.c
# │
# ├── add_${someplatform}
# │ ├── api.h
# │ └── encrypt.c
# │
# ├── ref
# │ ├── api.h
# │ └── encrypt.c
# │
# └── LWC_AEAD_KAT_${keylen}_120.txt
NIST_DIR=$(dirname $0)
ROOT=${NIST_DIR}/..
TMP_DIR=$(mktemp -d)
cleanup ()
{
rm -r ${TMP_DIR}
}
trap cleanup ERR
add-variant ()
{
mode=$1
key_length=$2
variant=lilliputae${mode}${key_length}v1
dest=${TMP_DIR}/crypto_aead/${variant}
mkdir -p ${dest}
source_files=(
ae-common.h
cipher.{c,h}
lilliput-ae{.h,-${mode}.c}
parameters.h
tweakey.{c,h}
)
implementations=(
ref
add_tabulatedtweakey
)
for implem in ${implementations[@]}
do
mkdir ${dest}/${implem}
cp ${ROOT}/src/${mode}-${key_length}/_parameters.h ${dest}/${implem}
cp ${NIST_DIR}/{api.h,encrypt.c} ${dest}/${implem}
for f in ${source_files[@]}
do
cp ${ROOT}/src/${implem}/${f} ${dest}/${implem}
done
done
}
test-variant ()
{
mode=$1
key_length=$2
variant=lilliputae${mode}${key_length}v1
dest=${TMP_DIR}/crypto_aead/${variant}
src=${dest}/ref
genkat=${TMP_DIR}/${variant}
nist_flags=(-std=c99 -Wall -Wextra -Wshadow -fsanitize=address,undefined -O2)
gcc ${nist_flags[@]} -Werror -I${src} -I${TMP_DIR} \
${src}/*.c ${TMP_DIR}/genkat_aead.c -o ${genkat}
${genkat}
mv LWC_AEAD_KAT_${key_length}_120.txt ${dest}
}
cp ${NIST_DIR}/TestVectorGen/* ${TMP_DIR}
for mode in i ii
do
for key_length in 128 192 256
do
add-variant ${mode} ${key_length}
test-variant ${mode} ${key_length}
done
done
cp -r ${TMP_DIR}/crypto_aead .
cleanup
|