xref: /minix3/external/bsd/bind/dist/bin/tests/system/tsig/tests.sh (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek#!/bin/sh
2*00b67f09SDavid van Moolenbroek#
3*00b67f09SDavid van Moolenbroek# Copyright (C) 2005-2007, 2011, 2012  Internet Systems Consortium, Inc. ("ISC")
4*00b67f09SDavid van Moolenbroek#
5*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any
6*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above
7*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies.
8*00b67f09SDavid van Moolenbroek#
9*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11*00b67f09SDavid van Moolenbroek# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE.
16*00b67f09SDavid van Moolenbroek
17*00b67f09SDavid van Moolenbroek# Id: tests.sh,v 1.7 2011/11/06 23:46:40 tbox Exp
18*00b67f09SDavid van Moolenbroek
19*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=..
20*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh
21*00b67f09SDavid van Moolenbroek
22*00b67f09SDavid van Moolenbroek#
23*00b67f09SDavid van Moolenbroek# Shared secrets.
24*00b67f09SDavid van Moolenbroek#
25*00b67f09SDavid van Moolenbroekmd5="97rnFx24Tfna4mHPfgnerA=="
26*00b67f09SDavid van Moolenbroeksha1="FrSt77yPTFx6hTs4i2tKLB9LmE0="
27*00b67f09SDavid van Moolenbroeksha224="hXfwwwiag2QGqblopofai9NuW28q/1rH4CaTnA=="
28*00b67f09SDavid van Moolenbroeksha256="R16NojROxtxH/xbDl//ehDsHm5DjWTQ2YXV+hGC2iBY="
29*00b67f09SDavid van Moolenbroeksha384="OaDdoAk2LAcLtYeUnsT7A9XHjsb6ZEma7OCvUpMraQIJX6HetGrlKmF7yglO1G2h"
30*00b67f09SDavid van Moolenbroeksha512="jI/Pa4qRu96t76Pns5Z/Ndxbn3QCkwcxLOgt9vgvnJw5wqTRvNyk3FtD6yIMd1dWVlqZ+Y4fe6Uasc0ckctEmg=="
31*00b67f09SDavid van Moolenbroek
32*00b67f09SDavid van Moolenbroekstatus=0
33*00b67f09SDavid van Moolenbroek
34*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-md5 (old form)"
35*00b67f09SDavid van Moolenbroekret=0
36*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
37*00b67f09SDavid van Moolenbroek	-y "md5:$md5" @10.53.0.1 soa -p 5300 > dig.out.md5.old || ret=1
38*00b67f09SDavid van Moolenbroekgrep -i "md5.*TSIG.*NOERROR" dig.out.md5.old > /dev/null || ret=1
39*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
40*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
41*00b67f09SDavid van Moolenbroekfi
42*00b67f09SDavid van Moolenbroek
43*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-md5 (new form)"
44*00b67f09SDavid van Moolenbroekret=0
45*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
46*00b67f09SDavid van Moolenbroek	-y "hmac-md5:md5:$md5" @10.53.0.1 soa -p 5300 > dig.out.md5.new || ret=1
47*00b67f09SDavid van Moolenbroekgrep -i "md5.*TSIG.*NOERROR" dig.out.md5.new > /dev/null || ret=1
48*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
49*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
50*00b67f09SDavid van Moolenbroekfi
51*00b67f09SDavid van Moolenbroek
52*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha1"
53*00b67f09SDavid van Moolenbroekret=0
54*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
55*00b67f09SDavid van Moolenbroek	-y "hmac-sha1:sha1:$sha1" @10.53.0.1 soa -p 5300 > dig.out.sha1 || ret=1
56*00b67f09SDavid van Moolenbroekgrep -i "sha1.*TSIG.*NOERROR" dig.out.sha1 > /dev/null || ret=1
57*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
58*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
59*00b67f09SDavid van Moolenbroekfi
60*00b67f09SDavid van Moolenbroek
61*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha224"
62*00b67f09SDavid van Moolenbroekret=0
63*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
64*00b67f09SDavid van Moolenbroek	-y "hmac-sha224:sha224:$sha224" @10.53.0.1 soa -p 5300 > dig.out.sha224 || ret=1
65*00b67f09SDavid van Moolenbroekgrep -i "sha224.*TSIG.*NOERROR" dig.out.sha224 > /dev/null || ret=1
66*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
67*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
68*00b67f09SDavid van Moolenbroekfi
69*00b67f09SDavid van Moolenbroek
70*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha256"
71*00b67f09SDavid van Moolenbroekret=0
72*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
73*00b67f09SDavid van Moolenbroek	-y "hmac-sha256:sha256:$sha256" @10.53.0.1 soa -p 5300 > dig.out.sha256 || ret=1
74*00b67f09SDavid van Moolenbroekgrep -i "sha256.*TSIG.*NOERROR" dig.out.sha256 > /dev/null || ret=1
75*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
76*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
77*00b67f09SDavid van Moolenbroekfi
78*00b67f09SDavid van Moolenbroek
79*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha384"
80*00b67f09SDavid van Moolenbroekret=0
81*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
82*00b67f09SDavid van Moolenbroek	-y "hmac-sha384:sha384:$sha384" @10.53.0.1 soa -p 5300 > dig.out.sha384 || ret=1
83*00b67f09SDavid van Moolenbroekgrep -i "sha384.*TSIG.*NOERROR" dig.out.sha384 > /dev/null || ret=1
84*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
85*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
86*00b67f09SDavid van Moolenbroekfi
87*00b67f09SDavid van Moolenbroek
88*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha512"
89*00b67f09SDavid van Moolenbroekret=0
90*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
91*00b67f09SDavid van Moolenbroek	-y "hmac-sha512:sha512:$sha512" @10.53.0.1 soa -p 5300 > dig.out.sha512 || ret=1
92*00b67f09SDavid van Moolenbroekgrep -i "sha512.*TSIG.*NOERROR" dig.out.sha512 > /dev/null || ret=1
93*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
94*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
95*00b67f09SDavid van Moolenbroekfi
96*00b67f09SDavid van Moolenbroek
97*00b67f09SDavid van Moolenbroek#
98*00b67f09SDavid van Moolenbroek#
99*00b67f09SDavid van Moolenbroek#	Truncated TSIG
100*00b67f09SDavid van Moolenbroek#
101*00b67f09SDavid van Moolenbroek#
102*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-md5 (trunc)"
103*00b67f09SDavid van Moolenbroekret=0
104*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
105*00b67f09SDavid van Moolenbroek	-y "hmac-md5-80:md5-trunc:$md5" @10.53.0.1 soa -p 5300 > dig.out.md5.trunc || ret=1
106*00b67f09SDavid van Moolenbroekgrep -i "md5-trunc.*TSIG.*NOERROR" dig.out.md5.trunc > /dev/null || ret=1
107*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
108*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
109*00b67f09SDavid van Moolenbroekfi
110*00b67f09SDavid van Moolenbroek
111*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha1 (trunc)"
112*00b67f09SDavid van Moolenbroekret=0
113*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
114*00b67f09SDavid van Moolenbroek	-y "hmac-sha1-80:sha1-trunc:$sha1" @10.53.0.1 soa -p 5300 > dig.out.sha1.trunc || ret=1
115*00b67f09SDavid van Moolenbroekgrep -i "sha1.*TSIG.*NOERROR" dig.out.sha1.trunc > /dev/null || ret=1
116*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
117*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
118*00b67f09SDavid van Moolenbroekfi
119*00b67f09SDavid van Moolenbroek
120*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha224 (trunc)"
121*00b67f09SDavid van Moolenbroekret=0
122*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
123*00b67f09SDavid van Moolenbroek	-y "hmac-sha224-112:sha224-trunc:$sha224" @10.53.0.1 soa -p 5300 > dig.out.sha224.trunc || ret=1
124*00b67f09SDavid van Moolenbroekgrep -i "sha224-trunc.*TSIG.*NOERROR" dig.out.sha224.trunc > /dev/null || ret=1
125*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
126*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
127*00b67f09SDavid van Moolenbroekfi
128*00b67f09SDavid van Moolenbroek
129*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha256 (trunc)"
130*00b67f09SDavid van Moolenbroekret=0
131*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
132*00b67f09SDavid van Moolenbroek	-y "hmac-sha256-128:sha256-trunc:$sha256" @10.53.0.1 soa -p 5300 > dig.out.sha256.trunc || ret=1
133*00b67f09SDavid van Moolenbroekgrep -i "sha256-trunc.*TSIG.*NOERROR" dig.out.sha256.trunc > /dev/null || ret=1
134*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
135*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
136*00b67f09SDavid van Moolenbroekfi
137*00b67f09SDavid van Moolenbroek
138*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha384 (trunc)"
139*00b67f09SDavid van Moolenbroekret=0
140*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
141*00b67f09SDavid van Moolenbroek	-y "hmac-sha384-192:sha384-trunc:$sha384" @10.53.0.1 soa -p 5300 > dig.out.sha384.trunc || ret=1
142*00b67f09SDavid van Moolenbroekgrep -i "sha384-trunc.*TSIG.*NOERROR" dig.out.sha384.trunc > /dev/null || ret=1
143*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
144*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
145*00b67f09SDavid van Moolenbroekfi
146*00b67f09SDavid van Moolenbroek
147*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha512-256 (trunc)"
148*00b67f09SDavid van Moolenbroekret=0
149*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
150*00b67f09SDavid van Moolenbroek	-y "hmac-sha512-256:sha512-trunc:$sha512" @10.53.0.1 soa -p 5300 > dig.out.sha512.trunc || ret=1
151*00b67f09SDavid van Moolenbroekgrep -i "sha512-trunc.*TSIG.*NOERROR" dig.out.sha512.trunc > /dev/null || ret=1
152*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
153*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
154*00b67f09SDavid van Moolenbroekfi
155*00b67f09SDavid van Moolenbroek
156*00b67f09SDavid van Moolenbroek
157*00b67f09SDavid van Moolenbroek#
158*00b67f09SDavid van Moolenbroek#
159*00b67f09SDavid van Moolenbroek#	Check for bad truncation.
160*00b67f09SDavid van Moolenbroek#
161*00b67f09SDavid van Moolenbroek#
162*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-md5-80 (BADTRUNC)"
163*00b67f09SDavid van Moolenbroekret=0
164*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
165*00b67f09SDavid van Moolenbroek	-y "hmac-md5-80:md5:$md5" @10.53.0.1 soa -p 5300 > dig.out.md5-80 || ret=1
166*00b67f09SDavid van Moolenbroekgrep -i "md5.*TSIG.*BADTRUNC" dig.out.md5-80 > /dev/null || ret=1
167*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
168*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
169*00b67f09SDavid van Moolenbroekfi
170*00b67f09SDavid van Moolenbroek
171*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha1-80 (BADTRUNC)"
172*00b67f09SDavid van Moolenbroekret=0
173*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
174*00b67f09SDavid van Moolenbroek	-y "hmac-sha1-80:sha1:$sha1" @10.53.0.1 soa -p 5300 > dig.out.sha1-80 || ret=1
175*00b67f09SDavid van Moolenbroekgrep -i "sha1.*TSIG.*BADTRUNC" dig.out.sha1-80 > /dev/null || ret=1
176*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
177*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
178*00b67f09SDavid van Moolenbroekfi
179*00b67f09SDavid van Moolenbroek
180*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha224-112 (BADTRUNC)"
181*00b67f09SDavid van Moolenbroekret=0
182*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
183*00b67f09SDavid van Moolenbroek	-y "hmac-sha224-112:sha224:$sha224" @10.53.0.1 soa -p 5300 > dig.out.sha224-112 || ret=1
184*00b67f09SDavid van Moolenbroekgrep -i "sha224.*TSIG.*BADTRUNC" dig.out.sha224-112 > /dev/null || ret=1
185*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
186*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
187*00b67f09SDavid van Moolenbroekfi
188*00b67f09SDavid van Moolenbroek
189*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha256-128 (BADTRUNC)"
190*00b67f09SDavid van Moolenbroekret=0
191*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
192*00b67f09SDavid van Moolenbroek	-y "hmac-sha256-128:sha256:$sha256" @10.53.0.1 soa -p 5300 > dig.out.sha256-128 || ret=1
193*00b67f09SDavid van Moolenbroekgrep -i "sha256.*TSIG.*BADTRUNC" dig.out.sha256-128 > /dev/null || ret=1
194*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
195*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
196*00b67f09SDavid van Moolenbroekfi
197*00b67f09SDavid van Moolenbroek
198*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha384-192 (BADTRUNC)"
199*00b67f09SDavid van Moolenbroekret=0
200*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
201*00b67f09SDavid van Moolenbroek	-y "hmac-sha384-192:sha384:$sha384" @10.53.0.1 soa -p 5300 > dig.out.sha384-192 || ret=1
202*00b67f09SDavid van Moolenbroekgrep -i "sha384.*TSIG.*BADTRUNC" dig.out.sha384-192 > /dev/null || ret=1
203*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
204*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
205*00b67f09SDavid van Moolenbroekfi
206*00b67f09SDavid van Moolenbroek
207*00b67f09SDavid van Moolenbroekecho "I:fetching using hmac-sha512-256 (BADTRUNC)"
208*00b67f09SDavid van Moolenbroekret=0
209*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
210*00b67f09SDavid van Moolenbroek	-y "hmac-sha512-256:sha512:$sha512" @10.53.0.1 soa -p 5300 > dig.out.sha512-256 || ret=1
211*00b67f09SDavid van Moolenbroekgrep -i "sha512.*TSIG.*BADTRUNC" dig.out.sha512-256 > /dev/null || ret=1
212*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
213*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
214*00b67f09SDavid van Moolenbroekfi
215*00b67f09SDavid van Moolenbroek
216*00b67f09SDavid van Moolenbroekecho "I:attempting fetch with bad tsig algorithm"
217*00b67f09SDavid van Moolenbroekret=0
218*00b67f09SDavid van Moolenbroek$DIG +tcp +nosea +nostat +noquest +nocomm +nocmd example.nil.\
219*00b67f09SDavid van Moolenbroek	-y "badalgo:invalid:$sha512" @10.53.0.1 soa -p 5300 > dig.out.badalgo 2>&1 || ret=1
220*00b67f09SDavid van Moolenbroekgrep -i "Couldn't create key invalid: algorithm is unsupported" dig.out.badalgo > /dev/null || ret=1
221*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
222*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
223*00b67f09SDavid van Moolenbroekfi
224*00b67f09SDavid van Moolenbroek
225*00b67f09SDavid van Moolenbroekecho "I:checking both OPT and TSIG records are returned when TC=1"
226*00b67f09SDavid van Moolenbroekret=0
227*00b67f09SDavid van Moolenbroek$DIG +ignore +bufsize=512 large.example.nil \
228*00b67f09SDavid van Moolenbroek	-y "hmac-sha1:sha1:$sha1" @10.53.0.1 txt -p 5300 > dig.out.large 2>&1 || ret=1
229*00b67f09SDavid van Moolenbroekgrep "flags:.* tc[ ;]" dig.out.large > /dev/null || ret=1
230*00b67f09SDavid van Moolenbroekgrep "status: NOERROR" dig.out.large > /dev/null || ret=1
231*00b67f09SDavid van Moolenbroekgrep "EDNS:" dig.out.large > /dev/null || ret=1
232*00b67f09SDavid van Moolenbroekgrep -i "sha1.*TSIG.*NOERROR" dig.out.sha1 > /dev/null || ret=1
233*00b67f09SDavid van Moolenbroekif [ $ret -eq 1 ] ; then
234*00b67f09SDavid van Moolenbroek	echo "I: failed"; status=1
235*00b67f09SDavid van Moolenbroekfi
236*00b67f09SDavid van Moolenbroekexit $status
237*00b67f09SDavid van Moolenbroek
238*00b67f09SDavid van Moolenbroek
239