summaryrefslogtreecommitdiffstats
path: root/bin/tests/system/checkdstool
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 07:24:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 07:24:22 +0000
commit45d6379135504814ab723b57f0eb8be23393a51d (patch)
treed4f2ec4acca824a8446387a758b0ce4238a4dffa /bin/tests/system/checkdstool
parentInitial commit. (diff)
downloadbind9-45d6379135504814ab723b57f0eb8be23393a51d.tar.xz
bind9-45d6379135504814ab723b57f0eb8be23393a51d.zip
Adding upstream version 1:9.16.44.upstream/1%9.16.44
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'bin/tests/system/checkdstool')
-rw-r--r--bin/tests/system/checkdstool/clean.sh15
-rwxr-xr-xbin/tests/system/checkdstool/dig.bat32
-rw-r--r--bin/tests/system/checkdstool/dig.pl41
-rwxr-xr-xbin/tests/system/checkdstool/dig.sh24
-rw-r--r--bin/tests/system/checkdstool/missing.example.dnskey.db3
-rw-r--r--bin/tests/system/checkdstool/missing.example.ds.db2
-rw-r--r--bin/tests/system/checkdstool/none.example.dnskey.db3
-rw-r--r--bin/tests/system/checkdstool/none.example.ds.db0
-rw-r--r--bin/tests/system/checkdstool/ok.example.dnskey.db2
-rw-r--r--bin/tests/system/checkdstool/ok.example.ds.db2
-rw-r--r--bin/tests/system/checkdstool/prep.example.db121
-rw-r--r--bin/tests/system/checkdstool/prep.example.ds.db2
-rw-r--r--bin/tests/system/checkdstool/tests.sh117
-rw-r--r--bin/tests/system/checkdstool/wrong.example.dnskey.db2
-rw-r--r--bin/tests/system/checkdstool/wrong.example.ds.db2
15 files changed, 368 insertions, 0 deletions
diff --git a/bin/tests/system/checkdstool/clean.sh b/bin/tests/system/checkdstool/clean.sh
new file mode 100644
index 0000000..fb853c5
--- /dev/null
+++ b/bin/tests/system/checkdstool/clean.sh
@@ -0,0 +1,15 @@
+#!/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.
+
+rm -f checkds.*
+rm -f ns*/named.lock
diff --git a/bin/tests/system/checkdstool/dig.bat b/bin/tests/system/checkdstool/dig.bat
new file mode 100755
index 0000000..9465a46
--- /dev/null
+++ b/bin/tests/system/checkdstool/dig.bat
@@ -0,0 +1,32 @@
+@echo off
+set ext=
+set file=
+
+:loop
+@set arg=%1
+if "%arg%" == "" goto end
+if "%arg:~0,1%" == "+" goto next
+if "%arg%" == "-t" goto next
+if "%arg%" == "ds" goto ds
+if "%arg%" == "DS" goto ds
+if "%arg%" == "dnskey" goto dnskey
+if "%arg%" == "DNSKEY" goto dnskey
+set file=%arg%
+goto next
+
+:ds
+set ext=ds
+goto next
+
+:dnskey
+set ext=dnskey
+goto next
+
+:next
+shift
+goto loop
+
+:end
+
+set name=%file%.%ext%.db
+type %name%
diff --git a/bin/tests/system/checkdstool/dig.pl b/bin/tests/system/checkdstool/dig.pl
new file mode 100644
index 0000000..3713b2c
--- /dev/null
+++ b/bin/tests/system/checkdstool/dig.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+
+# 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.
+
+my $arg;
+my $ext;
+my $file;
+
+foreach $arg (@ARGV) {
+ if ($arg =~ /^\+/) {
+ next;
+ }
+ if ($arg =~ /^-t/) {
+ next;
+ }
+ if ($arg =~ /^ds$/i) {
+ $ext = "ds";
+ next;
+ }
+ if ($arg =~ /^dnskey$/i) {
+ $ext = "dnskey";
+ next;
+ }
+ $file = $arg;
+ next;
+}
+
+open F, $file . "." . $ext . ".db" || die $!;
+while (<F>) {
+ print;
+}
+close F;
diff --git a/bin/tests/system/checkdstool/dig.sh b/bin/tests/system/checkdstool/dig.sh
new file mode 100755
index 0000000..7b3a1b2
--- /dev/null
+++ b/bin/tests/system/checkdstool/dig.sh
@@ -0,0 +1,24 @@
+#!/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.
+
+while [ "$#" != 0 ]; do
+ case $1 in
+ +*) shift ;;
+ -t) shift ;;
+ DS|ds) ext=ds ; shift ;;
+ DNSKEY|dnskey) ext=dnskey ; shift ;;
+ *) file=$1 ; shift ;;
+ esac
+done
+
+cat ${file}.${ext}.db
diff --git a/bin/tests/system/checkdstool/missing.example.dnskey.db b/bin/tests/system/checkdstool/missing.example.dnskey.db
new file mode 100644
index 0000000..e372130
--- /dev/null
+++ b/bin/tests/system/checkdstool/missing.example.dnskey.db
@@ -0,0 +1,3 @@
+missing.example. 3600 IN DNSKEY 257 3 5 AwEAAc6Cz10GXEh5lxA9ujTY/QarTajcUOBwwBYIeldjRsgoouK/UioY FYgxEFL0O5JK6YCRUoGzl3EgLr5GvNyhIp1PZpOpHf7o/4MVOZTGJzm/ sHWP5B+KcYjQOxJiDb433iCmRM4DpHPUUoxw0QbZglzAzl5MfKBoyZud lH59DdT/50bkBg8iVu35EzuW0SYt31k70hxHBSb2wAGWeqxEPKJ1nQiI UcrWNDeem7byrqjPN9wyZhq0XkQ9qbcYxAkRNd8Y7P0FyR1YKJMc6SWZ Ru7muvxqTHgCtJVgxVz4qndCFKdYidiDeKe2/X/z5gf7pyYl3549O8JR tWdNKqutppk=
+missing.example. 3600 IN DNSKEY 257 3 5 BEAAAAOhHQDBrhQbtphgq2wQUpEQ5t4DtUHxoMVFu2hWLDMvoOMRXjG rhhCeFvAZih7yJHf8ZGfW6hd38hXG/xylYCO6Krpbdojwx8YMXLA5/kA +u50WIL8ZR1R6KTbsYVMf/Qx5RiNbPClw+vT+U8eXEJmO20jIS1ULgqy 347cBB1zMnnz/4LJpA0da9CbKj3A254T515sNIMcwsB8/2+2E63/zZrQ zBkj0BrN/9Bexjpiks3jRhZatEsXn3dTy47R09Uix5WcJt+xzqZ7+ysy LKOOedS39Z7SDmsn2eA0FKtQpwA6LXeG2w+jxmw3oA8lVUgEf/rzeC/b ByBNsO70aEFTd
+missing.example. 3600 IN DNSKEY 256 3 5 BQEAAAAB2F1v2HWzCCE9vNsKfk0K8vd4EBwizNT9KO6WYXj0oxEL4eOJ aXbax/BzPFx+3qO8B8pu8E/JjkWH0oaYz4guUyTVmT5Eelg44Vb1kssy q8W27oQ+9qNiP8Jv6zdOj0uCB/N0fxfVL3371xbednFqoECfSFDZa6Hw jU1qzveSsW0=
diff --git a/bin/tests/system/checkdstool/missing.example.ds.db b/bin/tests/system/checkdstool/missing.example.ds.db
new file mode 100644
index 0000000..540ec0b
--- /dev/null
+++ b/bin/tests/system/checkdstool/missing.example.ds.db
@@ -0,0 +1,2 @@
+missing.example. 3600 IN DS 12892 5 2 EF59E5C70BC4153B7DB4C11F9C36B729577DA71474E0A5C9B8875173 6E583200
+missing.example. 3600 IN DS 12892 5 1 9D4CD60491D372207FA584D2EE460CC51D7FF8A7
diff --git a/bin/tests/system/checkdstool/none.example.dnskey.db b/bin/tests/system/checkdstool/none.example.dnskey.db
new file mode 100644
index 0000000..76ae905
--- /dev/null
+++ b/bin/tests/system/checkdstool/none.example.dnskey.db
@@ -0,0 +1,3 @@
+none.example. 3600 IN DNSKEY 257 3 5 AwEAAc6Cz10GXEh5lxA9ujTY/QarTajcUOBwwBYIeldjRsgoouK/UioY FYgxEFL0O5JK6YCRUoGzl3EgLr5GvNyhIp1PZpOpHf7o/4MVOZTGJzm/ sHWP5B+KcYjQOxJiDb433iCmRM4DpHPUUoxw0QbZglzAzl5MfKBoyZud lH59DdT/50bkBg8iVu35EzuW0SYt31k70hxHBSb2wAGWeqxEPKJ1nQiI UcrWNDeem7byrqjPN9wyZhq0XkQ9qbcYxAkRNd8Y7P0FyR1YKJMc6SWZ Ru7muvxqTHgCtJVgxVz4qndCFKdYidiDeKe2/X/z5gf7pyYl3549O8JR tWdNKqutppk=
+none.example. 3600 IN DNSKEY 257 3 5 BEAAAAOhHQDBrhQbtphgq2wQUpEQ5t4DtUHxoMVFu2hWLDMvoOMRXjG rhhCeFvAZih7yJHf8ZGfW6hd38hXG/xylYCO6Krpbdojwx8YMXLA5/kA +u50WIL8ZR1R6KTbsYVMf/Qx5RiNbPClw+vT+U8eXEJmO20jIS1ULgqy 347cBB1zMnnz/4LJpA0da9CbKj3A254T515sNIMcwsB8/2+2E63/zZrQ zBkj0BrN/9Bexjpiks3jRhZatEsXn3dTy47R09Uix5WcJt+xzqZ7+ysy LKOOedS39Z7SDmsn2eA0FKtQpwA6LXeG2w+jxmw3oA8lVUgEf/rzeC/b ByBNsO70aEFTd
+none.example. 3600 IN DNSKEY 256 3 5 BQEAAAAB2F1v2HWzCCE9vNsKfk0K8vd4EBwizNT9KO6WYXj0oxEL4eOJ aXbax/BzPFx+3qO8B8pu8E/JjkWH0oaYz4guUyTVmT5Eelg44Vb1kssy q8W27oQ+9qNiP8Jv6zdOj0uCB/N0fxfVL3371xbednFqoECfSFDZa6Hw jU1qzveSsW0=
diff --git a/bin/tests/system/checkdstool/none.example.ds.db b/bin/tests/system/checkdstool/none.example.ds.db
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/bin/tests/system/checkdstool/none.example.ds.db
diff --git a/bin/tests/system/checkdstool/ok.example.dnskey.db b/bin/tests/system/checkdstool/ok.example.dnskey.db
new file mode 100644
index 0000000..c767c8f
--- /dev/null
+++ b/bin/tests/system/checkdstool/ok.example.dnskey.db
@@ -0,0 +1,2 @@
+ok.example. 625 IN DNSKEY 257 3 5 BEAAAAOhHQDBrhQbtphgq2wQUpEQ5t4DtUHxoMVFu2hWLDMvoOMRXjGr hhCeFvAZih7yJHf8ZGfW6hd38hXG/xylYCO6Krpbdojwx8YMXLA5/kA+ u50WIL8ZR1R6KTbsYVMf/Qx5RiNbPClw+vT+U8eXEJmO20jIS1ULgqy3 47cBB1zMnnz/4LJpA0da9CbKj3A254T515sNIMcwsB8/2+2E63/zZrQz Bkj0BrN/9Bexjpiks3jRhZatEsXn3dTy47R09Uix5WcJt+xzqZ7+ysyL KOOedS39Z7SDmsn2eA0FKtQpwA6LXeG2w+jxmw3oA8lVUgEf/rzeC/bB yBNsO70aEFTd
+ok.example. 625 IN DNSKEY 256 3 5 BQEAAAAB2F1v2HWzCCE9vNsKfk0K8vd4EBwizNT9KO6WYXj0oxEL4eOJ aXbax/BzPFx+3qO8B8pu8E/JjkWH0oaYz4guUyTVmT5Eelg44Vb1kssy q8W27oQ+9qNiP8Jv6zdOj0uCB/N0fxfVL3371xbednFqoECfSFDZa6Hw jU1qzveSsW0=
diff --git a/bin/tests/system/checkdstool/ok.example.ds.db b/bin/tests/system/checkdstool/ok.example.ds.db
new file mode 100644
index 0000000..96b159b
--- /dev/null
+++ b/bin/tests/system/checkdstool/ok.example.ds.db
@@ -0,0 +1,2 @@
+ok.example. 3600 IN DS 12892 5 2 26584835CA80C81C91999F31CFAF2A0E89D4FF1C8FAFD0DDB31A85C7 19277C13
+ok.example. 3600 IN DS 12892 5 1 7AA4A3F416C2F2391FB7AB0D434F762CD62D1390
diff --git a/bin/tests/system/checkdstool/prep.example.db b/bin/tests/system/checkdstool/prep.example.db
new file mode 100644
index 0000000..5ba5987
--- /dev/null
+++ b/bin/tests/system/checkdstool/prep.example.db
@@ -0,0 +1,121 @@
+; File written on Thu Oct 5 23:44:34 2017
+; dnssec_signzone version 9.12.0a1
+prep.example. 300 IN SOA ns1.prep.example. hostmaster.prep.example. (
+ 1 ; serial
+ 2000 ; refresh (33 minutes 20 seconds)
+ 2000 ; retry (33 minutes 20 seconds)
+ 1814400 ; expire (3 weeks)
+ 3600 ; minimum (1 hour)
+ )
+ 300 RRSIG SOA 8 2 300 (
+ 20171105054434 20171006054434 19260 prep.example.
+ 1fX0z7Swu4gMPews/ZE8bzNg+JXNedFBDGIH
+ PTSfVQtVLIvRWpME+PylX7MdVMZE/PST+x4/
+ mWyveyjetEOo7/7aQL236FfI0y6TxQFy7HwC
+ FMieqoQCUluuKOvToxg4vUp4GOdlUGbqC63h
+ DbX5Z37VptJXLkt4niF4Kl2iD+U9/bk7HAEU
+ 4zDiKroYnusGKfVB9xAWddzoHdLxhVuPi7ut
+ 328suPdgX0bfs7uB+y4cikhGzAmPpNMlGHju
+ qYG74NcFGQNutLB7ayx/m87t7mTty7jbNKm3
+ QWJSPf5IR8/kmzAi8HMnapY5vUmm+hX8JOfU
+ UtH7i0iEsUqRbEwu5A== )
+ 300 NS ns1.prep.example.
+ 300 RRSIG NS 8 2 300 (
+ 20171105054434 20171006054434 19260 prep.example.
+ u5sU2cfqNqIyCLw18ZNnFw28/GyRt0EOiPYS
+ dygmpfMDrvDaxjiiai8zWYjnl/E3qzVH9Zku
+ 07lEDORZdVb0uCDe1NynjAyw4AHps85cAwVc
+ 8HTSbzdVZsQTELpunYFJffh24PDr9unw7KOY
+ jzTP6qNedJ1uM54TOr177zfmBh7N2fkAoGyV
+ NjvTKrlgDYGNIn8/YMgHb4sNgyfe54MYY00f
+ kehVxfKnRCgDsbJ0Pk6jhBMCQWvOh8jG8WyV
+ ElAa/eMqlxUC1idF8ydWefjsI/7lPcjSalw9
+ qZw4CDCLHHZy0TOSmCYRRZuIeVXzBfDPJyi4
+ 2A3iLntKFJ4AOLFMJg== )
+ 3600 NSEC ns1.prep.example. NS SOA RRSIG NSEC DNSKEY
+ 3600 RRSIG NSEC 8 2 3600 (
+ 20171105054434 20171006054434 19260 prep.example.
+ Aed99/jdG82YAkKVWjoKOsAGtB3JnyKkCaAq
+ zgMrYkXU41y3KDCAmGzooGPQY7NN+WxX7FJ2
+ 1nXkgljma/azgpsbi9ssneFtv7PPFClVmN+u
+ j+mM4MK/ZR7eJOsMqETg4PAO5VAh6c/GVmyA
+ RD/m6EhJVZEjPfLWbDoC4hVAgem7DP/NMjyI
+ GfztpDjMmyLQyv6tL+UEXSJHGp3ZEa5Z5i7X
+ Nl/bRTUlZs7L4rTgoqHv6LEmsXKAf9rZYq4b
+ eP6GF9I1Ry41MfHLc7lPUmtR38ErEsM5uGzw
+ trCQYEFhuRWUBxZ8OSL2EZK9rUBXZX+cwK/8
+ ZP7mIfDfljkXPQcmow== )
+ 3600 DNSKEY 256 3 8 (
+ AwEAAfMzj6aZIgZDVcpH1pKOtq998E85+nEY
+ YJa0lLS8+QTCC1Efke8GLwsXT0IPTuwnOuXM
+ RjySirab0NuEr69T8KP/43YxcRdmCg89mjjN
+ szoVPPstC9xBKVOc0pRMDF7sfsTrSye3RY7+
+ Z6uZEH5FOAkz2hNbJJHOn4HpNUhLPJGRauhf
+ 0evamwUmQ/mlhkVW5q4WmqPCDMNY3K6XtkEm
+ cvm8n9ZCXC9Z5AX6KpynujzLdKyxpdGqUk6r
+ lavp9ILPpRKoTZDX+2q1pDgP5cDndwtgNSvU
+ DBQZoD0psS2cyB3PHo+dPwwpEyM//ZSKsH9m
+ e85Ti0413TOWFyFd/jUOUA8=
+ ) ; ZSK; alg = RSASHA256 ; key id = 19260
+ 3600 DNSKEY 257 3 8 (
+ AwEAAbV8X06Qvk350aZ6eZ1d7WbT1H/Y0Sv7
+ qAdbk5fbYIKpMvZ8D9xqoTHgD0z0uCgWWIcm
+ /xyKBfmax76oLwMBpR/kdtuJz0irgFITnJCH
+ pEfR9AJ/Mfm7NyMglq+/39I03E1/LXvpXQLG
+ tg+Mo/2CUE5sbG31jmPNK/2J8RMESkIi87fW
+ azZU/oyUEtECE5PGbdyw+4PacAsXNjnwl30T
+ aatL277wX4pt+IUPdE6EIph3t+dxXJ7OpHgW
+ 8g+YSHLlCImLVapdg3oD/cs6ncaBq9z7la5Y
+ dHNw2QAIAvQ11EsonrkonPqO6zNVZAVdT2VB
+ X5YzGAoCFUvbCvlnl2a7SxM=
+ ) ; KSK; alg = RSASHA256 ; key id = 65482
+ 3600 RRSIG DNSKEY 8 2 3600 (
+ 20171105054434 20171006054434 19260 prep.example.
+ pPw81pJ3PeF+tqEswTul9N8Qsl9JKgK4v8SV
+ lPfP0pnlMBMbtMFFkx5ZmhQg3Z3U8SdE64Bt
+ C5St3qItyyKdTQ0Rbm9mfV6twxDB8lVry8F7
+ Pv7gJmmcWzBcbLGcrXIrVNSZhigkemQXTElj
+ P8y1j7kaNFWBWbDMn7KesiZ9BiC6sqvuKa3R
+ wSofjwXTESspWZP0NtXr5ymaBIMR9UtNj5Wh
+ jm1+tg6BxNBKxhCHlSC0ltPS/qq9J1ZUmtJz
+ sj/EAFfPVJVuEveebMvi1oDWPTgajO9+EHl4
+ ELrgnQHCgaybMzbpd/A5+Tr1hQkv48I8Mb0/
+ 8LJ2/6xrvJm64yRteg== )
+ 3600 RRSIG DNSKEY 8 2 3600 (
+ 20171105054434 20171006054434 65482 prep.example.
+ WeIWiC9SnBe2+UocVjpap62O8Rz+iljwJiu9
+ VlGUwct3Vydq4/4FVAKdPklXV5cYbBLhO2MB
+ 3R4toX8RNU/0Ny8DnugQzLKvVfg0xoyU/UAJ
+ k4aWa/vPivSLGouLQPiNp71bdXN4LB/2xmzu
+ cPYXzS9ePpwCOp/9JLoNjBSMQkfjfWAcaNtj
+ 1DKDmHHL1sPMizninxSJLQOAKb+JwUAjAkOM
+ O1JqwkB12/IZuzxN5hly+uNsbFFxPzQkcnJ4
+ 5bhzxuh5D/JRXW0nF5aO4aR+9X+lSUpDJQZ1
+ 5fOt1cybZCn/ag68RA92zrnisdbrggJGS003
+ wn/VKbLVfFj3eQrfNA== )
+ns1.prep.example. 300 IN A 1.1.1.1
+ 300 RRSIG A 8 3 300 (
+ 20171105054434 20171006054434 19260 prep.example.
+ QUyDyJVk3JGEq+VTZtY3firzsRqOA0LUm3Tf
+ /fnemQBeOlMda2ErA7DqYVriIGfM8jph416E
+ YX8SKAZXGEAlsEbC9cWBVyc5TYH6tZ43sV51
+ 55kGTiUY92NnrH10Q+m2SLAEEaKCA/cgBwOR
+ tN2Wb1meHgiLbGYN2LbANfDQzoEk4AYAgT6r
+ wDKVVg/V9Ed7JnCnBQc9MN9+LQ3h4NBGUiEY
+ mr7HX2w+yzqcGFNLI1aFPe2IwFt120QPLyyl
+ cZgc6FUBX4YCnWoCb0aFyyOT76AQkKF5YBRn
+ gAv6S8q1pZ/0B5w4gjaLEGlts3LG0bxZ1GJd
+ gCQMEhgYgyXUchTtZA== )
+ 3600 NSEC prep.example. A RRSIG NSEC
+ 3600 RRSIG NSEC 8 3 3600 (
+ 20171105054434 20171006054434 19260 prep.example.
+ rDWN40u1a3DSzWOrS+4YR2XOxaem0BAQ/glN
+ QkXNDew1WsZo3fe0IHIhDKlJ/5MJAfAHq8Xs
+ A5UGUw2efoNAN/0LuWsI/9IPm4dwQOXiTCly
+ uxugXf5islPYyvn1Z14ay/7/2P3W6HZknXzo
+ lZFpwqfFZQCxz7c/1aH+2ntAMeqx8LHuewSr
+ Rz/sLsSiCcZQ6NMWnZdoC5SGy4CTcIIPPS8z
+ 9dQ6QYTC5iq4MKRfyJUyvODyU9be4e6jbo5b
+ mjRcov4ttbImhD5jrLAZIfjO6DSazGNVFf/x
+ 6rjxjrc8SISPkt2xYwcOlYch9OZuoH86wcZu
+ 3Don6yAnLDYDrZylAA== )
diff --git a/bin/tests/system/checkdstool/prep.example.ds.db b/bin/tests/system/checkdstool/prep.example.ds.db
new file mode 100644
index 0000000..dddcad6
--- /dev/null
+++ b/bin/tests/system/checkdstool/prep.example.ds.db
@@ -0,0 +1,2 @@
+prep.example. IN DS 65482 8 1 F3673708FBADDEC3EB55933E2E393ACE85EAC2BB
+prep.example. IN DS 65482 8 2 51A7C97AAC42803DA515D1CAFEE28031A5018F6345F12F4B6C1B6D20 02B59820
diff --git a/bin/tests/system/checkdstool/tests.sh b/bin/tests/system/checkdstool/tests.sh
new file mode 100644
index 0000000..4248b11
--- /dev/null
+++ b/bin/tests/system/checkdstool/tests.sh
@@ -0,0 +1,117 @@
+#!/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.
+
+SYSTEMTESTTOP=..
+. $SYSTEMTESTTOP/conf.sh
+
+if [ "$CYGWIN" ]; then
+ DIG=".\dig.bat"
+ WINDSFROMKEY=`cygpath -w $DSFROMKEY`
+ CHECKDS="$CHECKDS -a sha1 -a sha256 -d $DIG -D $WINDSFROMKEY"
+else
+ DIG="./dig.sh"
+ CHECKDS="$CHECKDS -a sha1 -a sha256 -d $DIG -D $DSFROMKEY"
+fi
+chmod +x $DIG
+
+status=0
+n=1
+
+echo_i "checking for correct DS, looking up key via 'dig' ($n)"
+ret=0
+$CHECKDS ok.example > checkds.out.$n 2>&1 || ret=1
+grep 'SHA-1' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-256' checkds.out.$n > /dev/null 2>&1 || ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
+echo_i "checking for correct DS, obtaining key from file ($n)"
+ret=0
+$CHECKDS -f ok.example.dnskey.db ok.example > checkds.out.$n 2>&1 || ret=1
+grep 'SHA-1' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-256' checkds.out.$n > /dev/null 2>&1 || ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
+echo_i "checking for incorrect DS, looking up key via 'dig' ($n)"
+ret=0
+$CHECKDS wrong.example > checkds.out.$n 2>&1 || ret=1
+grep 'SHA-1' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-256' checkds.out.$n > /dev/null 2>&1 || ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
+echo_i "checking for incorrect DS, obtaining key from file ($n)"
+ret=0
+$CHECKDS -f wrong.example.dnskey.db wrong.example > checkds.out.$n 2>&1 || ret=1
+grep 'SHA-1' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-256' checkds.out.$n > /dev/null 2>&1 || ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
+echo_i "checking for partially missing DS, looking up key via 'dig' ($n)"
+ret=0
+$CHECKDS missing.example > checkds.out.$n 2>&1 && ret=1
+grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-1.*missing' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-256.*missing' checkds.out.$n > /dev/null 2>&1 || ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
+echo_i "checking for partially missing DS, obtaining key from file ($n)"
+ret=0
+$CHECKDS -f missing.example.dnskey.db missing.example > checkds.out.$n 2>&1 && ret=1
+grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-1.*missing' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-256.*missing' checkds.out.$n > /dev/null 2>&1 || ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
+echo_i "checking for entirely missing DS, looking up key via 'dig' ($n)"
+ret=0
+$CHECKDS none.example > checkds.out.$n 2>&1 && ret=1
+grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 && ret=1
+grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 && ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
+echo_i "checking for entirely missing DS, obtaining key from file ($n)"
+ret=0
+$CHECKDS -f none.example.dnskey.db none.example > checkds.out.$n 2>&1 && ret=1
+grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 && ret=1
+grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 && ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
+echo_i "checking with prepared dsset file ($n)"
+ret=0
+$CHECKDS -f prep.example.db -s prep.example.ds.db prep.example > checkds.out.$n 2>&1 || ret=1
+grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
+grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
+n=`expr $n + 1`
+if [ $ret != 0 ]; then echo_i "failed"; fi
+status=`expr $status + $ret`
+
+if [ $status = 0 ]; then $SHELL clean.sh; fi
+echo_i "exit status: $status"
+[ $status -eq 0 ] || exit 1
diff --git a/bin/tests/system/checkdstool/wrong.example.dnskey.db b/bin/tests/system/checkdstool/wrong.example.dnskey.db
new file mode 100644
index 0000000..cc5bfd6
--- /dev/null
+++ b/bin/tests/system/checkdstool/wrong.example.dnskey.db
@@ -0,0 +1,2 @@
+wrong.example. 3600 IN DNSKEY 257 3 5 AwEAAc6Cz10GXEh5lxA9ujTY/QarTajcUOBwwBYIeldjRsgoouK/UioY FYgxEFL0O5JK6YCRUoGzl3EgLr5GvNyhIp1PZpOpHf7o/4MVOZTGJzm/ sHWP5B+KcYjQOxJiDb433iCmRM4DpHPUUoxw0QbZglzAzl5MfKBoyZud lH59DdT/50bkBg8iVu35EzuW0SYt31k70hxHBSb2wAGWeqxEPKJ1nQiI UcrWNDeem7byrqjPN9wyZhq0XkQ9qbcYxAkRNd8Y7P0FyR1YKJMc6SWZ Ru7muvxqTHgCtJVgxVz4qndCFKdYidiDeKe2/X/z5gf7pyYl3549O8JR tWdNKqutppk=
+wrong.example. 3600 IN DNSKEY 256 3 5 BQEAAAAB2F1v2HWzCCE9vNsKfk0K8vd4EBwizNT9KO6WYXj0oxEL4eOJ aXbax/BzPFx+3qO8B8pu8E/JjkWH0oaYz4guUyTVmT5Eelg44Vb1kssy q8W27oQ+9qNiP8Jv6zdOj0uCB/N0fxfVL3371xbednFqoECfSFDZa6Hw jU1qzveSsW0=
diff --git a/bin/tests/system/checkdstool/wrong.example.ds.db b/bin/tests/system/checkdstool/wrong.example.ds.db
new file mode 100644
index 0000000..d7df610
--- /dev/null
+++ b/bin/tests/system/checkdstool/wrong.example.ds.db
@@ -0,0 +1,2 @@
+wrong.example. 3600 IN DS 1192 5 1 684BB5119673C9272A0A7582AF8576561B5D80EC
+wrong.example. 3600 IN DS 1192 5 2 14E4A873360E512CD2E8C2C331C4472F5EDAB0736669901F4D42E976 3D7B1F5C