
    2i'                       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) e&        e#        e&        e%        e#        e"        e!        e$        e'        e(        e)       d%Z*d&e+d'<    G d( d)e      Z,ej4                  jZ                  Z-	 d.	 	 	 	 	 	 	 d/d*Z. G d+ d,      Z/ejL                  e&ejJ                  e%ejH                  e$ejF                  e#ejD                  e"ejB                  e!ej`                  e'ejb                  e(ejd                  e)i	Z3d0d-Z4y)1    )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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.13N)__name__
__module____qualname__r   	SECP192R1	SECP224R1	SECP256K1	SECP256R1	SECP384R1	SECP521R1BRAINPOOLP256R1BRAINPOOLP384R1BRAINPOOLP512R1     b/var/www/html/qr/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/ec.pyr   r      sa     !67I 0I 0I !67I 0I 0I&'=>O&'>?O&'>?Or   r   c                      e Zd Zeej
                  d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_size&   r"   r   c                     y)z1
        The order of the curve's group.
        Nr   r   s    r   group_orderzEllipticCurve.group_order-   r"   r   N)returnstrr(   int)	r   r   r   propertyabcabstractmethodr!   r%   r'   r   r   r   r   r      sf      
   
   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.algorithm6   r"   r   Nr(   +asym_utils.Prehashed | hashes.HashAlgorithm)r   r   r   r,   r-   r.   r3   r   r   r   r1   r1   5   s*    	4  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y
)EllipticCurvePrivateKeyc                     y)z}
        Performs a key exchange operation using the provided algorithm with the
        provided peer's public key.
        Nr   )r    r3   peer_public_keys      r   exchangez EllipticCurvePrivateKey.exchangeA   r"   r   c                     y)zB
        The EllipticCurvePublicKey for this private key.
        Nr   r   s    r   
public_keyz"EllipticCurvePrivateKey.public_keyJ   r"   r   c                     yz8
        The EllipticCurve that this key is on.
        Nr   r   s    r   curvezEllipticCurvePrivateKey.curveP   r"   r   c                     yr$   r   r   s    r   r%   z EllipticCurvePrivateKey.key_sizeW   r"   r   c                     y)z 
        Signs the data
        Nr   )r    datasignature_algorithms      r   signzEllipticCurvePrivateKey.sign^   r"   r   c                     y)z9
        Returns an EllipticCurvePrivateNumbers.
        Nr   r   s    r   private_numbersz'EllipticCurvePrivateKey.private_numbersh   r"   r   c                     yz6
        Returns the key serialized as bytes.
        Nr   )r    encodingformatencryption_algorithms       r   private_bytesz%EllipticCurvePrivateKey.private_bytesn   r"   r   c                     yz!
        Returns a copy.
        Nr   r   s    r   __copy__z EllipticCurvePrivateKey.__copy__y   r"   r   c                     yz&
        Returns a deep copy.
        Nr   r    memos     r   __deepcopy__z$EllipticCurvePrivateKey.__deepcopy__   r"   r   N)r3   ECDHr9   EllipticCurvePublicKeyr(   bytesr(   rV   r(   r   r*   )rB   utils.BufferrC   r1   r(   rW   )r(   EllipticCurvePrivateNumbers)rI   _serialization.EncodingrJ   z_serialization.PrivateFormatrK   z)_serialization.KeySerializationEncryptionr(   rW   )r(   r7   )rS   dictr(   r7   )r   r   r   r-   r.   r:   r<   r,   r?   r%   rD   rF   rL   rO   rT   r   r   r   r7   r7   @   sU   0F	  	 
   
   
 	 = 
	  	 
 	) - H	
 
  	 
 	 r   r7   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ej
                  dd       Zej
                  dd	       Zy
)rV   c                     yr>   r   r   s    r   r?   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rH   r   )r    rI   rJ   s      r   public_bytesz#EllipticCurvePublicKey.public_bytes   r"   r   c                     y)z5
        Verifies the signature of the data.
        Nr   )r    	signaturerB   rC   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 )NrB   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?   rB   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   c                     yrN   r   r   s    r   rO   zEllipticCurvePublicKey.__copy__   r"   r   c                     yrQ   r   rR   s     r   rT   z#EllipticCurvePublicKey.__deepcopy__   r"   r   NrY   r*   )r(   EllipticCurvePublicNumbers)rI   r\   rJ   z_serialization.PublicFormatr(   rW   )rf   rZ   rB   rZ   rC   r1   r(   None)r?   r   rB   rW   r(   rV   )ru   objectr(   boolrX   )rS   r]   r(   rV   )r   r   r   r,   r-   r.   r?   r%   rb   rd   rg   classmethodrs   rv   rO   rT   r   r   r   rV   rV      sN     
   
 	 
 	) , 
	  	  =	
 
  >!>).>	> > 	 
 	 
 	 r   rV   c                      e Zd ZdZdZdZy)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Kr   r   c                      e Zd ZdZdZdZy)r   	secp384r1  l   s)e`gwlX_[nlv|Nr   r   r   r   r   r      s    DHtKr   r   c                      e Zd ZdZdZdZy)r   	secp256r1   l   Q%x+Ohbi+}s   @ Nr   r   r   r   r   r          DHJ r   r   c                      e Zd ZdZdZdZy)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y)r   	secp224r1   l   =*8%(?Nr   r   r   r   r   r      s    DHLKr   r   c                      e Zd ZdZdZdZy)r   	secp192r1   l   1(i&^#a;Nr   r   r   r   r   r      s    DHDKr   r   c                      e Zd ZdZdZdZy)BrainpoolP256R1brainpoolP256r1r   l   V.
: yo4,(qvBT0C7U{h+) Nr   r   r   r   r   r     s    DHJ r   r   c                      e Zd ZdZdZdZy)BrainpoolP384R1brainpoolP384r1r   l   eeRHA\1o+['K2s31
U{8/C{u%NQA9Nr   r   r   r   r   r     s    DHtKr   r   c                      e Zd ZdZdZdZy)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Kr   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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    r3   deterministic_signingr   s       r   __init__zECDSA.__init__(  sE    
 	I "99;&899 
 $&;#r   c                    | j                   S N)r   r   s    r   r3   zECDSA.algorithm;  s     r   c                    | j                   S r   )r   r   s    r   r   zECDSA.deterministic_signingA  s     ***r   N)F)r3   r5   r   r|   r4   )r(   r|   )r   r   r   r   r,   r3   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.)
isinstancer+   	TypeErrorrn   ro   rp   derive_private_key)private_valuer?   r   s      r   r   r   K  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   Y  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   j  s3    
S!! 

 	

s     r   )r   r+   r?   r   r   z
typing.Anyr(   r7   )r   r   r(   ztype[EllipticCurve])5
__future__r   r-   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat._oidr   "cryptography.hazmat.bindings._rustr   ro   cryptography.hazmat.primitivesr	   r
   )cryptography.hazmat.primitives.asymmetric
asym_utilsr   ABCMetar   r1   r7   (EllipticCurvePrivateKeyWithSerializationregisterrp   ECPrivateKeyrV   'EllipticCurvePublicKeyWithSerializationECPublicKeyr[   ry   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      sg  
 # 
   B 5 F A I	@ 	@ckk . C CL ,C (     !=!= >Hs{{ HV +A '    ; ; <*ooII )__GG X Xu u  M ME Em um uUm U ++&(&(&(*& ++ +B $;;  DDD D 	D	 	
 						$$o$$o$$o

r   