summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gemato/cli.py5
-rw-r--r--gemato/openpgp.py17
2 files changed, 16 insertions, 6 deletions
diff --git a/gemato/cli.py b/gemato/cli.py
index a33e593..15e46ad 100644
--- a/gemato/cli.py
+++ b/gemato/cli.py
@@ -126,6 +126,8 @@ class VerifyingOpenPGPMixin(BaseOpenPGPMixin):
dest='allow_wkd',
help='Do not attempt to use WKD to refetch keys (use '
+'keyservers only)')
+ subp.add_argument('--keyserver',
+ help='Force custom keyserver URL')
def parse_args(self, args, argp):
super(VerifyingOpenPGPMixin, self).parse_args(args, argp)
@@ -135,7 +137,8 @@ class VerifyingOpenPGPMixin(BaseOpenPGPMixin):
# (unless user specifically asked us not to)
if args.refresh_keys:
logging.info('Refreshing keys...')
- self.openpgp_env.refresh_keys(allow_wkd=args.allow_wkd)
+ self.openpgp_env.refresh_keys(allow_wkd=args.allow_wkd,
+ keyserver=args.keyserver)
logging.info('Keys refreshed.')
diff --git a/gemato/openpgp.py b/gemato/openpgp.py
index d3cb13d..dc2dd8e 100644
--- a/gemato/openpgp.py
+++ b/gemato/openpgp.py
@@ -56,7 +56,7 @@ class OpenPGPSystemEnvironment(object):
raise NotImplementedError('import_key() is not implemented by this OpenPGP provider')
- def refresh_keys(self, allow_wkd=True):
+ def refresh_keys(self, allow_wkd=True, keyserver=None):
"""
Update the keys from their assigned keyservers. This should be called
at start of every execution in order to ensure that revocations
@@ -65,6 +65,9 @@ class OpenPGPSystemEnvironment(object):
@allow_wkd specifies whether WKD can be used to fetch keys. This is
experimental but usually is more reliable than keyservers. If WKD
fails to fetch *all* keys, gemato falls back to keyservers.
+
+ @keyserver may be used to force an alternate keyserver. If its present,
+ it should specify a keyserver URL.
"""
raise NotImplementedError('refresh_keys() is not implemented by this OpenPGP provider')
@@ -308,16 +311,20 @@ disable-scdaemon
return True
- def refresh_keys_keyserver(self):
- exitst, out, err = self._spawn_gpg(['--refresh-keys'], '')
+ def refresh_keys_keyserver(self, keyserver=None):
+ ks_args = []
+ if keyserver is not None:
+ ks_args = ['--keyserver', keyserver]
+
+ exitst, out, err = self._spawn_gpg(ks_args + ['--refresh-keys'], '')
if exitst != 0:
raise gemato.exceptions.OpenPGPKeyRefreshError(err.decode('utf8'))
- def refresh_keys(self, allow_wkd=True):
+ def refresh_keys(self, allow_wkd=True, keyserver=None):
if allow_wkd and self.refresh_keys_wkd():
return
- self.refresh_keys_keyserver()
+ self.refresh_keys_keyserver(keyserver=keyserver)
@property
def home(self):