ó
    0/¡jO  ã                   ól  • S SK r S SKrS SKJr  S SKJr  S SKJrJr  S SK	J
r
Jr  S SKJr  S SKJr   " S S	\5      r " S
 S\
5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg) é    N)Údefault_backend)Úhashes)ÚpaddingÚrsa)ÚCryptographyPrivateKeyÚCryptographyPublicKey)Ú	Algorithm)ÚDNSKEYc                   ó´   • \ rS rSr% \R
                  \S'   \R
                  r\\S'   \	R                  \S'   S\S\SS4S	 jrS\4S
 jr\S\SS 4S j5       rSrg)Ú	PublicRSAé   ÚkeyÚ	algorithmÚchosen_hashÚ	signatureÚdataÚreturnNc                 óx   • U R                   R                  X[        R                  " 5       U R                  5        g )N)r   Úverifyr   ÚPKCS1v15r   )Úselfr   r   s      Úk/var/www/html/health-monitoring.indevconsultancy.in/venv/lib/python3.13/site-packages/dns/dnssecalgs/rsa.pyr   ÚPublicRSA.verify   s%   € Ø�‰�‰˜	¬×)9Ò)9Ó);¸T×=MÑ=MÕNó    c                 ó\  • U R                   R                  5       n[        R                  " [        R                  UR                  5      S-  5      n[        R                  UR                  USS9nUS:”  a  S[        R                  " SU5      -   nO[        R                  " SU5      nUR                  R                  5       S:  d  UR                  R                  5       S	:”  a  [        S
5      eXC-   UR                  R                  UR                  R                  5       S-   S-  S5      -   $ )z,Encode a public key per RFC 3110, section 2.é   Úbig)ÚlengthÚ	byteorderéÿ   ó    ú!Hú!Bi   i   zunsupported RSA key lengthé   )r   Úpublic_numbersÚmathÚceilÚintÚ
bit_lengthÚeÚto_bytesÚstructÚpackÚnÚ
ValueError)r   ÚpnÚ_exp_lenÚexpÚ
exp_headers        r   Úencode_key_bytesÚPublicRSA.encode_key_bytes   sÛ   € à�X‰X×$Ñ$Ó&ˆÜ—9’9œSŸ^™^¨B¯D©DÓ1°AÑ5Ó6ˆÜ�l‰l˜2Ÿ4™4¨¸EˆlÐBˆØ�c‹>Ø¤§¢¨T°8Ó!<Ñ<‰JäŸš T¨8Ó4ˆJØ�4‰4�?‰?Ó˜sÓ" b§d¡d§o¡oÓ&7¸$Ó&>ÜÐ9Ó:Ð:ØÑ "§$¡$§-¡-°·±·±Ó1BÀQÑ1FÈ1Ñ0LÈeÓ"TÑTÐTr   c           	      ó’  • U R                  U5        UR                  n[        R                  " SUSS 5      u  nUSS  nUS:X  a!  [        R                  " SUSS 5      u  nUSS  nUSU nX#S  nU " [        R
                  " [        R                  US5      [        R                  US5      5      R                  [        5       5      S9$ )Nr#   r   é   r"   é   r   ©r   )
Ú!_ensure_algorithm_key_combinationr   r,   Úunpackr   ÚRSAPublicNumbersr(   Ú
from_bytesÚ
public_keyr   )Úclsr   ÚkeyptrÚbytes_Úrsa_eÚrsa_ns         r   Úfrom_dnskeyÚPublicRSA.from_dnskey#   s¾   € à×-Ñ-¨cÔ2Ø—‘ˆÜ—M’M $¨¨q°¨Ó4‰	ˆØ˜˜�ˆØ�Q‹;ÜŸš d¨F°1°Q¨KÓ8‰IˆVØ˜A˜B�ZˆFØ�q˜Ð ˆØ�w�ˆÙÜ×$Ò$Ü—‘˜u eÓ,¬c¯n©n¸UÀEÓ.Jóç‰jœÓ*Ó+ñ
ð 	
r   © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   ÚRSAPublicKeyÚ__annotations__Úkey_clsr	   r   ÚHashAlgorithmÚbytesr   r4   Úclassmethodr
   rD   Ú__static_attributes__rF   r   r   r   r      sy   ‡ Ø	×	Ñ	ÓØ×Ñ€GØÓØ×%Ñ%Ó%ðO ð O¨Uð O°tô OðU %ô Uð ð
˜fð 
¨ó 
ó ó
r   r   c            	       ó’   • \ rS rSr% \R
                  \S'   \R
                  r\r	Sr
  SS\S\S\S\4S jjr\S	\SS 4S
 j5       rSrg)Ú
PrivateRSAé5   r   i  r   r   Údeterministicr   c                 óÚ   • U R                   R                  U[        R                  " 5       U R                  R
                  5      nU(       a  U R                  5       R                  XA5        U$ )z1Sign using a private key per RFC 3110, section 3.)r   Úsignr   r   Ú
public_clsr   r>   r   )r   r   r   rU   r   s        r   rW   ÚPrivateRSA.sign;   sP   € ð —H‘H—M‘MØ”'×"Ò"Ó$ d§o¡o×&AÑ&Aó
ˆ	ö Ø�O‰OÓ×$Ñ$ YÔ5ØÐr   Úkey_sizec                 óZ   • U " [         R                  " U R                  U[        5       S9S9$ )N)Úpublic_exponentrZ   Úbackendr9   )r   Úgenerate_private_keyÚdefault_public_exponentr   )r?   rZ   s     r   ÚgenerateÚPrivateRSA.generateI   s/   € áÜ×(Ò(Ø #× ;Ñ ;Ø!Ü'Ó)ññ
ð 	
r   rF   N)FT)rG   rH   rI   rJ   r   ÚRSAPrivateKeyrL   rM   r   rX   r_   rO   ÚboolrW   rP   r(   r`   rQ   rF   r   r   rS   rS   5   sy   ‡ Ø	×	Ñ	ÓØ×Ñ€GØ€JØ#Ðð
 Ø"ñ	àðð ðð ð	ð
 
õð ð
 ð 
¨ó 
ó ó
r   rS   c                   óN   • \ rS rSr\R
                  r\R                  " 5       r	Sr
g)ÚPublicRSAMD5éT   rF   N)rG   rH   rI   rJ   r	   ÚRSAMD5r   r   ÚMD5r   rQ   rF   r   r   re   re   T   s   † Ø× Ñ €IØ—*’*“,ƒKr   re   c                   ó   • \ rS rSr\rSrg)ÚPrivateRSAMD5éY   rF   N)rG   rH   rI   rJ   re   rX   rQ   rF   r   r   rj   rj   Y   s   † ØƒJr   rj   c                   óN   • \ rS rSr\R
                  r\R                  " 5       r	Sr
g)ÚPublicRSASHA1é]   rF   N)rG   rH   rI   rJ   r	   ÚRSASHA1r   r   ÚSHA1r   rQ   rF   r   r   rm   rm   ]   s   † Ø×!Ñ!€IØ—+’+“-ƒKr   rm   c                   ó   • \ rS rSr\rSrg)ÚPrivateRSASHA1éb   rF   N)rG   rH   rI   rJ   rm   rX   rQ   rF   r   r   rr   rr   b   s   † ØƒJr   rr   c                   óN   • \ rS rSr\R
                  r\R                  " 5       r	Sr
g)ÚPublicRSASHA1NSEC3SHA1éf   rF   N)rG   rH   rI   rJ   r	   ÚRSASHA1NSEC3SHA1r   r   rp   r   rQ   rF   r   r   ru   ru   f   s   † Ø×*Ñ*€IØ—+’+“-ƒKr   ru   c                   ó   • \ rS rSr\rSrg)ÚPrivateRSASHA1NSEC3SHA1ék   rF   N)rG   rH   rI   rJ   ru   rX   rQ   rF   r   r   ry   ry   k   s   † Ø'ƒJr   ry   c                   óN   • \ rS rSr\R
                  r\R                  " 5       r	Sr
g)ÚPublicRSASHA256éo   rF   N)rG   rH   rI   rJ   r	   Ú	RSASHA256r   r   ÚSHA256r   rQ   rF   r   r   r|   r|   o   ó   † Ø×#Ñ#€IØ—-’-“/ƒKr   r|   c                   ó   • \ rS rSr\rSrg)ÚPrivateRSASHA256ét   rF   N)rG   rH   rI   rJ   r|   rX   rQ   rF   r   r   r‚   r‚   t   ó   † Ø ƒJr   r‚   c                   óN   • \ rS rSr\R
                  r\R                  " 5       r	Sr
g)ÚPublicRSASHA512éx   rF   N)rG   rH   rI   rJ   r	   Ú	RSASHA512r   r   ÚSHA512r   rQ   rF   r   r   r†   r†   x   r€   r   r†   c                   ó   • \ rS rSr\rSrg)ÚPrivateRSASHA512é}   rF   N)rG   rH   rI   rJ   r†   rX   rQ   rF   r   r   r‹   r‹   }   r„   r   r‹   )r&   r,   Úcryptography.hazmat.backendsr   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   r   Údns.dnssecalgs.cryptographyr   r   Údns.dnssectypesr	   Údns.rdtypes.ANY.DNSKEYr
   r   rS   re   rj   rm   rr   ru   ry   r|   r‚   r†   r‹   rF   r   r   Ú<module>r“      s°   ðÛ Û å 8Ý 1ß Bç UÝ %Ý )ô%
Ð%ô %
ôP
Ð'ô 
ô>�9ô ô
�Jô ô �Iô  ô
�Zô ô ˜Yô  ô
(˜jô (ô"�iô "ô
!�zô !ô"�iô "ô
!�zõ !r   