Skip to content

Commit 3c0483b

Browse files
committed
unsign_zone routine fixed
1 parent db5a62e commit 3c0483b

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

dnssec.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -792,14 +792,18 @@ def unsign_zone(zone):
792792
"""
793793
Remove all DNSSEC records from the given zone
794794
"""
795+
rdatasets = []
796+
for item in zone.iterate_rdatasets():
797+
rdatasets.append(item)
798+
795799
# Remove signatures
796-
for rrname, rdataset in zone.iterate_rdatasets():
800+
for rrname, rdataset in rdatasets:
797801
if rdataset.rdtype != dns.rdatatype.RRSIG:
798802
zone.delete_rdataset(rrname, rdtype=dns.rdatatype.RRSIG,
799803
covers=rdataset.rdtype)
800804

801805
# Remove NSEC/NSEC3
802-
for rrname, rdataset in zone.iterate_rdatasets():
806+
for rrname, rdataset in rdatasets:
803807
if rdataset.rdtype in (dns.rdatatype.NSEC, dns.rdatatype.NSEC3):
804808
zone.delete_rdataset(rrname, rdtype=rdataset.rdtype)
805809

tests.py

+8
Original file line numberDiff line numberDiff line change
@@ -673,5 +673,13 @@ def testRSASHA512(self):
673673
self._diff(zone, signedzone)
674674
self.assertEqual(zone, signedzone)
675675

676+
def test_unsign_zone(self):
677+
zone = dns.zone.from_text(zone_orig_txt, relativize=False)
678+
signedzone = dns.zone.from_text(zone_rsasha512_txt,
679+
relativize=False)
680+
unsignedzone = dnssec.unsign_zone(signedzone)
681+
self.assertEqual(zone, unsignedzone)
682+
683+
676684
if __name__ == '__main__':
677685
unittest.main()

0 commit comments

Comments
 (0)