]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Encode and decode TSIG keyrings as needed on Python 3.
authorBob Halley <halley@dnspython.org>
Tue, 31 May 2016 23:28:53 +0000 (16:28 -0700)
committerBob Halley <halley@dnspython.org>
Tue, 31 May 2016 23:28:53 +0000 (16:28 -0700)
[issue #171]

dns/_compat.py
dns/tsigkeyring.py

index 60a00836bdc7fec79bab70f039f42a029021d9d8..dcf97428a6145f94003893fedb620b0b42e282dc 100644 (file)
@@ -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
index 295bac141f2a6b021c40c9bc2c6b3bcd363ec999..01f87027c71472f5958f4681198eb7f0aa6e25ee 100644 (file)
@@ -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