Commit | Line | Data |
---|---|---|
78b4ea88 MW |
1 | #! /bin/sh |
2 | ||
3 | prog=`echo $0 | sed 's:.*/::'` | |
4 | ||
5 | cat <<EOF | |
6 | # Test vectors for SHA3 | |
7 | # | |
8 | # Generated on `date +%Y-%m-%d` by $prog | |
9 | ||
10 | EOF | |
11 | ||
12 | for i in "$@"; do | |
13 | base=${i##*/} | |
14 | case $base in | |
15 | SHA3_*) tail=${base#SHA3_}; alg=sha3 sep=- hex=-hex ;; | |
16 | SHAKE*) tail=${base#SHAKE}; alg=shake sep= hex= ;; | |
17 | *) echo >&2 "$0: bad filename \`$i'"; exit 2 ;; | |
18 | esac | |
19 | case $tail in | |
20 | *LongMsg.rsp) hack=kat; bits=${tail%LongMsg.rsp} ;; | |
21 | *ShortMsg.rsp) hack=kat; bits=${tail%ShortMsg.rsp} ;; | |
22 | *VariableOut.rsp) hack=kat; bits=${tail%VariableOut.rsp} ;; | |
23 | *Monte.rsp) hack=mct; bits=${tail%Monte.rsp} ;; | |
24 | *) echo >&2 "$0: bad filename \`$i'"; exit 2 ;; | |
25 | esac | |
26 | ||
27 | case $hack,$alg in | |
28 | kat,*) | |
29 | echo "$alg$sep$bits$hex {" | |
30 | awk ' | |
31 | BEGIN { FS = "[ \t\r]+"; len = 8; } | |
32 | /^Len = / { len = $3; } | |
33 | /^Msg = / { msg = tolower($3); if (!len) msg = "\"\""; } | |
34 | /^(MD|Output) = / { | |
35 | h = tolower($3); | |
36 | if (len%8 == 0) printf(" %s\n %s;\n", msg, h); | |
37 | } | |
38 | ' <"$i" | |
39 | echo "}" | |
40 | ;; | |
41 | mct,sha3) | |
42 | echo "$alg$sep$bits-mct {" | |
43 | awk ' | |
44 | BEGIN { FS = "[ \t\r]+"; } | |
45 | BEGIN { prev = ""; } | |
46 | /MD = / { | |
47 | if (prev != "") printf(" 1000\n %s\n %s;\n", prev, $3); | |
48 | prev = $3; | |
49 | } | |
50 | ' <"$i" | |
51 | echo "}" | |
52 | ;; | |
53 | *) | |
54 | echo >&2 "$0: unsupported test kind $hack/$alg"; exit 2 ;; | |
55 | esac | |
56 | done |