summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gemato/openpgp.py26
1 files changed, 25 insertions, 1 deletions
diff --git a/gemato/openpgp.py b/gemato/openpgp.py
index 2329482..d14c718 100644
--- a/gemato/openpgp.py
+++ b/gemato/openpgp.py
@@ -1,11 +1,12 @@
# gemato: OpenPGP verification support
# vim:fileencoding=utf-8
-# (c) 2017-2018 Michał Górny
+# (c) 2017-2019 Michał Górny
# Licensed under the terms of 2-clause BSD license
import datetime
import email.utils
import errno
+import logging
import os
import os.path
import shutil
@@ -259,30 +260,42 @@ disable-scdaemon
if l.startswith(b'fpr:'):
fpr = l.split(b':')[9].decode('ASCII')
assert fpr.endswith(prev_pub)
+ logging.debug('refresh_keys_wkd(): fingerprint: {}'
+ .format(fpr))
keys.add(fpr)
prev_pub = None
else:
# old GnuPG doesn't give fingerprints by default
# (but it doesn't support WKD either)
+ logging.debug('refresh_keys_wkd(): failing due to old gpg')
return False
elif l.startswith(b'pub:'):
if keys:
# every key must have at least one UID
if not addrs_key:
+ logging.debug('refresh_keys_wkd(): failing due to no UIDs')
return False
addrs.update(addrs_key)
addrs_key = set()
# wait for the fingerprint
prev_pub = l.split(b':')[4].decode('ASCII')
+ logging.debug('refresh_keys_wkd(): keyid: {}'
+ .format(prev_pub))
elif l.startswith(b'uid:'):
uid = l.split(b':')[9]
name, addr = email.utils.parseaddr(uid.decode('utf8'))
if '@' in addr:
+ logging.debug('refresh_keys_wkd(): UID: {}'
+ .format(addr))
addrs_key.add(addr)
+ else:
+ logging.debug('refresh_keys_wkd(): ignoring UID without mail: {}'
+ .format(uid))
# grab the final set (also aborts when there are no keys)
if not addrs_key:
+ logging.debug('refresh_keys_wkd(): failing due to no UIDs')
return False
addrs.update(addrs_key)
@@ -293,11 +306,15 @@ disable-scdaemon
+ list(addrs), '')
# if at least one fetch failed, gpg returns unsuccessfully
if exitst != 0:
+ logging.debug('refresh_keys_wkd(): gpg --locate-keys failed: {}'
+ .format(err))
return False
# otherwise, xfer the keys
exitst, out, err = subenv._spawn_gpg(['--export'] + list(keys), '')
if exitst != 0:
+ logging.debug('refresh_keys_wkd(): gpg --export failed: {}'
+ .format(err))
return False
exitst, out, err = self._spawn_gpg(['--import',
@@ -310,8 +327,12 @@ disable-scdaemon
for l in out.splitlines():
if l.startswith(b'[GNUPG:] IMPORT_OK'):
fpr = l.split(b' ')[3].decode('ASCII')
+ logging.debug('refresh_keys_wkd(): import successful for key: {}'
+ .format(fpr))
keys.remove(fpr)
if keys:
+ logging.debug('refresh_keys_wkd(): failing due to non-updated keys: {}'
+ .format(keys))
return False
return True
@@ -326,6 +347,9 @@ disable-scdaemon
raise gemato.exceptions.OpenPGPKeyRefreshError(err.decode('utf8'))
def refresh_keys(self, allow_wkd=True, keyserver=None):
+ logging.debug('refresh_keys(allow_wkd={}, keyserver={}) called'
+ .format(allow_wkd, keyserver))
+
if allow_wkd and self.refresh_keys_wkd():
return