a àMÒec ã@sPddlZddlZddlZddlZddlZddlZejjGdd„dejj ƒƒZ dS)éNcsfeZdZdZgd¢ZdddddœZ‡fdd„Zdd d „Zedd d„ƒZ ddd„Z eddd„ƒZ ‡Z S)ÚDSBasez-Base class for rdata that is like a DS record)Úkey_tagÚ algorithmÚ digest_typeÚdigestéé é0)éééécs˜tƒ ||¡| |¡|_tjj |¡|_tjj  |  |¡¡|_ |  |¡|_ z"t|j ƒ|j|j krltdƒ‚Wn$ty’|j dkrŽtdƒ‚Yn0dS)Nz+digest length inconsistent with digest typerzdigest type 0 is reserved)ÚsuperÚ__init__Z _as_uint16rÚdnsZ dnssectypesZ AlgorithmZmakerZDSDigestZ _as_uint8rZ _as_bytesrÚlenÚ_digest_length_by_typeÚ ValueErrorÚKeyError)ÚselfÚrdclassÚrdtyperrrr©Ú __class__©ú6/usr/lib/python3.9/site-packages/dns/rdtypes/dsbase.pyr*s     zDSBase.__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_text7s üzDSBase.to_textc Cs@| ¡}| ¡}| ¡} | ¡ ¡} t | ¡} |||||| | ƒS)N)Z get_uint16Z get_stringZ get_uint8Z!concatenate_remaining_identifiersÚencodeÚbinasciiZ unhexlify) ÚclsrrÚtokr!r"Z relativize_torrrrrrrÚ from_textAs   zDSBase.from_textFcCs0t d|j|j|j¡}| |¡| |j¡dS)Nú!HBB)ÚstructÚpackrrrÚwriter)rÚfileÚcompressr!Z canonicalizeÚheaderrrrÚ_to_wireLs zDSBase._to_wirecCs0| d¡}| ¡}||||d|d|d|ƒS)Nr*rr r )Z get_structZ get_remaining)r'rrÚparserr!r0rrrrÚfrom_wire_parserQs zDSBase.from_wire_parser)NT)NTN)NNF)N) Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__rrr$Ú classmethodr)r1r3Ú __classcell__rrrrrsü ÿ r) r&r+Zdns.dnssectypesrZ dns.immutableZ dns.rdataZ dns.rdatatypeZ immutabler ZRdatarrrrrÚs