????

Your IP : 18.226.34.223


Current Path : /lib/python3.9/site-packages/isc/__pycache__/
Upload File :
Current File : //lib/python3.9/site-packages/isc/__pycache__/dnskey.cpython-39.pyc

a

��g@�@sJddlZddlZddlZddlmZmZGdd�de�ZGdd�d�ZdS)�N)�Popen�PIPEcseZdZ�fdd�Z�ZS)�TimePastcstt|��d|||f�dS)Nz'%s time for key %s (%d) is already past)�superr�__init__)�self�key�prop�value��	__class__��./usr/lib/python3.9/site-packages/isc/dnskey.pyrs�zTimePast.__init__)�__name__�
__module__�__qualname__r�
__classcell__r
r
rrrsrc@s�eZdZdZdZdZdZdVdd�Zdd	�Zd
d�Z	e
dWdd
��Zdd�Ze
dd��Ze
dd��ZdXdd�Ze
dd��Ze
dd��Ze
dd��Ze
dd��Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Ze��fd*d+�Zd,d-�Ze��fd.d/�Zd0d1�Ze��fd2d3�Z d4d5�Z!e��fd6d7�Z"d8d9�Z#e��fd:d;�Z$d<d=�Z%e��fd>d?�Z&d@dA�Z'e��fdBdC�Z(dDdE�Z)dFdG�Z*dHdI�Z+dJdK�Z,dLdM�Z-dNdO�Z.dYdPdQ�Z/dZdRdS�Z0e
dTdU��Z1dS)[�dnskeyztAn individual DNSSEC key.  Identified by path, name, algorithm, keyid.
    Contains a dictionary of metadata events.)	�Created�Publish�Activate�Inactive�Delete�RevokeZ	DSPublish�SyncPublish�
SyncDelete)	N�-P�-Az-Iz-Dz-RNz-Psyncz-Dsync)NZRSAMD5ZDHZDSANZRSASHA1ZNSEC3DSAZNSEC3RSASHA1Z	RSASHA256NZ	RSASHA512NZECCGOSTZECDSAP256SHA256ZECDSAP384SHA384ZED25519ZED448NcCs�t|t�r:t|�dkr:|pd|_|\}}}|�||||�|pLtj�|�pLd|_tj�|�}|�	d�\}}}|dd�}t
|�}t
|�	d�d�}|�||||�dS)N��.�+����r)�
isinstance�tuple�len�_dir�	fromtuple�os�path�dirname�basename�split�int)rrZ	directory�keyttl�name�alg�keyidr
r
rr&s

zdnskey.__init__cs�|�d�r|}|�d�}n|d}d|||f}|j|jr@tjpBd|d}|j|jr^tjp`d|d}||_||_t|�|_t|�|_	||_
t|d�}	|	D]z��ddkr�q����}
|
s�q�|
d	�
�d
vr�d}||_nd}|s�t|
d	�n||_t|
|�d	@d	k�rd
|_q�d|_q�|	��t|d�}t�|_t�|_t�|_t�|_t�|_t�|_t�|_d|_|D]��������rp�ddv�r��qp�fdd�dD�t��g}
tdd�|
D��}�d|���}�|d��d���}||j|<�qptjD]�}d|j|<||jv�rb|�|j|�}||j|<|� |�|j|<|�!|�|j|<|j||j|<n(d|j|<d|j|<d|j|<d|j|<�q�|��dS)Nrz
K%s+%03d+%05d�z.keyz.private�rr�;r!)�inZchZhsr�TFZrUz!#csg|]}��|��qSr
)�find)�.0�c��liner
r�
<listcomp>l�z$dnskey.fromtuple.<locals>.<listcomp>z:= cSsg|]}|dkr|�qS)r"r
)r8�posr
r
rr<mr=)"�endswith�rstripr&r(�sep�keystrr/r-r0r1�fullname�openr,�lower�ttl�close�dict�metadata�_changed�_delete�_times�_fmttime�_timestamps�	_original�_origttl�stripr%�min�lstripr�_PROPS�	parsetime�
formattime�
epochfromtime)rr/r0r1r.rCrBZkey_fileZprivate_fileZkfp�tokensZseptokenZpfpZpunctuation�foundr
r	�tr
r:rr'5s~
��









zdnskey.fromtuplec
Ksf|�dd�}g}d}|jdur0|dt|j�g7}ttjtj�D]V\}}|r>|j|sVq>d}||j	vrr|j	|rrd}|rzdn|j
|}	|||	g7}d}q>|�rb|d|jg||jg}
|s�t
dd�|
��z.t|
ttd	�}|��\}}
|
r�tt|
���Wn:t�y2}z td
|t|�f��WYd}~n
d}~00d|_tjD] }|j||j|<d|j|<�q@dS)N�quietFT�-LZnone�-K�# � ��stdout�stderrzunable to run %s: %s)�getrP�strrF�ziprrT�_OPTSrJrKrMr&rB�print�joinrr�communicate�	ExceptionrNrO)rZsettime_bin�kwargsr[�cmd�firstr	�opt�deleteZwhenZfullcmd�prarb�er
r
r�commit�s>

�
z
dnskey.commitc
KsP|�dd�}|dd|dt|�g}
|r0|
d|g7}
|r>|
�d�|rN|
d|g7}
|rb|
d	t|�g7}
|	r�t�|	�}|
d
t�|�g7}
|
r�t�|
�}|
dt�|
�g7}
|
�|�|s�tdd
�|
��t|
t	t	d�}|�
�\}}|r�tdt|���z$|��d�
d�}t|||�}|WSt�yJ}ztdt|���WYd}~n
d}~00dS)Nr[F�-qr]r\�-rz-fkz-az-brrr^r_r`�unable to generate key: r�asciiz!unable to parse generated key: %s)rcrd�appendr�
timefromepochrVrgrhrrrirj�
splitlines�decode)�cls�
keygen_bin�	randomdevZkeys_dirr/r0ZkeysizerArF�publish�activaterkr[�
keygen_cmdrZrprarbrB�newkeyrqr
r
r�generate�s:



zdnskey.generatecKs�|�dd�}|��s td|��|dd|jd|jg}|jrL|dt|j�g7}|r\|d|g7}|rp|d	t|�g7}|s�td
d�|��t	|t
t
d�}|��\}}	|	r�td
|	��z(|��d�
d�}
t|
|j|j�}|WStd|��Yn0dS)Nr[Fz'predecessor key %s has no inactive datersr]z-Sr\rtz-ir^r_r`rurrvz'unable to generate successor for key %s)rc�inactiverjr&rBrFrdrgrhrrriryrzr)rr|r}Z
prepublishrkr[r�rprarbrBr�r
r
r�generate_successor�s,zdnskey.generate_successorcCs0d}|tttj��vr tj|}|r(|Sd|S)Nz%03d)�ranger%r�	_ALGNAMES)r0r/r
r
r�algstr�s
z
dnskey.algstrcCs8|sdS|��}ztj�|�WSty2YdS0dS�N)�upperrr��index�
ValueError)r0r
r
r�algnum�sz
dnskey.algnumcCs|�|p|j�Sr�)r�r0)rr0r
r
r�algnameszdnskey.algnamecCs
t�|�Sr�)�time�gmtime)�secsr
r
rrxszdnskey.timefromepochcCst�|d�S�Nz%Y%m%d%H%M%S)r��strptime)�stringr
r
rrUszdnskey.parsetimecCs
t�|�Sr�)�calendarZtimegm�rZr
r
rrWszdnskey.epochfromtimecCst�d|�Sr�)r��strftimer�r
r
rrVszdnskey.formattimecKs�|�dd�}|j||krdS|j|durP|j||krP|sPt|||j|��|dur�|j|durjdnd|j|<d|j|<d|j|<d|j|<d|j|<dS|�|�}||j|<||j|<|�	|�|j|<|j||j|kr�dnd|j|<dS)N�forceFT)
rcrNrOrrJrKrLrMrxrV)rr	r��nowrkr�rZr
r
r�setmetas6����






��zdnskey.setmetacCs
|j|Sr�)rL�rr	r
r
r�gettime2szdnskey.gettimecCs
|j|Sr�)rMr�r
r
r�
getfmttime5szdnskey.getfmttimecCs
|j|Sr��rNr�r
r
r�gettimestamp8szdnskey.gettimestampcCs
|jdS)Nrr��rr
r
r�created;szdnskey.createdcCs
|jdS�Nrr�r�r
r
r�syncpublish>szdnskey.syncpublishcKs|jd||fi|��dSr��r��rr�r�rkr
r
r�setsyncpublishAszdnskey.setsyncpublishcCs
|jdS�Nrr�r�r
r
rr~Dszdnskey.publishcKs|jd||fi|��dSr�r�r�r
r
r�
setpublishGszdnskey.setpublishcCs
|jdS�Nrr�r�r
r
rrJszdnskey.activatecKs|jd||fi|��dSr�r�r�r
r
r�setactivateMszdnskey.setactivatecCs
|jdS�Nrr�r�r
r
r�revokePsz
dnskey.revokecKs|jd||fi|��dSr�r�r�r
r
r�	setrevokeSszdnskey.setrevokecCs
|jdS�Nrr�r�r
r
rr�Vszdnskey.inactivecKs|jd||fi|��dSr�r�r�r
r
r�setinactiveYszdnskey.setinactivecCs
|jdS�Nrr�r�r
r
rro\sz
dnskey.deletecKs|jd||fi|��dSr�r�r�r
r
r�	setdelete_szdnskey.setdeletecCs
|jdS�Nrr�r�r
r
r�
syncdeletebszdnskey.syncdeletecKs|jd||fi|��dSr�r�r�r
r
r�
setsyncdeleteeszdnskey.setsyncdeletecCsR|dus|j|krdS|jdur0|j|_||_n|j|krHd|_||_n||_dSr�)rFrP)rrFr
r
r�setttlhs

z
dnskey.setttlcCs|jr
dSdS)N�KSK�ZSK)rAr�r
r
r�keytypetszdnskey.keytypecCsd|j|��|jfS)Nz
%s/%s/%05d)r/r�r1r�r
r
r�__str__ws�zdnskey.__str__cCs"d|j|��|j|jrdndfS)Nz%s/%s/%05d (%s)r�r�)r/r�r1rAr�r
r
r�__repr__{s
��zdnskey.__repr__cCs|��p|��p|��Sr�)rr~r�r�r
r
r�date�szdnskey.datecCs@|j|jkr|j|jkS|j|jkr0|j|jkS|��|��kSr�)r/r0r�)r�otherr
r
r�__lt__�s
z
dnskey.__lt__cCs�dd�}|s|}tt���}|��}|��}|s4dS|sT||krP|dt|��dS||krh||krhdS||kr�|dt|�t�|j�p�df�dS||kr�|dt|��dS|jdur�|||jkr�|d	t|�t�|j�p�df�dSdS)
Nc_sdSr�r
��argsrkr
r
r�noop�r=z!dnskey.check_prepub.<locals>.noopFzFWARNING: Key %s is scheduled for
	 activation but not for publication.Tz�WARNING: %s is scheduled to be
	 published and activated at the same time. This
	 could result in a coverage gap if the zone was
	 previously signed. Activation should be at least
	 %s after publication.zone DNSKEY TTLz0WARNING: Key %s is active before it is publishedz�WARNING: Key %s is activated too soon
	 after publication; this could result in coverage 
	 gaps due to resolver caches containing old data.
	 Activation should be at least %s after
	 publication.)r-r�rr~�reprr�durationrF)r�outputr�r��arpr
r
r�check_prepub�sH������zdnskey.check_prepubcCs�dd�}|dur|}|dur"|j}|dur>|dt|��d}t��}|��}|��}|s^dS|s~||krz|dt|��dS||kr�||kr�dS||kr�|dt|��dS|||kr�|d	t|�t�|�f�dSdS)
Nc_sdSr�r
r�r
r
rr��r=z"dnskey.check_postpub.<locals>.noopz"WARNING: Key %s using default TTL.�QFzEWARNING: Key %s is scheduled for
	 deletion but not for inactivation.Tz@WARNING: Key %s is scheduled for
	 deletion before inactivation.z�WARNING: Key %s scheduled for
	 deletion too soon after deactivation; this may 
	 result in coverage gaps due to resolver caches
	 containing old data.  Deletion should be at least
	 %s after inactivation.)rFr�r�ror�rr�)rr�Ztimespanr�r��d�ir
r
r�
check_postpub�s@���zdnskey.check_postpubcCsn|sdSgd�}g}|D]J}||d||d}}|dkr|�d||d|dkrXdndf�qd�|�S)N))Zyeari�3�)Zmonthi�')Zdayr�)Zhouri)Zminute�<)�secondr!r!rz%d %s%s�sr2z, )rwrh)r�Zunitsr�Zunit�vr
r
rr��s&zdnskey.duration)NN)NN)N)N)NN)2rrr�__doc__rTrfr�rr'rr�classmethodr�r��staticmethodr�r�r�rxrUrWrVr�r�r�r�r�r�r�r�r~r�rr�r�r�r�r�ror�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rrsj
M%�+ 

	





1
-r)	r(r�r��
subprocessrrrjrrr
r
r
r�<module>s