a Γi"@sFddlmZddlTddlTddlTddlTddlZGdddZdS)) defaultdict)*Nc@sleZdZeddZeddZeZdZdZ e dfddZ ddZ d d Z d d Ze fd dZdS) keyseriescCsttSNrlistr r 1/usr/lib/python3.9/site-packages/isc/keyseries.pyzkeyseries.cCsttSrrr r r r r r NcCs||_||_t||_|D]}|j|||D]\}}|D]\}|j r| rl| |ks|j || |qN| r| |ksN|j || |qN|j |||j ||q>q"dSr)_kdict_contextsetmissing_zoneszonesadditemsvaluessepdelete_Kappend_Zsort)selfZkdictnowcontextzonealgkeyskr r r __init__s   zkeyseries.__init__ccsR|jD]F}|j|jfD]4}||vr$q||D]\}}|D] }|Vq|j}|jp0d}|jp:d} n|j}|jpLd}|jpVd} |} | } | rt| |kr| ||} | r| |kr| ||} | } d} |s|j d i||jd i|n| r| || kr@| s2| |||| kr2|j | |fi||j| || fi|q| sr|j ||| fi||j||| | fi|n| |kr~n| || kr|j | |fi||j| || fi|n| |||| kr|j | |fi||j| || fi|n8|j ||| fi||j||| | fi|n|}|r`| | || krx|j| | fi|nV|s|j|| | fi|n4||| krn$|| | kr|j| | fi||j|jkr||j|}|ddD]}|sb|j d i||j d i||j di||jdi||j|jkr||jq| } | |} |j | fi||j | fi||j | |fi||j| || fi||j| | fi||j|jkr||j|}q|r| r| ||jkr|j|jdfi||j|jd|jd |fi|}|j | |fi||j| | fi||||}q|j di||jdi||D]}|j|jdfi|qdS)NforceFri'i,rZ settime_path keygen_path randomdev)N)N)N)N)N)N)N)N)getrZksk_rollperiodZksk_prepublishZksk_postpublishZzsk_rollperiodZzsk_prepublishZzsk_postpublishZpublishZactivateZ setpublishZ setactivateZinactiveZ setinactiveZ setdeleterkeyttlZttlZsetttlZcoverageZcommitrZgenerate_successorr)rr!policyrkwargsr*r%ZrpZprepubZpostpubpaiZfudgedprevr r r fixseries;s                 zkeyseries.fixseriesc Ks|d|j}|d|jdd}|dd}|D]}g}||} |pT| jpTd}| j} t| } d|vsv|dst|j || dkrtj |jd |jd ||| | j d| j pd fi|} |j ||  | | |j |d |vs|d sht|j|| dkrXtj |jd |jd ||| | jd | j p8d fi|} |j||  | | |j||D]} | D]v\}}|| krqxz|j|| |fi|WnBty}z(td|t| t|fWYd}~n d}~00qxqlq4dS)NrdirZ keys_pathr*F.Zkskrr+r,iZzskTz %s/%s: %s)r-rrr/Z directory algorithmdnskeyalgnumlenrZgenerateZ zsk_keysizer.rrZ ksk_keysizerr6 ExceptionZalgstrstr)rZpoliciesrr0rZkeys_dirr*r collectionsr/r r;r"r$r9r!er r r enforce_policysV        zkeyseries.enforce_policy)__name__ __module__ __qualname__rrrrrr rtimer#r&r)r6rAr r r r rs   vr)r?rr:ZkeydictZkeyeventr/rErr r r r  s