Current File : //lib/python2.7/site-packages/cloudinit/gpg.pyc
�
oB�]c@sodZddlmZddlmZddlZeje�Zd�Z	dd�Z
d�Zd	d
�ZdS(s0gpg.py - Collection of gpg key related functionsi����(tlog(tutilNcCsay+tjddd|gdt�\}}Wn/tjk
r\}tjd||�d}nX|S(s*Export gpg key, armoured key gets returnedtgpgs--exports--armourtcaptures&Failed to export armoured key "%s": %sN(RtsubptTruetProcessExecutionErrortLOGtdebugtNone(tkeytarmourt_terror((s1/usr/lib/python2.7/site-packages/cloudinit/gpg.pyt
export_armours
ic	Cs$tjd||�dd|d|g}|d	kr>g}nd}d	}t|�}x�tr|d7}y1tj|dt�tjd|||�d	SWntjk
r�}|}nXy3t|�}tjd
|j	|�t
j|�WqYtk
rt
d||||f��qYXqYWd	S(s�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.s&Importing key '%s' from keyserver '%s'Rs--keyserver=%ss--recv-keysiiRs/Imported key '%s' from keyserver '%s' on try %dNs6Import failed with exit code %d, will try again in %sss@Failed to import key '%s' from keyserver '%s' after %d tries: %s(RRR	titerRRRRtnextt	exit_codettimetsleept
StopIterationt
ValueError(	R
t	keyservertretriestcmdttrynumR
tsleepstetnaplen((s1/usr/lib/python2.7/site-packages/cloudinit/gpg.pytrecv_keys4		
	



cCsVy&tjdddd|gdt�Wn)tjk
rQ}tjd||�nXdS(s0Delete the specified key from the local gpg ringRs--batchs--yess
--delete-keysRsFailed delete key "%s": %sN(RRRRRtwarning(R
R
((s1/usr/lib/python2.7/site-packages/cloudinit/gpg.pyt
delete_keyHs
skeyserver.ubuntu.comcCsrt|�}|snzKy t|d|�t|�}Wn$tk
r[tjd|��nXWdt|�Xn|S(sget gpg keyid from keyserverRsFailed to obtain gpg key %sN(RRRRt	exceptionR(tkeyidRR((s1/usr/lib/python2.7/site-packages/cloudinit/gpg.pyt
getkeybyidQs
(ii(
t__doc__t	cloudinitRtloggingRRt	getLoggert__name__RRRRR"(((s1/usr/lib/python2.7/site-packages/cloudinit/gpg.pyt<module>s	*