/usr/lib/python3/dist-packages/curtin/gpg.py is in python3-curtin 18.1-5-g572ae5d6-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | # This file is part of curtin. See LICENSE file for copyright and license info.
""" gpg.py
gpg related utilities to get raw keys data by their id
"""
from curtin import util
from .log import LOG
def export_armour(key):
"""Export gpg key, armoured key gets returned"""
try:
(armour, _) = util.subp(["gpg", "--export", "--armour", key],
capture=True)
except util.ProcessExecutionError as error:
# debug, since it happens for any key not on the system initially
LOG.debug('Failed to export armoured key "%s": %s', key, error)
armour = None
return armour
def recv_key(key, keyserver, retries=None):
"""Receive gpg key from the specified keyserver"""
LOG.debug('Receive gpg key "%s"', key)
try:
util.subp(["gpg", "--keyserver", keyserver, "--recv", key],
capture=True, retries=retries)
except util.ProcessExecutionError as error:
raise ValueError(('Failed to import key "%s" '
'from server "%s" - error %s') %
(key, keyserver, error))
def delete_key(key):
"""Delete the specified key from the local gpg ring"""
try:
util.subp(["gpg", "--batch", "--yes", "--delete-keys", key],
capture=True)
except util.ProcessExecutionError as error:
LOG.warn('Failed delete key "%s": %s', key, error)
def getkeybyid(keyid, keyserver='keyserver.ubuntu.com', retries=None):
"""get gpg keyid from keyserver"""
armour = export_armour(keyid)
if not armour:
try:
recv_key(keyid, keyserver=keyserver, retries=retries)
armour = export_armour(keyid)
except ValueError:
LOG.exception('Failed to obtain gpg key %s', keyid)
raise
finally:
# delete just imported key to leave environment as it was before
delete_key(keyid)
return armour
# vi: ts=4 expandtab syntax=python
|