Skip to content

Commit

Permalink
Use base64.decodebytes() and base64.encodebytes(). [Issue #338]
Browse files Browse the repository at this point in the history
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().
  • Loading branch information
rthalley committed Jan 5, 2019
1 parent 03176de commit f93c8c6
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 3 deletions.
7 changes: 4 additions & 3 deletions dns/tsigkeyring.py
Expand Up @@ -30,7 +30,7 @@ def from_text(textring):
keyring = {}
for keytext in textring:
keyname = dns.name.from_text(keytext)
secret = base64.decodestring(textring[keytext].encode())
secret = base64.decodebytes(textring[keytext].encode())
keyring[keyname] = secret
return keyring

Expand All @@ -42,7 +42,8 @@ def to_text(keyring):

textring = {}
for keyname in keyring:
keytext = keyname.to_text().decode()
secret = base64.encodestring(keyring[keyname]).decode()
keytext = keyname.to_text()
# rstrip to get rid of the \n encoding adds
secret = base64.encodebytes(keyring[keyname]).decode().rstrip()
textring[keytext] = secret
return textring
33 changes: 33 additions & 0 deletions tests/test_tsigkeyring.py
@@ -0,0 +1,33 @@
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license

import base64
import unittest

import dns.tsigkeyring

text_keyring = {
'keyname.' : 'NjHwPsMKjdN++dOfE5iAiQ=='
}

rich_keyring = {
dns.name.from_text('keyname.') : \
base64.decodebytes('NjHwPsMKjdN++dOfE5iAiQ=='.encode())
}

class TSIGKeyRingTestCase(unittest.TestCase):

def test_from_text(self):
"""text keyring -> rich keyring"""
rkeyring = dns.tsigkeyring.from_text(text_keyring)
self.assertEqual(rkeyring, rich_keyring)

def test_to_text(self):
"""text keyring -> rich keyring -> text keyring"""
tkeyring = dns.tsigkeyring.to_text(rich_keyring)
self.assertEqual(tkeyring, text_keyring)

def test_from_and_to_text(self):
"""text keyring -> rich keyring -> text keyring"""
rkeyring = dns.tsigkeyring.from_text(text_keyring)
tkeyring = dns.tsigkeyring.to_text(rkeyring)
self.assertEqual(tkeyring, text_keyring)

0 comments on commit f93c8c6

Please sign in to comment.