
    _fC2                    n   U d dl mZ 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  G d d          Z G d d	ej        
          Z G d dej        
          Z G d dej        
          ZeZ G d dej        
          Z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 G d' d(e          Z  G d) d*e          Z! G d+ d,e          Z" G d- d.e          Z# G d/ d0e          Z$ G d1 d2e          Z% G d3 d4e          Z& G d5 d6e          Z'i d7e$d8e!d9e$d:e#d;e!d<e d=ed>e"d?ed@edAedBedCedDedEedFedGeee%e&e'dHZ(dIe)dJ<    G dK dLe          Z*	 d_d`dQZ+	 d_dadTZ, G dU dV          Z- G dW dX          Z. G dY dZ          Z/i ej$        e$ej#        e#ej"        e"ej!        e!ej         e ej        eej0        e%ej1        e&ej2        e'ej        eej        eej        eej        eej        eej        eej        eej        eej        eej        eiZ3dbd^Z4dS )c    )annotationsN)utils)ObjectIdentifier)_serializationhashesc                     e Zd Z ed          Z ed          Z ed          Z ed          Z ed          Z ed          Z	 ed          Z
 ed          Z ed	          Z ed
          Z ed          Z ed          Z ed          Z ed          Z ed          Z ed          Z ed          Z ed          Z ed          ZdS )EllipticCurveOIDz1.2.840.10045.3.1.1z1.3.132.0.33z1.3.132.0.10z1.2.840.10045.3.1.7z1.3.132.0.34z1.3.132.0.35z1.3.36.3.3.2.8.1.1.7z1.3.36.3.3.2.8.1.1.11z1.3.36.3.3.2.8.1.1.13z1.3.132.0.1z1.3.132.0.15z1.3.132.0.26z1.3.132.0.27z1.3.132.0.16z1.3.132.0.17z1.3.132.0.36z1.3.132.0.37z1.3.132.0.38z1.3.132.0.39N)__name__
__module____qualname__r   	SECP192R1	SECP224R1	SECP256K1	SECP256R1	SECP384R1	SECP521R1BRAINPOOLP256R1BRAINPOOLP384R1BRAINPOOLP512R1	SECT163K1	SECT163R2	SECT233K1	SECT233R1	SECT283K1	SECT283R1	SECT409K1	SECT409R1	SECT571K1	SECT571R1     ^/var/www/html/env/lib/python3.11/site-packages/cryptography/hazmat/primitives/asymmetric/ec.pyr	   r	      sC         !677I  00I  00I  !677I  00I  00I&&'=>>O&&'>??O&&'>??O  //I  00I  00I  00I  00I  00I  00I  00I  00I  00IIIr!   r	   c                  r    e Zd Zeej        dd                        Zeej        dd                        ZdS )	EllipticCurvereturnstrc                    dS )z8
        The name of the curve. e.g. secp256r1.
        Nr    selfs    r"   namezEllipticCurve.name'         r!   intc                    dS z<
        Bit size of a secret scalar for the curve.
        Nr    r(   s    r"   key_sizezEllipticCurve.key_size.   r+   r!   Nr%   r&   r%   r,   )r
   r   r   propertyabcabstractmethodr*   r/   r    r!   r"   r$   r$   &   sn            X
     X  r!   r$   )	metaclassc                  @    e Zd Zeej        dd                        ZdS )EllipticCurveSignatureAlgorithmr%   8typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm]c                    dS )z@
        The digest algorithm used with this signature.
        Nr    r(   s    r"   	algorithmz)EllipticCurveSignatureAlgorithm.algorithm7   r+   r!   Nr%   r8   )r
   r   r   r2   r3   r4   r:   r    r!   r"   r7   r7   6   s@            X  r!   r7   c                     e Zd Zej        dd            Zej        dd            Zeej        dd
                        Zeej        dd                        Z	ej        dd            Z
ej        d d            Zej        d!d            ZdS )"EllipticCurvePrivateKeyr:   ECDHpeer_public_keyEllipticCurvePublicKeyr%   bytesc                    dS )z}
        Performs a key exchange operation using the provided algorithm with the
        provided peer's public key.
        Nr    )r)   r:   r?   s      r"   exchangez EllipticCurvePrivateKey.exchangeB   r+   r!   c                    dS )zB
        The EllipticCurvePublicKey for this private key.
        Nr    r(   s    r"   
public_keyz"EllipticCurvePrivateKey.public_keyK   r+   r!   r$   c                    dS z8
        The EllipticCurve that this key is on.
        Nr    r(   s    r"   curvezEllipticCurvePrivateKey.curveQ   r+   r!   r,   c                    dS r.   r    r(   s    r"   r/   z EllipticCurvePrivateKey.key_sizeX   r+   r!   datasignature_algorithmr7   c                    dS )z 
        Signs the data
        Nr    )r)   rJ   rK   s      r"   signzEllipticCurvePrivateKey.sign_   r+   r!   EllipticCurvePrivateNumbersc                    dS )z9
        Returns an EllipticCurvePrivateNumbers.
        Nr    r(   s    r"   private_numbersz'EllipticCurvePrivateKey.private_numbersi   r+   r!   encoding_serialization.Encodingformat_serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionc                    dS z6
        Returns the key serialized as bytes.
        Nr    )r)   rQ   rS   rU   s       r"   private_bytesz%EllipticCurvePrivateKey.private_byteso   r+   r!   N)r:   r>   r?   r@   r%   rA   )r%   r@   r%   r$   r1   )rJ   rA   rK   r7   r%   rA   )r%   rN   )rQ   rR   rS   rT   rU   rV   r%   rA   )r
   r   r   r3   r4   rC   rE   r2   rH   r/   rM   rP   rY   r    r!   r"   r=   r=   A   s"           	   
     X
     X
 	    	   
 	     r!   r=   c                     e Zd Zeej        dd                        Zeej        dd                        Zej        dd            Zej        dd            Z	ej        dd            Z
ed d            Zej        d!d            ZdS )"r@   r%   r$   c                    dS rG   r    r(   s    r"   rH   zEllipticCurvePublicKey.curve   r+   r!   r,   c                    dS r.   r    r(   s    r"   r/   zEllipticCurvePublicKey.key_size   r+   r!   EllipticCurvePublicNumbersc                    dS )z8
        Returns an EllipticCurvePublicNumbers.
        Nr    r(   s    r"   public_numbersz%EllipticCurvePublicKey.public_numbers   r+   r!   rQ   rR   rS   _serialization.PublicFormatrA   c                    dS rX   r    )r)   rQ   rS   s      r"   public_bytesz#EllipticCurvePublicKey.public_bytes   r+   r!   	signaturerJ   rK   r7   Nonec                    dS )z5
        Verifies the signature of the data.
        Nr    )r)   rd   rJ   rK   s       r"   verifyzEllipticCurvePublicKey.verify   r+   r!   rH   c                "   t          j        d|           t          |t                    st	          d          t          |          dk    rt          d          |d         dvrt          d          ddlm} |	                    ||          S )NrJ   z'curve must be an EllipticCurve instancer   z%data must not be an empty byte string)         z%Unsupported elliptic curve point typebackend)
r   _check_bytes
isinstancer$   	TypeErrorlen
ValueError,cryptography.hazmat.backends.openssl.backendrm    load_elliptic_curve_public_bytes)clsrH   rJ   rm   s       r"   from_encoded_pointz)EllipticCurvePublicKey.from_encoded_point   s     	64(((%// 	GEFFFt99>>DEEE7,,,DEEEHHHHHH77tDDDr!   otherobjectboolc                    dS )z"
        Checks equality.
        Nr    r)   rw   s     r"   __eq__zEllipticCurvePublicKey.__eq__   r+   r!   NrZ   r1   r%   r^   )rQ   rR   rS   ra   r%   rA   )rd   rA   rJ   rA   rK   r7   r%   re   )rH   r$   rJ   rA   r%   r@   rw   rx   r%   ry   )r
   r   r   r2   r3   r4   rH   r/   r`   rc   rg   classmethodrv   r|   r    r!   r"   r@   r@   ~   s"           X
     X
 	   
 	    	    E E E [E$ 	     r!   r@   c                      e Zd ZdZdZdS )r   	sect571r1i:  Nr
   r   r   r*   r/   r    r!   r"   r   r              DHHHr!   r   c                      e Zd ZdZdZdS )r   	sect409r1  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	sect283r1  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	sect233r1   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	sect163r2   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	sect571k1i;  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	sect409k1r   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	sect283k1r   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	sect233k1r   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	sect163k1r   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	secp521r1i	  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	secp384r1  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZdS )r   	secp256r1   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZdS )r   	secp256k1r   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZdS )r   	secp224r1   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZdS )r   	secp192r1   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZdS )BrainpoolP256R1brainpoolP256r1r   Nr   r    r!   r"   r   r             DHHHr!   r   c                      e Zd ZdZdZdS )BrainpoolP384R1brainpoolP384r1r   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZdS )BrainpoolP512R1brainpoolP512r1i   Nr   r    r!   r"   r   r     r   r!   r   
prime192v1
prime256v1r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   z,typing.Dict[str, typing.Type[EllipticCurve]]_CURVE_TYPESc                  .    e Zd ZddZedd            ZdS )	ECDSAr:   r8   c                    || _         d S N
_algorithm)r)   r:   s     r"   __init__zECDSA.__init__>  s     $r!   r%   c                    | j         S r   r   r(   s    r"   r:   zECDSA.algorithmD  s     r!   N)r:   r8   r;   )r
   r   r   r   r2   r:   r    r!   r"   r   r   =  sH        $ $ $ $    X  r!   r   rH   rm   
typing.Anyr%   c                8    ddl m} |                    |           S Nr   rl   )rs   rm   #generate_elliptic_curve_private_key)rH   rm   ossls      r"   generate_private_keyr   K  s+     MLLLLL33E:::r!   private_valuer,   c                    ddl m} t          | t                    st	          d          | dk    rt          d          t          |t                    st	          d          |                    | |          S )Nr   rl   z&private_value must be an integer type.z)private_value must be a positive integer./curve must provide the EllipticCurve interface.)rs   rm   ro   r,   rp   rr   r$   !derive_elliptic_curve_private_key)r   rH   rm   r   s       r"   derive_private_keyr   S  s    
 MLLLLLmS)) B@AAADEEEe]++ KIJJJ11-GGGr!   c                      e Zd ZddZdddZedd            Zedd            Zedd            ZddZ	ddZ
ddZdS )r^   xr,   yrH   r$   c                    t          |t                    rt          |t                    st          d          t          |t                    st          d          || _        || _        || _        d S )Nzx and y must be integers.r   )ro   r,   rp   r$   _y_x_curve)r)   r   r   rH   s       r"   r   z#EllipticCurvePublicNumbers.__init__g  so    !S!! 	9As);); 	97888%// 	OMNNNr!   Nrm   r   r%   r@   c                8    ddl m} |                    |           S r   )rs   rm   "load_elliptic_curve_public_numbersr)   rm   r   s      r"   rE   z%EllipticCurvePublicNumbers.public_keyr  s6    	
 	
 	
 	
 	
 	
 66t<<<r!   c                    | j         S r   )r   r(   s    r"   rH   z EllipticCurvePublicNumbers.curvey  s
    {r!   c                    | j         S r   )r   r(   s    r"   r   zEllipticCurvePublicNumbers.x}  	    wr!   c                    | j         S r   )r   r(   s    r"   r   zEllipticCurvePublicNumbers.y  r   r!   rw   rx   ry   c                    t          |t                    st          S | j        |j        k    oC| j        |j        k    o3| j        j        |j        j        k    o| j        j        |j        j        k    S r   )ro   r^   NotImplementedr   r   rH   r*   r/   r{   s     r"   r|   z!EllipticCurvePublicNumbers.__eq__  sn    %!;<< 	"!! Feg <%'!<
5;#33< 
#u{';;		
r!   c                d    t          | j        | j        | j        j        | j        j        f          S r   )hashr   r   rH   r*   r/   r(   s    r"   __hash__z#EllipticCurvePublicNumbers.__hash__  s&    TVTVTZ_dj6IJKKKr!   r&   c                ,    d                     |           S )NzC<EllipticCurvePublicNumbers(curve={0.curve.name}, x={0.x}, y={0.y}>)rS   r(   s    r"   __repr__z#EllipticCurvePublicNumbers.__repr__  s    vd||	
r!   )r   r,   r   r,   rH   r$   r   )rm   r   r%   r@   rZ   r1   r~   r0   )r
   r   r   r   rE   r2   rH   r   r   r|   r   r   r    r!   r"   r^   r^   f  s        	 	 	 	= = = = =    X    X    X	
 	
 	
 	
L L L L
 
 
 
 
 
r!   r^   c                  b    e Zd ZddZ	 dddZedd            Zedd            ZddZddZ	dS )rN   r   r,   r`   r^   c                    t          |t                    st          d          t          |t                    st          d          || _        || _        d S )Nz!private_value must be an integer.z>public_numbers must be an EllipticCurvePublicNumbers instance.)ro   r,   rp   r^   _private_value_public_numbers)r)   r   r`   s      r"   r   z$EllipticCurvePrivateNumbers.__init__  sh     --- 	A?@@@.*DEE 	  
 ,-r!   Nrm   r   r%   r=   c                8    ddl m} |                    |           S r   )rs   rm   #load_elliptic_curve_private_numbersr   s      r"   private_keyz'EllipticCurvePrivateNumbers.private_key  s6    	
 	
 	
 	
 	
 	
 77===r!   c                    | j         S r   )r   r(   s    r"   r   z)EllipticCurvePrivateNumbers.private_value  s    ""r!   c                    | j         S r   )r   r(   s    r"   r`   z*EllipticCurvePrivateNumbers.public_numbers  s    ##r!   rw   rx   ry   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r   )ro   rN   r   r   r`   r{   s     r"   r|   z"EllipticCurvePrivateNumbers.__eq__  sC    %!<== 	"!! %"55 <#u';;	
r!   c                8    t          | j        | j        f          S r   )r   r   r`   r(   s    r"   r   z$EllipticCurvePrivateNumbers.__hash__  s    T')<=>>>r!   )r   r,   r`   r^   r   )rm   r   r%   r=   r1   r}   r~   )
r
   r   r   r   r   r2   r   r`   r|   r   r    r!   r"   rN   rN     s        . . . .  %)> > > > > # # # X# $ $ $ X$
 
 
 
? ? ? ? ? ?r!   rN   c                      e Zd ZdS )r>   N)r
   r   r   r    r!   r"   r>   r>     s        Dr!   r>   oidr   typing.Type[EllipticCurve]c                X    	 t           |          S # t          $ r t          d          w xY w)NzCThe provided object identifier has no matching elliptic curve class)_OID_TO_CURVEKeyErrorLookupError)r   s    r"   get_curve_for_oidr     sD    
S!! 
 
 

 
 	

s    )r   )rH   r$   rm   r   r%   r=   )r   r,   rH   r$   rm   r   r%   r=   )r   r   r%   r   )5
__future__r   r3   typingcryptographyr   cryptography.hazmat._oidr   cryptography.hazmat.primitivesr   r   )cryptography.hazmat.primitives.asymmetric
asym_utilsr	   ABCMetar$   r7   r=   (EllipticCurvePrivateKeyWithSerializationr@   'EllipticCurvePublicKeyWithSerializationr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __annotations__r   r   r   r^   rN   r>   r   r   r   r   r   r    r!   r"   <module>r      s  
 # " " " " " " 



        5 5 5 5 5 5 A A A A A A A A I I I I I I1 1 1 1 1 1 1 1,    ck             7 7 7 7 7 7 7 7 7t ,C (A A A A As{ A A A AH +A '       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
    m   
    m   
    m   
>)>)> > 	>
 > > > > > > > > > > >  !>" #>$ &&&+> > >    2    +    15; ; ; ; ; H H H H H&1
 1
 1
 1
 1
 1
 1
 1
h+? +? +? +? +? +? +? +?\	 	 	 	 	 	 	 			 	 		
 	 	 $o $o $o 	 	 	 	 	 	  	!" 	#$ 		' .
 
 
 
 
 
r!   