summaryrefslogtreecommitdiffstats
path: root/bin/tests/system/tools/tests.sh
blob: 835c325737a321d4c09749a9ef463cd1d6dc4e4d (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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/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