a àMÒeëã@sžddlZddlZddlZddlZddlZddlZddlZddlZe   dd¡Z e   dd¡Z dZ dZejjGdd„dejjjƒƒZejjGdd„dejjƒƒZdS) éNs 0123456789ABCDEFGHIJKLMNOPQRSTUVs ABCDEFGHIJKLMNOPQRSTUVWXYZ234567éc@seZdZdZdS)ÚBitmapÚNSEC3N)Ú__name__Ú __module__Ú __qualname__Ú type_name©r r ú9/usr/lib/python3.9/site-packages/dns/rdtypes/ANY/NSEC3.pyr*srcsjeZdZdZgd¢Z‡fdd„Zdd„Zdd d „Zedd d „ƒZ ddd„Z eddd„ƒZ ddd„Z ‡Z S)rz NSEC3 record)Ú algorithmÚflagsÚ iterationsÚsaltÚnextÚwindowsc sttƒ ||¡| |¡|_| |¡|_| |¡|_| |dd¡|_| |dd¡|_ t |t ƒsdt |ƒ}t |j ƒ|_ dS)NTéÿ)ÚsuperÚ__init__Z _as_uint8r r Z _as_uint16r Z _as_bytesrrÚ isinstancerÚtupler) ÚselfÚrdclassÚrdtyper r r rrr©Ú __class__r r r5s    zNSEC3.__init__cCs(t |j¡ t¡ ¡ ¡}| d¡}|S)Nú=)Úbase64Z b32encoderÚ translateÚb32_normal_to_hexÚlowerÚdecodeÚrstrip)rrr r r Ú _next_textBs zNSEC3._next_textNTcKsP| ¡}|jdkrd}nt |j¡ ¡}t|jƒ ¡}d|j|j |j |||fS)Nóú-z%u %u %u %s %s%s) r"rÚbinasciiZhexlifyr rrÚto_textr r r )rÚoriginÚ relativizeÚkwrrÚtextr r r r&Gs úz NSEC3.to_textc Cs¼| ¡}| ¡}| ¡} | ¡} | dkr.d} nt |  d¡¡} | ¡ d¡ ¡ t¡} |   d¡rjt  d¡‚t | ƒddkr’| ddt | ƒd7} t   | ¡} t |¡} |||||| | | | ƒS)Nr$r#Úasciió=zIncorrect paddingér)Z get_uint8Z get_uint16Z get_stringr%Z unhexlifyÚencodeÚupperrÚb32_hex_to_normalÚendswithÚErrorÚlenrZ b32decoderÚ from_text) ÚclsrrÚtokr'r(Z relativize_tor r r rrÚbitmapr r r r4Ws    zNSEC3.from_textFc Cspt|jƒ}| t d|j|j|j|¡¡| |j¡t|jƒ}| t d|¡¡| |j¡t |j ƒ  |¡dS)Nz!BBHBz!B) r3rÚwriteÚstructÚpackr r r rrrZto_wire)rÚfileÚcompressr'Z canonicalizeÚlr r r Ú_to_wirels    zNSEC3._to_wirec Cs@| d¡\}}}| ¡}| ¡} t |¡} |||||||| | ƒS)Nz!BBH)Z get_structZget_counted_bytesrÚfrom_wire_parser) r5rrÚparserr'r r r rrr7r r r r?us  zNSEC3.from_wire_parsercCstj | ¡|¡S)N)ÚdnsÚnamer4r")rr'r r r Ú next_name}szNSEC3.next_name)NT)NTN)NNF)N)N)rrrÚ__doc__Ú __slots__rr"r&Ú classmethodr4r>r?rCÚ __classcell__r r rr r/s  ÿ   r)rr%r9Z dns.exceptionrAZ dns.immutableZ dns.rdataZ dns.rdatatypeZdns.rdtypes.utilÚbytesÚ maketransr0rZSHA1ZOPTOUTZ immutableZrdtypesÚutilrZrdataZRdatarr r r r Ús&ÿÿ