HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/cloudinit/__pycache__/gpg.cpython-39.pyc
a

��`d
�@sVdZddlmZddlmZddlZe�e�Zdd�Z	ddd	�Z
d
d�Zdd
d�ZdS)z0gpg.py - Collection of gpg key related functions�)�log)�subpNc
Cs\ztjddd|gdd�\}}Wn8tjyV}zt�d||�d}WYd}~n
d}~00|S)z*Export gpg key, armoured key gets returned�gpgz--exportz--armourT��capturez&Failed to export armoured key "%s": %sN)r�ProcessExecutionError�LOG�debug)�key�armour�_�error�r�//usr/lib/python3/dist-packages/cloudinit/gpg.py�
export_armours�r��rc	
Cs�t�d||�ddd|d|g}|dur,g}d}d}t|�}|d7}z$tj|d	d
�t�d|||�WdStjy�}z|}WYd}~n
d}~00z&t|�}t�d|j|�t�|�Wq<t	y�}z"t
d
||||f�|�WYd}~q<d}~00q<dS)a�Receive gpg key from the specified keyserver.

    Retries are done by default because keyservers can be unreliable.
    Additionally, there is no way to determine the difference between
    a non-existant key and a failure.  In both cases gpg (at least 2.2.4)
    exits with status 2 and stderr: "keyserver receive failed: No data"
    It is assumed that a key provided to cloud-init exists on the keyserver
    so re-trying makes better sense than failing.

    @param key: a string key fingerprint (as passed to gpg --recv-keys).
    @param keyserver: the keyserver to request keys from.
    @param retries: an iterable of sleep lengths for retries.
                    Use None to indicate no retries.z&Importing key '%s' from keyserver '%s'rz--no-ttyz--keyserver=%sz--recv-keysNrrTrz/Imported key '%s' from keyserver '%s' on try %dz6Import failed with exit code %d, will try again in %ssz@Failed to import key '%s' from keyserver '%s' after %d tries: %s)rr	�iterrr�next�	exit_code�time�sleep�
StopIteration�
ValueError)	r
�	keyserver�retries�cmdZtrynumr
Zsleeps�e�naplenrrr�recv_keys>��
���rc
CsVztjdddd|gdd�Wn4tjyP}zt�d||�WYd}~n
d}~00dS)	z0Delete the specified key from the local gpg ringrz--batchz--yesz
--delete-keysTrzFailed delete key "%s": %sN)rrr�warning)r
r
rrr�
delete_keyIs�
r!�keyserver.ubuntu.comcCsbt|�}|s^zFzt||d�t|�}Wn tyFt�d|��Yn0Wt|�n
t|�0|S)zget gpg keyid from keyserver)rzFailed to obtain gpg key %s)rrrr�	exceptionr!)�keyidrrrrr�
getkeybyidRs
r%)r)r")
�__doc__�	cloudinitr�loggingrr�	getLogger�__name__rrrr!r%rrrr�<module>s

+