a àMÒeY ã@sPddlZddlZddlZddlZddlZddlZejjGdd„dejj ƒƒZ dS)éNcsXeZdZdZgd¢Z‡fdd„Zddd„Zedd d „ƒZdd d „Z eddd„ƒZ ‡Z S)ÚZONEMDz ZONEMD record)ÚserialÚschemeÚhash_algorithmÚdigestcsœtƒ ||¡| |¡|_tjj |¡|_tjj  |¡|_ |  |¡|_ |jdkrXt dƒ‚|j dkrjt dƒ‚tjj |j ¡}|r˜|ƒjt|j ƒkr˜t dƒ‚dS)Nrzscheme 0 is reservedzhash_algorithm 0 is reservedz.digest length inconsistent with hash algorithm)ÚsuperÚ__init__Z _as_uint32rÚdnsZ zonetypesZ DigestSchemeZmakerZDigestHashAlgorithmrZ _as_bytesrÚ ValueErrorZ_digest_hashersÚgetZ digest_sizeÚlen)ÚselfÚrdclassÚrdtyperrrrZhasher©Ú __class__©ú:/usr/lib/python3.9/site-packages/dns/rdtypes/ANY/ZONEMD.pyrs    zZONEMD.__init__NTcKs@| ¡}| dd¡}d|j|j|jtjj|jfd|i|¤ŽfS)NÚ chunksizeé€z %d %d %d %s) ÚcopyÚpoprrrr ÚrdataZ_hexifyr)r ÚoriginÚ relativizeÚkwrrrrÚto_text$s üzZONEMD.to_textc Cs@| ¡}| ¡}| ¡} | ¡ ¡} t | ¡} |||||| | ƒS)N)Z get_uint32Z get_uint8Z!concatenate_remaining_identifiersÚencodeÚbinasciiZ unhexlify) ÚclsrrÚtokrrZ relativize_torrrrrrrÚ from_text.s   zZONEMD.from_textFcCs0t d|j|j|j¡}| |¡| |j¡dS)Nú!IBB)ÚstructÚpackrrrÚwriter)r ÚfileÚcompressrZ canonicalizeÚheaderrrrÚ_to_wire9s zZONEMD._to_wirecCs0| d¡}| ¡}||||d|d|d|ƒS)Nr"réé)Z get_structZ get_remaining)rrrÚparserrr(rrrrÚfrom_wire_parser>s zZONEMD.from_wire_parser)NT)NTN)NNF)N) Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__rrÚ classmethodr!r)r-Ú __classcell__rrrrr s  ÿ r) rr#Z dns.immutabler Z dns.rdataZ dns.rdatatypeZ dns.zonetypesZ immutablerZRdatarrrrrÚs