summaryrefslogtreecommitdiffstats
path: root/bin/tests/system/tools/tests.sh
blob: a7113cb269b8aa7cfefd47ae5d0fd9c7de6d97ac (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
107
#!/bin/sh

# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0.  If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.

. ../conf.sh

status=0

checkout() {
	rc=$1
	case $rc in
	0) : ok ;;
	*) echo_i "failed"
	   status=$((status + 1))
	   return 1 ;;
	esac
	case $out in
	*$hash*) : ok ;;
	*) echo_i "expect $hash"
	   echo_i "output $out"
	   echo_i "failed"
	   status=$((status + 1)) ;;
	esac
}

# test cases taken from RFC 5155 appendix A
algo=1 flags=0 iters=12 salt="aabbccdd"
while	read name hash
do
	echo_i "checking $NSEC3HASH $name"
	{ out=$($NSEC3HASH $salt $algo $iters $name); rc=$?; } || true
	checkout $rc

	echo_i "checking $NSEC3HASH -r $name"
	{ out=$($NSEC3HASH -r $algo $flags $iters $salt $name); rc=$?; } || true
	checkout $rc

done <<EOF
*.w.example R53BQ7CC2UVMUBFU5OCMM6PERS9TK9EN
2t7b4g4vsa5smi47k61mv5bv1a22bojr.example KOHAR7MBB8DC2CE8A9QVL8HON4K53UHI
a.example 35MTHGPGCU1QG68FAB165KLNSNK3DPVL
ai.example GJEQE526PLBF1G8MKLP59ENFD789NJGI
example 0P9MHAVEQVM6T7VBL5LOP2U3T2RP3TOM
ns1.example 2T7B4G4VSA5SMI47K61MV5BV1A22BOJR
ns2.example Q04JKCEVQVMU85R014C7DKBA38O0JI5R
w.example K8UDEMVP1J2F7EG6JEBPS17VP3N8I58H
x.w.example B4UM86EGHHDS6NEA196SMVMLO4ORS995
x.y.w.example 2VPTU5TIMAMQTTGL4LUU9KG21E0AOR3S
xx.example T644EBQK9BIBCNA874GIVR6JOJ62MLHV
y.w.example JI6NEOAEPV8B5O6K4EV33ABHA8HT9FGC
EOF

# test empty salt
checkempty() {
	rc=$1
	hash=CK0POJMG874LJREF7EFN8430QVIT8BSM checkout $rc &&
	hash=- checkout $rc
}
name=com algo=1 flags=1 iters=0
echo_i "checking $NSEC3HASH '' $name"
{ out=$($NSEC3HASH '' $algo $iters $name); rc=$?; } || true
checkempty $rc
echo_i "checking $NSEC3HASH - $name"
{ out=$($NSEC3HASH - $algo $iters $name); rc=$?; } || true
checkempty $rc
echo_i "checking $NSEC3HASH -- '' $name"
{ out=$($NSEC3HASH -- '' $algo $iters $name); rc=$?; } || true
checkempty $rc
echo_i "checking $NSEC3HASH -- - $name"
{ out=$($NSEC3HASH -- - $algo $iters $name); rc=$?; } || true
checkempty $rc
echo_i "checking $NSEC3HASH -r '' $name"
{ out=$($NSEC3HASH -r $algo $flags $iters '' $name); rc=$?; } || true
checkempty $rc
echo_i "checking $NSEC3HASH -r - $name"
{ out=$($NSEC3HASH -r $algo $flags $iters - $name); rc=$?; } || true
checkempty $rc

checkfail() {
	rc=$1
	case $rc in
	0) echo_i "failed to fail"
	   status=$((status + 1))
	   return 1 ;;
	esac
}
echo_i "checking $NSEC3HASH missing args"
{ out=$($NSEC3HASH 00 1 0 2>&1); rc=$?; } || true
checkfail $rc
echo_i "checking $NSEC3HASH extra args"
{ out=$($NSEC3HASH 00 1 0 two names 2>&1); rc=$?; } || true
checkfail $rc
echo_i "checking $NSEC3HASH bad option"
{ out=$($NSEC3HASH -? 2>&1); rc=$?; } || true
checkfail $rc

echo_i "exit status: $status"
[ $status -eq 0 ] || exit 1