§
    VøÁiO  ã                   ó¶  — d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZ  G d„ d	e¦  «        Z G d
„ de
¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS ) é    N)Údefault_backend)Úhashes)ÚpaddingÚrsa)ÚCryptographyPrivateKeyÚCryptographyPublicKey)Ú	Algorithm)ÚDNSKEYc                   ó�   — e Zd ZU ej        ed<   ej        Zeed<   ej	        ed<   de
de
ddfd„Zde
fd	„Zededd fd
„¦   «         ZdS )Ú	PublicRSAÚkeyÚ	algorithmÚchosen_hashÚ	signatureÚdataÚreturnNc                 ól   — | j                              ||t          j        ¦   «         | j        ¦  «         d S )N)r   Úverifyr   ÚPKCS1v15r   )Úselfr   r   s      ú\/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/dns/dnssecalgs/rsa.pyr   zPublicRSA.verify   s.   € ØŒ�Š˜	 4­Ô)9Ñ);Ô);¸TÔ=MÑNÔNÐNÐNÐNó    c                 óV  — | j                              ¦   «         }t          j        t                               |j        ¦  «        dz  ¦  «        }t                               |j        |d¬¦  «        }|dk    rdt          j	        d|¦  «        z   }nt          j	        d|¦  «        }|j
                             ¦   «         dk     s|j
                             ¦   «         d	k    rt          d
¦  «        ‚||z   |j
                             |j
                             ¦   «         dz   dz  d¦  «        z   S )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_byteszPublicRSA.encode_key_bytes   sô   € àŒX×$Ò$Ñ&Ô&ˆÝ”9�SŸ^š^¨B¬DÑ1Ô1°AÑ5Ñ6Ô6ˆÝ�lŠl˜2œ4¨¸EˆlÑBÔBˆØ�cŠ>ˆ>Ø¥¤¨T°8Ñ!<Ô!<Ñ<ˆJˆJåœ T¨8Ñ4Ô4ˆJØŒ4�?Š?ÑÔ˜sÒ"Ð" b¤d§o¢oÑ&7Ô&7¸$Ò&>Ð&>ÝÐ9Ñ:Ô:Ð:Ø˜CÑ "¤$§-¢-°´·²Ñ1BÔ1BÀQÑ1FÈ1Ñ0LÈeÑ"TÔ"TÑTÐTr   c           	      óò  — |                       |¦  «         |j        }t          j        d|dd…         ¦  «        \  }|dd …         }|dk    r)t          j        d|dd…         ¦  «        \  }|dd …         }|d|…         }||d …         } | t	          j        t                               |d¦  «        t                               |d¦  «        ¦  «                             t          ¦   «         ¦  «        ¬¦  «        S )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_dnskeyzPublicRSA.from_dnskey#   sî   € à×-Ò-¨cÑ2Ô2Ð2Ø”ˆÝ”M $¨¨q°¨s¬Ñ4Ô4‰	ˆØ˜˜˜”ˆØ�QŠ;ˆ;Ýœ d¨F°1°Q°3¬KÑ8Ô8‰IˆVØ˜A˜B˜B”ZˆFØ�q˜�xÔ ˆØ�v�w�w”ˆØˆsÝÔ$Ý—’˜u eÑ,Ô,­c¯nªn¸UÀEÑ.JÔ.Jñô çŠj�Ñ*Ô*Ñ+Ô+ð
ñ 
ô 
ð 	
r   )Ú__name__Ú
__module__Ú__qualname__r   ÚRSAPublicKeyÚ__annotations__Úkey_clsr	   r   ÚHashAlgorithmÚbytesr   r2   Úclassmethodr
   rA   © r   r   r   r      sÆ   € € € € € € Ø	Ô	ÐÐÑØÔ€GØÐÐÑØÔ%Ð%Ð%Ñ%ðO ð O¨Uð O°tð Oð Oð Oð OðU %ð Uð Uð Uð Uð ð
˜fð 
¨ð 
ð 
ð 
ñ „[ð
ð 
ð 
r   r   c            	       óx   — e Zd ZU ej        ed<   ej        ZeZdZ		 	 dde
dedede
fd	„Zed
edd fd„¦   «         ZdS )Ú
PrivateRSAr   i  FTr   r   Údeterministicr   c                 óÈ   — | j                              |t          j        ¦   «         | j        j        ¦  «        }|r(|                      ¦   «                              ||¦  «         |S )z1Sign using a private key per RFC 3110, section 3.)r   Úsignr   r   Ú
public_clsr   r;   r   )r   r   r   rN   r   s        r   rP   zPrivateRSA.sign;   s^   € ð ”H—M’MØ•'Ô"Ñ$Ô$ d¤oÔ&Añ
ô 
ˆ	ð ð 	6Ø�OŠOÑÔ×$Ò$ Y°Ñ5Ô5Ð5ØÐr   Úkey_sizec                 óf   —  | t          j        | j        |t          ¦   «         ¬¦  «        ¬¦  «        S )N)Úpublic_exponentrR   Úbackendr6   )r   Úgenerate_private_keyÚdefault_public_exponentr   )r<   rR   s     r   ÚgeneratezPrivateRSA.generateI   sB   € àˆsÝÔ(Ø #Ô ;Ø!Ý'Ñ)Ô)ðñ ô ð
ñ 
ô 
ð 	
r   N)FT)rB   rC   rD   r   ÚRSAPrivateKeyrF   rG   r   rQ   rW   rI   ÚboolrP   rJ   r&   rX   rK   r   r   rM   rM   5   s­   € € € € € € Ø	Ô	ÐÐÑØÔ€GØ€JØ#Ðð
 Ø"ð	ð àðð ðð ð	ð
 
ðð ð ð ð ð
 ð 
¨ð 
ð 
ð 
ñ „[ð
ð 
ð 
r   rM   c                   ó:   — e Zd Zej        Z ej        ¦   «         ZdS )ÚPublicRSAMD5N)	rB   rC   rD   r	   ÚRSAMD5r   r   ÚMD5r   rK   r   r   r\   r\   T   s#   € € € € € ØÔ €IØ�&”*‘,”,€K€K€Kr   r\   c                   ó   — e Zd ZeZdS )ÚPrivateRSAMD5N)rB   rC   rD   r\   rQ   rK   r   r   r`   r`   Y   s   € € € € € Ø€J€J€Jr   r`   c                   ó:   — e Zd Zej        Z ej        ¦   «         ZdS )ÚPublicRSASHA1N)	rB   rC   rD   r	   ÚRSASHA1r   r   ÚSHA1r   rK   r   r   rb   rb   ]   s#   € € € € € ØÔ!€IØ�&”+‘-”-€K€K€Kr   rb   c                   ó   — e Zd ZeZdS )ÚPrivateRSASHA1N)rB   rC   rD   rb   rQ   rK   r   r   rf   rf   b   s   € € € € € Ø€J€J€Jr   rf   c                   ó:   — e Zd Zej        Z ej        ¦   «         ZdS )ÚPublicRSASHA1NSEC3SHA1N)	rB   rC   rD   r	   ÚRSASHA1NSEC3SHA1r   r   rd   r   rK   r   r   rh   rh   f   s#   € € € € € ØÔ*€IØ�&”+‘-”-€K€K€Kr   rh   c                   ó   — e Zd ZeZdS )ÚPrivateRSASHA1NSEC3SHA1N)rB   rC   rD   rh   rQ   rK   r   r   rk   rk   k   s   € € € € € Ø'€J€J€Jr   rk   c                   ó:   — e Zd Zej        Z ej        ¦   «         ZdS )ÚPublicRSASHA256N)	rB   rC   rD   r	   Ú	RSASHA256r   r   ÚSHA256r   rK   r   r   rm   rm   o   ó#   € € € € € ØÔ#€IØ�&”-‘/”/€K€K€Kr   rm   c                   ó   — e Zd ZeZdS )ÚPrivateRSASHA256N)rB   rC   rD   rm   rQ   rK   r   r   rr   rr   t   ó   € € € € € Ø €J€J€Jr   rr   c                   ó:   — e Zd Zej        Z ej        ¦   «         ZdS )ÚPublicRSASHA512N)	rB   rC   rD   r	   Ú	RSASHA512r   r   ÚSHA512r   rK   r   r   ru   ru   x   rp   r   ru   c                   ó   — e Zd ZeZdS )ÚPrivateRSASHA512N)rB   rC   rD   ru   rQ   rK   r   r   ry   ry   }   rs   r   ry   )r$   r*   Úcryptography.hazmat.backendsr   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   r   Údns.dnssecalgs.cryptographyr   r   Údns.dnssectypesr	   Údns.rdtypes.ANY.DNSKEYr
   r   rM   r\   r`   rb   rf   rh   rk   rm   rr   ru   ry   rK   r   r   ú<module>r€      s”  ðØ €€€Ø €€€à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ %Ð %Ð %Ð %Ð %Ð %Ø )Ð )Ð )Ð )Ð )Ð )ð%
ð %
ð %
ð %
ð %
Ð%ñ %
ô %
ð %
ðP
ð 
ð 
ð 
ð 
Ð'ñ 
ô 
ð 
ð>ð ð ð ð �9ñ ô ð ð
ð ð ð ð �Jñ ô ð ð ð  ð  ð  ð  �Iñ  ô  ð  ð
ð ð ð ð �Zñ ô ð ð ð  ð  ð  ð  ˜Yñ  ô  ð  ð
(ð (ð (ð (ð (˜jñ (ô (ð (ð"ð "ð "ð "ð "�iñ "ô "ð "ð
!ð !ð !ð !ð !�zñ !ô !ð !ð"ð "ð "ð "ð "�iñ "ô "ð "ð
!ð !ð !ð !ð !�zñ !ô !ð !ð !ð !r   