o
    CZh%                     @  s  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
 d dlmZmZ d dlmZ G dd dZG d	d
 d
ejdZG dd dejdZG dd dejdZeZee
jj G dd dejdZeZee
jj e
jjZe
jjZG dd deZG dd deZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd deZ$G d d! d!eZ%G d"d# d#eZ&G d$d% d%eZ'G d&d' d'eZ(G d(d) d)eZ)G d*d+ d+eZ*G d,d- d-eZ+G d.d/ d/eZ,G d0d1 d1eZ-G d2d3 d3eZ.G d4d5 d5eZ/G d6d7 d7eZ0i d8e- d9e* d:e- d;e, d<e* d=e) d>e( d?e+ d@e' dAe& dBe% dCe$ dDe# dEe" dFe! dGe  dHe e e. e/ e0 dIZ1dJe2dK< G dLdM dMeZ3e
jj4Z4	d]d^dTdUZ5G dVdW dWZ6i ej-e-ej,e,ej+e+ej*e*ej)e)ej(e(ej7e.ej8e/ej9e0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[d\Z;dS )`    )annotationsN)utils)ObjectIdentifier)openssl)_serializationhashesc                   @  s   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 r   r   c/var/www/html/lang_env/lib/python3.10/site-packages/cryptography/hazmat/primitives/asymmetric/ec.pyr      s(    r   c                   @  s4   e Zd Zeejd	ddZeejd
ddZdS )EllipticCurvereturnstrc                 C     dS )z8
        The name of the curve. e.g. secp256r1.
        Nr   selfr   r   r    name(       zEllipticCurve.nameintc                 C  r$   z<
        Bit size of a secret scalar for the curve.
        Nr   r%   r   r   r    key_size/   r(   zEllipticCurve.key_sizeN)r"   r#   r"   r)   )r	   r
   r   propertyabcabstractmethodr'   r+   r   r   r   r    r!   '   s    r!   )	metaclassc                   @  s    e Zd ZeejdddZdS )EllipticCurveSignatureAlgorithmr"   +asym_utils.Prehashed | hashes.HashAlgorithmc                 C  r$   )z@
        The digest algorithm used with this signature.
        Nr   r%   r   r   r    	algorithm8   r(   z)EllipticCurveSignatureAlgorithm.algorithmNr"   r2   )r	   r
   r   r-   r.   r/   r3   r   r   r   r    r1   7   s    r1   c                   @  s   e Zd Zejd"ddZejd#d	d
Zeejd$ddZeejd%ddZ	ejd&ddZ
ejd'ddZejd(dd Zd!S ))EllipticCurvePrivateKeyr3   ECDHpeer_public_keyEllipticCurvePublicKeyr"   bytesc                 C  r$   )z}
        Performs a key exchange operation using the provided algorithm with the
        provided peer's public key.
        Nr   )r&   r3   r7   r   r   r    exchangeC   r(   z EllipticCurvePrivateKey.exchangec                 C  r$   )zB
        The EllipticCurvePublicKey for this private key.
        Nr   r%   r   r   r    
public_keyL   r(   z"EllipticCurvePrivateKey.public_keyr!   c                 C  r$   z8
        The EllipticCurve that this key is on.
        Nr   r%   r   r   r    curveR   r(   zEllipticCurvePrivateKey.curver)   c                 C  r$   r*   r   r%   r   r   r    r+   Y   r(   z EllipticCurvePrivateKey.key_sizedatasignature_algorithmr1   c                 C  r$   )z 
        Signs the data
        Nr   )r&   r>   r?   r   r   r    sign`   r(   zEllipticCurvePrivateKey.signEllipticCurvePrivateNumbersc                 C  r$   )z9
        Returns an EllipticCurvePrivateNumbers.
        Nr   r%   r   r   r    private_numbersj   r(   z'EllipticCurvePrivateKey.private_numbersencoding_serialization.Encodingformat_serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionc                 C  r$   z6
        Returns the key serialized as bytes.
        Nr   )r&   rC   rE   rG   r   r   r    private_bytesp   r(   z%EllipticCurvePrivateKey.private_bytesN)r3   r6   r7   r8   r"   r9   )r"   r8   r"   r!   r,   )r>   r9   r?   r1   r"   r9   )r"   rA   )rC   rD   rE   rF   rG   rH   r"   r9   )r	   r
   r   r.   r/   r:   r;   r-   r=   r+   r@   rB   rJ   r   r   r   r    r5   B   s"    	r5   c                   @  s   e Zd Zeejd"ddZeejd#ddZejd$d	d
Zejd%ddZ	ejd&ddZ
ed'ddZejd(dd Zd!S ))r8   r"   r!   c                 C  r$   r<   r   r%   r   r   r    r=      r(   zEllipticCurvePublicKey.curver)   c                 C  r$   r*   r   r%   r   r   r    r+      r(   zEllipticCurvePublicKey.key_sizeEllipticCurvePublicNumbersc                 C  r$   )z8
        Returns an EllipticCurvePublicNumbers.
        Nr   r%   r   r   r    public_numbers   r(   z%EllipticCurvePublicKey.public_numbersrC   rD   rE   _serialization.PublicFormatr9   c                 C  r$   rI   r   )r&   rC   rE   r   r   r    public_bytes   r(   z#EllipticCurvePublicKey.public_bytes	signaturer>   r?   r1   Nonec                 C  r$   )z5
        Verifies the signature of the data.
        Nr   )r&   rP   r>   r?   r   r   r    verify   r(   zEllipticCurvePublicKey.verifyr=   c                 C  sB   t d| t|dkrtd|d dvrtdtj||S )Nr>   r   z%data must not be an empty byte string)         z%Unsupported elliptic curve point type)r   _check_byteslen
ValueErrorrust_opensslecZfrom_public_bytes)clsr=   r>   r   r   r    from_encoded_point   s   z)EllipticCurvePublicKey.from_encoded_pointotherobjectboolc                 C  r$   )z"
        Checks equality.
        Nr   )r&   r]   r   r   r    __eq__   r(   zEllipticCurvePublicKey.__eq__NrK   r,   )r"   rL   )rC   rD   rE   rN   r"   r9   )rP   r9   r>   r9   r?   r1   r"   rQ   )r=   r!   r>   r9   r"   r8   )r]   r^   r"   r_   )r	   r
   r   r-   r.   r/   r=   r+   rM   rO   rR   classmethodr\   r`   r   r   r   r    r8      s"    	
r8   c                   @     e Zd ZdZdZdS )r   	sect571r1i:  Nr	   r
   r   r'   r+   r   r   r   r    r          r   c                   @  rb   )r   	sect409r1  Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	sect283r1  Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	sect233r1   Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	sect163r2   Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	sect571k1i;  Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	sect409k1rg   Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	sect283k1ri   Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	sect233k1rk   Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	sect163k1rm   Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	secp521r1i	  Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	secp384r1  Nrd   r   r   r   r    r      re   r   c                   @  rb   )r   	secp256r1   Nrd   r   r   r   r    r     re   r   c                   @  rb   )r   	secp256k1rw   Nrd   r   r   r   r    r     re   r   c                   @  rb   )r   	secp224r1   Nrd   r   r   r   r    r     re   r   c                   @  rb   )r   	secp192r1   Nrd   r   r   r   r    r     re   r   c                   @  rb   )BrainpoolP256R1brainpoolP256r1rw   Nrd   r   r   r   r    r}     re   r}   c                   @  rb   )BrainpoolP384R1brainpoolP384r1ru   Nrd   r   r   r   r    r     re   r   c                   @  rb   )BrainpoolP512R1brainpoolP512r1i   Nrd   r   r   r   r    r      re   r   Z
prime192v1Z
prime256v1r{   ry   rv   rt   rs   rx   rr   rq   rp   ro   rn   rl   rj   rh   rf   )rc   r~   r   r   zdict[str, EllipticCurve]_CURVE_TYPESc                   @  s$   e Zd Zd	ddZed
ddZdS )ECDSAr3   r2   c                 C  s
   || _ d S N
_algorithm)r&   r3   r   r   r    __init__?  s   
zECDSA.__init__r"   c                 C  s   | j S r   r   r%   r   r   r    r3   E  s   zECDSA.algorithmN)r3   r2   r4   )r	   r
   r   r   r-   r3   r   r   r   r    r   >  s    
r   private_valuer)   r=   backend
typing.Anyr"   c                 C  s0   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)   	TypeErrorrX   rY   rZ   derive_private_key)r   r=   r   r   r   r    r   O  s
   
r   c                   @  s   e Zd ZdS )r6   N)r	   r
   r   r   r   r   r    r6   ]  s    r6   oidr   type[EllipticCurve]c                 C  s"   zt |  W S  ty   tdw )NzCThe provided object identifier has no matching elliptic curve class)_OID_TO_CURVEKeyErrorLookupError)r   r   r   r    get_curve_for_oidx  s   
r   r   )r   r)   r=   r!   r   r   r"   r5   )r   r   r"   r   )<
__future__r   r.   typingZcryptographyr   Zcryptography.hazmat._oidr   Z"cryptography.hazmat.bindings._rustr   rY   Zcryptography.hazmat.primitivesr   r   Z)cryptography.hazmat.primitives.asymmetricZ
asym_utilsr   ABCMetar!   r1   r5   Z(EllipticCurvePrivateKeyWithSerializationregisterrZ   ZECPrivateKeyr8   Z'EllipticCurvePublicKeyWithSerializationZECPublicKeyrA   rL   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   r   r   r   __annotations__r   Zgenerate_private_keyr   r6   r   r   r   r   r   r   r   r   r    <module>   s   :?	
	
