
    .Ph2                    ^   U d dl mZ d dlZd dlZd dlmZ d dlmZm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e                    ej        j                    G d dej                  ZeZe                    ej        j                   ej        j        Zej        j         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          Z0 G d3 d4e          Z1 G d5 d6e          Z2 G d7 d8e          Z3i d9 e0            d: e-            d; e0            d< e/            d= e-            d> e,            d? e+            d@ e.            dA e*            dB e)            dC e(            dD e'            dE e&            dF e%            dG e$            dH e#            dI e"             e!             e1             e2             e3            dJZ4dKe5dL<    G dM dNe          Z6ej        j7        Z7	 d\d]dUZ8 G dV dW          Z9i ej0        e0ej/        e/ej.        e.ej-        e-ej,        e,ej+        e+ej:        e1ej;        e2ej<        e3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Z=d^d[Z>dS )_    )annotationsN)utils)UnsupportedAlgorithm_Reasons)ObjectIdentifier)openssl)_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     l/var/www/html/test/jupyter/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                      e Zd Zeej        d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_size0   r.   r$   c                    dS )z1
        The order of the curve's group.
        Nr#   r+   s    r%   group_orderzEllipticCurve.group_order7   r.   r$   N)r(   r)   r(   r/   )	r   r   r   propertyabcabstractmethodr-   r2   r4   r#   r$   r%   r'   r'   (   s            X
     X
     X  r$   r'   )	metaclassc                  @    e Zd Zeej        dd                        ZdS )EllipticCurveSignatureAlgorithmr(   +asym_utils.Prehashed | hashes.HashAlgorithmc                    dS )z@
        The digest algorithm used with this signature.
        Nr#   r+   s    r%   	algorithmz)EllipticCurveSignatureAlgorithm.algorithm@   r.   r$   Nr(   r<   )r   r   r   r6   r7   r8   r>   r#   r$   r%   r;   r;   ?   s@            X  r$   r;   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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>   rC   s      r%   exchangez EllipticCurvePrivateKey.exchangeK   r.   r$   c                    dS )zB
        The EllipticCurvePublicKey for this private key.
        Nr#   r+   s    r%   
public_keyz"EllipticCurvePrivateKey.public_keyT   r.   r$   r'   c                    dS z8
        The EllipticCurve that this key is on.
        Nr#   r+   s    r%   curvezEllipticCurvePrivateKey.curveZ   r.   r$   r/   c                    dS r1   r#   r+   s    r%   r2   z EllipticCurvePrivateKey.key_sizea   r.   r$   datautils.Buffersignature_algorithmr;   c                    dS )z 
        Signs the data
        Nr#   )r,   rN   rP   s      r%   signzEllipticCurvePrivateKey.signh   r.   r$   EllipticCurvePrivateNumbersc                    dS )z9
        Returns an EllipticCurvePrivateNumbers.
        Nr#   r+   s    r%   private_numbersz'EllipticCurvePrivateKey.private_numbersr   r.   r$   encoding_serialization.Encodingformat_serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionc                    dS z6
        Returns the key serialized as bytes.
        Nr#   )r,   rV   rX   rZ   s       r%   private_bytesz%EllipticCurvePrivateKey.private_bytesx   r.   r$   c                    dS z!
        Returns a copy.
        Nr#   r+   s    r%   __copy__z EllipticCurvePrivateKey.__copy__   r.   r$   N)r>   rB   rC   rD   r(   rE   r(   rD   r(   r'   r5   )rN   rO   rP   r;   r(   rE   )r(   rS   )rV   rW   rX   rY   rZ   r[   r(   rE   )r(   rA   )r   r   r   r7   r8   rG   rI   r6   rL   r2   rR   rU   r^   ra   r#   r$   r%   rA   rA   J   sF           	   
     X
     X
 	    	   
 	    	     r$   rA   c                  4   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ej        d$d            ZdS )%rD   r(   r'   c                    dS rK   r#   r+   s    r%   rL   zEllipticCurvePublicKey.curve   r.   r$   r/   c                    dS r1   r#   r+   s    r%   r2   zEllipticCurvePublicKey.key_size   r.   r$   EllipticCurvePublicNumbersc                    dS )z8
        Returns an EllipticCurvePublicNumbers.
        Nr#   r+   s    r%   public_numbersz%EllipticCurvePublicKey.public_numbers   r.   r$   rV   rW   rX   _serialization.PublicFormatrE   c                    dS r]   r#   )r,   rV   rX   s      r%   public_bytesz#EllipticCurvePublicKey.public_bytes   r.   r$   	signaturerO   rN   rP   r;   Nonec                    dS )z5
        Verifies the signature of the data.
        Nr#   )r,   rm   rN   rP   s       r%   verifyzEllipticCurvePublicKey.verify   r.   r$   rL   c                    t          j        d|           t          |          dk    rt          d          |d         dvrt          d          t          j                            ||          S )NrN   r   z%data must not be an empty byte string)         z%Unsupported elliptic curve point type)r   _check_byteslen
ValueErrorrust_opensslecfrom_public_bytes)clsrL   rN   s      r%   from_encoded_pointz)EllipticCurvePublicKey.from_encoded_point   sl     	64(((t99>>DEEE7,,,DEEE00===r$   otherobjectboolc                    dS )z"
        Checks equality.
        Nr#   )r,   r}   s     r%   __eq__zEllipticCurvePublicKey.__eq__   r.   r$   c                    dS r`   r#   r+   s    r%   ra   zEllipticCurvePublicKey.__copy__   r.   r$   Nrc   r5   )r(   rg   )rV   rW   rX   rj   r(   rE   )rm   rO   rN   rO   rP   r;   r(   rn   )rL   r'   rN   rE   r(   rD   )r}   r~   r(   r   rb   )r   r   r   r6   r7   r8   rL   r2   ri   rl   rp   classmethodr|   r   ra   r#   r$   r%   rD   rD      sB           X
     X
 	   
 	    	    > > > [> 	   
 	     r$   rD   c                      e Zd ZdZdZdZdS )r"   	sect571r1i:  l&   GN_&f.TO!9;{(c3B9LU1Nr   r   r   r-   r2   r4   r#   r$   r%   r"   r"               DH dKKKr$   r"   c                      e Zd ZdZdZdZdS )r    	sect409r1  l   sD34&8x@'>R_>fK05*<                            Nr   r#   r$   r%   r    r       s        DH{KKKr$   r    c                      e Zd ZdZdZdZdS )r   	sect283r1  l   3[_)!XeRq$?0K9Nr   r#   r$   r%   r   r              DH[KKKr$   r   c                      e Zd ZdZdZdZdS )r   	sect233r1   l   `t&e9]	               Nr   r#   r$   r%   r   r      s        DHOKKKr$   r   c                      e Zd ZdZdZdZdS )r   	sect163r2   l   3LFHJ08?/R          Nr   r#   r$   r%   r   r              DH=KKKr$   r   c                      e Zd ZdZdZdZdS )r!   	sect571k1i;  l&   F=^gEk;RNkKab	z95,1q!aL                                     @Nr   r#   r$   r%   r!   r!      r   r$   r!   c                      e Zd ZdZdZdZdS )r   	sect409k1r   l   _<@Z%|4>UD (;x Nr   r#   r$   r%   r   r      s        DHzKKKr$   r   c                      e Zd ZdZdZdZdS )r   	sect283k1r   l   a<,<x("wK]:h..Nr   r#   r$   r%   r   r     r   r$   r   c                      e Zd ZdZdZdZdS )r   	sect233k1r   l   +bWkwFM"VN              @ Nr   r#   r$   r%   r   r   
  s        DHNKKKr$   r   c                      e Zd ZdZdZdZdS )r   	sect163k1r   l   %360@          Nr   r#   r$   r%   r   r     r   r$   r   c                      e Zd ZdZdZdZdS )r   	secp521r1i	  l#   	dp"z\}[z3"nZ;PK#
`7roCQNr   r#   r$   r%   r   r     s         DH XKKKr$   r   c                      e Zd ZdZdZdZdS )r   	secp384r1  l   s)e`gwlX_[nlv|Nr   r#   r$   r%   r   r     s        DHtKKKr$   r   c                      e Zd ZdZdZdZdS )r   	secp256r1   l   Q%x+Ohbi+}s   @ Nr   r#   r$   r%   r   r   "           DHJ KKr$   r   c                      e Zd ZdZdZdZdS )r   	secp256k1r   l   AAl 3z~i9nW~ Nr   r#   r$   r%   r   r   *  r   r$   r   c                      e Zd ZdZdZdZdS )r   	secp224r1   l   =*8%(?Nr   r#   r$   r%   r   r   2  s        DHLKKKr$   r   c                      e Zd ZdZdZdZdS )r   	secp192r1   l   1(i&^#a;Nr   r#   r$   r%   r   r   8  s        DHDKKKr$   r   c                      e Zd ZdZdZdZdS )BrainpoolP256R1brainpoolP256r1r   l   V.
: yo4,(qvBT0C7U{h+) Nr   r#   r$   r%   r   r   >  s         DHJ KKr$   r   c                      e Zd ZdZdZdZdS )BrainpoolP384R1brainpoolP384r1r   l   eeRHA\1o+['K2s31
U{8/C{u%NQA9Nr   r#   r$   r%   r   r   F  s        DHtKKKr$   r   c                      e Zd ZdZdZdZdS )BrainpoolP512R1brainpoolP512r1i   l#   i R9
Z<,-B`XG Xe3$*S .>U@Sf9fAtrY0'qjNg"qmU Nr   r#   r$   r%   r   r   L  s         DH UKKKr$   r   
prime192v1
prime256v1r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   zdict[str, EllipticCurve]_CURVE_TYPESc                  J    e Zd Z	 dddZedd            Zedd	            Zd
S )ECDSAFr>   r<   deterministic_signingr   c                    ddl m} |r.|                                st          dt          j                  || _        || _        d S )Nr   )backendzZECDSA with deterministic signature (RFC 6979) is not supported by this version of OpenSSL.),cryptography.hazmat.backends.openssl.backendr   ecdsa_deterministic_supportedr   r    UNSUPPORTED_PUBLIC_KEY_ALGORITHM
_algorithm_deterministic_signing)r,   r>   r   r   s       r%   __init__zECDSA.__init__l  sk    
 	IHHHHH "	99;;	 '89  
 $&;###r$   r(   c                    | j         S N)r   r+   s    r%   r>   zECDSA.algorithm  s     r$   c                    | j         S r   )r   r+   s    r%   r   zECDSA.deterministic_signing  s     **r$   N)F)r>   r<   r   r   r?   )r(   r   )r   r   r   r   r6   r>   r   r#   r$   r%   r   r   k  sr         ',< < < < <&    X
 + + + X+ + +r$   r   private_valuer/   rL   r   
typing.Anyr(   c                    t          | t                    st          d          | dk    rt          d          t          j                            | |          S )Nz&private_value must be an integer type.r   z)private_value must be a positive integer.)
isinstancer/   	TypeErrorrw   rx   ry   derive_private_key)r   rL   r   s      r%   r   r     sX    
 mS)) B@AAADEEE?--mUCCCr$   c                      e Zd ZdS )rB   N)r   r   r   r#   r$   r%   rB   rB     s        Dr$   rB   oidr   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   )r   r/   rL   r'   r   r   r(   rA   )r   r   r(   r   )?
__future__r   r7   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat._oidr   "cryptography.hazmat.bindings._rustr   rx   cryptography.hazmat.primitivesr	   r
   )cryptography.hazmat.primitives.asymmetric
asym_utilsr   ABCMetar'   r;   rA   (EllipticCurvePrivateKeyWithSerializationregisterry   ECPrivateKeyrD   'EllipticCurvePublicKeyWithSerializationECPublicKeyrS   rg   r"   r    r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __annotations__r   generate_private_keyr   rB   r   r   r   r   r   r#   r$   r%   <module>r      s  
 # " " " " " " 



        B B B B B B B B 5 5 5 5 5 5 F F F F F F A A A A A A A A I I I I I I1 1 1 1 1 1 1 1,    ck    .        = = = = = = = = =@ ,C (     != > > >B B B B Bs{ B B B BJ +A '    ; < < <*oI )_G d d d d d d d d| | | | | | | |\ \ \ \ \ \ \ \P P P P P P P P> > > > > > > >d d d d d d d d{ { { { { { { {\ \ \ \ \ \ \ \O O O O O O O O> > > > > > > >X X X X X X X Xu u u u u u u u              M M M M M M M ME E E E E E E E    m   u u u u um u u uU U U U Um U U U*))++*))++* * 	*
 * * * * * * * * * * *  !*" #*$ &((&((&((+* * *    2+ + + + ++ + + +B $;  D D D D D	 	 	 	 	 	 	 			 	 		
 	 	 $o $o $o 	 	 	 	 	 	  	!" 	#$ 		' .
 
 
 
 
 
r$   