
    +hC2                       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*	 dV	 	 	 	 	 dWdMZ+	 dV	 	 	 	 	 	 	 dXdNZ, G dO dP      Z- G dQ dR      Z. G dS dT      Z/i ejH                  e$ejF                  e#ejD                  e"ejB                  e!ej@                  e ej>                  eej`                  e%ejb                  e&ejd                  e'ej<                  eej2                  eej:                  eej0                  eej8                  eej.                  eej6                  eej,                  eej4                  eej*                  eiZ3dYdUZ4y)Z    )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y)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/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.pyr	   r	      s     !67I 0I 0I !67I 0I 0I&'=>O&'>?O&'>?O /I 0I 0I 0I 0I 0I 0I 0I 0I 0Ir!   r	   c                  l    e Zd Zeej
                  dd              Zeej
                  dd              Zy)EllipticCurvec                     y)z8
        The name of the curve. e.g. secp256r1.
        Nr    selfs    r"   namezEllipticCurve.name'       r!   c                     yz<
        Bit size of a secret scalar for the curve.
        Nr    r&   s    r"   key_sizezEllipticCurve.key_size.   r)   r!   Nreturnstrr.   int)r
   r   r   propertyabcabstractmethodr(   r,   r    r!   r"   r$   r$   &   sD      
   r!   r$   )	metaclassc                  @    e Zd Zeej
                  	 	 dd              Zy)EllipticCurveSignatureAlgorithmc                     y)z@
        The digest algorithm used with this signature.
        Nr    r&   s    r"   	algorithmz)EllipticCurveSignatureAlgorithm.algorithm7   r)   r!   Nr.   8typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm])r
   r   r   r2   r3   r4   r9   r    r!   r"   r7   r7   6   s*    	A  r!   r7   c                  R   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y)EllipticCurvePrivateKeyc                     y)z}
        Performs a key exchange operation using the provided algorithm with the
        provided peer's public key.
        Nr    )r'   r9   peer_public_keys      r"   exchangez EllipticCurvePrivateKey.exchangeB   r)   r!   c                     y)zB
        The EllipticCurvePublicKey for this private key.
        Nr    r&   s    r"   
public_keyz"EllipticCurvePrivateKey.public_keyK   r)   r!   c                     yz8
        The EllipticCurve that this key is on.
        Nr    r&   s    r"   curvezEllipticCurvePrivateKey.curveQ   r)   r!   c                     yr+   r    r&   s    r"   r,   z EllipticCurvePrivateKey.key_sizeX   r)   r!   c                     y)z 
        Signs the data
        Nr    )r'   datasignature_algorithms      r"   signzEllipticCurvePrivateKey.sign_   r)   r!   c                     y)z9
        Returns an EllipticCurvePrivateNumbers.
        Nr    r&   s    r"   private_numbersz'EllipticCurvePrivateKey.private_numbersi   r)   r!   c                     yz6
        Returns the key serialized as bytes.
        Nr    )r'   encodingformatencryption_algorithms       r"   private_bytesz%EllipticCurvePrivateKey.private_byteso   r)   r!   N)r9   ECDHr?   EllipticCurvePublicKeyr.   bytes)r.   rT   r.   r$   r0   )rH   rU   rI   r7   r.   rU   )r.   EllipticCurvePrivateNumbers)rO   _serialization.EncodingrP   z_serialization.PrivateFormatrQ   z)_serialization.KeySerializationEncryptionr.   rU   )r
   r   r   r3   r4   r@   rB   r2   rE   r,   rJ   rL   rR   r    r!   r"   r=   r=   A   s!   0F	  	 
   
   
 	 = 
	  	 
 	) - H	
 
 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y)rT   c                     yrD   r    r&   s    r"   rE   zEllipticCurvePublicKey.curve   r)   r!   c                     yr+   r    r&   s    r"   r,   zEllipticCurvePublicKey.key_size   r)   r!   c                     y)z8
        Returns an EllipticCurvePublicNumbers.
        Nr    r&   s    r"   public_numbersz%EllipticCurvePublicKey.public_numbers   r)   r!   c                     yrN   r    )r'   rO   rP   s      r"   public_bytesz#EllipticCurvePublicKey.public_bytes   r)   r!   c                     y)z5
        Verifies the signature of the data.
        Nr    )r'   	signaturerH   rI   s       r"   verifyzEllipticCurvePublicKey.verify   r)   r!   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} |j                  ||      S )NrH   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.backendrh    load_elliptic_curve_public_bytes)clsrE   rH   rh   s       r"   from_encoded_pointz)EllipticCurvePublicKey.from_encoded_point   sp     	64(%/EFFt9>DEE7,,DEEH77tDDr!   c                     y)z"
        Checks equality.
        Nr    r'   others     r"   __eq__zEllipticCurvePublicKey.__eq__   r)   r!   NrV   r0   r.   EllipticCurvePublicNumbers)rO   rX   rP   z_serialization.PublicFormatr.   rU   )ra   rU   rH   rU   rI   r7   r.   None)rE   r$   rH   rU   r.   rT   rt   objectr.   bool)r
   r   r   r2   r3   r4   rE   r,   r]   r_   rb   classmethodrq   ru   r    r!   r"   rT   rT   ~   s     
   
 	 
 	) , 
	  	  =	
 
  E!E).E	E E$ 	 r!   rT   c                      e Zd ZdZdZy)r   	sect571r1i:  Nr
   r   r   r(   r,   r    r!   r"   r   r          DHr!   r   c                      e Zd ZdZdZy)r   	sect409r1  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	sect283r1  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	sect233r1   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	sect163r2   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	sect571k1i;  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	sect409k1r   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	sect283k1r   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	sect233k1r   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	sect163k1r   Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	secp521r1i	  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	secp384r1  Nr   r    r!   r"   r   r      r   r!   r   c                      e Zd ZdZdZy)r   	secp256r1   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZy)r   	secp256k1r   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZy)r   	secp224r1   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZy)r   	secp192r1   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZy)BrainpoolP256R1brainpoolP256r1r   Nr   r    r!   r"   r   r         DHr!   r   c                      e Zd ZdZdZy)BrainpoolP384R1brainpoolP384r1r   Nr   r    r!   r"   r   r     r   r!   r   c                      e Zd ZdZdZy)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y)ECDSAc                    || _         y N
_algorithm)r'   r9   s     r"   __init__zECDSA.__init__>  s     $r!   c                    | j                   S r   r   r&   s    r"   r9   zECDSA.algorithmD  s     r!   N)r9   r;   r:   )r
   r   r   r   r2   r9   r    r!   r"   r   r   =  s+    $K$ 	A r!   r   c                0    ddl m} |j                  |       S Nr   rg   )rn   rh   #generate_elliptic_curve_private_key)rE   rh   ossls      r"   generate_private_keyr   K  s     M33E::r!   c                    ddl m} t        | t              st	        d      | dk  rt        d      t        |t              st	        d      |j                  | |      S )Nr   rg   z&private_value must be an integer type.z)private_value must be a positive integer./curve must provide the EllipticCurve interface.)rn   rh   rj   r1   rk   rm   r$   !derive_elliptic_curve_private_key)private_valuerE   rh   r   s       r"   derive_private_keyr   S  s[    
 MmS)@AADEEe]+IJJ11-GGr!   c                  l    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y)rw   c                    t        |t              rt        |t              st        d      t        |t              st        d      || _        || _        || _        y )Nzx and y must be integers.r   )rj   r1   rk   r$   _y_x_curve)r'   xyrE   s       r"   r   z#EllipticCurvePublicNumbers.__init__g  sL    !S!As);788%/MNNr!   Nc                0    ddl m} |j                  |       S r   )rn   rh   "load_elliptic_curve_public_numbersr'   rh   r   s      r"   rB   z%EllipticCurvePublicNumbers.public_keyr  s    	
 66t<<r!   c                    | j                   S r   )r   r&   s    r"   rE   z EllipticCurvePublicNumbers.curvey  s    {{r!   c                    | j                   S r   )r   r&   s    r"   r   zEllipticCurvePublicNumbers.x}      wwr!   c                    | j                   S r   )r   r&   s    r"   r   zEllipticCurvePublicNumbers.y  r   r!   c                R   t        |t              st        S | j                  |j                  k(  xrw | j                  |j                  k(  xr\ | j
                  j                  |j
                  j                  k(  xr- | j
                  j                  |j
                  j                  k(  S r   )rj   rw   NotImplementedr   r   rE   r(   r,   rs   s     r"   ru   z!EllipticCurvePublicNumbers.__eq__  s    %!;<!! FFegg <%''!<

5;;#3#33< 

##u{{';';;		
r!   c                    t        | j                  | j                  | j                  j                  | j                  j
                  f      S r   )hashr   r   rE   r(   r,   r&   s    r"   __hash__z#EllipticCurvePublicNumbers.__hash__  s0    TVVTVVTZZ__djj6I6IJKKr!   c                $    dj                  |       S )NzC<EllipticCurvePublicNumbers(curve={0.curve.name}, x={0.x}, y={0.y}>)rP   r&   s    r"   __repr__z#EllipticCurvePublicNumbers.__repr__  s    vd|	
r!   )r   r1   r   r1   rE   r$   r   )rh   
typing.Anyr.   rT   rV   r0   ry   r-   )r
   r   r   r   rB   r2   rE   r   r   ru   r   r   r    r!   r"   rw   rw   f  sX    	=      	
L
r!   rw   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	y)rW   c                    t        |t              st        d      t        |t              st        d      || _        || _        y )Nz!private_value must be an integer.z>public_numbers must be an EllipticCurvePublicNumbers instance.)rj   r1   rk   rw   _private_value_public_numbers)r'   r   r]   s      r"   r   z$EllipticCurvePrivateNumbers.__init__  sI     --?@@.*DE 
 ,-r!   Nc                0    ddl m} |j                  |       S r   )rn   rh   #load_elliptic_curve_private_numbersr   s      r"   private_keyz'EllipticCurvePrivateNumbers.private_key  s    	
 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!   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r   )rj   rW   r   r   r]   rs   s     r"   ru   z"EllipticCurvePrivateNumbers.__eq__  sG    %!<=!! %"5"55 <##u';';;	
r!   c                D    t        | j                  | j                  f      S r   )r   r   r]   r&   s    r"   r   z$EllipticCurvePrivateNumbers.__hash__  s    T'')<)<=>>r!   )r   r1   r]   rw   r   )rh   r   r.   r=   r0   rv   ry   )
r
   r   r   r   r   r2   r   r]   ru   r   r    r!   r"   rW   rW     sc    . .2L.  %)>!>	 > # # $ $
?r!   rW   c                      e Zd Zy)rS   N)r
   r   r   r    r!   r"   rS   rS     s    r!   rS   c                F    	 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)oids    r"   get_curve_for_oidr     s3    
S!! 

 	

s     r   )rE   r$   rh   r   r.   r=   )r   r1   rE   r$   rh   r   r.   r=   )r   r   r.   ztyping.Type[EllipticCurve])5
__future__r   r3   typingcryptographyr   cryptography.hazmat._oidr   cryptography.hazmat.primitivesr   r   )cryptography.hazmat.primitives.asymmetric
asym_utilsr	   ABCMetar$   r7   r=   (EllipticCurvePrivateKeyWithSerializationrT   'EllipticCurvePublicKeyWithSerializationr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __annotations__r   r   r   rw   rW   rS   r   r   r   r   r   r    r!   r"   <module>r      s#  
 # 
   5 A I1 1,ckk   7 7t ,C (As{{ AH +A ' 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
m 
m 
m 
>)>)> > 	>
 > > > > > > > > > > >  !>" #>$ &&&+>: 2+  15;;#-;; HHH H 	H&1
 1
h+? +?\	 			 	 		
 	 	 $$o $$o $$o 	 	 	 	 	 	  	!" 	#$ 		'.
r!   