§
    VøÁiÓ  ã                   óþ   — 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dS )é    )Údefault_backend)Úhashes)ÚecÚutils)ÚCryptographyPrivateKeyÚCryptographyPublicKey)Ú	Algorithm)ÚDNSKEYc                   ó®   — e Zd ZU ej        ed<   ej        Zeed<   ej	        ed<   ej
        ed<   e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 )ÚPublicECDSAÚkeyÚ	algorithmÚchosen_hashÚcurveÚoctetsÚ	signatureÚdataÚreturnNc                 ó6  — |d| j         …         }|| j         d …         }t          j        t                               |d¦  «        t                               |d¦  «        ¦  «        }| j                             ||t          j        | j	        ¦  «        ¦  «         d S )Nr   Úbig)
r   r   Úencode_dss_signatureÚintÚ
from_bytesr   Úverifyr   ÚECDSAr   )Úselfr   r   Úsig_rÚsig_sÚsigs         ú^/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/dns/dnssecalgs/ecdsa.pyr   zPublicECDSA.verify   s‚   € Ø˜!˜dœk˜/Ô*ˆØ˜$œ+˜-˜-Ô(ˆÝÔ(Ý�NŠN˜5 %Ñ(Ô(­#¯.ª.¸ÀÑ*FÔ*Fñ
ô 
ˆð 	Œ�Š˜˜T¥2¤8¨DÔ,<Ñ#=Ô#=Ñ>Ô>Ð>Ð>Ð>ó    c                 ó¶   — | j                              ¦   «         }|j                             | j        d¦  «        |j                             | j        d¦  «        z   S )z,Encode a public key per RFC 6605, section 4.r   )r   Úpublic_numbersÚxÚto_bytesr   Úy)r   Úpns     r    Úencode_key_byteszPublicECDSA.encode_key_bytes   sD   € àŒX×$Ò$Ñ&Ô&ˆØŒt�}Š}˜Tœ[¨%Ñ0Ô0°2´4·=²=ÀÄÈeÑ3TÔ3TÑTÐTr!   c           
      óz  — |                       |¦  «         |j        d| j        …         }|j        | j        | j        dz  …         } | t          j        | j        t                               |d¦  «        t                               |d¦  «        ¬¦  «                             t          ¦   «         ¦  «        ¬¦  «        S )Nr   é   r   )r   r$   r&   ©r   )
Ú!_ensure_algorithm_key_combinationr   r   r   ÚEllipticCurvePublicNumbersr   r   r   Ú
public_keyr   )Úclsr   Úecdsa_xÚecdsa_ys       r    Úfrom_dnskeyzPublicECDSA.from_dnskey   s«   € à×-Ò-¨cÑ2Ô2Ð2Ø”'˜!˜cœj˜.Ô)ˆØ”'˜#œ* s¤z°A¡~Ð5Ô6ˆØˆsÝÔ-Ø”iÝ—.’. ¨%Ñ0Ô0Ý—.’. ¨%Ñ0Ô0ðñ ô ÷ Šj�Ñ*Ô*Ñ+Ô+ð
ñ 
ô 
ð 	
r!   )Ú__name__Ú
__module__Ú__qualname__r   ÚEllipticCurvePublicKeyÚ__annotations__Úkey_clsr	   r   ÚHashAlgorithmÚEllipticCurver   Úbytesr   r(   Úclassmethodr
   r2   © r!   r    r   r   
   s×   € € € € € € Ø	Ô	"Ð"Ð"Ñ"ØÔ'€GØÐÐÑØÔ%Ð%Ð%Ñ%ØÔÐÐÑØ€K€K�Kð? ð ?¨Uð ?°tð ?ð ?ð ?ð ?ðU %ð Uð Uð Uð Uð
 ð

˜fð 

¨ð 

ð 

ð 

ñ „[ð

ð 

ð 

r!   r   c            	       ól   — e Zd ZU ej        ed<   ej        ZeZ	 	 dde	de
de
de	fd„Zedd	„¦   «         Zd
S )ÚPrivateECDSAr   FTr   r   Údeterministicr   c                 óœ  — t          j        | j        j        |¬¦  «        }| j                             ||¦  «        }t          j        |¦  «        \  }}t           	                    || j        j
        d¬¦  «        t           	                    || j        j
        d¬¦  «        z   }|r(|                      ¦   «                              ||¦  «         |S )z1Sign using a private key per RFC 6605, section 4.)Údeterministic_signingr   )ÚlengthÚ	byteorder)r   r   Ú
public_clsr   r   Úsignr   Údecode_dss_signaturer   r%   r   r.   r   )	r   r   r   r@   r   Úder_signatureÚdsa_rÚdsa_sr   s	            r    rF   zPrivateECDSA.sign2   sË   € õ ”HØŒOÔ'Ø"/ð
ñ 
ô 
ˆ	ð œŸš d¨IÑ6Ô6ˆÝÔ1°-Ñ@Ô@‰ˆˆuÝ—L’LØ˜$œ/Ô0¸Eð !ñ 
ô 
å�LŠLØ˜$œ/Ô0¸Eð ñ 
ô 
ñ
ˆ	ð
 ð 	6Ø�OŠOÑÔ×$Ò$ Y°Ñ5Ô5Ð5ØÐr!   c                 ón   —  | t          j        | j        j        t	          ¦   «         ¬¦  «        ¬¦  «        S )N)r   Úbackendr+   )r   Úgenerate_private_keyrE   r   r   )r/   s    r    ÚgeneratezPrivateECDSA.generateH   s@   € àˆsÝÔ'Ø”nÔ*µOÑ4EÔ4Eðñ ô ð
ñ 
ô 
ð 	
r!   N)FT)r   r?   )r3   r4   r5   r   ÚEllipticCurvePrivateKeyr7   r8   r   rE   r;   ÚboolrF   r<   rN   r=   r!   r    r?   r?   -   s™   € € € € € € Ø	Ô	#Ð#Ð#Ñ#ØÔ(€GØ€Jð
 Ø"ð	ð àðð ðð ð	ð
 
ðð ð ð ð, ð
ð 
ð 
ñ „[ð
ð 
ð 
r!   r?   c                   ó\   — e Zd Zej        Z ej        ¦   «         Z e	j
        ¦   «         ZdZdS )ÚPublicECDSAP256SHA256é    N)r3   r4   r5   r	   ÚECDSAP256SHA256r   r   ÚSHA256r   r   Ú	SECP256R1r   r   r=   r!   r    rR   rR   Q   ó5   € € € € € ØÔ)€IØ�&”-‘/”/€KØˆBŒL‰NŒN€EØ€F€F€Fr!   rR   c                   ó   — e Zd ZeZdS )ÚPrivateECDSAP256SHA256N)r3   r4   r5   rR   rE   r=   r!   r    rY   rY   X   ó   € € € € € Ø&€J€J€Jr!   rY   c                   ó\   — e Zd Zej        Z ej        ¦   «         Z e	j
        ¦   «         ZdZdS )ÚPublicECDSAP384SHA384é0   N)r3   r4   r5   r	   ÚECDSAP384SHA384r   r   ÚSHA384r   r   Ú	SECP384R1r   r   r=   r!   r    r\   r\   \   rW   r!   r\   c                   ó   — e Zd ZeZdS )ÚPrivateECDSAP384SHA384N)r3   r4   r5   r\   rE   r=   r!   r    rb   rb   c   rZ   r!   rb   N)Úcryptography.hazmat.backendsr   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   r   Údns.dnssecalgs.cryptographyr   r   Údns.dnssectypesr	   Údns.rdtypes.ANY.DNSKEYr
   r   r?   rR   rY   r\   rb   r=   r!   r    ú<module>ri      s‡  ðØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?à UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ %Ð %Ð %Ð %Ð %Ð %Ø )Ð )Ð )Ð )Ð )Ð )ð 
ð  
ð  
ð  
ð  
Ð'ñ  
ô  
ð  
ðF!
ð !
ð !
ð !
ð !
Ð)ñ !
ô !
ð !
ðHð ð ð ð ˜Kñ ô ð ð'ð 'ð 'ð 'ð '˜\ñ 'ô 'ð 'ðð ð ð ð ˜Kñ ô ð ð'ð 'ð 'ð 'ð '˜\ñ 'ô 'ð 'ð 'ð 'r!   