summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gemato/cli.py2
-rw-r--r--gemato/openpgp.py41
2 files changed, 32 insertions, 11 deletions
diff --git a/gemato/cli.py b/gemato/cli.py
index 04ada3b..021057d 100644
--- a/gemato/cli.py
+++ b/gemato/cli.py
@@ -99,7 +99,7 @@ class BaseOpenPGPMixin(object):
env_class = gemato.openpgp.OpenPGPEnvironment
else:
env_class = gemato.openpgp.OpenPGPSystemEnvironment
- self.openpgp_env = env_class()
+ self.openpgp_env = env_class(debug=args.debug)
if args.openpgp_key is not None:
with io.open(args.openpgp_key, 'rb') as f:
diff --git a/gemato/openpgp.py b/gemato/openpgp.py
index e1511b4..7e5ec1d 100644
--- a/gemato/openpgp.py
+++ b/gemato/openpgp.py
@@ -34,9 +34,10 @@ class OpenPGPSystemEnvironment(object):
(user's home directory or GNUPGHOME).
"""
- __slots__ = ['_impl']
+ __slots__ = ['debug', '_impl']
- def __init__(self):
+ def __init__(self, debug=False):
+ self.debug = debug
self._impl = None
def __enter__(self):
@@ -189,8 +190,8 @@ class OpenPGPEnvironment(OpenPGPSystemEnvironment):
__slots__ = ['_home']
- def __init__(self):
- super(OpenPGPEnvironment, self).__init__()
+ def __init__(self, debug=False):
+ super(OpenPGPEnvironment, self).__init__(debug=debug)
self._home = tempfile.mkdtemp()
with open(os.path.join(self._home, 'dirmngr.conf'), 'w') as f:
@@ -198,19 +199,34 @@ class OpenPGPEnvironment(OpenPGPSystemEnvironment):
# honor user's http_proxy setting
honor-http-proxy
-''')
+
+# enable debugging, in case we needed it
+log-file {debug_file}
+debug-level guru
+debug-all
+'''.format(debug_file=os.path.join(self._home, 'dirmngr.log')))
with open(os.path.join(self._home, 'gpg.conf'), 'w') as f:
f.write('''# autogenerated by gemato
# we are using an isolated keyring, so always trust our keys
trust-model always
-''')
+
+# enable debugging, in case we needed it
+log-file {debug_file}
+debug-level guru
+debug-all
+'''.format(debug_file=os.path.join(self._home, 'gpg.log')))
with open(os.path.join(self._home, 'gpg-agent.conf'), 'w') as f:
f.write('''# autogenerated by gemato
# avoid any smartcard operations, we are running in isolation
disable-scdaemon
-''')
+
+# enable debugging, in case we needed it
+log-file {debug_file}
+debug-level guru
+debug-all
+'''.format(debug_file=os.path.join(self._home, 'gpg-agent.log')))
def __exit__(self, exc_type, exc_value, exc_cb):
if self._home is not None:
@@ -234,9 +250,14 @@ disable-scdaemon
def close(self):
if self._home is not None:
- # we need to loop due to ENOTEMPTY potential
- while os.path.isdir(self._home):
- shutil.rmtree(self._home, onerror=self._rmtree_error_handler)
+ if not self.debug:
+ # we need to loop due to ENOTEMPTY potential
+ while os.path.isdir(self._home):
+ shutil.rmtree(self._home,
+ onerror=self._rmtree_error_handler)
+ else:
+ logging.debug('GNUPGHOME left for debug purposes: {}'
+ .format(self._home))
self._home = None
def import_key(self, keyfile):