Fix two python3 compatibility problems:

We need to explicitly encode the serverID before hashing it
Pass read/binary modes to the file made from socket to avoid encoding problems, fixes #29
This commit is contained in:
Ammar Askar 2015-04-17 17:57:34 +05:00
parent 9202c4399b
commit 79ee31c44e
3 changed files with 3 additions and 3 deletions

View File

@ -138,7 +138,7 @@ class Connection(object):
# the server.
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect((self.options.address, self.options.port))
self.file_object = self.socket.makefile()
self.file_object = self.socket.makefile("rb")
def _handshake(self, next_state=2):
handshake = packets.HandShakePacket()

View File

@ -35,7 +35,7 @@ def encrypt_token_and_secret(pubkey, verification_token, shared_secret):
def generate_verification_hash(server_id, shared_secret, public_key):
verification_hash = sha1()
verification_hash.update(server_id)
verification_hash.update(server_id.encode('utf-8'))
verification_hash.update(shared_secret)
verification_hash.update(public_key)

View File

@ -58,7 +58,7 @@ class Encryption(unittest.TestCase):
def test_generate_hash(self):
verification_hash = generate_verification_hash(
b"", "secret".encode('utf-8'), self.public_key)
u"", "secret".encode('utf-8'), self.public_key)
self.assertEquals("1f142e737a84a974a5f2a22f6174a78d80fd97f5",
verification_hash)