From f626d34e219cad293635926e2c5ca30a112fda05 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Sat, 21 May 2016 17:21:16 +0300 Subject: [PATCH] gpg: using closing() context handler --- trezor_agent/gpg/signer.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/trezor_agent/gpg/signer.py b/trezor_agent/gpg/signer.py index e3d5023..1c1f608 100755 --- a/trezor_agent/gpg/signer.py +++ b/trezor_agent/gpg/signer.py @@ -1,6 +1,7 @@ #!/usr/bin/env python """Create signatures and export public keys for GPG using TREZOR.""" import argparse +import contextlib import logging import subprocess as sp import sys @@ -17,13 +18,14 @@ def run_create(args): user_id = os.environ['TREZOR_GPG_USER_ID'] s = encode.Signer(user_id=user_id, created=args.time, curve_name=args.ecdsa_curve) - if args.subkey: - subkey = s.subkey() - primary = sp.check_output(['gpg2', '--export', user_id]) - result = primary + subkey - else: - result = s.export() - s.close() + + with contextlib.closing(s): + if args.subkey: + subkey = s.subkey() + primary = sp.check_output(['gpg2', '--export', user_id]) + result = primary + subkey + else: + result = s.export() sys.stdout.write(proto.armor(result, 'PUBLIC KEY BLOCK')) @@ -32,12 +34,12 @@ def run_sign(args): """Generate a GPG signature using hardware-based device.""" pubkey = decode.load_from_gpg(user_id=None, use_custom=True) s = encode.Signer.from_public_key(pubkey=pubkey, user_id=pubkey['user_id']) - if args.filename: - data = open(args.filename, 'rb').read() - else: - data = sys.stdin.read() - sig = s.sign(data) - s.close() + with contextlib.closing(s): + if args.filename: + data = open(args.filename, 'rb').read() + else: + data = sys.stdin.read() + sig = s.sign(data) sig = proto.armor(sig, 'SIGNATURE') decode.verify(pubkey=pubkey, signature=sig, original_data=data)