Viewing File: /usr/lib/python2.7/site-packages/isc/dnskey.pyo


#u|jc@sgddlZddlZddlZddlmZmZdefdYZdddYZdS(iN(tPopentPIPEtTimePastcBseZdZRS(cCs'tt|jd|||fdS(Ns'%s time for key %s (%d) is already past(tsuperRt__init__(tselftkeytproptvalue((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRs(t__name__t
__module__R(((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRstdnskeycBseZdZdGZdIZdJZdHdHdZd Zd!Z	e
dHdHd"Zd#Ze
d$Ze
d%ZdHd&Ze
d'Ze
d(Ze
d)Ze
d*Zd+Zd,Zd-Zd.Zd/Zd0Zejd1Zd2Zejd3Zd4Zejd5Z d6Z!ejd7Z"d8Z#ejd9Z$d:Z%ejd;Z&d<Z'ejd=Z(d>Z)d?Z*d@Z+dAZ,dBZ-dCZ.dHdDZ/dHdHdEZ0e
dFZ1RS(KstAn individual DNSSEC key.  Identified by path, name, algorithm, keyid.
    Contains a dictionary of metadata events.tCreatedtPublishtActivatetInactivetDeletetRevoket	DSPublishtSyncPublisht
SyncDeletes-Ps-As-Is-Ds-Rs-Psyncs-DsynctRSAMD5tDHtDSAtECCtRSASHA1tNSEC3DSAtNSEC3RSASHA1t	RSASHA256t	RSASHA512tECCGOSTtECDSAP256SHA256tECDSAP384SHA384tED25519tED448c	Cst|trXt|dkrX|p*d|_|\}}}|j||||n|pstjj|psd|_tjj|}|j	d\}}}|dd!}t
|}t
|j	dd}|j||||dS(Nit.t+iii(t
isinstancettupletlent_dirt	fromtupletostpathtdirnametbasenametsplittint(RRt	directorytkeyttltnametalgtkeyid((s./usr/lib/python2.7/site-packages/isc/dnskey.pyR&s!!
cCs|jdr'|}|jd}n
|d}d|||f}|j|jr\tjp_d|d}|j|jrtjpd|d}||_||_t||_t||_	||_
t|d}	x|	D]}
|
ddkrqn|
j}|sqn|d	j
dkr=d
}||_n%d}|sYt|d	n||_t||d	@d	krt|_qt|_qW|	jt|d}
t|_t|_t|_t|_t|_t|_t|_d|_x|
D]}
|
j}
|
s|
ddkrAqngdD]}|
j|^qHt|
g}tg|D]}|dkrz|^qz}|
| j}|
|j dj}||j|<qWxt!j"D]}t|j|<||jkrg|j#|j|}||j|<|j$||j|<|j%||j|<|j||j|<qd|j|<d|j|<d|j|<d|j|<qW|
jdS(NR#s
K%s+%03d+%05dts.keys.privatetrit;itintchthsiitrUs!#s:= i(sinR9R:(&tendswithtrstripR(R*tseptkeystrR2R/R3R4tfullnametopenR.tlowertttltTruetFalsetclosetdicttmetadatat_changedt_deletet_timest_fmttimet_timestampst	_originaltNonet_origttltstriptfindR'tmintlstripRt_PROPSt	parsetimet
formattimet
epochfromtime(RR2R3R4R1R@R?tkey_filetprivate_filetkfptlinettokenstseptokentpfptctpunctuationtpostfoundRRtt((s./usr/lib/python2.7/site-packages/isc/dnskey.pyR)5sv
''			


	
/+




cKs|jdt}g}t}|jdk	rI|dt|jg7}nxttj	tj
D]\}}|s_|j|rq_nt}||jkr|j|rt}n|rdn
|j
|}	|||	g7}t}q_W|r|d|jg||jg}
|s%ddj|
GHnyIt|
dtdt}|j\}}
|
rmtt|
nWn/tk
r}td	|t|fnXd|_x5tj	D]'}|j||j|<t|j|<qWndS(
Ntquiets-Ltnones-Ks# t tstdouttstderrsunable to run %s: %s(tgetRERDRPROtstrRCtzipRRUt_OPTSRIRJRLR(R?tjoinRRtcommunicatet	ExceptionRMRN(Rtsettime_bintkwargsRetcmdtfirstRtopttdeletetwhentfullcmdtpRhRite((s./usr/lib/python2.7/site-packages/isc/dnskey.pytcommits<"	
 	cKs|jdt}|dd|dt|g}
|rI|
d|g7}
n|r_|
jdn|rx|
d|g7}
n|r|
dt|g7}
n|	rtj|	}|
d	tj|g7}
n|
rtj|
}|
d
tj|
g7}
n|
j||s!ddj|
GHnt|
d
t	dt	}|j
\}}|rjtdt|ny3|jdj
d}t|||}|SWn)tk
r}tdt|nXdS(NRes-qs-Ks-Ls-rs-fks-as-bs-Ps-As# RgRhRisunable to generate key: itasciis!unable to parse generated key: %s(RjRERktappendRt
timefromepochRWRnRRRoRpt
splitlinestdecode(tclst
keygen_bint	randomdevtkeys_dirR2R3tkeysizeR>RCtpublishtactivateRrRet
keygen_cmdRdRyRhRiR?tnewkeyRz((s./usr/lib/python2.7/site-packages/isc/dnskey.pytgenerates:
cKsa|jdt}|js1td|n|dd|jd|jg}|jrt|dt|jg7}n|r|d|g7}n|r|dt|g7}n|sd	d
j|GHnt	|dt
dt
}|j\}}	|	r
td
|	ny9|jdj
d}
t|
|j|j}|SWntd|nXdS(NRes'predecessor key %s has no inactive dates-qs-Ks-Ss-Ls-rs-is# RgRhRisunable to generate key: iR|s'unable to generate successor for key %s(RjREtinactiveRpR(R?RCRkRnRRRoRRR(RRRt
prepublishRrReRRyRhRiR?R((s./usr/lib/python2.7/site-packages/isc/dnskey.pytgenerate_successors,	cCsCd}|tttjkr1tj|}n|r;|Sd|S(Ns%03d(ROtrangeR'Rt	_ALGNAMES(R3R2((s./usr/lib/python2.7/site-packages/isc/dnskey.pytalgstrscCsC|s
dS|j}ytjj|SWntk
r>dSXdS(N(ROtupperRRtindext
ValueError(R3((s./usr/lib/python2.7/site-packages/isc/dnskey.pytalgnums
cCs|j|p|jS(N(RR3(RR3((s./usr/lib/python2.7/site-packages/isc/dnskey.pytalgnamescCs
tj|S(N(ttimetgmtime(tsecs((s./usr/lib/python2.7/site-packages/isc/dnskey.pyR~scCstj|dS(Ns%Y%m%d%H%M%S(Rtstrptime(tstring((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRVscCs
tj|S(N(tcalendarttimegm(Rd((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRXscCstjd|S(Ns%Y%m%d%H%M%S(Rtstrftime(Rd((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRWscKsL|jdt}|j||kr)dS|j|dk	rr|j||krr|rrt|||j|n|dkr|j|dkrtnt|j|<t|j|<d|j|<d|j	|<d|j
|<dS|j|}||j|<||j	|<|j||j
|<|j||j|kr;tnt|j|<dS(Ntforce(
RjRERMRNRORRDRIRJRKRLR~RW(RRRtnowRrRRd((s./usr/lib/python2.7/site-packages/isc/dnskey.pytsetmetas$&





cCs|j|S(N(RK(RR((s./usr/lib/python2.7/site-packages/isc/dnskey.pytgettime2scCs|j|S(N(RL(RR((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt
getfmttime5scCs|j|S(N(RM(RR((s./usr/lib/python2.7/site-packages/isc/dnskey.pytgettimestamp8scCs|jdS(NR(RM(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pytcreated;scCs|jdS(NR(RM(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pytsyncpublish>scKs|jd|||dS(NR(R(RRRRr((s./usr/lib/python2.7/site-packages/isc/dnskey.pytsetsyncpublishAscCs|jdS(NR
(RM(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRDscKs|jd|||dS(NR
(R(RRRRr((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt
setpublishGscCs|jdS(NR(RM(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRJscKs|jd|||dS(NR(R(RRRRr((s./usr/lib/python2.7/site-packages/isc/dnskey.pytsetactivateMscCs|jdS(NR(RM(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pytrevokePscKs|jd|||dS(NR(R(RRRRr((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt	setrevokeSscCs|jdS(NR(RM(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRVscKs|jd|||dS(NR(R(RRRRr((s./usr/lib/python2.7/site-packages/isc/dnskey.pytsetinactiveYscCs|jdS(NR(RM(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRv\scKs|jd|||dS(NR(R(RRRRr((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt	setdelete_scCs|jdS(NR(RM(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt
syncdeletebscKs|jd|||dS(NR(R(RRRRr((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt
setsyncdeleteescCsw|dks|j|krdS|jdkrF|j|_||_n-|j|krjd|_||_n	||_dS(N(RORCRP(RRC((s./usr/lib/python2.7/site-packages/isc/dnskey.pytsetttlhs	cCs|jr
dSdS(NtKSKtZSK(R>(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pytkeytypetscCsd|j|j|jfS(Ns
%s/%s/%05d(R2RR4(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt__str__wscCs/d|j|j|j|jr'dndfS(Ns%s/%s/%05d (%s)RR(R2RR4R>(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt__repr__{scCs"|jp!|jp!|jS(N(RRR(R((s./usr/lib/python2.7/site-packages/isc/dnskey.pytdatescCsZ|j|jkr"|j|jkS|j|jkrD|j|jkS|j|jkS(N(R2R3R(Rtother((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt__lt__s
cCsKd}|s|}nttj}|j}|j}|sLtS|sy||kru|dt|ntS||kr||krtS||kr|dt|tj|j	pdftS||kr|dt|tS|j	dk	rG|||j	krG|dt|tj|j	p;dftStS(Nc_sdS(N((targsRr((s./usr/lib/python2.7/site-packages/isc/dnskey.pytnoopssFWARNING: Key %s is scheduled for
	 activation but not for publication.sWARNING: %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.sone DNSKEY TTLs0WARNING: Key %s is active before it is publishedsWARNING: 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/RRRREtreprRDRtdurationRCRO(RtoutputRRtaRy((s./usr/lib/python2.7/site-packages/isc/dnskey.pytcheck_prepubs<			"	cCsd}|dkr|}n|dkr6|j}ntj}|j}|j}|sdtS|s||kr|dt|ntS||kr||krtS||kr|dt|tS|||kr|dt|tj	|ftStS(Nc_sdS(N((RRr((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRssEWARNING: Key %s is scheduled for
	 deletion but not for inactivation.s@WARNING: Key %s is scheduled for
	 deletion before inactivation.sWARNING: 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.(
RORCRRvRRERRDRR(RRttimespanRRtdti((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt
check_postpubs4		cCs|s
dSddfddfddfddfddg}g}xj|D]b}||d||d}}|dkrG|jd
||d|dkrdndfqGqGWdj|S(Ntyeari<iimtmonthitdaythourtminutetsecondiis%d %s%stsR5s, iiQi3iiQi'iiQi(Ri<(Ri(ROR}Rn(RtunitsRtunittv((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRs					
7(	sCreatedsPublishsActivatesInactivesDeletesRevokeRsSyncPublishs
SyncDeleteN(	Ns-Ps-As-Is-Ds-RNs-Psyncs-Dsync(NRRRRRRRRNRNRRR R!R"(2R	R
t__doc__RURORmRRR)R{tclassmethodRRtstaticmethodRRRR~RVRXRWRRRRRRRRRRRRRRRRRvRRRRRRRRRRRR(((s./usr/lib/python2.7/site-packages/isc/dnskey.pyRsb	M	%*	 
																		1)((	R*RRt
subprocessRRRpRR(((s./usr/lib/python2.7/site-packages/isc/dnskey.pyt<module>s

Back to Directory File Manager