remove GPG_1_3_1 check

This commit is contained in:
Leif Liddy 2022-10-15 17:57:17 +02:00
parent 427718c5ae
commit 8767c52920
No known key found for this signature in database
GPG key ID: 8A7AD507B1EEF020
2 changed files with 47 additions and 92 deletions

1
changelog/62895.changed Normal file
View file

@ -0,0 +1 @@
Removed GPG_1_3_1 check

View file

@ -21,7 +21,6 @@ import salt.utils.files
import salt.utils.path import salt.utils.path
import salt.utils.stringutils import salt.utils.stringutils
from salt.exceptions import SaltInvocationError from salt.exceptions import SaltInvocationError
from salt.utils.versions import LooseVersion as _LooseVersion
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -65,12 +64,9 @@ VERIFY_TRUST_LEVELS = {
"4": "Ultimate", "4": "Ultimate",
} }
GPG_1_3_1 = False
try: try:
import gnupg import gnupg
HAS_GPG_BINDINGS = True HAS_GPG_BINDINGS = True
GPG_1_3_1 = _LooseVersion(gnupg.__version__) >= _LooseVersion("1.3.1")
except ImportError: except ImportError:
HAS_GPG_BINDINGS = False HAS_GPG_BINDINGS = False
@ -183,10 +179,7 @@ def _create_gpg(user=None, gnupghome=None):
if not gnupghome: if not gnupghome:
gnupghome = _get_user_gnupghome(user) gnupghome = _get_user_gnupghome(user)
if GPG_1_3_1: gpg = gnupg.GPG(gnupghome=gnupghome)
gpg = gnupg.GPG(homedir=gnupghome) # pylint: disable=unexpected-keyword-arg
else:
gpg = gnupg.GPG(gnupghome=gnupghome)
return gpg return gpg
@ -238,34 +231,29 @@ def search_keys(text, keyserver=None, user=None):
salt '*' gpg.search_keys user@example.com keyserver=keyserver.ubuntu.com user=username salt '*' gpg.search_keys user@example.com keyserver=keyserver.ubuntu.com user=username
""" """
if GPG_1_3_1: if not keyserver:
raise SaltInvocationError( keyserver = "pgp.mit.edu"
"The search_keys function is not support with this version of python-gnupg."
)
else:
if not keyserver:
keyserver = "pgp.mit.edu"
_keys = [] _keys = []
for _key in _search_keys(text, keyserver, user): for _key in _search_keys(text, keyserver, user):
tmp = {"keyid": _key["keyid"], "uids": _key["uids"]} tmp = {"keyid": _key["keyid"], "uids": _key["uids"]}
expires = _key.get("expires", None) expires = _key.get("expires", None)
date = _key.get("date", None) date = _key.get("date", None)
length = _key.get("length", None) length = _key.get("length", None)
if expires: if expires:
tmp["expires"] = time.strftime( tmp["expires"] = time.strftime(
"%Y-%m-%d", time.localtime(float(_key["expires"])) "%Y-%m-%d", time.localtime(float(_key["expires"]))
) )
if date: if date:
tmp["created"] = time.strftime( tmp["created"] = time.strftime(
"%Y-%m-%d", time.localtime(float(_key["date"])) "%Y-%m-%d", time.localtime(float(_key["date"]))
) )
if length: if length:
tmp["keyLength"] = _key["length"] tmp["keyLength"] = _key["length"]
_keys.append(tmp) _keys.append(tmp)
return _keys return _keys
def list_keys(user=None, gnupghome=None): def list_keys(user=None, gnupghome=None):
@ -778,29 +766,16 @@ def import_key(text=None, filename=None, user=None, gnupghome=None):
imported_data = gpg.import_keys(text) imported_data = gpg.import_keys(text)
if GPG_1_3_1: if imported_data.imported or imported_data.imported_rsa:
counts = imported_data.counts ret["message"] = "Successfully imported key(s)."
if counts.get("imported") or counts.get("imported_rsa"): elif imported_data.unchanged:
ret["message"] = "Successfully imported key(s)." ret["message"] = "Key(s) already exist in keychain."
elif counts.get("unchanged"): elif imported_data.not_imported:
ret["message"] = "Key(s) already exist in keychain." ret["res"] = False
elif counts.get("not_imported"): ret["message"] = "Unable to import key."
ret["res"] = False elif not imported_data.count:
ret["message"] = "Unable to import key." ret["res"] = False
elif not counts.get("count"): ret["message"] = "Unable to import key."
ret["res"] = False
ret["message"] = "Unable to import key."
else:
if imported_data.imported or imported_data.imported_rsa:
ret["message"] = "Successfully imported key(s)."
elif imported_data.unchanged:
ret["message"] = "Key(s) already exist in keychain."
elif imported_data.not_imported:
ret["res"] = False
ret["message"] = "Unable to import key."
elif not imported_data.count:
ret["res"] = False
ret["message"] = "Unable to import key."
return ret return ret
@ -1069,22 +1044,11 @@ def sign(
else: else:
gpg_passphrase = None gpg_passphrase = None
# Check for at least one secret key to sign with
gnupg_version = _LooseVersion(gnupg.__version__)
if text: if text:
if gnupg_version >= _LooseVersion("1.3.1"): signed_data = gpg.sign(text, keyid=keyid, passphrase=gpg_passphrase)
signed_data = gpg.sign(text, default_key=keyid, passphrase=gpg_passphrase)
else:
signed_data = gpg.sign(text, keyid=keyid, passphrase=gpg_passphrase)
elif filename: elif filename:
with salt.utils.files.flopen(filename, "rb") as _fp: with salt.utils.files.flopen(filename, "rb") as _fp:
if gnupg_version >= _LooseVersion("1.3.1"): signed_data = gpg.sign_file(_fp, keyid=keyid, passphrase=gpg_passphrase)
signed_data = gpg.sign(
text, default_key=keyid, passphrase=gpg_passphrase
)
else:
signed_data = gpg.sign_file(_fp, keyid=keyid, passphrase=gpg_passphrase)
if output: if output:
with salt.utils.files.flopen(output, "wb") as fout: with salt.utils.files.flopen(output, "wb") as fout:
fout.write(salt.utils.stringutils.to_bytes(signed_data.data)) fout.write(salt.utils.stringutils.to_bytes(signed_data.data))
@ -1255,29 +1219,19 @@ def encrypt(
if text: if text:
result = gpg.encrypt(text, recipients, passphrase=gpg_passphrase) result = gpg.encrypt(text, recipients, passphrase=gpg_passphrase)
elif filename: elif filename:
if GPG_1_3_1: with salt.utils.files.flopen(filename, "rb") as _fp:
# This version does not allow us to encrypt using the if output:
# file stream # have to read in the contents and encrypt. result = gpg.encrypt_file(
with salt.utils.files.flopen(filename, "rb") as _fp: _fp,
_contents = salt.utils.stringutils.to_unicode(_fp.read()) recipients,
result = gpg.encrypt( passphrase=gpg_passphrase,
_contents, recipients, passphrase=gpg_passphrase, output=output output=output,
) sign=sign,
else: )
# This version allows encrypting the file stream else:
with salt.utils.files.flopen(filename, "rb") as _fp: result = gpg.encrypt_file(
if output: _fp, recipients, passphrase=gpg_passphrase, sign=sign
result = gpg.encrypt_file( )
_fp,
recipients,
passphrase=gpg_passphrase,
output=output,
sign=sign,
)
else:
result = gpg.encrypt_file(
_fp, recipients, passphrase=gpg_passphrase, sign=sign
)
else: else:
raise SaltInvocationError("filename or text must be passed.") raise SaltInvocationError("filename or text must be passed.")