o
    Vh(                     @  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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/d0 d0eZ/G d1d2 d2eZ0G d3d4 d4eZ1G d5d6 d6eZ2G d7d8 d8eZ3i d9e0 d:e- d;e0 d<e/ d=e- d>e, d?e+ d@e. dAe* dBe) dCe( dDe' dEe& dFe% dGe$ dHe# dIe" e! e1 e2 e3 dJZ4dKe5dL< G dMdN dNeZ6ejj7Z7	d^d_dUdVZ8G dWdX dXZ9i ej0e0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\d]Z>dS )a    )annotationsN)utils)UnsupportedAlgorithm_Reasons)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!   /var/www/html/construction_image-detection-poc/venv/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_size0   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"   	algorithm9   r*   z)EllipticCurveSignatureAlgorithm.algorithmNr$   r4   )r   r   r   r/   r0   r1   r5   r!   r!   r!   r"   r3   8   s    r3   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 ))EllipticCurvePrivateKeyr5   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(   r5   r9   r!   r!   r"   exchangeD   r*   z EllipticCurvePrivateKey.exchangec                 C  r&   )zB
        The EllipticCurvePublicKey for this private key.
        Nr!   r'   r!   r!   r"   
public_keyM   r*   z"EllipticCurvePrivateKey.public_keyr#   c                 C  r&   z8
        The EllipticCurve that this key is on.
        Nr!   r'   r!   r!   r"   curveS   r*   zEllipticCurvePrivateKey.curver+   c                 C  r&   r,   r!   r'   r!   r!   r"   r-   Z   r*   z EllipticCurvePrivateKey.key_sizedatasignature_algorithmr3   c                 C  r&   )z 
        Signs the data
        Nr!   )r(   r@   rA   r!   r!   r"   signa   r*   zEllipticCurvePrivateKey.signEllipticCurvePrivateNumbersc                 C  r&   )z9
        Returns an EllipticCurvePrivateNumbers.
        Nr!   r'   r!   r!   r"   private_numbersk   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(   rE   rG   rI   r!   r!   r"   private_bytesq   r*   z%EllipticCurvePrivateKey.private_bytesN)r5   r8   r9   r:   r$   r;   )r$   r:   r$   r#   r.   )r@   r;   rA   r3   r$   r;   )r$   rC   )rE   rF   rG   rH   rI   rJ   r$   r;   )r   r   r   r0   r1   r<   r=   r/   r?   r-   rB   rD   rL   r!   r!   r!   r"   r7   C   s"    	r7   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 ))r:   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_numbersrE   rF   rG   _serialization.PublicFormatr;   c                 C  r&   rK   r!   )r(   rE   rG   r!   r!   r"   public_bytes   r*   z#EllipticCurvePublicKey.public_bytes	signaturer@   rA   r3   Nonec                 C  r&   )z5
        Verifies the signature of the data.
        Nr!   )r(   rR   r@   rA   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ec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__NrM   r.   )r$   rN   )rE   rF   rG   rP   r$   r;   )rR   r;   r@   r;   rA   r3   r$   rS   )r?   r#   r@   r;   r$   r:   )r`   ra   r$   rb   )r   r   r   r/   r0   r1   r?   r-   rO   rQ   rT   classmethodr_   rc   r!   r!   r!   r"   r:      s"    	
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           r    c                   @  re   )r   	sect409r1  Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	sect283r1  Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	sect233r1   Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	sect163r2   Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	sect571k1i;  Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	sect409k1rj   Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	sect283k1rl   Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	sect233k1rn   Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	sect163k1rp   Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	secp521r1i	  Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	secp384r1  Nrg   r!   r!   r!   r"   r      rh   r   c                   @  re   )r   	secp256r1   Nrg   r!   r!   r!   r"   r     rh   r   c                   @  re   )r   	secp256k1rz   Nrg   r!   r!   r!   r"   r     rh   r   c                   @  re   )r   	secp224r1   Nrg   r!   r!   r!   r"   r     rh   r   c                   @  re   )r   	secp192r1   Nrg   r!   r!   r!   r"   r     rh   r   c                   @  re   )BrainpoolP256R1brainpoolP256r1rz   Nrg   r!   r!   r!   r"   r     rh   r   c                   @  re   )BrainpoolP384R1brainpoolP384r1rx   Nrg   r!   r!   r!   r"   r     rh   r   c                   @  re   )BrainpoolP512R1brainpoolP512r1i   Nrg   r!   r!   r!   r"   r   !  rh   r   
prime192v1
prime256v1r~   r|   ry   rw   rv   r{   ru   rt   rs   rr   rq   ro   rm   rk   ri   )rf   r   r   r   zdict[str, EllipticCurve]_CURVE_TYPESc                   @  s6   e Zd Z	ddddZedd	d
ZedddZdS )ECDSAFr5   r4   deterministic_signingrb   c                 C  s4   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(   r5   r   r   r!   r!   r"   __init__@  s   
zECDSA.__init__r$   c                 C     | j S N)r   r'   r!   r!   r"   r5   S     zECDSA.algorithmc                 C  r   r   )r   r'   r!   r!   r"   r   Y  r   zECDSA.deterministic_signingN)F)r5   r4   r   rb   r6   )r$   rb   )r   r   r   r   r/   r5   r   r!   r!   r!   r"   r   ?  s    r   private_valuer+   r?   r   
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+   	TypeErrorrZ   r[   r\   derive_private_key)r   r?   r   r!   r!   r"   r   c  s
   
r   c                   @  s   e Zd ZdS )r8   N)r   r   r   r!   r!   r!   r"   r8   q  s    r8   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_oid  s   
r   r   )r   r+   r?   r#   r   r   r$   r7   )r   r   r$   r   )?
__future__r   r0   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat._oidr   "cryptography.hazmat.bindings._rustr   r[   cryptography.hazmat.primitivesr   r	   )cryptography.hazmat.primitives.asymmetric
asym_utilsr
   ABCMetar#   r3   r7   (EllipticCurvePrivateKeyWithSerializationregisterr\   ECPrivateKeyr:   'EllipticCurvePublicKeyWithSerializationECPublicKeyrC   rN   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   r8   r   r   r   r   r   r!   r!   r!   r"   <module>   s   :?	
!	
