X-Git-Url: https://git.tld-linux.org/?a=blobdiff_plain;f=TLD_Builder%2Fgpg.py;h=b820dcdf3d4821ee7d3acd7edf47e4c26994e2f9;hb=f49a6ac3665407036232096319a5643e80caedf3;hp=aeb8ebd4e524a3cf1da1fe35002a17544a792d02;hpb=b999f53d4bf5d44586ecf028876e8bc20b5fd2ce;p=tld-builder.git diff --git a/TLD_Builder/gpg.py b/TLD_Builder/gpg.py index aeb8ebd..b820dcd 100644 --- a/TLD_Builder/gpg.py +++ b/TLD_Builder/gpg.py @@ -3,7 +3,11 @@ import log import subprocess import re -import StringIO +import sys +if sys.version_info[0] == 2: + import StringIO +else: + from io import StringIO import util import os @@ -16,22 +20,22 @@ def get_keys(buf): if not os.path.isfile('/usr/bin/gpg'): log.error("missing gnupg binary: /usr/bin/gpg") - raise OSError, 'Missing gnupg binary' + raise OSError('Missing gnupg binary') d_stdout = None d_stderr = None cmd = ['/usr/bin/gpg', '--batch', '--no-tty', '--decrypt'] gpg_run = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True) try: - d_stdout, d_stderr = gpg_run.communicate(buf.encode('utf-8')) - except OSError, e: + d_stdout, d_stderr = gpg_run.communicate(buf.decode().encode('utf-8')) + except OSError as e: log.error("gnupg run, does gpg binary exist? : %s" % e) raise - rx = re.compile("^gpg: Signature made .*using [DR]SA key ID (.+)") + rx = re.compile("^gpg:.*using\s[DR]SA\skey\s(?:ID\s)?(\w+)") keys = [] - for l in d_stderr.split('\n'): + for l in d_stderr.decode().split('\n'): m = rx.match(l) if m: keys.append(m.group(1)) @@ -48,21 +52,21 @@ def verify_sig(buf): if not os.path.isfile('/usr/bin/gpg'): log.error("missing gnupg binary: /usr/bin/gpg") - raise OSError, 'Missing gnupg binary' + raise OSError('Missing gnupg binary') d_stdout = None d_stderr = None cmd = ['/usr/bin/gpg', '--batch', '--no-tty', '--decrypt'] gpg_run = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True) try: - d_stdout, d_stderr = gpg_run.communicate(buf.encode('utf-8')) - except OSError, e: + d_stdout, d_stderr = gpg_run.communicate(buf.decode().encode('utf-8')) + except OSError as e: log.error("gnupg run failed, does gpg binary exist? : %s" % e) raise rx = re.compile("^gpg: (Good signature from| aka) .*<([^>]+)>") emails = [] - for l in d_stderr.split('\n'): + for l in d_stderr.decode().split('\n'): m = rx.match(l) if m: emails.append(m.group(2)) @@ -73,7 +77,7 @@ def verify_sig(buf): def sign(buf): if not os.path.isfile('/usr/bin/gpg'): log.error("missing gnupg binary: /usr/bin/gpg") - raise OSError, 'Missing gnupg binary' + raise OSError('Missing gnupg binary') d_stdout = None d_stderr = None @@ -81,12 +85,12 @@ def sign(buf): # TODO: check for gpg return code! gpg_run = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True) try: - d_stdout, d_stderr = gpg_run.communicate(buf.encode('utf-8')) - except OSError, e: + d_stdout, d_stderr = gpg_run.communicate(buf.decode().encode('utf-8')) + except OSError as e: log.error("gnupg signing failed, does gpg binary exist? : %s" % e) raise if len(d_stderr): - log.error("gpg: %s" % d_stderr) + log.error("gpg: %s" % d_stderr.decode()) return d_stdout