Ë
    RPfã  ã                   ól  — 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y) é    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y)Ú	PublicRSAÚkeyÚ	algorithmÚchosen_hashÚ	signatureÚdataÚreturnNc                 óx   — | j                   j                  ||t        j                  «       | j                  «       y )N)r   Úverifyr   ÚPKCS1v15r   )Úselfr   r   s      úL/var/www/fastapitest/venv/lib/python3.12/site-packages/dns/dnssecalgs/rsa.pyr   zPublicRSA.verify   s'   € Ø�‰�‰˜	 4¬×)9Ñ)9Ó);¸T×=MÑ=MÕNó    c                 óX  — | j                   j                  «       }t        j                  t        j                  |j                  «      dz  «      }t        j                  |j                  |d¬«      }|dkD  rdt        j                  d|«      z   }nt        j                  d|«      }|j                  j                  «       dk  s|j                  j                  «       d	kD  rt        d
«      ‚||z   |j                  j                  |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‰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Ó:Ð:Ø˜CÑ "§$¡$§-¡-°·±·±Ó1BÀQÑ1FÈ1Ñ0LÈeÓ"TÑTÐTr   c           	      ó’  — | j                  |«       |j                  }t        j                  d|dd «      \  }|dd  }|dk(  r t        j                  d|dd «      \  }|dd  }|d| }||d  } | t	        j
                  t        j                  |d«      t        j                  |d«      «      j                  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Ø—‘ˆÜ—M‘M $¨¨q°¨Ó4‰	ˆØ˜˜�ˆØ�QŠ;ÜŸ™ d¨F°1°Q¨KÓ8‰IˆVØ˜A˜B�ZˆFØ�q˜Ð ˆØ�v�w�ˆÙÜ×$Ñ$Ü—‘˜u eÓ,¬c¯n©n¸UÀEÓ.Jóç‰jœÓ*Ó+ô
ð 	
r   )Ú__name__Ú
__module__Ú__qualname__r   ÚRSAPublicKeyÚ__annotations__Úkey_clsr	   r   ÚHashAlgorithmÚbytesr   r2   Úclassmethodr
   rA   © r   r   r   r      sy   … Ø	×	Ñ	ÓØ×Ñ€GØÓØ×%Ñ%Ó%ðO ð O¨Uð O°tó OðU %ó Uð ð
˜fð 
¨ò 
ó ñ
r   r   c                   ó|   — e Zd ZU ej                  ed<   ej                  ZeZdZ	d
de
dede
fd„Zededd fd„«       Zy	)Ú
PrivateRSAr   i  r   r   r   c                 óÐ   — | j                   j                  |t        j                  «       | j                  j
                  «      }|r | j                  «       j                  ||«       |S )z1Sign using a private key per RFC 3110, section 3.)r   Úsignr   r   Ú
public_clsr   r;   r   )r   r   r   r   s       r   rO   zPrivateRSA.sign;   sK   € à—H‘H—M‘M $¬×(8Ñ(8Ó(:¸D¿O¹O×<WÑ<WÓXˆ	ÙØ�O‰OÓ×$Ñ$ Y°Ô5ØÐr   Úkey_sizec                 ód   —  | t        j                  | j                  |t        «       ¬«      ¬«      S )N)Úpublic_exponentrQ   Úbackendr6   )r   Úgenerate_private_keyÚdefault_public_exponentr   )r<   rQ   s     r   ÚgeneratezPrivateRSA.generateB   s/   € áÜ×(Ñ(Ø #× ;Ñ ;Ø!Ü'Ó)ôô
ð 	
r   N)F)rB   rC   rD   r   ÚRSAPrivateKeyrF   rG   r   rP   rV   rI   ÚboolrO   rJ   r&   rW   rK   r   r   rM   rM   5   s`   … Ø	×	Ñ	ÓØ×Ñ€GØ€JØ#Ðñ˜ð ¨ð ¸ó ð ð
 ð 
¨ò 
ó ñ
r   rM   c                   óF   — e Zd Zej                  Z ej                  «       Zy)ÚPublicRSAMD5N)	rB   rC   rD   r	   ÚRSAMD5r   r   ÚMD5r   rK   r   r   r[   r[   M   s   „ Ø× Ñ €IØ�&—*‘*“,�Kr   r[   c                   ó   — e Zd ZeZy)ÚPrivateRSAMD5N)rB   rC   rD   r[   rP   rK   r   r   r_   r_   R   s   „ Ø�Jr   r_   c                   óF   — e Zd Zej                  Z ej                  «       Zy)ÚPublicRSASHA1N)	rB   rC   rD   r	   ÚRSASHA1r   r   ÚSHA1r   rK   r   r   ra   ra   V   s   „ Ø×!Ñ!€IØ�&—+‘+“-�Kr   ra   c                   ó   — e Zd ZeZy)ÚPrivateRSASHA1N)rB   rC   rD   ra   rP   rK   r   r   re   re   [   s   „ Ø�Jr   re   c                   óF   — e Zd Zej                  Z ej                  «       Zy)ÚPublicRSASHA1NSEC3SHA1N)	rB   rC   rD   r	   ÚRSASHA1NSEC3SHA1r   r   rc   r   rK   r   r   rg   rg   _   s   „ Ø×*Ñ*€IØ�&—+‘+“-�Kr   rg   c                   ó   — e Zd ZeZy)ÚPrivateRSASHA1NSEC3SHA1N)rB   rC   rD   rg   rP   rK   r   r   rj   rj   d   s   „ Ø'�Jr   rj   c                   óF   — e Zd Zej                  Z ej                  «       Zy)ÚPublicRSASHA256N)	rB   rC   rD   r	   Ú	RSASHA256r   r   ÚSHA256r   rK   r   r   rl   rl   h   ó   „ Ø×#Ñ#€IØ�&—-‘-“/�Kr   rl   c                   ó   — e Zd ZeZy)ÚPrivateRSASHA256N)rB   rC   rD   rl   rP   rK   r   r   rq   rq   m   ó   „ Ø �Jr   rq   c                   óF   — e Zd Zej                  Z ej                  «       Zy)ÚPublicRSASHA512N)	rB   rC   rD   r	   Ú	RSASHA512r   r   ÚSHA512r   rK   r   r   rt   rt   q   ro   r   rt   c                   ó   — e Zd ZeZy)ÚPrivateRSASHA512N)rB   rC   rD   rt   rP   rK   r   r   rx   rx   v   rr   r   rx   )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_   ra   re   rg   rj   rl   rq   rt   rx   rK   r   r   ú<module>r      s°   ðÛ Û å 8Ý 1ß Bç UÝ %Ý )ô%
Ð%ô %
ôP
Ð'ô 
ô0�9ô ô
�Jô ô �Iô  ô
�Zô ô ˜Yô  ô
(˜jô (ô"�iô "ô
!�zô !ô"�iô "ô
!�zõ !r   