
    tf(                    ^   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     k/var/www/surfInsights/venv3-11/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_size0   r.   r$   N)r(   r)   r(   r/   )r   r   r   propertyabcabstractmethodr-   r2   r#   r$   r%   r'   r'   (   sn            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.algorithm9   r.   r$   Nr(   r:   )r   r   r   r4   r5   r6   r<   r#   r$   r%   r9   r9   8   s@            X  r$   r9   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<   rA   s      r%   exchangez EllipticCurvePrivateKey.exchangeD   r.   r$   c                    dS )zB
        The EllipticCurvePublicKey for this private key.
        Nr#   r+   s    r%   
public_keyz"EllipticCurvePrivateKey.public_keyM   r.   r$   r'   c                    dS z8
        The EllipticCurve that this key is on.
        Nr#   r+   s    r%   curvezEllipticCurvePrivateKey.curveS   r.   r$   r/   c                    dS r1   r#   r+   s    r%   r2   z EllipticCurvePrivateKey.key_sizeZ   r.   r$   datasignature_algorithmr9   c                    dS )z 
        Signs the data
        Nr#   )r,   rL   rM   s      r%   signzEllipticCurvePrivateKey.signa   r.   r$   EllipticCurvePrivateNumbersc                    dS )z9
        Returns an EllipticCurvePrivateNumbers.
        Nr#   r+   s    r%   private_numbersz'EllipticCurvePrivateKey.private_numbersk   r.   r$   encoding_serialization.Encodingformat_serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionc                    dS z6
        Returns the key serialized as bytes.
        Nr#   )r,   rS   rU   rW   s       r%   private_bytesz%EllipticCurvePrivateKey.private_bytesq   r.   r$   N)r<   r@   rA   rB   r(   rC   )r(   rB   r(   r'   r3   )rL   rC   rM   r9   r(   rC   )r(   rP   )rS   rT   rU   rV   rW   rX   r(   rC   )r   r   r   r5   r6   rE   rG   r4   rJ   r2   rO   rR   r[   r#   r$   r%   r?   r?   C   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 )"rB   r(   r'   c                    dS rI   r#   r+   s    r%   rJ   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$   rS   rT   rU   _serialization.PublicFormatrC   c                    dS rZ   r#   )r,   rS   rU   s      r%   public_bytesz#EllipticCurvePublicKey.public_bytes   r.   r$   	signaturerL   rM   r9   Nonec                    dS )z5
        Verifies the signature of the data.
        Nr#   )r,   rf   rL   rM   s       r%   verifyzEllipticCurvePublicKey.verify   r.   r$   rJ   c                    t          j        d|           t          |          dk    rt          d          |d         dvrt          d          t          j                            ||          S )NrL   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)clsrJ   rL   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,   rv   s     r%   __eq__zEllipticCurvePublicKey.__eq__   r.   r$   Nr\   r3   )r(   r`   )rS   rT   rU   rc   r(   rC   )rf   rC   rL   rC   rM   r9   r(   rg   )rJ   r'   rL   rC   r(   rB   )rv   rw   r(   rx   )r   r   r   r4   r5   r6   rJ   r2   rb   re   ri   classmethodru   rz   r#   r$   r%   rB   rB      s           X
     X
 	   
 	    	    > > > [> 	     r$   rB   c                      e Zd ZdZdZdS )r"   	sect571r1i:  Nr   r   r   r-   r2   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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_signingrx   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__@  sk    
 	IHHHHH "	99;;	 '89  
 $&;###r$   r(   c                    | j         S N)r   r+   s    r%   r<   zECDSA.algorithmS  s     r$   c                    | j         S r   )r   r+   s    r%   r   zECDSA.deterministic_signingY  s     **r$   N)F)r<   r:   r   rx   r=   )r(   rx   )r   r   r   r   r4   r<   r   r#   r$   r%   r   r   ?  sr         ',< < < < <&    X
 + + + X+ + +r$   r   private_valuer/   rJ   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/   	TypeErrorrp   rq   rr   derive_private_key)r   rJ   r   s      r%   r   r   c  sX    
 mS)) B@AAADEEE?--mUCCCr$   c                      e Zd ZdS )r@   N)r   r   r   r#   r$   r%   r@   r@   q  s        Dr$   r@   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/   rJ   r'   r   r   r(   r?   )r   r   r(   r   )?
__future__r   r5   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat._oidr   "cryptography.hazmat.bindings._rustr   rq   cryptography.hazmat.primitivesr	   r
   )cryptography.hazmat.primitives.asymmetric
asym_utilsr   ABCMetar'   r9   r?   (EllipticCurvePrivateKeyWithSerializationregisterrr   ECPrivateKeyrB   'EllipticCurvePublicKeyWithSerializationECPublicKeyrP   r`   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   r@   r   r   r   r   r   r#   r$   r%   <module>r      sP  
 # " " " " " " 



        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             7 7 7 7 7 7 7 7 7t ,C (     != > > >< < < < <s{ < < < <~ +A '    ; < < <*oI )_G        
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
    m   
    m   
    m   
*))++*))++* * 	*
 * * * * * * * * * * *  !*" #*$ &((&((&((+* * *    2+ + + + ++ + + +B $;  D D D D D	 	 	 	 	 	 	 			 	 		
 	 	 $o $o $o 	 	 	 	 	 	  	!" 	#$ 		' .
 
 
 
 
 
r$   