Passing only a dns.tsig.Key to dns.message.use_tsig() didn't work, as
the placeholder tsig rrset on the message object was created with None
as its name, not the name associated with the key.
Also do a bit of refactoring to make the code more clear.
"""
if isinstance(keyring, dns.tsig.Key):
- self.keyring = keyring
+ key = keyring
+ keyname = key.name
elif callable(keyring):
- self.keyring = keyring(self, keyname)
+ key = keyring(self, keyname)
else:
if isinstance(keyname, str):
keyname = dns.name.from_text(keyname)
key = keyring[keyname]
if isinstance(key, bytes):
key = dns.tsig.Key(keyname, key, algorithm)
- self.keyring = key
+ self.keyring = key
if original_id is None:
original_id = self.id
self.tsig = self._make_tsig(keyname, self.keyring.algorithm, 0, fudge,