???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................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<   


