progs/perftest.c: Use from Glibc syscall numbers.
[catacomb] / symm / sha3-trans
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