1*00b67f09SDavid van Moolenbroek#!/bin/sh 2*00b67f09SDavid van Moolenbroek# 3*00b67f09SDavid van Moolenbroek# Copyright (C) 2010-2012, 2014 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.21 2012/02/09 23:47:18 tbox Exp 18*00b67f09SDavid van Moolenbroek 19*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=.. 20*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh 21*00b67f09SDavid van Moolenbroek 22*00b67f09SDavid van Moolenbroekstatus=0 23*00b67f09SDavid van Moolenbroek 24*00b67f09SDavid van Moolenbroekpzone=parent.nil 25*00b67f09SDavid van Moolenbroekpfile=parent.db 26*00b67f09SDavid van Moolenbroek 27*00b67f09SDavid van Moolenbroekczone=child.parent.nil 28*00b67f09SDavid van Moolenbroekcfile=child.db 29*00b67f09SDavid van Moolenbroek 30*00b67f09SDavid van Moolenbroekecho "I:generating child's keys" 31*00b67f09SDavid van Moolenbroek# active zsk 32*00b67f09SDavid van Moolenbroekczsk1=`$KEYGEN -q -r $RANDFILE -L 30 $czone` 33*00b67f09SDavid van Moolenbroek 34*00b67f09SDavid van Moolenbroek# not yet published or active 35*00b67f09SDavid van Moolenbroekczsk2=`$KEYGEN -q -r $RANDFILE -P none -A none $czone` 36*00b67f09SDavid van Moolenbroek 37*00b67f09SDavid van Moolenbroek# published but not active 38*00b67f09SDavid van Moolenbroekczsk3=`$KEYGEN -q -r $RANDFILE -A none $czone` 39*00b67f09SDavid van Moolenbroek 40*00b67f09SDavid van Moolenbroek# inactive 41*00b67f09SDavid van Moolenbroekczsk4=`$KEYGEN -q -r $RANDFILE -P now-24h -A now-24h -I now $czone` 42*00b67f09SDavid van Moolenbroek 43*00b67f09SDavid van Moolenbroek# active in 12 hours, inactive 12 hours after that... 44*00b67f09SDavid van Moolenbroekczsk5=`$KEYGEN -q -r $RANDFILE -P now+12h -A now+12h -I now+24h $czone` 45*00b67f09SDavid van Moolenbroek 46*00b67f09SDavid van Moolenbroek# explicit successor to czk5 47*00b67f09SDavid van Moolenbroek# (suppressing warning about lack of removal date) 48*00b67f09SDavid van Moolenbroekczsk6=`$KEYGEN -q -r $RANDFILE -S $czsk5 -i 6h 2>&-` 49*00b67f09SDavid van Moolenbroek 50*00b67f09SDavid van Moolenbroek# active ksk 51*00b67f09SDavid van Moolenbroekcksk1=`$KEYGEN -q -r $RANDFILE -fk -L 30 $czone` 52*00b67f09SDavid van Moolenbroek 53*00b67f09SDavid van Moolenbroek# published but not YET active; will be active in 20 seconds 54*00b67f09SDavid van Moolenbroekcksk2=`$KEYGEN -q -r $RANDFILE -fk $czone` 55*00b67f09SDavid van Moolenbroek# $SETTIME moved after other $KEYGENs 56*00b67f09SDavid van Moolenbroek 57*00b67f09SDavid van Moolenbroekecho I:revoking key 58*00b67f09SDavid van Moolenbroek# revoking key changes its ID 59*00b67f09SDavid van Moolenbroekcksk3=`$KEYGEN -q -r $RANDFILE -fk $czone` 60*00b67f09SDavid van Moolenbroekcksk4=`$REVOKE $cksk3` 61*00b67f09SDavid van Moolenbroek 62*00b67f09SDavid van Moolenbroekecho I:generating parent keys 63*00b67f09SDavid van Moolenbroekpzsk=`$KEYGEN -q -r $RANDFILE $pzone` 64*00b67f09SDavid van Moolenbroekpksk=`$KEYGEN -q -r $RANDFILE -fk $pzone` 65*00b67f09SDavid van Moolenbroek 66*00b67f09SDavid van Moolenbroekecho "I:setting child's activation time" 67*00b67f09SDavid van Moolenbroek# using now+30s to fix RT 24561 68*00b67f09SDavid van Moolenbroek$SETTIME -A now+30s $cksk2 > /dev/null 69*00b67f09SDavid van Moolenbroek 70*00b67f09SDavid van Moolenbroekecho I:signing child zone 71*00b67f09SDavid van Moolenbroekczoneout=`$SIGNER -Sg -e now+1d -X now+2d -r $RANDFILE -o $czone $cfile 2>&1` 72*00b67f09SDavid van Moolenbroek 73*00b67f09SDavid van Moolenbroekecho I:signing parent zone 74*00b67f09SDavid van Moolenbroekpzoneout=`$SIGNER -Sg -r $RANDFILE -o $pzone $pfile 2>&1` 75*00b67f09SDavid van Moolenbroek 76*00b67f09SDavid van Moolenbroekczactive=`echo $czsk1 | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 77*00b67f09SDavid van Moolenbroekczgenerated=`echo $czsk2 | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 78*00b67f09SDavid van Moolenbroekczpublished=`echo $czsk3 | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 79*00b67f09SDavid van Moolenbroekczinactive=`echo $czsk4 | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 80*00b67f09SDavid van Moolenbroekczpredecessor=`echo $czsk5 | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 81*00b67f09SDavid van Moolenbroekczsuccessor=`echo $czsk6 | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 82*00b67f09SDavid van Moolenbroekckactive=`echo $cksk1 | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 83*00b67f09SDavid van Moolenbroekckpublished=`echo $cksk2 | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 84*00b67f09SDavid van Moolenbroekckprerevoke=`echo $cksk3 | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 85*00b67f09SDavid van Moolenbroekckrevoked=`echo $cksk4 | sed 's/.*+005+0*\([0-9]*\)$/\1/'` 86*00b67f09SDavid van Moolenbroek 87*00b67f09SDavid van Moolenbroekpzid=`echo $pzsk | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 88*00b67f09SDavid van Moolenbroekpkid=`echo $pksk | sed 's/^K.*+005+0*\([0-9]\)/\1/'` 89*00b67f09SDavid van Moolenbroek 90*00b67f09SDavid van Moolenbroekecho "I:checking dnssec-signzone output matches expectations" 91*00b67f09SDavid van Moolenbroekret=0 92*00b67f09SDavid van Moolenbroekecho "$pzoneout" | grep 'KSKs: 1 active, 0 stand-by, 0 revoked' > /dev/null || ret=1 93*00b67f09SDavid van Moolenbroekecho "$pzoneout" | grep 'ZSKs: 1 active, 0 stand-by, 0 revoked' > /dev/null || ret=1 94*00b67f09SDavid van Moolenbroekecho "$czoneout" | grep 'KSKs: 1 active, 1 stand-by, 1 revoked' > /dev/null || ret=1 95*00b67f09SDavid van Moolenbroekecho "$czoneout" | grep 'ZSKs: 1 active, 2 stand-by, 0 revoked' > /dev/null || ret=1 96*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then 97*00b67f09SDavid van Moolenbroek echo "I: parent $pzoneout" 98*00b67f09SDavid van Moolenbroek echo "I: child $czoneout" 99*00b67f09SDavid van Moolenbroek echo "I:failed"; 100*00b67f09SDavid van Moolenbroekfi 101*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 102*00b67f09SDavid van Moolenbroek 103*00b67f09SDavid van Moolenbroekecho "I:rechecking dnssec-signzone output with -x" 104*00b67f09SDavid van Moolenbroekret=0 105*00b67f09SDavid van Moolenbroek# use an alternate output file so -x doesn't interfere with later checks 106*00b67f09SDavid van Moolenbroekpzoneout=`$SIGNER -Sxg -r $RANDFILE -o $pzone -f ${pfile}2.signed $pfile 2>&1` 107*00b67f09SDavid van Moolenbroekczoneout=`$SIGNER -Sxg -e now+1d -X now+2d -r $RANDFILE -o $czone -f ${cfile}2.signed $cfile 2>&1` 108*00b67f09SDavid van Moolenbroekecho "$pzoneout" | grep 'KSKs: 1 active, 0 stand-by, 0 revoked' > /dev/null || ret=1 109*00b67f09SDavid van Moolenbroekecho "$pzoneout" | grep 'ZSKs: 1 active, 0 present, 0 revoked' > /dev/null || ret=1 110*00b67f09SDavid van Moolenbroekecho "$czoneout" | grep 'KSKs: 1 active, 1 stand-by, 1 revoked' > /dev/null || ret=1 111*00b67f09SDavid van Moolenbroekecho "$czoneout" | grep 'ZSKs: 1 active, 2 present, 0 revoked' > /dev/null || ret=1 112*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then 113*00b67f09SDavid van Moolenbroek echo "I: parent $pzoneout" 114*00b67f09SDavid van Moolenbroek echo "I: child $czoneout" 115*00b67f09SDavid van Moolenbroek echo "I:failed"; 116*00b67f09SDavid van Moolenbroekfi 117*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 118*00b67f09SDavid van Moolenbroek 119*00b67f09SDavid van Moolenbroekecho "I:checking parent zone DNSKEY set" 120*00b67f09SDavid van Moolenbroekret=0 121*00b67f09SDavid van Moolenbroekgrep "key id = $pzid" $pfile.signed > /dev/null || { 122*00b67f09SDavid van Moolenbroek ret=1 123*00b67f09SDavid van Moolenbroek echo "I: missing expected parent ZSK id = $pzid" 124*00b67f09SDavid van Moolenbroek} 125*00b67f09SDavid van Moolenbroekgrep "key id = $pkid" $pfile.signed > /dev/null || { 126*00b67f09SDavid van Moolenbroek ret=1 127*00b67f09SDavid van Moolenbroek echo "I: missing expected parent KSK id = $pkid" 128*00b67f09SDavid van Moolenbroek} 129*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 130*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 131*00b67f09SDavid van Moolenbroek 132*00b67f09SDavid van Moolenbroekecho "I:checking parent zone DS records" 133*00b67f09SDavid van Moolenbroekret=0 134*00b67f09SDavid van Moolenbroekawk '$2 == "DS" {print $3}' $pfile.signed > dsset.out 135*00b67f09SDavid van Moolenbroekgrep -w "$ckactive" dsset.out > /dev/null || ret=1 136*00b67f09SDavid van Moolenbroekgrep -w "$ckpublished" dsset.out > /dev/null || ret=1 137*00b67f09SDavid van Moolenbroek# revoked key should not be there, hence the && 138*00b67f09SDavid van Moolenbroekgrep -w "$ckprerevoke" dsset.out > /dev/null && ret=1 139*00b67f09SDavid van Moolenbroekgrep -w "$ckrevoked" dsset.out > /dev/null && ret=1 140*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 141*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 142*00b67f09SDavid van Moolenbroek 143*00b67f09SDavid van Moolenbroekecho "I:checking child zone DNSKEY set" 144*00b67f09SDavid van Moolenbroekret=0 145*00b67f09SDavid van Moolenbroekgrep "key id = $ckactive" $cfile.signed > /dev/null || { 146*00b67f09SDavid van Moolenbroek ret=1 147*00b67f09SDavid van Moolenbroek echo "I: missing expected child KSK id = $ckactive" 148*00b67f09SDavid van Moolenbroek} 149*00b67f09SDavid van Moolenbroekgrep "key id = $ckpublished" $cfile.signed > /dev/null || { 150*00b67f09SDavid van Moolenbroek ret=1 151*00b67f09SDavid van Moolenbroek echo "I: missing expected child prepublished KSK id = $ckpublished" 152*00b67f09SDavid van Moolenbroek} 153*00b67f09SDavid van Moolenbroekgrep "key id = $ckrevoked" $cfile.signed > /dev/null || { 154*00b67f09SDavid van Moolenbroek ret=1 155*00b67f09SDavid van Moolenbroek echo "I: missing expected child revoked KSK id = $ckrevoked" 156*00b67f09SDavid van Moolenbroek} 157*00b67f09SDavid van Moolenbroekgrep "key id = $czactive" $cfile.signed > /dev/null || { 158*00b67f09SDavid van Moolenbroek ret=1 159*00b67f09SDavid van Moolenbroek echo "I: missing expected child ZSK id = $czactive" 160*00b67f09SDavid van Moolenbroek} 161*00b67f09SDavid van Moolenbroekgrep "key id = $czpublished" $cfile.signed > /dev/null || { 162*00b67f09SDavid van Moolenbroek ret=1 163*00b67f09SDavid van Moolenbroek echo "I: missing expected child prepublished ZSK id = $czpublished" 164*00b67f09SDavid van Moolenbroek} 165*00b67f09SDavid van Moolenbroekgrep "key id = $czinactive" $cfile.signed > /dev/null || { 166*00b67f09SDavid van Moolenbroek ret=1 167*00b67f09SDavid van Moolenbroek echo "I: missing expected child inactive ZSK id = $czinactive" 168*00b67f09SDavid van Moolenbroek} 169*00b67f09SDavid van Moolenbroek# should not be there, hence the && 170*00b67f09SDavid van Moolenbroekgrep "key id = $ckprerevoke" $cfile.signed > /dev/null && { 171*00b67f09SDavid van Moolenbroek ret=1 172*00b67f09SDavid van Moolenbroek echo "I: found unexpect child pre-revoke ZSK id = $ckprerevoke" 173*00b67f09SDavid van Moolenbroek} 174*00b67f09SDavid van Moolenbroekgrep "key id = $czgenerated" $cfile.signed > /dev/null && { 175*00b67f09SDavid van Moolenbroek ret=1 176*00b67f09SDavid van Moolenbroek echo "I: found unexpected child generated ZSK id = $czgenerated" 177*00b67f09SDavid van Moolenbroek} 178*00b67f09SDavid van Moolenbroekgrep "key id = $czpredecessor" $cfile.signed > /dev/null && { 179*00b67f09SDavid van Moolenbroek echo "I: found unexpected ZSK predecessor id = $czpredecessor (ignored)" 180*00b67f09SDavid van Moolenbroek} 181*00b67f09SDavid van Moolenbroekgrep "key id = $czsuccessor" $cfile.signed > /dev/null && { 182*00b67f09SDavid van Moolenbroek echo "I: found unexpected ZSK successor id = $czsuccessor (ignored)" 183*00b67f09SDavid van Moolenbroek} 184*00b67f09SDavid van Moolenbroek#grep "key id = $czpredecessor" $cfile.signed > /dev/null && ret=1 185*00b67f09SDavid van Moolenbroek#grep "key id = $czsuccessor" $cfile.signed > /dev/null && ret=1 186*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 187*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 188*00b67f09SDavid van Moolenbroek 189*00b67f09SDavid van Moolenbroekecho "I:checking key TTLs are correct" 190*00b67f09SDavid van Moolenbroekgrep "${czone}. 30 IN" ${czsk1}.key > /dev/null 2>&1 || ret=1 191*00b67f09SDavid van Moolenbroekgrep "${czone}. 30 IN" ${cksk1}.key > /dev/null 2>&1 || ret=1 192*00b67f09SDavid van Moolenbroekgrep "${czone}. IN" ${czsk2}.key > /dev/null 2>&1 || ret=1 193*00b67f09SDavid van Moolenbroek$SETTIME -L 45 ${czsk2} > /dev/null 194*00b67f09SDavid van Moolenbroekgrep "${czone}. 45 IN" ${czsk2}.key > /dev/null 2>&1 || ret=1 195*00b67f09SDavid van Moolenbroek$SETTIME -L 0 ${czsk2} > /dev/null 196*00b67f09SDavid van Moolenbroekgrep "${czone}. IN" ${czsk2}.key > /dev/null 2>&1 || ret=1 197*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 198*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 199*00b67f09SDavid van Moolenbroek 200*00b67f09SDavid van Moolenbroekecho "I:checking key TTLs were imported correctly" 201*00b67f09SDavid van Moolenbroekawk 'BEGIN {r = 0} $2 == "DNSKEY" && $1 != 30 {r = 1} END {exit r}' \ 202*00b67f09SDavid van Moolenbroek ${cfile}.signed || ret=1 203*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 204*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 205*00b67f09SDavid van Moolenbroek 206*00b67f09SDavid van Moolenbroekecho "I:re-signing and checking imported TTLs again" 207*00b67f09SDavid van Moolenbroek$SETTIME -L 15 ${czsk2} > /dev/null 208*00b67f09SDavid van Moolenbroekczoneout=`$SIGNER -Sg -e now+1d -X now+2d -r $RANDFILE -o $czone $cfile 2>&1` 209*00b67f09SDavid van Moolenbroekawk 'BEGIN {r = 0} $2 == "DNSKEY" && $1 != 15 {r = 1} END {exit r}' \ 210*00b67f09SDavid van Moolenbroek ${cfile}.signed || ret=1 211*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 212*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 213*00b67f09SDavid van Moolenbroek 214*00b67f09SDavid van Moolenbroek# There is some weirdness in Solaris 10 (Generic_120011-14), which 215*00b67f09SDavid van Moolenbroek# is why the next section has all those echo $ret > /dev/null;sync 216*00b67f09SDavid van Moolenbroek# commands 217*00b67f09SDavid van Moolenbroekecho "I:checking child zone signatures" 218*00b67f09SDavid van Moolenbroekret=0 219*00b67f09SDavid van Moolenbroek# check DNSKEY signatures first 220*00b67f09SDavid van Moolenbroekawk '$2 == "RRSIG" && $3 == "DNSKEY" { getline; print $3 }' $cfile.signed > dnskey.sigs 221*00b67f09SDavid van Moolenbroeksub=0 222*00b67f09SDavid van Moolenbroekgrep -w "$ckactive" dnskey.sigs > /dev/null || sub=1 223*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:missing ckactive $ckactive (dnskey)"; ret=1; fi 224*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 225*00b67f09SDavid van Moolenbroeksync 226*00b67f09SDavid van Moolenbroeksub=0 227*00b67f09SDavid van Moolenbroekgrep -w "$ckrevoked" dnskey.sigs > /dev/null || sub=1 228*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:missing ckrevoke $ckrevoke (dnskey)"; ret=1; fi 229*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 230*00b67f09SDavid van Moolenbroeksync 231*00b67f09SDavid van Moolenbroeksub=0 232*00b67f09SDavid van Moolenbroekgrep -w "$czactive" dnskey.sigs > /dev/null || sub=1 233*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:missing czactive $czactive (dnskey)"; ret=1; fi 234*00b67f09SDavid van Moolenbroek# should not be there: 235*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 236*00b67f09SDavid van Moolenbroeksync 237*00b67f09SDavid van Moolenbroeksub=0 238*00b67f09SDavid van Moolenbroekgrep -w "$ckprerevoke" dnskey.sigs > /dev/null && sub=1 239*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found ckprerevoke $ckprerevoke (dnskey)"; ret=1; fi 240*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 241*00b67f09SDavid van Moolenbroeksync 242*00b67f09SDavid van Moolenbroeksub=0 243*00b67f09SDavid van Moolenbroekgrep -w "$ckpublished" dnskey.sigs > /dev/null && sub=1 244*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found ckpublished $ckpublished (dnskey)"; ret=1; fi 245*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 246*00b67f09SDavid van Moolenbroeksync 247*00b67f09SDavid van Moolenbroeksub=0 248*00b67f09SDavid van Moolenbroekgrep -w "$czpublished" dnskey.sigs > /dev/null && sub=1 249*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found czpublished $czpublished (dnskey)"; ret=1; fi 250*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 251*00b67f09SDavid van Moolenbroeksync 252*00b67f09SDavid van Moolenbroeksub=0 253*00b67f09SDavid van Moolenbroekgrep -w "$czinactive" dnskey.sigs > /dev/null && sub=1 254*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found czinactive $czinactive (dnskey)"; ret=1; fi 255*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 256*00b67f09SDavid van Moolenbroeksync 257*00b67f09SDavid van Moolenbroeksub=0 258*00b67f09SDavid van Moolenbroekgrep -w "$czgenerated" dnskey.sigs > /dev/null && sub=1 259*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found czgenerated $czgenerated (dnskey)"; ret=1; fi 260*00b67f09SDavid van Moolenbroek# now check other signatures first 261*00b67f09SDavid van Moolenbroekawk '$2 == "RRSIG" && $3 != "DNSKEY" { getline; print $3 }' $cfile.signed | sort -un > other.sigs 262*00b67f09SDavid van Moolenbroek# should not be there: 263*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 264*00b67f09SDavid van Moolenbroeksync 265*00b67f09SDavid van Moolenbroeksub=0 266*00b67f09SDavid van Moolenbroekgrep -w "$ckactive" other.sigs > /dev/null && sub=1 267*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found ckactive $ckactive (other)"; ret=1; fi 268*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 269*00b67f09SDavid van Moolenbroeksync 270*00b67f09SDavid van Moolenbroeksub=0 271*00b67f09SDavid van Moolenbroekgrep -w "$ckpublished" other.sigs > /dev/null && sub=1 272*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found ckpublished $ckpublished (other)"; ret=1; fi 273*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 274*00b67f09SDavid van Moolenbroeksync 275*00b67f09SDavid van Moolenbroeksub=0 276*00b67f09SDavid van Moolenbroekgrep -w "$ckprerevoke" other.sigs > /dev/null && sub=1 277*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found ckprerevoke $ckprerevoke (other)"; ret=1; fi 278*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 279*00b67f09SDavid van Moolenbroeksync 280*00b67f09SDavid van Moolenbroeksub=0 281*00b67f09SDavid van Moolenbroekgrep -w "$ckrevoked" other.sigs > /dev/null && sub=1 282*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found ckrevoked $ckrevoked (other)"; ret=1; fi 283*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 284*00b67f09SDavid van Moolenbroeksync 285*00b67f09SDavid van Moolenbroeksub=0 286*00b67f09SDavid van Moolenbroekgrep -w "$czpublished" other.sigs > /dev/null && sub=1 287*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found czpublished $czpublished (other)"; ret=1; fi 288*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 289*00b67f09SDavid van Moolenbroeksync 290*00b67f09SDavid van Moolenbroeksub=0 291*00b67f09SDavid van Moolenbroekgrep -w "$czinactive" other.sigs > /dev/null && sub=1 292*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found czinactive $czinactive (other)"; ret=1; fi 293*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 294*00b67f09SDavid van Moolenbroeksync 295*00b67f09SDavid van Moolenbroeksub=0 296*00b67f09SDavid van Moolenbroekgrep -w "$czgenerated" other.sigs > /dev/null && sub=1 297*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found czgenerated $czgenerated (other)"; ret=1; fi 298*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 299*00b67f09SDavid van Moolenbroeksync 300*00b67f09SDavid van Moolenbroeksub=0 301*00b67f09SDavid van Moolenbroekgrep -w "$czpredecessor" other.sigs > /dev/null && sub=1 302*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found czpredecessor $czpredecessor (other)"; ret=1; fi 303*00b67f09SDavid van Moolenbroekecho $ret > /dev/null 304*00b67f09SDavid van Moolenbroeksync 305*00b67f09SDavid van Moolenbroeksub=0 306*00b67f09SDavid van Moolenbroekgrep -w "$czsuccessor" other.sigs > /dev/null && sub=1 307*00b67f09SDavid van Moolenbroekif [ $sub != 0 ]; then echo "I:found czsuccessor $czsuccessor (other)"; ret=1; fi 308*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then 309*00b67f09SDavid van Moolenbroek sed 's/^/I:dnskey sigs: /' < dnskey.sigs 310*00b67f09SDavid van Moolenbroek sed 's/^/I:other sigs: /' < other.sigs 311*00b67f09SDavid van Moolenbroek echo "I:failed"; 312*00b67f09SDavid van Moolenbroekfi 313*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 314*00b67f09SDavid van Moolenbroek 315*00b67f09SDavid van Moolenbroekecho "I:checking RRSIG expiry date correctness" 316*00b67f09SDavid van Moolenbroekdnskey_expiry=`$CHECKZONE -o - $czone $cfile.signed 2> /dev/null | 317*00b67f09SDavid van Moolenbroek awk '$4 == "RRSIG" && $5 == "DNSKEY" {print $9; exit}' | 318*00b67f09SDavid van Moolenbroek cut -c1-10` 319*00b67f09SDavid van Moolenbroeksoa_expiry=`$CHECKZONE -o - $czone $cfile.signed 2> /dev/null | 320*00b67f09SDavid van Moolenbroek awk '$4 == "RRSIG" && $5 == "SOA" {print $9; exit}' | 321*00b67f09SDavid van Moolenbroek cut -c1-10` 322*00b67f09SDavid van Moolenbroek[ $dnskey_expiry -gt $soa_expiry ] || ret=1 323*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 324*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 325*00b67f09SDavid van Moolenbroek 326*00b67f09SDavid van Moolenbroekecho "I:waiting 30 seconds for key activation" 327*00b67f09SDavid van Moolenbroeksleep 30 328*00b67f09SDavid van Moolenbroekecho "I:re-signing child zone" 329*00b67f09SDavid van Moolenbroekczoneout2=`$SIGNER -Sg -r $RANDFILE -o $czone -f $cfile.new $cfile.signed 2>&1` 330*00b67f09SDavid van Moolenbroekmv $cfile.new $cfile.signed 331*00b67f09SDavid van Moolenbroek 332*00b67f09SDavid van Moolenbroekecho "I:checking dnssec-signzone output matches expectations" 333*00b67f09SDavid van Moolenbroekret=0 334*00b67f09SDavid van Moolenbroekecho "$czoneout2" | grep 'KSKs: 2 active, 0 stand-by, 1 revoked' > /dev/null || ret=1 335*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 336*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 337*00b67f09SDavid van Moolenbroek 338*00b67f09SDavid van Moolenbroekecho "I:checking child zone signatures again" 339*00b67f09SDavid van Moolenbroekret=0 340*00b67f09SDavid van Moolenbroekawk '$2 == "RRSIG" && $3 == "DNSKEY" { getline; print $3 }' $cfile.signed > dnskey.sigs 341*00b67f09SDavid van Moolenbroekgrep -w "$ckpublished" dnskey.sigs > /dev/null || ret=1 342*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 343*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 344*00b67f09SDavid van Moolenbroek 345*00b67f09SDavid van Moolenbroekecho "I:exit status: $status" 346*00b67f09SDavid van Moolenbroekexit $status 347