def simple_verify(self, chall, domain, account_public_key): """Simple verify. :param challenges.DNS01 chall: Corresponding challenge. :param unicode domain: Domain name being verified. :param JWK account_public_key: Public key for the key pair being authorized. :returns: ``True`` iff validation with the TXT records resolved from a DNS server is successful. :rtype: bool """ if not self.verify(chall, account_public_key): logger.debug("Verification of key authorization in response failed") return False validation_domain_name = chall.validation_domain_name(domain) validation = chall.validation(account_public_key) logger.debug("Verifying %s at %s...", chall.typ, validation_domain_name) try: from acme import dns_resolver except ImportError: # pragma: no cover raise errors.Error("Local validation for 'dns-01' challenges " "requires 'dnspython'") txt_records = dns_resolver.txt_records_for_name(validation_domain_name) exists = validation in txt_records if not exists: logger.debug("Key authorization from response (%r) doesn't match " "any DNS response in %r", self.key_authorization, txt_records) return exists
def simple_verify(self, chall, domain, account_public_key): """Simple verify. :param challenges.DNS01 chall: Corresponding challenge. :param unicode domain: Domain name being verified. :param JWK account_public_key: Public key for the key pair being authorized. :returns: ``True`` iff validation with the TXT records resolved from a DNS server is successful. :rtype: bool """ if not self.verify(chall, account_public_key): logger.debug( "Verification of key authorization in response failed") return False validation_domain_name = chall.validation_domain_name(domain) validation = chall.validation(account_public_key) logger.debug("Verifying %s at %s...", chall.typ, validation_domain_name) try: from acme import dns_resolver except ImportError: # pragma: no cover raise errors.DependencyError("Local validation for 'dns-01' " "challenges requires 'dnspython'") txt_records = dns_resolver.txt_records_for_name(validation_domain_name) exists = validation in txt_records if not exists: logger.debug( "Key authorization from response (%r) doesn't match " "any DNS response in %r", self.key_authorization, txt_records) return exists
def test_txt_records_for_name_domain_other_error(self, mock_dns): mock_dns.side_effect = dns.exception.DNSException self.assertEquals([], dns_resolver.txt_records_for_name('name'))
def test_txt_records_for_name_domain_not_found(self, mock_dns): mock_dns.side_effect = dns.resolver.NXDOMAIN self.assertEquals([], dns_resolver.txt_records_for_name('name'))
def test_txt_records_for_name_with_multiple_responses(self, mock_dns): mock_dns.return_value = create_txt_response('name', ['response1', 'response2']) self.assertEqual(['response1', 'response2'], dns_resolver.txt_records_for_name('name'))
def _call(cls, name): from acme import dns_resolver return dns_resolver.txt_records_for_name(name)
def test_txt_records_for_name_with_multiple_responses(self, mock_dns): mock_dns.return_value = create_txt_response( 'name', ['response1', 'response2']) self.assertEqual(['response1', 'response2'], dns_resolver.txt_records_for_name('name'))
def _call(cls, *args, **kwargs): from acme.dns_resolver import txt_records_for_name return txt_records_for_name(*args, **kwargs)