From decd3ddf7595c609c8b7910dff9e60b2e987b74f Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Sun, 22 May 2016 22:17:32 +0300 Subject: [PATCH] gpg: fixup str/bytes issues --- trezor_agent/gpg/decode.py | 2 +- trezor_agent/gpg/encode.py | 5 +++-- trezor_agent/gpg/proto.py | 4 ++-- trezor_agent/gpg/signer.py | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/trezor_agent/gpg/decode.py b/trezor_agent/gpg/decode.py index 18e3834..662d8a6 100644 --- a/trezor_agent/gpg/decode.py +++ b/trezor_agent/gpg/decode.py @@ -325,7 +325,7 @@ def verify(pubkey, signature, original_data): # remove GPG armor lines = stream.readlines()[3:-1] - data = base64.b64decode(''.join(lines)) + data = base64.b64decode(b''.join(lines)) payload, checksum = data[:-3], data[-3:] assert util.crc24(payload) == checksum stream = io.BytesIO(payload) diff --git a/trezor_agent/gpg/encode.py b/trezor_agent/gpg/encode.py index 7e4d44b..4355a5b 100644 --- a/trezor_agent/gpg/encode.py +++ b/trezor_agent/gpg/encode.py @@ -103,11 +103,12 @@ class Factory(object): def create_primary(self): """Export new primary GPG public key, ready for "gpg2 --import".""" pubkey_packet = proto.packet(tag=6, blob=self.pubkey.data()) - user_id_packet = proto.packet(tag=13, blob=self.user_id) + user_id_packet = proto.packet(tag=13, + blob=self.user_id.encode('ascii')) data_to_sign = (self.pubkey.data_to_hash() + user_id_packet[:1] + - util.prefix_len('>L', self.user_id)) + util.prefix_len('>L', self.user_id.encode('ascii'))) log.info('signing public key "%s"', self.user_id) hashed_subpackets = [ proto.subpacket_time(self.pubkey.created), # signature time diff --git a/trezor_agent/gpg/proto.py b/trezor_agent/gpg/proto.py index f703a50..5c48e7f 100644 --- a/trezor_agent/gpg/proto.py +++ b/trezor_agent/gpg/proto.py @@ -150,8 +150,8 @@ def _split_lines(body, size): def armor(blob, type_str): """See https://tools.ietf.org/html/rfc4880#section-6 for details.""" head = '-----BEGIN PGP {}-----\nVersion: GnuPG v2\n\n'.format(type_str) - body = base64.b64encode(blob) - checksum = base64.b64encode(util.crc24(blob)) + body = base64.b64encode(blob).decode('ascii') + checksum = base64.b64encode(util.crc24(blob)).decode('ascii') tail = '-----END PGP {}-----\n'.format(type_str) return head + _split_lines(body, 64) + '=' + checksum + '\n' + tail diff --git a/trezor_agent/gpg/signer.py b/trezor_agent/gpg/signer.py index 86a9038..723794f 100755 --- a/trezor_agent/gpg/signer.py +++ b/trezor_agent/gpg/signer.py @@ -42,7 +42,7 @@ def run_sign(args): data = sys.stdin.read() sig = f.sign_message(data) - sig = proto.armor(sig, 'SIGNATURE') + sig = proto.armor(sig, 'SIGNATURE').encode('ascii') decode.verify(pubkey=pubkey, signature=sig, original_data=data) filename = '-' # write to stdout