§
    Hºi8-  ã                   óx  — d Z ddlZddlZddlZddlZddlZddlZddlZddl	Zddl
Z G d„ dej        j        ¦  «        Z G d„ dej        j        ¦  «        Z G d„ dej        j        ¦  «        Z G d	„ d
ej        j        ¦  «        Z G d„ dej        j        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zej                             d¦  «        Zej                             d¦  «        Zej                             d¦  «        Zej                             d¦  «        Zej                             d¦  «        Zej                             d¦  «        Zej                             d¦  «        Zej                             d¦  «        Zej                             d¦  «        Z ej                             d¦  «        Z!eZ"eded ed!ed"ed#ed$ed%e d!ed"e!d&i
Z# G d'„ d(¦  «        Z$ G d)„ d*¦  «        Z% G d+„ d,¦  «        Z&d5d-„Z'd.„ Z(d6d0„Z)	 d7d1„Z*d2„ Z+ G d3„ d4¦  «        Z,dS )8zDNS TSIG support.é    Nc                   ó   — e Zd ZdZdS )ÚBadTimez8The current time is not within the TSIG's validity time.N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úM/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/tsig.pyr   r       s   € € € € € ØBÐBÐBÐBr   r   c                   ó   — e Zd ZdZdS )ÚBadSignaturez#The TSIG signature fails to verify.Nr   r
   r   r   r   r   $   s   € € € € € Ø-Ð-Ð-Ð-r   r   c                   ó   — e Zd ZdZdS )ÚBadKeyz2The TSIG record owner name does not match the key.Nr   r
   r   r   r   r   (   s   € € € € € Ø<Ð<Ð<Ð<r   r   c                   ó   — e Zd ZdZdS )ÚBadAlgorithmz*The TSIG algorithm does not match the key.Nr   r
   r   r   r   r   ,   ó   € € € € € Ø4Ð4Ð4Ð4r   r   c                   ó   — e Zd ZdZdS )Ú	PeerErrorz;Base class for all TSIG errors generated by the remote peerNr   r
   r   r   r   r   0   s   € € € € € ØEÐEÐEÐEr   r   c                   ó   — e Zd ZdZdS )Ú
PeerBadKeyz$The peer didn't know the key we usedNr   r
   r   r   r   r   4   s   € € € € € Ø.Ð.Ð.Ð.r   r   c                   ó   — e Zd ZdZdS )ÚPeerBadSignaturez*The peer didn't like the signature we sentNr   r
   r   r   r   r   8   r   r   r   c                   ó   — e Zd ZdZdS )ÚPeerBadTimez%The peer didn't like the time we sentNr   r
   r   r   r   r   <   s   € € € € € Ø/Ð/Ð/Ð/r   r   c                   ó   — e Zd ZdZdS )ÚPeerBadTruncationz=The peer didn't like amount of truncation in the TSIG we sentNr   r
   r   r   r   r   @   s   € € € € € ØGÐGÐGÐGr   r   zHMAC-MD5.SIG-ALG.REG.INTz	hmac-sha1zhmac-sha224zhmac-sha256zhmac-sha256-128zhmac-sha384zhmac-sha384-192zhmac-sha512zhmac-sha512-256úgss-tsigé   é   é    é   é0   é   é@   é€   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚGSSTSigaG  
    GSS-TSIG TSIG implementation.  This uses the GSS-API context established
    in the TKEY message handshake to sign messages using GSS-API message
    integrity codes, per the RFC.

    In order to avoid a direct GSSAPI dependency, the keyring holds a ref
    to the GSSAPI object required, rather than the key itself.
    c                 ó0   — || _         d| _        d| _        d S )Nr   r   )Úgssapi_contextÚdataÚname)Úselfr*   s     r   Ú__init__zGSSTSig.__init__k   s   € Ø,ˆÔØˆŒ	ØˆŒ	ˆ	ˆ	r   c                 ó&   — | xj         |z  c_         d S ©N)r+   ©r-   r+   s     r   ÚupdatezGSSTSig.updatep   s   € Øˆ	Œ	�TÑˆ	Œ	ˆ	ˆ	r   c                 ó@   — | j                              | j        ¦  «        S r0   )r*   Úget_signaturer+   )r-   s    r   ÚsignzGSSTSig.signs   s   € àÔ"×0Ò0°´Ñ;Ô;Ð;r   c                 ón   — 	 | j                              | j        |¦  «        S # t          $ r t          ‚w xY wr0   )r*   Úverify_signaturer+   Ú	Exceptionr   )r-   Úexpecteds     r   ÚverifyzGSSTSig.verifyw   sC   € ð	àÔ&×7Ò7¸¼	À8ÑLÔLÐLøÝð 	ð 	ð 	åÐð	øøøs   ‚" ¢4N)r   r   r   r	   r.   r2   r5   r:   r
   r   r   r(   r(   a   sZ   € € € € € ðð ðð ð ð
ð ð ð<ð <ð <ðð ð ð ð r   r(   c                   ó0   — e Zd Zd„ Zd„ Zed„ ¦   «         ZdS )ÚGSSTSigAdapterc                 ó   — || _         d S r0   )Úkeyring)r-   r>   s     r   r.   zGSSTSigAdapter.__init__�   s   € ØˆŒˆˆr   c                 ó¼   — || j         v rR| j         |         }t          |t          ¦  «        r.|j        t          k    r|rt
                               |||¦  «         |S d S r0   )r>   Ú
isinstanceÚKeyÚ	algorithmÚGSS_TSIGr<   Úparse_tkey_and_step)r-   ÚmessageÚkeynameÚkeys       r   Ú__call__zGSSTSigAdapter.__call__„   se   € Ø�d”lÐ"Ð"Ø”,˜wÔ'ˆCÝ˜#�sÑ#Ô#ð N¨¬½Ò(AÐ(AØð NÝ"×6Ò6°s¸GÀWÑMÔMÐMØˆJà�4r   c                 óö   — 	 |                      |j        |t          j        j        t          j        j        ¦  «        }|r)|d         j        }|j        }| 	                    |¦  «        S d S # t          $ r Y d S w xY w)Nr   )Ú
find_rrsetÚanswerÚdnsÚ
rdataclassÚANYÚ	rdatatypeÚTKEYrG   ÚsecretÚstepÚKeyError)ÚclsrG   rE   rF   ÚrrsetÚtokenr*   s          r   rD   z"GSSTSigAdapter.parse_tkey_and_stepŽ   s�   € ð		Ø×&Ò&Ø” ­¬Ô);½S¼]Ô=Oñô ˆEð ð 2Ø˜aœœ�Ø!$¤�Ø%×*Ò*¨5Ñ1Ô1Ð1ð2ð 2øõ ð 	ð 	ð 	ØˆDˆDð	øøøs   ‚A%A* Á*
A8Á7A8N)r   r   r   r.   rH   ÚclassmethodrD   r
   r   r   r<   r<   €   sM   € € € € € ðð ð ðð ð ð ðð ñ „[ðð ð r   r<   c                   ó¸   — e Zd ZdZeej        eej        e	ej
        eej
        dfeej        eej        dfeej        eej        dfeej        i	Zd„ Zd„ Zd„ Zd„ Zd	S )
ÚHMACTSigzo
    HMAC TSIG implementation.  This uses the HMAC python module to handle the
    sign/verify operations.
    r&   éÀ   é   c                 ó–  — 	 | j         |         }n!# t          $ r t          d|› d�¦  «        ‚w xY wt          |t          ¦  «        r/t          j        ||d         ¬¦  «        | _        |d         | _        n"t          j        ||¬¦  «        | _        d | _        | j        j	        | _	        | j        r| xj	        d| j        › �z  c_	        d S d S )NzTSIG algorithm z is not supportedr   )Ú	digestmodé   ú-)
Ú_hashesrS   ÚNotImplementedErrorr@   ÚtupleÚhmacÚnewÚhmac_contextÚsizer,   )r-   rG   rB   Úhashinfos       r   r.   zHMACTSig.__init__²   sæ   € ð	VØ”| IÔ.ˆHˆHøÝð 	Vð 	Vð 	VÝ%Ð&T¸	Ð&TÐ&TÐ&TÑUÔUÐUð	Vøøøõ �h¥Ñ&Ô&ð 	Ý $¤¨¸À¼Ð DÑ DÔ DˆDÔØ  œˆDŒIˆIå $¤¨¸Ð AÑ AÔ AˆDÔØˆDŒIØÔ%Ô*ˆŒ	ØŒ9ð 	)ØˆIŒI˜˜TœY˜˜Ñ(ˆIŒIˆIˆIð	)ð 	)s   ‚ �.c                 ó6   — | j                              |¦  «        S r0   )re   r2   r1   s     r   r2   zHMACTSig.updateÃ   s   € ØÔ ×'Ò'¨Ñ-Ô-Ð-r   c                 ój   — | j                              ¦   «         }| j        r|d | j        dz  …         }|S )Né   )re   Údigestrf   )r-   rk   s     r   r5   zHMACTSig.signÆ   s;   € àÔ"×)Ò)Ñ+Ô+ˆØŒ9ð 	0ØÐ.˜tœy¨A™~Ð.Ô/ˆFØˆr   c                 óf   — |                       ¦   «         }t          j        ||¦  «        st          ‚d S r0   )r5   rc   Úcompare_digestr   )r-   r9   Úmacs      r   r:   zHMACTSig.verifyÍ   s4   € à�iŠi‰kŒkˆÝÔ" 3¨Ñ1Ô1ð 	ÝÐð	ð 	r   N)r   r   r   r	   Ú	HMAC_SHA1ÚhashlibÚsha1ÚHMAC_SHA224Úsha224ÚHMAC_SHA256Úsha256ÚHMAC_SHA256_128ÚHMAC_SHA384Úsha384ÚHMAC_SHA384_192ÚHMAC_SHA512Úsha512ÚHMAC_SHA512_256ÚHMAC_MD5Úmd5r`   r.   r2   r5   r:   r
   r   r   rY   rY       s±   € € € € € ðð ð 	�7”<Ø�W”^Ø�W”^Ø˜'œ.¨#Ð.Ø�W”^Ø˜'œ.¨#Ð.Ø�W”^Ø˜'œ.¨#Ð.Ø�'”+ð
€Gð)ð )ð )ð".ð .ð .ðð ð ðð ð ð ð r   rY   c                 ó0  — |o| }|r[t          |¦  «        }|rJ|                     t          j        dt	          |¦  «        ¦  «        ¦  «         |                     |¦  «         |€J ‚|                     t          j        d|j        ¦  «        ¦  «         |                     | dd…         ¦  «         |r‹|                     |j                             ¦   «         ¦  «         |                     t          j        dt          j	        j
        ¦  «        ¦  «         |                     t          j        dd¦  «        ¦  «         |€|j        }|dz	  dz  }|dz  }	t          j        d	||	|j        ¦  «        }
t	          |j        ¦  «        }|dk    rt          d
¦  «        ‚|rf|                     |j                             ¦   «         |
z   ¦  «         |                     t          j        d|j        |¦  «        |j        z   ¦  «         n|                     |
¦  «         |S )zòReturn a context containing the TSIG rdata for the input parameters
    @rtype: dns.tsig.HMACTSig or dns.tsig.GSSTSig object
    @raises ValueError: I{other_data} is too long
    @raises NotImplementedError: I{algorithm} is not supported
    ú!HNé   z!Ir   r!   iÿÿ  l   ÿÿ z!HIHz TSIG Other Data is > 65535 bytesz!HH)Úget_contextr2   ÚstructÚpackÚlenÚoriginal_idr,   Úto_digestablerL   rM   rN   Útime_signedÚfudgeÚotherÚ
ValueErrorrB   Úerror)ÚwirerG   ÚrdataÚtimeÚrequest_macÚctxÚmultiÚfirstÚ
upper_timeÚ
lower_timeÚtime_encodedÚ	other_lens               r   Ú_digestr˜   Ô   sç  € ð �˜Ð€EØð $Ý˜#ÑÔˆØð 	$Ø�JŠJ•v”{ 4­¨[Ñ)9Ô)9Ñ:Ô:Ñ;Ô;Ð;Ø�JŠJ�{Ñ#Ô#Ð#Øˆ?ˆ?ˆ?Ø‡J‚J�vŒ{˜4 Ô!2Ñ3Ô3Ñ4Ô4Ð4Ø‡J‚Jˆt�A�B�BŒxÑÔÐØð )Ø�
Š
�3”8×)Ò)Ñ+Ô+Ñ,Ô,Ð,Ø�
Š
•6”;˜t¥S¤^Ô%7Ñ8Ô8Ñ9Ô9Ð9Ø�
Š
•6”;˜t QÑ'Ô'Ñ(Ô(Ð(Ø€|ØÔ ˆØ˜"‘* Ñ&€JØ˜
Ñ"€JÝ”;˜v z°:¸u¼{ÑKÔK€LÝ�E”KÑ Ô €IØ�5ÒÐÝÐ;Ñ<Ô<Ð<Øð !Ø�
Š
�3”=×.Ò.Ñ0Ô0°<Ñ?Ñ@Ô@Ð@Ø�
Š
•6”;˜u e¤k°9Ñ=Ô=ÀÄÑKÑLÔLÐLÐLà�
Š
�<Ñ Ô Ð Ø€Jr   c                 óÀ   — |r[t          | ¦  «        }|                     t          j        dt	          |¦  «        ¦  «        ¦  «         |                     |¦  «         |S dS )z�If this is the first message in a multi-message sequence,
    start a new context.
    @rtype: dns.tsig.HMACTSig or dns.tsig.GSSTSig object
    r€   N)r‚   r2   rƒ   r„   r…   )rG   rn   r’   r‘   s       r   Ú_maybe_start_digestrš   ø   sV   € ð
 ð Ý˜#ÑÔˆØ�
Š
•6”;˜t¥S¨¡X¤XÑ.Ô.Ñ/Ô/Ð/Ø�
Š
�3‰ŒˆØˆ
àˆtr   Fc           	      ó¨   — t          | ||||||¦  «        }|                     ¦   «         }|                     ||¬¦  «        }|t          |||¦  «        fS )a~  Return a (tsig_rdata, mac, ctx) tuple containing the HMAC TSIG rdata
    for the input parameters, the HMAC MAC calculated by applying the
    TSIG signature algorithm, and the TSIG digest context.
    @rtype: (string, dns.tsig.HMACTSig or dns.tsig.GSSTSig object)
    @raises ValueError: I{other_data} is too long
    @raises NotImplementedError: I{algorithm} is not supported
    )rˆ   rn   )r˜   r5   Úreplacerš   )	r�   rG   rŽ   r�   r�   r‘   r’   rn   Útsigs	            r   r5   r5     sW   € õ �$˜˜U D¨+°s¸EÑ
BÔ
B€CØ
�(Š(‰*Œ*€CØ�=Š= T¨sˆ=Ñ3Ô3€DàÕ% c¨3°Ñ6Ô6Ð7Ð7r   c	           	      óD  — t          j        d| dd…         ¦  «        \  }	|	dk    rt          j        j        ‚|	dz  }	| dd…         t          j        d|	¦  «        z   | d|…         z   }
|j        dk    r›|j        t          j        j        k    rt          ‚|j        t          j        j
        k    rt          ‚|j        t          j        j        k    rt          ‚|j        t          j        j        k    rt          ‚t!          d|j        › �¦  «        ‚t#          |j        |z
  ¦  «        |j        k    rt(          ‚|j        |k    rt,          ‚|j        |j        k    rt0          ‚t3          |
||d|||¦  «        }|                     |j        ¦  «         t9          ||j        |¦  «        S )aF  Validate the specified TSIG rdata against the other input parameters.

    @raises FormError: The TSIG is badly formed.
    @raises BadTime: There is too much time skew between the client and the
    server.
    @raises BadSignature: The TSIG signature did not validate
    @rtype: dns.tsig.HMACTSig or dns.tsig.GSSTSig objectr€   é
   é   r   r^   zunknown TSIG error code N)rƒ   ÚunpackrL   Ú	exceptionÚ	FormErrorr„   rŒ   ÚrcodeÚBADSIGr   ÚBADKEYr   ÚBADTIMEr   ÚBADTRUNCr   r   Úabsrˆ   r‰   r   r,   r   rB   r   r˜   r:   rn   rš   )r�   rG   ÚownerrŽ   Únowr�   Ú
tsig_startr‘   r’   ÚadcountÚnew_wires              r   Úvalidater¯     sx  € õ ”˜t T¨"¨R¨%¤[Ñ1Ô1�J€WØ�!‚|€|ÝŒmÔ%Ð%Øˆq�L€GØ�A�b�DŒz�FœK¨¨gÑ6Ô6Ñ6¸¸bÀ¸mÔ9LÑL€HØ„{�aÒÐØŒ;�#œ)Ô*Ò*Ð*Ý"Ð"ØŒ[�CœIÔ,Ò,Ð,ÝÐØŒ[�CœIÔ-Ò-Ð-ÝÐØŒ[�CœIÔ.Ò.Ð.Ý#Ð#åÐD°u´{ÐDÐDÑEÔEÐEÝ
ˆ5Ô˜sÑ"Ñ#Ô# e¤kÒ1Ð1ÝˆØ
„x�5ÒÐÝˆØ
„}˜œÒ'Ð'ÝÐÝ
�(˜C ¨¨k¸3ÀÑ
FÔ
F€CØ‡J‚JˆuŒyÑÔÐÝ˜s E¤I¨uÑ5Ô5Ð5r   c                 ó~   — | j         t          k    rt          | j        ¦  «        S t	          | j        | j         ¦  «        S )zŒReturns an HMAC context for the specified key.

    @rtype: HMAC context
    @raises NotImplementedError: I{algorithm} is not supported
    )rB   rC   r(   rQ   rY   )rG   s    r   r‚   r‚   <  s5   € ð „}�Ò Ð Ý�s”zÑ"Ô"Ð"å˜œ
 C¤MÑ2Ô2Ð2r   c                   ól   — e Zd Zefdej        j        ez  deez  dej        j        ez  fd„Z	d„ Z
d„ ZdS )rA   r,   rQ   rB   c                 óv  — t          |t          ¦  «        rt          j                             |¦  «        }|| _        t          |t          ¦  «        r&t          j        |                     ¦   «         ¦  «        }|| _        t          |t          ¦  «        rt          j                             |¦  «        }|| _	        d S r0   )
r@   ÚstrrL   r,   Ú	from_textÚbase64ÚdecodebytesÚencoderQ   rB   )r-   r,   rQ   rB   s       r   r.   zKey.__init__J  s•   € õ �d�CÑ Ô ð 	,Ý”8×%Ò% dÑ+Ô+ˆDØˆŒ	Ý�f�cÑ"Ô"ð 	9ÝÔ'¨¯ª©¬Ñ8Ô8ˆFØˆŒÝ�i¥Ñ%Ô%ð 	6Ýœ×*Ò*¨9Ñ5Ô5ˆIØ"ˆŒˆˆr   c                 óŒ   — t          |t          ¦  «        o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r0   )r@   rA   r,   rQ   rB   )r-   rŠ   s     r   Ú__eq__z
Key.__eq__Z  sI   € å�u�cÑ"Ô"ð 2Ø”	˜UœZÒ'ð2à”˜uœ|Ò+ð2ð ” %¤/Ò1ð		
r   c                 óÂ   — d| j         › d�d| j        › d�z   }| j        t          k    r2|dt          j        | j        ¦  «                             ¦   «         › d�z  }|dz  }|S )Nz<DNS key name='z', zalgorithm='ú'z
, secret='ú>)r,   rB   rC   rµ   Ú	b64encoderQ   Údecode)r-   Úrs     r   Ú__repr__zKey.__repr__b  sq   € Ø,˜dœiÐ,Ð,Ð,Ð/N¸T¼^Ð/NÐ/NÐ/NÑNˆØŒ>�XÒ%Ð%ØÐG�fÔ.¨t¬{Ñ;Ô;×BÒBÑDÔDÐGÐGÐGÑGˆAØ	ˆS‰ˆØˆr   N)r   r   r   Údefault_algorithmrL   r,   ÚNamer³   Úbytesr.   r¹   rÀ   r
   r   r   rA   rA   I  s‚   € € € € € ð
 *;ð	#ð #àŒhŒm˜cÑ!ð#ð ˜‘ð#ð ”8”= 3Ñ&ð	#ð #ð #ð #ð 
ð 
ð 
ðð ð ð ð r   rA   )NNNN)NNNF)NF)-r	   rµ   rp   rc   rƒ   Údns.exceptionrL   Údns.nameÚ	dns.rcodeÚdns.rdataclassÚdns.rdatatyper¢   ÚDNSExceptionr   r   r   r   r   r   r   r   r   r,   r´   r}   ro   rr   rt   rv   rw   ry   rz   r|   rC   rÁ   Ú	mac_sizesr(   r<   rY   r˜   rš   r5   r¯   r‚   rA   r
   r   r   ú<module>rË      s=  ðð$ Ð à €€€Ø €€€Ø €€€Ø €€€à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð ðCð Cð Cð Cð CˆcŒmÔ(ñ Cô Cð Cð.ð .ð .ð .ð .�3”=Ô-ñ .ô .ð .ð=ð =ð =ð =ð =ˆSŒ]Ô'ñ =ô =ð =ð5ð 5ð 5ð 5ð 5�3”=Ô-ñ 5ô 5ð 5ðFð Fð Fð Fð F�”Ô*ñ Fô Fð Fð/ð /ð /ð /ð /�ñ /ô /ð /ð5ð 5ð 5ð 5ð 5�yñ 5ô 5ð 5ð0ð 0ð 0ð 0ð 0�)ñ 0ô 0ð 0ðHð Hð Hð Hð H˜	ñ Hô Hð Hð Œ8×ÒÐ8Ñ9Ô9€ØŒH×Ò˜{Ñ+Ô+€	ØŒh× Ò  Ñ/Ô/€ØŒh× Ò  Ñ/Ô/€Ø”(×$Ò$Ð%6Ñ7Ô7€ØŒh× Ò  Ñ/Ô/€Ø”(×$Ò$Ð%6Ñ7Ô7€ØŒh× Ò  Ñ/Ô/€Ø”(×$Ò$Ð%6Ñ7Ô7€ØŒ8×Ò˜jÑ)Ô)€àÐ ð ˆrØ�Ø�Ø�RØ�Ø�RØ�Ø�RØˆbØˆcð€	ðð ð ð ð ñ ô ð ð>ð ð ð ð ñ ô ð ð@1ð 1ð 1ð 1ð 1ñ 1ô 1ð 1ðh!ð !ð !ð !ðHð ð ð8ð 8ð 8ð 8ð" LQð#6ð #6ð #6ð #6ðL
3ð 
3ð 
3ðð ð ð ð ñ ô ð ð ð r   