[bp-2.11]: apt_key - Binary GnuPG keys downloaded via URL were corrupted (#74522)

* Binary GnuPG keys downloaded via URLs by the 'ansible.builtin.apt_key' module were corrupted so 'gpg' could not import them (https://github.com/ansible/ansible/issues/74424)
(cherry picked from commit 0375070871)
(cherry picked from commit 4cc80ef9c9)
pull/74418/head
Maxim Masiutin 4 years ago committed by GitHub
parent 5b0a3ac43d
commit 71fc9ec393
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,2 @@
bugfixes:
- apt_key - Binary GnuPG keys downloaded via URLs were corrupted so GnuPG could not import them (https://github.com/ansible/ansible/issues/74424).

@ -283,12 +283,15 @@ def download_key(module, url):
def get_key_id_from_file(module, filename, data=None):
native_data = to_native(data)
is_armored = native_data.find("-----BEGIN PGP PUBLIC KEY BLOCK-----") >= 0
global lang_env
key = None
cmd = [gpg_bin, '--with-colons', filename]
(rc, out, err) = module.run_command(cmd, environ_update=lang_env, data=to_native(data))
(rc, out, err) = module.run_command(cmd, environ_update=lang_env, data=(native_data if is_armored else data), binary_data=not is_armored)
if rc != 0:
module.fail_json(msg="Unable to extract key from '%s'" % ('inline data' if data is not None else filename), stdout=out, stderr=err)

@ -0,0 +1,12 @@
---
- name: Ensure import of binary key downloaded using URLs works
apt_key:
url: https://ansible-ci-files.s3.us-east-1.amazonaws.com/test/integration/targets/apt_key/apt-key-example-binary.gpg
register: apt_key_binary_test
- name: Validate the results
assert:
that:
- 'apt_key_binary_test.changed is defined'
- 'apt_key_binary_test.changed'

@ -32,3 +32,6 @@
- import_tasks: 'file.yml'
when: ansible_distribution in ('Ubuntu', 'Debian')
- import_tasks: 'apt_key_binary.yml'
when: ansible_distribution in ('Ubuntu', 'Debian')

Loading…
Cancel
Save