509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
©ft`ë  ã               @   s<  d dl mZ d dl mZ d dl mZ d dlmZ d dlZd dlZd dl	Zd dl
Zd dlZd dlZd dlZd dlZyd dlmZ d dlmZ W n< ek
rÈ   d dlZG dd	„ d	eƒZG d
d„ deƒZY nX dZejdƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zejdd„ ƒZdd„ Z d"dd„Z!G d d!„ d!eƒZ"dS )#é    )Úprint_function)Úabsolute_import)Úunicode_literals)Ú_N)ÚContext)ÚDatac               @   sV   e Zd Zdd„ Zdd„ Zdd„ Zedd„ ƒZejd	d„ ƒZd
d„ Z	dd„ Z
dd„ ZdS )r   c             C   s   t jƒ | jd< d S )NÚctx)Úgpgmer   Ú__dict__)Úself© r   ú/usr/lib/python3.6/crypto.pyÚ__init__*   s    zContext.__init__c             C   s   | S )Nr   )r   r   r   r   Ú	__enter__-   s    zContext.__enter__c             C   s   d S )Nr   )r   ÚtypeÚvalueÚtbr   r   r   Ú__exit__0   s    zContext.__exit__c             C   s   | j jS )N)r   Úarmor)r   r   r   r   r   3   s    zContext.armorc             C   s   || j _d S )N)r   r   )r   r   r   r   r   r   7   s    c             C   s$   t |tƒrtj|ƒ}| jj|ƒ d S )N)Ú
isinstanceZ
basestringÚioÚBytesIOr   Úimport_)r   Úkey_for   r   r   Ú	op_import;   s    

zContext.op_importc             C   s   | j j||ƒ d S )N)r   Zexport)r   ÚpatternÚmodeZkeydatar   r   r   Ú	op_export@   s    zContext.op_exportc             C   s   t | j|ƒS )N)Úgetattrr   )r   Únamer   r   r   Ú__getattr__C   s    zContext.__getattr__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   Úpropertyr   Úsetterr   r   r    r   r   r   r   r   )   s   r   c               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )r   c             C   s   t jƒ | jd< d S )NÚbuf)r   r   r
   )r   r   r   r   r   H   s    zData.__init__c             C   s   | S )Nr   )r   r   r   r   r   K   s    zData.__enter__c             C   s   d S )Nr   )r   r   r   r   r   r   r   r   N   s    zData.__exit__c             C   s
   | j jƒ S )N)r&   Úgetvalue)r   r   r   r   ÚreadQ   s    z	Data.readc             C   s   t | j|ƒS )N)r   r&   )r   r   r   r   r   r    T   s    zData.__getattr__N)r!   r"   r#   r   r   r   r(   r    r   r   r   r   r   G   s
   r   Z	GNUPGHOMEÚdnfc             C   s   t jjdd„ | jD ƒƒS )Nc             s   s   | ]}|j r|V  qd S )N)Zcan_sign)Ú.0Úsubkeyr   r   r   ú	<genexpr>]   s    z*_extract_signing_subkey.<locals>.<genexpr>)r)   ÚutilÚfirstZsubkeys)Úkeyr   r   r   Ú_extract_signing_subkey\   s    r0   c                s(   ‡ fdd„t dtˆ ƒdƒD ƒ}dj|ƒS )Nc             3   s   | ]}ˆ ||d  … V  qdS )é   Nr   )r*   Úi)Úfpr_hexr   r   r,   a   s    z)_printable_fingerprint.<locals>.<genexpr>r   r1   ú )ÚrangeÚlenÚjoin)r3   Zsegmentsr   )r3   r   Ú_printable_fingerprint`   s    r8   c             C   s–   | j }t|ƒ}x‚| jD ]x}xrt|| ƒD ]d}|j}||krNtjtdƒ| j|ƒ q&| j	j
|ƒs\q&tjjj|j|j|dd� tjtdƒ| j|ƒ q&W qW d S )Nzrepo %s: 0x%s already importedF)ÚgpgdirZmake_ro_copyzrepo %s: imported key 0x%s.)Z_pubring_dirÚkeyids_from_pubringZgpgkeyÚretrieveÚid_ÚloggerÚdebugr   ÚidZ_key_importZ_confirmr)   ZyumZmiscZimport_key_to_pubringÚraw_keyÚshort_id)Úrepor9   Z
known_keysÚkeyurlÚkeyinfoÚkeyidr   r   r   Úimport_repo_keyse   s    
rF   c             C   sl   t jj| ƒsg S t| ƒ�J tƒ �8}g }x,|jƒ D ] }t|ƒ}|d k	r0|j|jƒ q0W |S Q R X W d Q R X d S )N)	ÚosÚpathÚexistsÚpubring_dirr   Úkeylistr0   ÚappendrE   )r9   r   ZkeyidsÚkr+   r   r   r   r:   v   s    r:   c             C   s8   t dƒ| j| jt| jƒ| jjddƒf }tjd|ƒ d S )NzLImporting GPG key 0x%s:
 Userid     : "%s"
 Fingerprint: %s
 From       : %szfile://Ú z%s)	r   rA   Úuseridr8   ÚfingerprintÚurlÚreplacer=   Úcritical)rD   Úmsgr   r   r   Úlog_key_importƒ   s
    rU   c             C   s8   t | ƒ |tjjjkr&tjtdƒƒ ntjtdƒƒ d S )Nz0Verified using DNS record with DNSSEC signature.zNOT verified using DNS record.)rU   r)   ZdnssecZValidityZVALIDr=   rS   r   )rD   Z
dns_resultr   r   r   Úlog_dns_key_importŽ   s    rV   c             c   sF   t jjtd ƒ}| t jt< z
d V  W d |d kr6t jt= n
|t jt< X d S )N)rG   ÚenvironÚgetÚGPG_HOME_ENV)rJ   Zorigr   r   r   rJ   •   s    


rJ   c             C   sÎ   t jƒ }g }t|ƒ�¤ tƒ �’}|j| ƒ x2|jƒ D ]&}t|ƒ}|d krHq2|jt||ƒƒ q2W d|_	xF|D ]>}t
ƒ �.}|j|jd|ƒ |jdtjƒ |jƒ |_W d Q R X qhW W d Q R X W d Q R X tjj|ƒ |S )NTr   )ÚtempfileZmkdtemprJ   r   r   rK   r0   rL   ÚKeyr   r   r   r<   ÚseekrG   ÚSEEK_SETr(   r@   r)   r-   Zrm_rf)r   Zpb_dirÚkeyinfosr   r/   r+   ÚinfoZsinkr   r   r   Úrawkey2infos¢   s"    

,r`   c          
   C   sZ   | j dƒrtjtdƒ|j| ƒ tjj| |d��}t|ƒ}W d Q R X x|D ]
}| |_	qHW |S )Nzhttp:z.retrieving repo key for %s unencrypted from %s)rB   )
Ú
startswithr=   Zwarningr   r?   r)   r-   Z_urlopenr`   rQ   )rC   rB   Zhandler^   rD   r   r   r   r;   ¶   s    


r;   c               @   s,   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdS )r[   c             C   s6   |j | _|j| _d | _|j| _d | _|jd j| _	d S )Nr   )
rE   r<   ZfprrP   r@   Z	timestamprQ   ZuidsZuidrO   )r   r/   r+   r   r   r   r   Á   s    zKey.__init__c             C   s&   t jjrdnd}| jdd … jd|ƒS )NÚ0ó   0é   iøÿÿÿ)r)   ZpycompZPY3r<   Úrjust)r   Zrjr   r   r   rA   É   s    zKey.short_idc             C   s
   | j jƒ S )N)rA   Úlower)r   r   r   r   Úrpm_idÎ   s    z
Key.rpm_idN)r!   r"   r#   r   r$   rA   rg   r   r   r   r   r[   À   s   r[   )N)#Z
__future__r   r   r   Zdnf.i18nr   Ú
contextlibZ
dnf.pycompr)   Zdnf.utilZdnf.yum.miscr   ZloggingrG   rZ   Zgpgr   r   ÚImportErrorr	   ÚobjectrY   Z	getLoggerr=   r0   r8   rF   r:   rU   rV   ÚcontextmanagerrJ   r`   r;   r[   r   r   r   r   Ú<module>   s<   


