
    Wwg(                       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j3                  ej4                  j6                          G d dej(                        ZeZej3                  ej4                  j<                         ej4                  j>                  Zej4                  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j4                  jn                  Z7	 dS	 	 	 	 	 	 	 dTdOZ8 G dP dQ      Z9i ej`                  e0ej^                  e/ej\                  e.ejZ                  e-ejX                  e,ejV                  e+ejt                  e1ejv                  e2ejx                  e3ejT                  e*ejJ                  e%ejR                  e)ejH                  e$ejP                  e(ejF                  e#ejN                  e'ejD                  e"ejL                  e&ejB                  e!iZ=dUdRZ>y)V    )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y)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     c/var/www/horilla/myenv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.pyr   r      s     !67I 0I 0I !67I 0I 0I&'=>O&'>?O&'>?O /I 0I 0I 0I 0I 0I 0I 0I 0I 0Ir$   r   c                  l    e Zd Zeej
                  dd              Zeej
                  dd              Zy)EllipticCurvec                     y)z8
        The name of the curve. e.g. secp256r1.
        Nr#   selfs    r%   namezEllipticCurve.name)       r$   c                     yz<
        Bit size of a secret scalar for the curve.
        Nr#   r)   s    r%   key_sizezEllipticCurve.key_size0   r,   r$   N)returnstrr0   int)r   r   r   propertyabcabstractmethodr+   r/   r#   r$   r%   r'   r'   (   sD      
   r$   r'   )	metaclassc                  @    e Zd Zeej
                  	 	 dd              Zy)EllipticCurveSignatureAlgorithmc                     y)z@
        The digest algorithm used with this signature.
        Nr#   r)   s    r%   	algorithmz)EllipticCurveSignatureAlgorithm.algorithm9   r,   r$   Nr0   +asym_utils.Prehashed | hashes.HashAlgorithm)r   r   r   r4   r5   r6   r;   r#   r$   r%   r9   r9   8   s*    	4  r$   r9   c                  R   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y)EllipticCurvePrivateKeyc                     y)z}
        Performs a key exchange operation using the provided algorithm with the
        provided peer's public key.
        Nr#   )r*   r;   peer_public_keys      r%   exchangez EllipticCurvePrivateKey.exchangeD   r,   r$   c                     y)zB
        The EllipticCurvePublicKey for this private key.
        Nr#   r)   s    r%   
public_keyz"EllipticCurvePrivateKey.public_keyM   r,   r$   c                     yz8
        The EllipticCurve that this key is on.
        Nr#   r)   s    r%   curvezEllipticCurvePrivateKey.curveS   r,   r$   c                     yr.   r#   r)   s    r%   r/   z EllipticCurvePrivateKey.key_sizeZ   r,   r$   c                     y)z 
        Signs the data
        Nr#   )r*   datasignature_algorithms      r%   signzEllipticCurvePrivateKey.signa   r,   r$   c                     y)z9
        Returns an EllipticCurvePrivateNumbers.
        Nr#   r)   s    r%   private_numbersz'EllipticCurvePrivateKey.private_numbersk   r,   r$   c                     yz6
        Returns the key serialized as bytes.
        Nr#   )r*   encodingformatencryption_algorithms       r%   private_bytesz%EllipticCurvePrivateKey.private_bytesq   r,   r$   N)r;   ECDHrA   EllipticCurvePublicKeyr0   bytes)r0   rV   r0   r'   r2   )rJ   rW   rK   r9   r0   rW   )r0   EllipticCurvePrivateNumbers)rQ   _serialization.EncodingrR   z_serialization.PrivateFormatrS   z)_serialization.KeySerializationEncryptionr0   rW   )r   r   r   r5   r6   rB   rD   r4   rG   r/   rL   rN   rT   r#   r$   r%   r?   r?   C   s!   0F	  	 
   
   
 	 = 
	  	 
 	) - H	
 
 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y)rV   c                     yrF   r#   r)   s    r%   rG   zEllipticCurvePublicKey.curve   r,   r$   c                     yr.   r#   r)   s    r%   r/   zEllipticCurvePublicKey.key_size   r,   r$   c                     y)z8
        Returns an EllipticCurvePublicNumbers.
        Nr#   r)   s    r%   public_numbersz%EllipticCurvePublicKey.public_numbers   r,   r$   c                     yrP   r#   )r*   rQ   rR   s      r%   public_bytesz#EllipticCurvePublicKey.public_bytes   r,   r$   c                     y)z5
        Verifies the signature of the data.
        Nr#   )r*   	signaturerJ   rK   s       r%   verifyzEllipticCurvePublicKey.verify   r,   r$   c                    t        j                  d|       t        |      dk(  rt        d      |d   dvrt        d      t        j
                  j                  ||      S )NrJ   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)clsrG   rJ   s      r%   from_encoded_pointz)EllipticCurvePublicKey.from_encoded_point   s[     	64(t9>DEE7,,DEE00==r$   c                     y)z"
        Checks equality.
        Nr#   )r*   others     r%   __eq__zEllipticCurvePublicKey.__eq__   r,   r$   NrX   r2   )r0   EllipticCurvePublicNumbers)rQ   rZ   rR   z_serialization.PublicFormatr0   rW   )rc   rW   rJ   rW   rK   r9   r0   None)rG   r'   rJ   rW   r0   rV   )rr   objectr0   bool)r   r   r   r4   r5   r6   rG   r/   r_   ra   rd   classmethodrp   rs   r#   r$   r%   rV   rV      s     
   
 	 
 	) , 
	  	  =	
 
  >!>).>	> > 	 r$   rV   c                      e Zd ZdZdZy)r"   	sect571r1i:  Nr   r   r   r+   r/   r#   r$   r%   r"   r"          DHr$   r"   c                      e Zd ZdZdZy)r    	sect409r1  Nr{   r#   r$   r%   r    r       r|   r$   r    c                      e Zd ZdZdZy)r   	sect283r1  Nr{   r#   r$   r%   r   r      r|   r$   r   c                      e Zd ZdZdZy)r   	sect233r1   Nr{   r#   r$   r%   r   r      r|   r$   r   c                      e Zd ZdZdZy)r   	sect163r2   Nr{   r#   r$   r%   r   r      r|   r$   r   c                      e Zd ZdZdZy)r!   	sect571k1i;  Nr{   r#   r$   r%   r!   r!      r|   r$   r!   c                      e Zd ZdZdZy)r   	sect409k1r   Nr{   r#   r$   r%   r   r      r|   r$   r   c                      e Zd ZdZdZy)r   	sect283k1r   Nr{   r#   r$   r%   r   r      r|   r$   r   c                      e Zd ZdZdZy)r   	sect233k1r   Nr{   r#   r$   r%   r   r      r|   r$   r   c                      e Zd ZdZdZy)r   	sect163k1r   Nr{   r#   r$   r%   r   r      r|   r$   r   c                      e Zd ZdZdZy)r   	secp521r1i	  Nr{   r#   r$   r%   r   r      r|   r$   r   c                      e Zd ZdZdZy)r   	secp384r1  Nr{   r#   r$   r%   r   r      r|   r$   r   c                      e Zd ZdZdZy)r   	secp256r1   Nr{   r#   r$   r%   r   r     r|   r$   r   c                      e Zd ZdZdZy)r   	secp256k1r   Nr{   r#   r$   r%   r   r     r|   r$   r   c                      e Zd ZdZdZy)r   	secp224r1   Nr{   r#   r$   r%   r   r     r|   r$   r   c                      e Zd ZdZdZy)r   	secp192r1   Nr{   r#   r$   r%   r   r     r|   r$   r   c                      e Zd ZdZdZy)BrainpoolP256R1brainpoolP256r1r   Nr{   r#   r$   r%   r   r         DHr$   r   c                      e Zd ZdZdZy)BrainpoolP384R1brainpoolP384r1r   Nr{   r#   r$   r%   r   r     r   r$   r   c                      e Zd ZdZdZy)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~   )rz   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y)	ECDSAc                    ddl m} |r*|j                         st        dt        j
                        || _        || _        y )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;   deterministic_signingr   s       r%   __init__zECDSA.__init__@  sE    
 	I "99;&899 
 $&;#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   rw   r<   )r0   rw   )r   r   r   r   r4   r;   r   r#   r$   r%   r   r   ?  sV     ',<><  $<& 	4 
 +	+ +r$   r   c                    t        | t              st        d      | dk  rt        d      t        j
                  j                  | |      S )Nz&private_value must be an integer type.r   z)private_value must be a positive integer.)
isinstancer3   	TypeErrorrk   rl   rm   derive_private_key)private_valuerG   r   s      r%   r   r   c  sE    
 mS)@AADEE??--mUCCr$   c                      e Zd Zy)rU   N)r   r   r   r#   r$   r%   rU   rU   q  s    r$   rU   c                F    	 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)oids    r%   get_curve_for_oidr     s3    
S!! 

 	

s     r   )r   r3   rG   r'   r   z
typing.Anyr0   r?   )r   r   r0   ztype[EllipticCurve])?
__future__r   r5   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat._oidr   "cryptography.hazmat.bindings._rustr   rl   cryptography.hazmat.primitivesr	   r
   )cryptography.hazmat.primitives.asymmetric
asym_utilsr   ABCMetar'   r9   r?   (EllipticCurvePrivateKeyWithSerializationregisterrm   ECPrivateKeyrV   'EllipticCurvePublicKeyWithSerializationECPublicKeyrY   rt   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   rU   r   r   r   r   r   r#   r$   r%   <module>r      s  
 # 
   B 5 F A I1 1,ckk   7 7t ,C (     !=!= ><s{{ <~ +A '    ; ; <*ooII )__GG  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
m 
m 
m 
*)+*)+* * 	*
 * * * * * * * * * * *  !*" #*$ &(&(&(+*& 2++ +B $;;  DDD D 	D	 			 	 		
 	 	 $$o $$o $$o 	 	 	 	 	 	  	!" 	#$ 		'.
r$   