???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
!i"                 @   sF   d dl mZ ddlT ddlT ddlT ddlT d dlZG dd dZdS )    )defaultdict   )*Nc               @   sl   e Zd Zedd Zedd Ze ZdZdZ	e
j
 dfddZdd Zd	d
 Zdd Ze
j
 fddZdS )	keyseriesc               C   s   t tS )N)r   list r   r   /usr/lib/python3.6/keyseries.py<lambda>   s    zkeyseries.<lambda>c               C   s   t tS )N)r   r   r   r   r   r   r	      s    Nc             C   s   || _ || _t|j | _x|j D ]}| jj| x|| j D ]\}}xh|j D ]\}|j	r|j
 op|j
 |k s| j| | j| qT|j
 o|j
 |k sT| j| | j| qTW | j| | j  | j| | j  qBW q$W d S )N)_kdict_contextsetZmissing_zoneszonesadditemsvaluessepdelete_Kappend_Zsort)selfZkdictnowcontextzonealgkeyskr   r   r   __init__   s    zkeyseries.__init__c             c   sb   x\| j D ]R}xL| j| jgD ]<}||kr(qx,|| j D ]\}}x|D ]
}|V  qDW q6W qW qW d S )N)r   r   r   r   )r   r   
collectionr   r   keyr   r   r   __iter__.   s    
zkeyseries.__iter__c             C   s"   x| D ]}t dt|  qW d S )Nz%s)printrepr)r   r   r   r   r   dump7   s    
zkeyseries.dumpc             K   s  |j dd}|sd S |d }|jr>|j}|jp0d}|jp:d}	n|j}|jpLd}|jpVd}	|j }
|j	 }|
 sv|
|kr|j
| |}
| s||kr|j| |}|j }d}|s|jd| |jd| n| s|| |kr| r(|| || | kr(|j|| f| |j|| |	 f| n|s`|j|| | f| |j|| |	 | f| n||k rln|| |kr|j|| f| |j|| |	 f| np|| || | kr|j|| f| |j|| |	 f| n0|j|| | f| |j|| |	 | f| n|j }| s8||	 || krL|j||	 f| nN|sj|j||	 | f| n0||| k rzn |||	 k r|j||	 f| |j|jkr|j|j |}x|dd  D ]}|s|j
d| |jd| |jd| |jd| |j|jkr|j|j q|j }|| }
|j|f| |j
|
f| |j|| f| |j|| |	 f| |j||	 f| |j|jkr|j|j |}qW x|r>|j r>|j ||j k r>|j| jd f| |j| jd	 | jd
 |f|}|j|j	 | f| |j|j |	 f| |j| |}qW |jd| |jd| x"|D ]}|j| jd f| q^W d S )NforceFr      iQ i,  r   Zsettime_pathkeygen_path	randomdevi ' i ' i ' i ' )N)N)N)N)N)N)N)N)getr   Zksk_rollperiodZksk_prepublishZksk_postpublishZzsk_rollperiodZzsk_prepublishZzsk_postpublishZpublishZactivateZ
setpublishZsetactivateZinactiveZsetinactiveZ	setdeleter   keyttlZttlZsetttlZcoverageZcommitr   Zgenerate_successorr   )r   r   policyr   kwargsr&   r!   ZrpZprepubZpostpubpaiZfudgedprevr   r   r   	fixseries;   s    










zkeyseries.fixseriesc             K   s  |j d| j}|j d| jj dd }|j dd}x|D ]}g }|j|}	|pX|	jpXd}|	j}
tj|
}d|ks||d  rt| j	| | dkrtj
| jd	 | jd
 |||
|	jd|	jpdf|}| j	| | j| |j| j	|  d|ks|d  rht| j| | dkrXtj
| jd	 | jd
 |||
|	jd|	jp<df|}| j| | j| |j| j|  x|D ]}x||j D ]p\}}||krq|y| j||	|f| W n@ tk
r } z"td|tj|t|f W Y d d }~X nX q|W qnW q8W d S )Nr   dirZ	keys_pathr&   F.Zkskr   r(   r)   i  ZzskTz	%s/%s: %s)r*   r   r   r,   Z	directory	algorithmdnskeyalgnumlenr   ZgenerateZzsk_keysizer+   r   r   Zksk_keysizer   r3   	ExceptionZalgstrstr)r   Zpoliciesr   r-   r   Zkeys_dirr&   r   collectionsr,   r   r8   r   r    r6   r   er   r   r   enforce_policy   sL    




zkeyseries.enforce_policy)__name__
__module____qualname__r   r   r   r   r   r
   r   timer   r"   r%   r3   r>   r   r   r   r   r      s   	vr   )r<   r   r7   ZkeydictZkeyeventr,   rB   r   r   r   r   r   <module>   s   