def nsec_covers_name(nsec_rrset, name): """ Does NSEC RR cover the given name? """ n1 = nsec_rrset.name.canonicalize() n2 = nsec_rrset[0].next.canonicalize() if (name.fullcompare(n1)[1] > 0) and (name.fullcompare(n2)[1] < 0): return True return False
def nsec3_covers_name(nsec_rrset, name, zonename): """ Does NSEC3 RR cover the given name? """ name = name.canonicalize() n1 = nsec_rrset.name.canonicalize() n2_hash = base64.b32encode(nsec_rrset[0].next) n2_hash = n2_hash.translate(b32_to_ext_hex).decode() n2 = dns.name.Name((n2_hash, ) + zonename.labels) n2 = n2.canonicalize() if (name.fullcompare(n1)[1] > 0) and (name.fullcompare(n2)[1] < 0): return True return False
def related_to_auto_empty_zone(name): """True if specified absolute name is a sub/superdomain of an automatic empty zone. DNS domain is a subdomain of itself so this function returns True for zone apexes, too. >>> related_to_auto_empty_zone(DNSName('.')) True >>> related_to_auto_empty_zone(DNSName('in-addr.arpa.')) True >>> related_to_auto_empty_zone(DNSName('10.in-addr.arpa.')) True >>> related_to_auto_empty_zone(DNSName('1.10.in-addr.arpa.')) True >>> related_to_auto_empty_zone(DNSName('unrelated.example.')) False >>> related_to_auto_empty_zone(DNSName('1.10.in-addr.arpa')) Traceback (most recent call last): ... AssertionError: ... """ assert_absolute_dnsname(name) relations = { dns.name.NAMERELN_SUBDOMAIN, dns.name.NAMERELN_EQUAL, dns.name.NAMERELN_SUPERDOMAIN } return any(name.fullcompare(aez)[0] in relations for aez in EMPTY_ZONES)
def related_to_auto_empty_zone(name): """True if specified absolute name is a sub/superdomain of an automatic empty zone. DNS domain is a subdomain of itself so this function returns True for zone apexes, too. >>> related_to_auto_empty_zone(DNSName('.')) True >>> related_to_auto_empty_zone(DNSName('in-addr.arpa.')) True >>> related_to_auto_empty_zone(DNSName('10.in-addr.arpa.')) True >>> related_to_auto_empty_zone(DNSName('1.10.in-addr.arpa.')) True >>> related_to_auto_empty_zone(DNSName('unrelated.example.')) False >>> related_to_auto_empty_zone(DNSName('1.10.in-addr.arpa')) Traceback (most recent call last): ... AssertionError: ... """ assert_absolute_dnsname(name) relations = {dns.name.NAMERELN_SUBDOMAIN, dns.name.NAMERELN_EQUAL, dns.name.NAMERELN_SUPERDOMAIN} return any(name.fullcompare(aez)[0] in relations for aez in EMPTY_ZONES)