From: Bob Halley Date: Tue, 31 May 2016 23:28:53 +0000 (-0700) Subject: Encode and decode TSIG keyrings as needed on Python 3. X-Git-Tag: v1.15.0~48 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9782771adff96257c0ab4f4ee17321283d997598;p=thirdparty%2Fdnspython.git Encode and decode TSIG keyrings as needed on Python 3. [issue #171] --- diff --git a/dns/_compat.py b/dns/_compat.py index 60a00836..dcf97428 100644 --- a/dns/_compat.py +++ b/dns/_compat.py @@ -16,6 +16,8 @@ if sys.version_info > (3,): unichr = chr def maybe_decode(x): return x.decode() + def maybe_encode(x): + return x.encode() else: text_type = unicode binary_type = str @@ -23,3 +25,5 @@ else: unichr = unichr def maybe_decode(x): return x + def maybe_encode(x): + return x diff --git a/dns/tsigkeyring.py b/dns/tsigkeyring.py index 295bac14..01f87027 100644 --- a/dns/tsigkeyring.py +++ b/dns/tsigkeyring.py @@ -15,6 +15,8 @@ """A place to store TSIG keys.""" +from dns._compat import maybe_decode, maybe_encode + import base64 import dns.name @@ -28,7 +30,7 @@ def from_text(textring): keyring = {} for keytext in textring: keyname = dns.name.from_text(keytext) - secret = base64.decodestring(textring[keytext]) + secret = base64.decodestring(maybe_encode(textring[keytext])) keyring[keyname] = secret return keyring @@ -40,7 +42,7 @@ def to_text(keyring): textring = {} for keyname in keyring: - keytext = keyname.to_text() - secret = base64.encodestring(keyring[keyname]) + keytext = maybe_decode(keyname.to_text()) + secret = maybe_decode(base64.encodestring(keyring[keyname])) textring[keytext] = secret return textring