summaryrefslogtreecommitdiff
path: root/tests/test_tsigkeyring.py
Commit message (Collapse)AuthorAgeFilesLines
* Better deal with backwards compatibility.Brian Wellington2020-07-011-10/+16
| | | | | | | | If dns.tsigkeyring.from_text() creates dns.tsig.Key objects with the default algorithm, that causes problems for code that specifies a different algorithm. There's no good way to handle this, so change dns.tsigkeyring.from_text() to not create dns.tsig.Key objects unless it knows the algorithm.
* Add dns.tsig.Key class.Brian Wellington2020-07-011-3/+28
| | | | | | | | | | | | | | | | | | | | This creates a new class to represent a TSIG key, containing name, secret, and algorithm. The keyring format is changed to be {name : key}, and the methods in dns.tsigkeyring are updated to deal with old and new formats. The Message class is updated to use dns.tsig.Key, although (to avoid breaking existing code), it stores them in the keyring field. Message.use_tsig() can accept either explicit keys, or keyrings; it will extract and/or create a key. dns.message.from_wire() can accept either a key or a keyring in the keyring parameter. If passed a key, it will now raise if the TSIG record in the message was signed with a different key. If passed a keyring containing keys (as opposed to bare secrets), it will check that the TSIG record's algorithm matches that of the key.
* Use base64.decodebytes() and base64.encodebytes(). [Issue #338]Bob Halley2019-01-051-0/+33
This commit also adds test coverage for tsigkeyring, and fixes to_text() on python 3, which had never worked properly due to an extra .decode().