
    : j'                       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) e&             e#             e&             e%             e#             e"             e!             e$             e'             e(             e)            d%Z*d&e+d'<    G d( d)e          Z,ej        j-        Z-	 d7d8d0Z. G d1 d2          Z/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)i	Z3d9d6Z4d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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.13N)__name__
__module____qualname__r   	SECP192R1	SECP224R1	SECP256K1	SECP256R1	SECP384R1	SECP521R1BRAINPOOLP256R1BRAINPOOLP384R1BRAINPOOLP512R1     C:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\cryptography/hazmat/primitives/asymmetric/ec.pyr   r      s          !677I  00I  00I  !677I  00I  00I&&'=>>O&&'>??O&&'>??OOOr   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_size&   r$   r   c                    dS )z1
        The order of the curve's group.
        Nr   r!   s    r   group_orderzEllipticCurve.group_order-   r$   r   N)r   r   r   r%   )	r   r   r   propertyabcabstractmethodr#   r(   r*   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.algorithm6   r$   r   Nr   r2   )r   r   r   r,   r-   r.   r4   r   r   r   r1   r1   5   s@            X  r   r1   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ej        d(d            ZdS ))EllipticCurvePrivateKeyr4   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"   r4   r9   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   r   c                    dS z8
        The EllipticCurve that this key is on.
        Nr   r!   s    r   curvezEllipticCurvePrivateKey.curveP   r$   r   r%   c                    dS r'   r   r!   s    r   r(   z EllipticCurvePrivateKey.key_sizeW   r$   r   datautils.Buffersignature_algorithmr1   c                    dS )z 
        Signs the data
        Nr   )r"   rD   rF   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_serialization.Encodingformat_serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionc                    dS z6
        Returns the key serialized as bytes.
        Nr   )r"   rL   rN   rP   s       r   private_bytesz%EllipticCurvePrivateKey.private_bytesn   r$   r   c                    dS z!
        Returns a copy.
        Nr   r!   s    r   __copy__z EllipticCurvePrivateKey.__copy__y   r$   r   memodictc                    dS z&
        Returns a deep copy.
        Nr   r"   rX   s     r   __deepcopy__z$EllipticCurvePrivateKey.__deepcopy__   r$   r   N)r4   r8   r9   r:   r   r;   r   r:   r   r   r+   )rD   rE   rF   r1   r   r;   )r   rI   )rL   rM   rN   rO   rP   rQ   r   r;   )r   r7   )rX   rY   r   r7   )r   r   r   r-   r.   r=   r?   r,   rB   r(   rH   rK   rT   rW   r]   r   r   r   r7   r7   @   sj           	   
     X
     X
 	    	   
 	    	   
 	     r   r7   c                  V   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ej        d(d            ZdS ))r:   r   r   c                    dS rA   r   r!   s    r   rB   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   rL   rM   rN   _serialization.PublicFormatr;   c                    dS rS   r   )r"   rL   rN   s      r   public_bytesz#EllipticCurvePublicKey.public_bytes   r$   r   	signaturerE   rD   rF   r1   Nonec                    dS )z5
        Verifies the signature of the data.
        Nr   )r"   ri   rD   rF   s       r   verifyzEllipticCurvePublicKey.verify   r$   r   rB   c                    t          j        d|           t          |          dk    rt          d          |d         dvrt          d          t          j                            ||          S )NrD   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)clsrB   rD   s      r   from_encoded_pointz)EllipticCurvePublicKey.from_encoded_point   ss     	64(((t99> 	FDEEE7,, 	FDEEE00===r   otherobjectboolc                    dS )z"
        Checks equality.
        Nr   )r"   ry   s     r   __eq__zEllipticCurvePublicKey.__eq__   r$   r   c                    dS rV   r   r!   s    r   rW   zEllipticCurvePublicKey.__copy__   r$   r   rX   rY   c                    dS r[   r   r\   s     r   r]   z#EllipticCurvePublicKey.__deepcopy__   r$   r   Nr_   r+   )r   rc   )rL   rM   rN   rf   r   r;   )ri   rE   rD   rE   rF   r1   r   rj   )rB   r   rD   r;   r   r:   )ry   rz   r   r{   r^   )rX   rY   r   r:   )r   r   r   r,   r-   r.   rB   r(   re   rh   rl   classmethodrx   r}   rW   r]   r   r   r   r:   r:      sf           X
     X
 	   
 	    	    > > > [> 	   
 	   
 	     r   r:   c                      e Zd ZdZdZdZdS )r   	secp521r1i	  l#   	dp"z\}[z3"nZ;PK#
`7roCQNr   r   r   r#   r(   r*   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      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      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     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     s         DH UKKKr   r   )
prime192v1
prime256v1r   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 )ECDSAFr4   r2   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"   r4   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   r4   zECDSA.algorithm;  s     r   c                    | j         S r   )r   r!   s    r   r   zECDSA.deterministic_signingA  s     **r   N)F)r4   r2   r   r{   r5   )r   r{   )r   r   r   r   r,   r4   r   r   r   r   r   r   '  sr         ',< < < < <&    X
 + + + X+ + +r   r   private_valuer%   rB   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%   	TypeErrorrs   rt   ru   derive_private_key)r   rB   r   s      r   r   r   K  s[    
 mS)) B@AAA FDEEE?--mUCCCr   c                      e Zd ZdS )r8   N)r   r   r   r   r   r   r8   r8   Y  s        Dr   r8   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   j  sD    
S!! 
 
 

 
 	

s    )r   )r   r%   rB   r   r   r   r   r7   )r   r   r   r   )5
__future__r   r-   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat._oidr   "cryptography.hazmat.bindings._rustr   rt   cryptography.hazmat.primitivesr	   r
   )cryptography.hazmat.primitives.asymmetric
asym_utilsr   ABCMetar   r1   r7   (EllipticCurvePrivateKeyWithSerializationregisterru   ECPrivateKeyr:   'EllipticCurvePublicKeyWithSerializationECPublicKeyrI   rc   r   r   r   r   r   r   r   r   r   r   __annotations__r   generate_private_keyr   r8   r   r   r   r   r   r   r   r   <module>r      s0  
 # " " " " " " 



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