
     h1              	          U 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. d/e          Z" G d0 d1e          Z# G d2 d3e          Z$ G d4 d5e          Z%i d6e"d7ed8e"d9e!d:ed;ed<ed=e d>ed?ed@edAedBedCedDedEedFeee#e$e%dGZ&ej'        e(ej)        e         f         e*dH<    G dI dJe          Z+	 dYdKedLej,        dMefdNZ-	 dYdOe.dKedLej,        dMefdPZ/ G dQ dR          Z0 G dS dT          Z1 G dU dV          Z2i ej"        e"ej!        e!ej         e ej        eej        eej        eej3        e#ej4        e$ej5        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Z6dWedMej)        e         fdXZ7dS )Z    N)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     h/var/www/html/Sam_Eipo/venv/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                   z    e Zd Zeej        defd                        Zeej        defd                        Z	dS )EllipticCurvereturnc                     dS )z8
        The name of the curve. e.g. secp256r1.
        Nr   selfs    r!   namezEllipticCurve.name&         r    c                     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   propertyabcabstractmethodstrr(   intr,   r   r    r!   r#   r#   %   s|        c     X
 #     X  r    r#   )	metaclassc                   r    e Zd Zeej        dej        ej	        e
j        f         fd                        ZdS )EllipticCurveSignatureAlgorithmr$   c                     dS )z@
        The digest algorithm used with this signature.
        Nr   r&   s    r!   	algorithmz)EllipticCurveSignatureAlgorithm.algorithm6   r)   r    N)r	   r
   r   r-   r.   r/   typingUnion
asym_utils	Prehashedr   HashAlgorithmr6   r   r    r!   r4   r4   5   sZ        	j*F,@@	A    X  r    r4   c            	       j   e Zd Zej        dddddefd            Zej        dd            Zeej        de	fd                        Z
eej        defd	                        Zej        d
ededefd            Zej        dd            Zej        dej        dej        dej        defd            ZdS )EllipticCurvePrivateKeyr6   ECDHpeer_public_keyEllipticCurvePublicKeyr$   c                     dS )z}
        Performs a key exchange operation using the provided algorithm with the
        provided peer's public key.
        Nr   )r'   r6   r?   s      r!   exchangez EllipticCurvePrivateKey.exchangeA   r)   r    c                     dS )zB
        The EllipticCurvePublicKey for this private key.
        Nr   r&   s    r!   
public_keyz"EllipticCurvePrivateKey.public_keyJ   r)   r    c                     dS z8
        The EllipticCurve that this key is on.
        Nr   r&   s    r!   curvezEllipticCurvePrivateKey.curveP   r)   r    c                     dS r+   r   r&   s    r!   r,   z EllipticCurvePrivateKey.key_sizeW   r)   r    datasignature_algorithmc                     dS )z 
        Signs the data
        Nr   )r'   rI   rJ   s      r!   signzEllipticCurvePrivateKey.sign^   r)   r    EllipticCurvePrivateNumbersc                     dS )z9
        Returns an EllipticCurvePrivateNumbers.
        Nr   r&   s    r!   private_numbersz'EllipticCurvePrivateKey.private_numbersh   r)   r    encodingformatencryption_algorithmc                     dS z6
        Returns the key serialized as bytes.
        Nr   )r'   rP   rQ   rR   s       r!   private_bytesz%EllipticCurvePrivateKey.private_bytesn   r)   r    N)r$   r@   )r$   rM   )r	   r
   r   r.   r/   bytesrB   rD   r-   r#   rG   r1   r,   r4   rL   rO   r   EncodingPrivateFormatKeySerializationEncryptionrU   r   r    r!   r=   r=   @   s       2J	    	   
 }     X
 #     X
 	 = 
	    	   
 	 ) , -G	
 
     r    r=   c            	       4   e Zd Zeej        defd                        Zeej        defd                        Z	ej        dd            Z
ej        dej        dej        defd            Zej        d	ed
ededdfd            Zeded
edd fd            ZdS )r@   r$   c                     dS rF   r   r&   s    r!   rG   zEllipticCurvePublicKey.curve~   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    rP   rQ   c                     dS rT   r   )r'   rP   rQ   s      r!   public_bytesz#EllipticCurvePublicKey.public_bytes   r)   r    	signaturerI   rJ   Nc                     dS )z5
        Verifies the signature of the data.
        Nr   )r'   rb   rI   rJ   s       r!   verifyzEllipticCurvePublicKey.verify   r)   r    rG   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 )NrI   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.backendrj    load_elliptic_curve_public_bytes)clsrG   rI   rj   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    )r$   r]   )r	   r
   r   r-   r.   r/   r#   rG   r1   r,   r_   r   rW   PublicFormatrV   ra   r4   rd   classmethodrs   r   r    r!   r@   r@   }   sq       }     X
 #     X
 	   
 	 ) + 
	    	  =	
 
    E!E).E	!E E 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  Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	sect283r1  Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	sect233r1   Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	sect163r2   Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	sect571k1i;  Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	sect409k1r|   Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	sect283k1r   Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	sect233k1r   Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	sect163k1r   Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	secp521r1i	  Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	secp384r1  Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	secp256r1   Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	secp256k1r   Nrx   r   r    r!   r   r      ry   r    r   c                       e Zd ZdZdZdS )r   	secp224r1   Nrx   r   r    r!   r   r     ry   r    r   c                       e Zd ZdZdZdS )r   	secp192r1   Nrx   r   r    r!   r   r   	  ry   r    r   c                       e Zd ZdZdZdS )BrainpoolP256R1brainpoolP256r1r   Nrx   r   r    r!   r   r             DHHHr    r   c                       e Zd ZdZdZdS )BrainpoolP384R1brainpoolP384r1r   Nrx   r   r    r!   r   r     r   r    r   c                       e Zd ZdZdZdS )BrainpoolP512R1brainpoolP512r1i   Nrx   r   r    r!   r   r     r   r    r   
prime192v1
prime256v1r   r   r   r   r   r   r   r   r   r   r   r   r   r~   r{   )rw   r   r   r   _CURVE_TYPESc                       e Zd Zdej        ej        ej        f         fdZ	e
dej        ej        ej        f         fd            ZdS )ECDSAr6   c                     || _         d S N
_algorithm)r'   r6   s     r!   __init__zECDSA.__init__7  s     $r    r$   c                     | j         S r   r   r&   s    r!   r6   zECDSA.algorithm=  s     r    N)r	   r
   r   r7   r8   r9   r:   r   r;   r   r-   r6   r   r    r!   r   r   6  s|        $<
 4f6J JK$ $ $ $ 	j*F,@@	A   X  r    r   rG   rj   r$   c                 8    ddl m} |                    |           S Nr   ri   )rp   rj   #generate_elliptic_curve_private_key)rG   rj   ossls      r!   generate_private_keyr   D  s+     MLLLLL33E:::r    private_valuec                     ddl m} t          | t                    st	          d          | dk    rt          d          t          |t                    st	          d          |                    | |          S )Nr   ri   z&private_value must be an integer type.z)private_value must be a positive integer./curve must provide the EllipticCurve interface.)rp   rj   rl   r1   rm   ro   r#   !derive_elliptic_curve_private_key)r   rG   rj   r   s       r!   derive_private_keyr   L  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ededefdZddej        defdZ	e
defd	            Ze
defd
            Ze
defd            ZdedefdZdefdZdefdZdS )r]   xyrG   c                     t          |t                    rt          |t                    st          d          t          |t                    st          d          || _        || _        || _        d S )Nzx and y must be integers.r   )rl   r1   rm   r#   _y_x_curve)r'   r   r   rG   s       r!   r   z#EllipticCurvePublicNumbers.__init__`  so    !S!! 	9As);); 	97888%// 	OMNNNr    Nrj   r$   c                 8    ddl m} |                    |           S r   )rp   rj   "load_elliptic_curve_public_numbersr'   rj   r   s      r!   rD   z%EllipticCurvePublicNumbers.public_keyk  s6    	
 	
 	
 	
 	
 	
 66t<<<r    c                     | j         S r   )r   r&   s    r!   rG   z EllipticCurvePublicNumbers.curver  s
    {r    c                     | j         S r   )r   r&   s    r!   r   zEllipticCurvePublicNumbers.xv  	    wr    c                     | j         S r   )r   r&   s    r!   r   zEllipticCurvePublicNumbers.yz  r   r    otherc                     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   )rl   r]   NotImplementedr   r   rG   r(   r,   r'   r   s     r!   __eq__z!EllipticCurvePublicNumbers.__eq__~  sn    %!;<< 	"!! Feg <%'!<
5;#33< 
#u{';;		
r    c                 d    t          | j        | j        | j        j        | j        j        f          S r   )hashr   r   rG   r(   r,   r&   s    r!   __hash__z#EllipticCurvePublicNumbers.__hash__  s&    TVTVTZ_dj6IJKKKr    c                 ,    d                     |           S )NzC<EllipticCurvePublicNumbers(curve={0.curve.name}, x={0.x}, y={0.y}>)rQ   r&   s    r!   __repr__z#EllipticCurvePublicNumbers.__repr__  s    vd||	
r    r   )r	   r
   r   r1   r#   r   r7   Anyr@   rD   r-   rG   r   r   objectboolr   r   r0   r   r   r    r!   r]   r]   _  s9       	# 	# 	m 	 	 	 	= =&* =8N = = = = }    X 3    X 3    X	
F 	
t 	
 	
 	
 	
L# L L L L
# 
 
 
 
 
 
r    r]   c                       e Zd ZdedefdZ	 ddej        defdZ	e
defd            Ze
defd	            Zd
edefdZdefdZdS )rM   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.)rl   r1   rm   r]   _private_value_public_numbers)r'   r   r_   s      r!   r   z$EllipticCurvePrivateNumbers.__init__  sh     --- 	A?@@@.*DEE 	  
 ,-r    Nrj   r$   c                 8    ddl m} |                    |           S r   )rp   rj   #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    r   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r   )rl   rM   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   r1   r]   r   r7   r   r=   r   r-   r   r_   r   r   r   r   r   r    r!   rM   rM     s        . .2L. . . .  %)> >z>	 > > > > #s # # # X# $ : $ $ $ X$
F 
t 
 
 
 
?# ? ? ? ? ? ?r    rM   c                       e Zd ZdS )r>   N)r	   r
   r   r   r    r!   r>   r>     s        Dr    r>   oidc                 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   )8r.   r7   cryptographyr   cryptography.hazmat._oidr   cryptography.hazmat.primitivesr   r   )cryptography.hazmat.primitives.asymmetricr9   r   ABCMetar#   r4   r=   (EllipticCurvePrivateKeyWithSerializationr@   'EllipticCurvePublicKeyWithSerializationr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Dictr0   Type__annotations__r   r   r   r1   r   r]   rM   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 (;E ;E ;E ;E ;Es{ ;E ;E ;E ;E| +A '       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
    m   
    m   
    m   
>)>)> > 	>
 > > > > > > > > > > >  !>" #>$ &&&+> > >fk#v{=99:   2    +    15; ;;#):;; ; ; ; H HHH ZH 	H H H H&1
 1
 1
 1
 1
 1
 1
 1
h+? +? +? +? +? +? +? +?\	 	 	 	 	 	 	 			 	 		
 	 	 $o $o $o 	 	 	 	 	 	  	!" 	#$ 		' .
+ 
M0J 
 
 
 
 
 
r    