ó
    0/¡j8-  ã                   ó¦  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	rSSK
r " S S\R                  R                  5      r " S S\R                  R                  5      r " S S\R                  R                  5      r " S	 S
\R                  R                  5      r " S S\R                  R                  5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r\R,                  R/                  S5      r\R,                  R/                  S5      r\R,                  R/                  S5      r\R,                  R/                  S5      r\R,                  R/                  S5      r\R,                  R/                  S5      r\R,                  R/                  S5      r\R,                  R/                  S5      r\R,                  R/                  S5      r \R,                  R/                  S5      r!\r"\S\S \S!\S"\S#\S$\S%\ S!\S"\!S&0
r# " S' S(5      r$ " S) S*5      r% " S+ S,5      r&S4S- jr'S. r(S5S/ jr) S6S0 jr*S1 r+ " S2 S35      r,g)7zDNS TSIG support.é    Nc                   ó   • \ rS rSrSrSrg)ÚBadTimeé    z8The current time is not within the TSIG's validity time.© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Úa/var/www/html/health-monitoring.indevconsultancy.in/venv/lib/python3.13/site-packages/dns/tsig.pyr   r       s   † ÜBr   r   c                   ó   • \ rS rSrSrSrg)ÚBadSignatureé$   z#The TSIG signature fails to verify.r   Nr   r   r   r   r   r   $   s   † Ü-r   r   c                   ó   • \ rS rSrSrSrg)ÚBadKeyé(   z2The TSIG record owner name does not match the key.r   Nr   r   r   r   r   r   (   s   † Ü<r   r   c                   ó   • \ rS rSrSrSrg)ÚBadAlgorithmé,   z*The TSIG algorithm does not match the key.r   Nr   r   r   r   r   r   ,   ó   † Ü4r   r   c                   ó   • \ rS rSrSrSrg)Ú	PeerErroré0   z;Base class for all TSIG errors generated by the remote peerr   Nr   r   r   r   r   r   0   s   † ÜEr   r   c                   ó   • \ rS rSrSrSrg)Ú
PeerBadKeyé4   z$The peer didn't know the key we usedr   Nr   r   r   r   r   r   4   s   † Ü.r   r   c                   ó   • \ rS rSrSrSrg)ÚPeerBadSignatureé8   z*The peer didn't like the signature we sentr   Nr   r   r   r   r!   r!   8   r   r   r!   c                   ó   • \ rS rSrSrSrg)ÚPeerBadTimeé<   z%The peer didn't like the time we sentr   Nr   r   r   r   r$   r$   <   s   † Ü/r   r$   c                   ó   • \ rS rSrSrSrg)ÚPeerBadTruncationé@   z=The peer didn't like amount of truncation in the TSIG we sentr   Nr   r   r   r   r'   r'   @   s   † Ü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é   é   r   é   r   é   r(   é€   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚGSSTSigéa   a/  
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                 ó,   • Xl         SU l        SU l        g )Nr   r)   )Úgssapi_contextÚdataÚname)Úselfr3   s     r   Ú__init__ÚGSSTSig.__init__k   s   € Ø,ÔØˆŒ	Øˆ�	r   c                 ó.   • U =R                   U-  sl         g ©N)r4   ©r6   r4   s     r   ÚupdateÚGSSTSig.updatep   s   € Ø�	Š	�TÑŽ	r   c                 óL   • U R                   R                  U R                  5      $ r:   )r3   Úget_signaturer4   )r6   s    r   ÚsignÚGSSTSig.signs   s   € à×"Ñ"×0Ñ0°·±Ó;Ð;r   c                 óx   •  U R                   R                  U R                  U5      $ ! [         a    [        ef = fr:   )r3   Úverify_signaturer4   Ú	Exceptionr   )r6   Úexpecteds     r   ÚverifyÚGSSTSig.verifyw   s9   € ð	à×&Ñ&×7Ñ7¸¿	¹	À8ÓLÐLøÜó 	äÐð	ús   ‚%( ¨9)r4   r3   r5   N)
r   r	   r
   r   r   r7   r<   r@   rF   r   r   r   r   r0   r0   a   s   † ñòò
ò<õr   r0   c                   ó0   • \ rS rSrS rS r\S 5       rSrg)ÚGSSTSigAdapterr.   c                 ó   • Xl         g r:   ©Úkeyring)r6   rL   s     r   r7   ÚGSSTSigAdapter.__init__�   s   € Ø�r   c                 óÐ   • X R                   ;   aW  U R                   U   n[        U[        5      (       a1  UR                  [        :X  a  U(       a  [
        R                  X1U5        U$ g r:   )rL   Ú
isinstanceÚKeyÚ	algorithmÚGSS_TSIGrI   Úparse_tkey_and_step)r6   ÚmessageÚkeynameÚkeys       r   Ú__call__ÚGSSTSigAdapter.__call__„   sM   € Ø—l‘lÓ"Ø—,‘,˜wÑ'ˆCÜ˜#œs×#Ñ#¨¯©¼Ó(AÞÜ"×6Ñ6°sÀWÔMØˆJàr   c                 ó(  •  UR                  UR                  U[        R                  R                  [        R
                  R                  5      nU(       a,  US   R                  nUR                  nUR                  U5      $ g ! [         a     g f = f)Nr   )Ú
find_rrsetÚanswerÚdnsÚ
rdataclassÚANYÚ	rdatatypeÚTKEYrV   ÚsecretÚstepÚKeyError)ÚclsrV   rT   rU   ÚrrsetÚtokenr3   s          r   rS   Ú"GSSTSigAdapter.parse_tkey_and_stepŽ   s}   € ð		Ø×&Ñ&Ø—‘ ¬¯©×);Ñ);¼S¿]¹]×=OÑ=OóˆEö Ø˜a™Ÿ™�Ø!$§¡�Ø%×*Ñ*¨5Ó1Ð1ð øô ó 	Ùð	ús   ‚B B Â
BÂBrK   N)	r   r	   r
   r   r7   rW   ÚclassmethodrS   r   r   r   r   rI   rI   €   s    † òòð ñó ór   rI   c                   ó  • \ rS rSrSr\\R                  \\R                  \
\R                  \\R                  S4\\R                  \\R                  S4\\R"                  \\R"                  S4\\R(                  0	rS rS rS rS	 rS
rg)ÚHMACTSigé    zc
HMAC TSIG implementation.  This uses the HMAC python module to handle the
sign/verify operations.
r.   éÀ   é   c                 ó´  •  U R                   U   n[        U[        5      (       a'  [
        R                  " XS   S9U l        US   U l        O [
        R                  " XS9U l        S U l        U R                  R                  U l	        U R                  (       a#  U =R                  SU R                   3-  sl	        g g ! [         a    [        SU S35      ef = f)NzTSIG algorithm z is not supportedr   )Ú	digestmodé   Ú-)
Ú_hashesrc   ÚNotImplementedErrorrO   ÚtupleÚhmacÚnewÚhmac_contextÚsizer5   )r6   rV   rQ   Úhashinfos       r   r7   ÚHMACTSig.__init__²   s¼   € ð	VØ—|‘| IÑ.ˆHô
 �h¤×&Ñ&Ü $§¢¨À¹Ñ DˆDÔØ  ™ˆD�Iä $§¢¨Ñ AˆDÔØˆDŒIØ×%Ñ%×*Ñ*ˆŒ	Ø�9�9Ø�IŠI˜1˜TŸY™Y˜K˜Ñ(ŽIð øô ó 	VÜ%¨¸	°{ÐBSÐ&TÓUÐUð	Vús   ‚B= Â=Cc                 ó8   • U R                   R                  U5      $ r:   )rw   r<   r;   s     r   r<   ÚHMACTSig.updateÃ   s   € Ø× Ñ ×'Ñ'¨Ó-Ð-r   c                 ó€   • U R                   R                  5       nU R                  (       a  US U R                  S-   nU$ )Né   )rw   Údigestrx   )r6   r   s     r   r@   ÚHMACTSig.signÆ   s7   € à×"Ñ"×)Ñ)Ó+ˆØ�9�9ØÐ.˜tŸy™y¨A™~Ð/ˆFØˆr   c                 óf   • U R                  5       n[        R                  " X!5      (       d  [        eg r:   )r@   ru   Úcompare_digestr   )r6   rE   Úmacs      r   rF   ÚHMACTSig.verifyÍ   s)   € à�i‰i‹kˆÜ×"Ò" 3×1Ñ1ÜÐð 2r   )rw   r5   rx   N)r   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Úmd5rr   r7   r<   r@   rF   r   r   r   r   rj   rj       s„   † ñð 	�7—<‘<Ø�W—^‘^Ø�W—^‘^Ø˜'Ÿ.™.¨#Ð.Ø�W—^‘^Ø˜'Ÿ.™.¨#Ð.Ø�W—^‘^Ø˜'Ÿ.™.¨#Ð.Ø�'—+‘+ð
€Gò)ò".òõr   rj   c                 ób  • U=(       a    U(       + nU(       aR  [        U5      nU(       a@  UR                  [        R                  " S[	        U5      5      5        UR                  U5        Uc   eUR                  [        R                  " SUR
                  5      5        UR                  U SS 5        U(       a�  UR                  UR                  R                  5       5        UR                  [        R                  " S[        R                  R                  5      5        UR                  [        R                  " SS5      5        Uc  UR                  nUS-	  S-  nUS-  n	[        R                  " S	X‰UR                  5      n
[	        UR                  5      nUS:”  a  [        S
5      eU(       al  UR                  UR                  R                  5       U
-   5        UR                  [        R                  " SUR                   U5      UR                  -   5        U$ UR                  U
5        U$ )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_contextr<   ÚstructÚpackÚlenÚoriginal_idr5   Úto_digestabler\   r]   r^   Útime_signedÚfudgeÚotherÚ
ValueErrorrQ   Úerror)ÚwirerV   ÚrdataÚtimeÚrequest_macÚctxÚmultiÚfirstÚ
upper_timeÚ
lower_timeÚtime_encodedÚ	other_lens               r   Ú_digestr®   Ô   s–  € ð —˜Ô€EÞÜ˜#ÓˆÞØ�J‰J”v—{’{ 4¬¨[Ó)9Ó:Ô;Ø�J‰J�{Ô#Ø‰?Ðˆ?Ø‡J�JŒv�{Š{˜4 ×!2Ñ!2Ó3Ô4Ø‡J�Jˆt�A�BˆxÔÞØ�
‰
�3—8‘8×)Ñ)Ó+Ô,Ø�
‰
”6—;’;˜t¤S§^¡^×%7Ñ%7Ó8Ô9Ø�
‰
”6—;’;˜t QÓ'Ô(Ø�|Ø× Ñ ˆØ˜"‘* Ñ&€JØ˜
Ñ"€JÜ—;’;˜v z¸u¿{¹{ÓK€LÜ�E—K‘KÓ €IØ�5ÓÜÐ;Ó<Ð<ÞØ�
‰
�3—=‘=×.Ñ.Ó0°<Ñ?Ô@Ø�
‰
”6—;’;˜u e§k¡k°9Ó=ÀÇÁÑKÔLð €Jð 	�
‰
�<Ô Ø€Jr   c                 ó¬   • U(       aM  [        U 5      nUR                  [        R                  " S[	        U5      5      5        UR                  U5        U$ g)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˜   r<   r™   rš   r›   )rV   rƒ   r¨   r§   s       r   Ú_maybe_start_digestr°   ø   s?   € ö
 Ü˜#ÓˆØ�
‰
”6—;’;˜t¤S¨£XÓ.Ô/Ø�
‰
�3ŒØˆ
àr   c           	      óx   • [        XX#XEU5      nUR                  5       nUR                  X7S9nU[        XU5      4$ )af  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ž   rƒ   )r®   r@   Úreplacer°   )	r£   rV   r¤   r¥   r¦   r§   r¨   rƒ   Útsigs	            r   r@   r@     sB   € ô �$˜U¨+¸EÓ
B€CØ
�(‰(‹*€CØ�=‰= Tˆ=Ð3€DàÔ% c°Ó6Ð7Ð7r   c	           	      óÎ  • [         R                  " SU SS 5      u  n	U	S:X  a  [        R                  R                  eU	S-  n	U SS [         R
                  " SU	5      -   U SU -   n
UR                  S:w  aÐ  UR                  [        R                  R                  :X  a  [        eUR                  [        R                  R                  :X  a  [        eUR                  [        R                  R                  :X  a  [        eUR                  [        R                  R                  :X  a  [        e[!        SUR                   35      e[#        UR$                  U-
  5      UR&                  :”  a  [(        eUR*                  U:w  a  [,        eUR.                  UR.                  :w  a  [0        e[3        X¡USXWU5      nUR5                  UR6                  5        [9        XR6                  U5      $ )a2  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   rp   zunknown TSIG error code N)r™   Úunpackr\   Ú	exceptionÚ	FormErrorrš   r¢   ÚrcodeÚBADSIGr!   ÚBADKEYr   ÚBADTIMEr$   ÚBADTRUNCr'   r   Úabsrž   rŸ   r   r5   r   rQ   r   r®   rF   rƒ   r°   )r£   rV   Úownerr¤   Únowr¦   Ú
tsig_startr§   r¨   ÚadcountÚnew_wires              r   ÚvalidaterÅ     sq  € ô —’˜t T¨"¨R [Ó1�J€WØ�!ƒ|Ü�m‰m×%Ñ%Ð%Øˆq�L€GØ�A�bˆzœFŸKšK¨¨gÓ6Ñ6¸¸bÀÐ9LÑL€HØ‡{�{�aÓØ�;‰;œ#Ÿ)™)×*Ñ*Ó*Ü"Ð"Ø�[‰[œCŸI™I×,Ñ,Ó,ÜÐØ�[‰[œCŸI™I×-Ñ-Ó-ÜÐØ�[‰[œCŸI™I×.Ñ.Ó.Ü#Ð#äÐ6°u·{±{°mÐDÓEÐEÜ
ˆ5×Ñ˜sÑ"Ó# e§k¡kÓ1ÜˆØ
‡x�x�5ÓÜˆØ
‡}�}˜Ÿ™Ó'ÜÐÜ
�( ¨¨kÀÓ
F€CØ‡J�Jˆu�y‰yÔÜ˜s§I¡I¨uÓ5Ð5r   c                 ó”   • U R                   [        :X  a  [        U R                  5      $ [	        U R                  U R                   5      $ )z€Returns an HMAC context for the specified key.

@rtype: HMAC context
@raises NotImplementedError: I{algorithm} is not supported
)rQ   rR   r0   ra   rj   )rV   s    r   r˜   r˜   <  s4   € ð ‡}�}œÓ Ü�s—z‘zÓ"Ð"ä˜Ÿ
™
 C§M¡MÓ2Ð2r   c                   óž   • \ rS rSr\4S\R                  R                  \-  S\	\-  S\R                  R                  \-  4S jjr
S rS rSrg	)
rP   iI  r5   ra   rQ   c                 ój  • [        U[        5      (       a  [        R                  R	                  U5      nXl        [        U[        5      (       a$  [
        R                  " UR                  5       5      nX l        [        U[        5      (       a  [        R                  R	                  U5      nX0l	        g r:   )
rO   Ústrr\   r5   Ú	from_textÚbase64ÚdecodebytesÚencodera   rQ   )r6   r5   ra   rQ   s       r   r7   ÚKey.__init__J  sx   € ô �dœC× Ñ Ü—8‘8×%Ñ% dÓ+ˆDØŒ	Ü�fœc×"Ñ"Ü×'Ò'¨¯©«Ó8ˆFØŒÜ�i¤×%Ñ%ÜŸ™×*Ñ*¨9Ó5ˆIØ"�r   c                 óâ   • [        U[        5      =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r:   )rO   rP   r5   ra   rQ   )r6   r    s     r   Ú__eq__Ú
Key.__eq__Z  sR   € ä�uœcÓ"÷ 2Ø—	‘	˜UŸZ™ZÑ'÷2à—‘˜uŸ|™|Ñ+÷2ð —‘ %§/¡/Ñ1ð		
r   c                 óä   • SU R                    S3SU R                   S3-   nU R                  [        :w  a5  US[        R                  " U R
                  5      R                  5        S3-  nUS-  nU$ )Nz<DNS key name='z', zalgorithm='Ú'z
, secret='Ú>)r5   rQ   rR   rË   Ú	b64encodera   Údecode)r6   Úrs     r   Ú__repr__ÚKey.__repr__b  sm   € Ø˜dŸi™i˜[¨Ð,°¸T¿^¹^Ð<LÈAÐ/NÑNˆØ�>‰>œXÓ%Ø�:œf×.Ò.¨t¯{©{Ó;×BÑBÓDÐEÀQÐGÑGˆAØ	ˆS‰ˆØˆr   )rQ   r5   ra   N)r   r	   r
   r   Údefault_algorithmr\   r5   ÚNamerÉ   Úbytesr7   rÐ   rØ   r   r   r   r   rP   rP   I  sP   † ð
 *;ñ	#à�h‰h�m‰m˜cÑ!ð#ð ˜‘ð#ð —8‘8—=‘= 3Ñ&õ	#ò 
õr   rP   )NNNN)NNNF)NF)-r   rË   r†   ru   r™   Údns.exceptionr\   Údns.nameÚ	dns.rcodeÚdns.rdataclassÚdns.rdatatyper¸   ÚDNSExceptionr   r   r   r   r   r   r!   r$   r'   r5   rÊ   r“   r…   rˆ   rŠ   rŒ   r�   r�   r�   r’   rR   rÚ   Ú	mac_sizesr0   rI   rj   r®   r°   r@   rÅ   r˜   rP   r   r   r   Ú<module>rä      s$  ðñ$ ã Û Û Û ã Û Û Û Û ôCˆc�m‰m×(Ñ(ô Cô.�3—=‘=×-Ñ-ô .ô=ˆS�]‰]×'Ñ'ô =ô5�3—=‘=×-Ñ-ô 5ôF�—‘×*Ñ*ô Fô/�ô /ô5�yô 5ô0�)ô 0ôH˜	ô Hð �8‰8×ÑÐ8Ó9€Ø�H‰H×Ñ˜{Ó+€	Ø�h‰h× Ñ  Ó/€Ø�h‰h× Ñ  Ó/€Ø—(‘(×$Ñ$Ð%6Ó7€Ø�h‰h× Ñ  Ó/€Ø—(‘(×$Ñ$Ð%6Ó7€Ø�h‰h× Ñ  Ó/€Ø—(‘(×$Ñ$Ð%6Ó7€Ø�8‰8×Ñ˜jÓ)€àÐ ð ˆrØ�Ø�Ø�RØ�Ø�RØ�Ø�RØˆbØˆcð€	÷ñ ÷>ñ ÷@1ñ 1ôh!òHô8ð" LQô#6òL
3÷ò r   