-=Pc@sddlZddlZddlZddlZddlZddlZddlZejddZ ejddZ dZ dZ dej jfdYZdS(iNt 0123456789ABCDEFGHIJKLMNOPQRSTUVt ABCDEFGHIJKLMNOPQRSTUVWXYZ234567itNSEC3cBseZdZddddddgZdZd edZd ed Ze eZd d d Z d d Z e e Z d Z RS(sNSEC3 record @ivar algorithm: the hash algorithm number @type algorithm: int @ivar flags: the flags @type flags: int @ivar iterations: the number of iterations @type iterations: int @ivar salt: the salt @type salt: string @ivar next: the next name hash @type next: string @ivar windows: the windowed bitmap list @type windows: list of (window number, string) tuplest algorithmtflagst iterationstsalttnexttwindowsc CsStt|j||||_||_||_||_||_||_dS(N( tsuperRt__init__RRRRRR( tselftrdclasstrdtypeRRRRRR((s;/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/NSEC3.pyR 6s     c Ks/tj|jjtj}|jdkr9d}n|jjd}d}x|jD]\}}g} xt dt |D]j} t || } xQt ddD]@} | d| ?@r| j t jj|d| d| qqWqW|ddj| 7}q[Wd |j|j|j|||fS( Ntt-s hex-codeciiiit s%u %u %u %s %s%s(tbase64t b32encodeRt translatetb32_normal_to_hextlowerRtencodeRtxrangetlentordtappendtdnst rdatatypetto_texttjoinRRR( R torigint relativizetkwRRttexttwindowtbitmaptbitstitbytetj((s;/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/NSEC3.pyR@s ! %c Csa|j}|j}|j}|j} | dkrEd} n| jd} |jjjt} tj| } g} x|j j } | j rPnt j j| j} | dkrt jjdn| dkrt jjdn| j| q| jd}d}d}dgd }g}x| D]} | |kr^qFn| }| d }||kr|dkr|j|dj|d|!fndgd }|}n| d }|d }|d }|d }tt||d |?B|| 65535ti iiii(t get_uint8t get_uint16t get_stringtdecodetupperRtb32_hex_to_normalRt b32decodetgettunescapet is_eol_or_eofRRt from_texttvaluet exceptiont SyntaxErrorRtsortRtchrR(tclsR R ttokRR RRRRRtrdtypesttokentnrdtypeR#toctetst prior_rdtypeR$Rt new_windowtoffsetR'tbit((s;/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/NSEC3.pyR4SsX                &      & &cCst|j}|jtjd|j|j|j||j|jt|j}|jtjd||j|jxP|j D]E\}}|jt ||jt t||j|qWdS(Ns!BBHBs!B( RRtwritetstructtpackRRRRRR9(R tfiletcompressRtlR#R$((s;/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/NSEC3.pytto_wiresc Cstjd|||d!\}}} } |d7}|d8}|||| !j} || 7}|| 8}tjd||\} |d7}|d8}|||| !j} || 7}|| 8}g}x|dkr|dkrtjjdnt||}t||d}|dks2|dkrGtjjd n|d 7}|d 8}||kr|tjjd n||||!j}||7}||8}|j||fqW|||||| | | |S( Ns!BBHBis!BiiisNSEC3 too shorti sbad NSEC3 octetsisbad NSEC3 bitmap length(REtunpacktunwrapRR6t FormErrorRR(R:R R twiretcurrenttrdlenRRRRtslenRtnlenRRR#R?R$((s;/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/NSEC3.pyt from_wires<                cCsKtj}|j|tj}|j|t|j|jS(N(t cStringIOtStringIORJtcmptgetvalue(R tothertb1tb2((s;/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/NSEC3.pyt_cmps     N( t__name__t __module__t__doc__t __slots__R tNonetTrueRR4t classmethodRJRSR[(((s;/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/NSEC3.pyR$s /  (RRTtstringREt dns.exceptionRt dns.rdatat dns.rdatatypet maketransR/RtSHA1tOPTOUTtrdatatRdataR(((s;/usr/lib64/python2.7/site-packages/dns/rdtypes/ANY/NSEC3.pyts