]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Match algorithms when checking signatures
authorMatthijs Mekking <matthijs@isc.org>
Thu, 31 Oct 2024 10:25:23 +0000 (11:25 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Fri, 1 Nov 2024 13:14:07 +0000 (14:14 +0100)
In the ksr system test, the test_ksr_twotone case may fail if there
are two keys with the same keytag (but different algorithms), because
one key is expected to be signing and the other is not.

Switch to regular expression matching and include the algorithm in the
search string.

bin/tests/system/isctest/kasp.py

index 223dc33be16bc1de02ece2a8a8dd3adffbaf4194..7dd2c1d50201a1d71b95cd0b74ee52fb4771e514 100644 (file)
@@ -345,37 +345,41 @@ def _check_signatures(signatures, covers, fqdn, keys):
         active = now >= activate
         retired = inactive is not None and inactive <= now
         signing = active and not retired
+        alg = key.get_metadata("Algorithm")
+        rtype = dns.rdatatype.to_text(covers)
+
+        expect = rf"IN RRSIG {rtype} {alg} (\d) (\d+) (\d+) (\d+) {key.tag} {fqdn}"
 
         if not signing:
             for rrsig in signatures:
-                assert f" {key.tag} {fqdn}" not in rrsig
+                assert re.search(expect, rrsig) is None
             continue
 
         if zrrsig and key.is_zsk():
             has_rrsig = False
             for rrsig in signatures:
-                if f" {key.tag} {fqdn}" in rrsig:
+                if re.search(expect, rrsig) is not None:
                     has_rrsig = True
                     break
-            assert has_rrsig
+            assert has_rrsig, f"Expected signature but not found: {expect}"
             numsigs += 1
 
         if zrrsig and not key.is_zsk():
             for rrsig in signatures:
-                assert f" {key.tag} {fqdn}" not in rrsig
+                assert re.search(expect, rrsig) is None
 
         if krrsig and key.is_ksk():
             has_rrsig = False
             for rrsig in signatures:
-                if f" {key.tag} {fqdn}" in rrsig:
+                if re.search(expect, rrsig) is not None:
                     has_rrsig = True
                     break
-            assert has_rrsig
+            assert has_rrsig, f"Expected signature but not found: {expect}"
             numsigs += 1
 
         if krrsig and not key.is_ksk():
             for rrsig in signatures:
-                assert f" {key.tag} {fqdn}" not in rrsig
+                assert re.search(expect, rrsig) is None
 
     return numsigs