
    M j'                       % S SK Jr  S SKrS SKrS SKJr  S SKJrJr  S SK	J
r
  S SKJr  S SKJrJr  S SKJr   " S S	5      r " S
 S\R(                  S9r " S S\R(                  S9r " S S\R(                  S9r\r\R3                  \R4                  R6                  5         " S S\R(                  S9r\r\R3                  \R4                  R<                  5        \R4                  R>                  r\R4                  R@                  r  " S S\5      r! " S S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r% " S S\5      r& " S S \5      r' " S! S"\5      r( " S# S$\5      r)\&" 5       \#" 5       \&" 5       \%" 5       \#" 5       \"" 5       \!" 5       \$" 5       \'" 5       \(" 5       \)" 5       S%.r*S&\+S''    " S( S)\5      r,\R4                  RZ                  r- S.       S/S* jjr. " S+ S,5      r/\RL                  \&\RJ                  \%\RH                  \$\RF                  \#\RD                  \"\RB                  \!\R`                  \'\Rb                  \(\Rd                  \)0	r3S0S- jr4g)1    )annotationsN)utils)UnsupportedAlgorithm_Reasons)ObjectIdentifier)openssl)_serializationhashesc                      \ rS rSr\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r	\" S5      r
\" S5      r\" S	5      r\" S
5      rSrg)EllipticCurveOID   z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.13 N)__name__
__module____qualname____firstlineno__r   	SECP192R1	SECP224R1	SECP256K1	SECP256R1	SECP384R1	SECP521R1BRAINPOOLP256R1BRAINPOOLP384R1BRAINPOOLP512R1__static_attributes__r       }/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/cryptography/hazmat/primitives/asymmetric/ec.pyr   r      sa     !67I 0I 0I !67I 0I 0I&'=>O&'>?O&'>?Or   r   c                      \ rS rSr\\R                  SS j5       5       r\\R                  SS j5       5       r\\R                  SS j5       5       r	Sr
g)	EllipticCurve   c                    g)z(
The name of the curve. e.g. secp256r1.
Nr   selfs    r   nameEllipticCurve.name       r   c                    gz,
Bit size of a secret scalar for the curve.
Nr   r#   s    r   key_sizeEllipticCurve.key_size&   r'   r   c                    g)z!
The order of the curve's group.
Nr   r#   s    r   group_orderEllipticCurve.group_order-   r'   r   r   N)returnstrr/   int)r   r   r   r   propertyabcabstractmethodr%   r*   r-   r   r   r   r   r    r       sf      
   
   r   r    )	metaclassc                  J    \ rS rSr\\R                    SS j5       5       rSrg)EllipticCurveSignatureAlgorithm5   c                    g)z0
The digest algorithm used with this signature.
Nr   r#   s    r   	algorithm)EllipticCurveSignatureAlgorithm.algorithm6   r'   r   r   Nr/   +asym_utils.Prehashed | hashes.HashAlgorithm)	r   r   r   r   r3   r4   r5   r;   r   r   r   r   r8   r8   5   s*    	4  r   r8   c                     \ rS rSr\R
                        SS j5       r\R
                  SS j5       r\\R
                  SS j5       5       r	\\R
                  SS j5       5       r
\R
                        SS j5       r\R
                  SS j5       r\R
                          SS j5       r\R
                  SS	 j5       r\R
                  SS
 j5       rSrg)EllipticCurvePrivateKey@   c                    g)ze
Performs a key exchange operation using the provided algorithm with the
provided peer's public key.
Nr   )r$   r;   peer_public_keys      r   exchange EllipticCurvePrivateKey.exchangeA   r'   r   c                    g)z2
The EllipticCurvePublicKey for this private key.
Nr   r#   s    r   
public_key"EllipticCurvePrivateKey.public_keyJ   r'   r   c                    gz(
The EllipticCurve that this key is on.
Nr   r#   s    r   curveEllipticCurvePrivateKey.curveP   r'   r   c                    gr)   r   r#   s    r   r*    EllipticCurvePrivateKey.key_sizeW   r'   r   c                    g)z
Signs the data
Nr   )r$   datasignature_algorithms      r   signEllipticCurvePrivateKey.sign^   r'   r   c                    g)z)
Returns an EllipticCurvePrivateNumbers.
Nr   r#   s    r   private_numbers'EllipticCurvePrivateKey.private_numbersh   r'   r   c                    gz&
Returns the key serialized as bytes.
Nr   )r$   encodingformatencryption_algorithms       r   private_bytes%EllipticCurvePrivateKey.private_bytesn   r'   r   c                    gz
Returns a copy.
Nr   r#   s    r   __copy__ EllipticCurvePrivateKey.__copy__y   r'   r   c                    gz
Returns a deep copy.
Nr   r$   memos     r   __deepcopy__$EllipticCurvePrivateKey.__deepcopy__   r'   r   r   N)r;   ECDHrC   EllipticCurvePublicKeyr/   bytesr/   ri   r/   r    r1   )rP   utils.BufferrQ   r8   r/   rj   )r/   EllipticCurvePrivateNumbers)rY   _serialization.EncodingrZ   z_serialization.PrivateFormatr[   z)_serialization.KeySerializationEncryptionr/   rj   )r/   r@   )re   dictr/   r@   )r   r   r   r   r4   r5   rD   rG   r3   rK   r*   rR   rU   r\   r`   rf   r   r   r   r   r@   r@   @   sU   0F	  	 
   
   
 	 = 
	  	 
 	) - H	
 
  	 
 	 r   r@   c                     \ rS rSr\\R                  SS j5       5       r\\R                  SS j5       5       r\R                  SS j5       r	\R                        SS j5       r
\R                          SS j5       r\      SS j5       r\R                  SS j5       r\R                  SS	 j5       r\R                  SS
 j5       rSrg)ri      c                    grJ   r   r#   s    r   rK   EllipticCurvePublicKey.curve   r'   r   c                    gr)   r   r#   s    r   r*   EllipticCurvePublicKey.key_size   r'   r   c                    g)z(
Returns an EllipticCurvePublicNumbers.
Nr   r#   s    r   public_numbers%EllipticCurvePublicKey.public_numbers   r'   r   c                    grX   r   )r$   rY   rZ   s      r   public_bytes#EllipticCurvePublicKey.public_bytes   r'   r   c                    g)z%
Verifies the signature of the data.
Nr   )r$   	signaturerP   rQ   s       r   verifyEllipticCurvePublicKey.verify   r'   r   c                    [         R                  " SU5        [        U5      S:X  a  [        S5      eUS   S;  a  [        S5      e[        R
                  R                  X5      $ )NrP   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)clsrK   rP   s      r   from_encoded_point)EllipticCurvePublicKey.from_encoded_point   sY     	64(t9>DEE7,,DEE00==r   c                    g)z
Checks equality.
Nr   )r$   others     r   __eq__EllipticCurvePublicKey.__eq__   r'   r   c                    gr_   r   r#   s    r   r`   EllipticCurvePublicKey.__copy__   r'   r   c                    grc   r   rd   s     r   rf   #EllipticCurvePublicKey.__deepcopy__   r'   r   r   Nrl   r1   )r/   EllipticCurvePublicNumbers)rY   ro   rZ   z_serialization.PublicFormatr/   rj   )r~   rm   rP   rm   rQ   r8   r/   None)rK   r    rP   rj   r/   ri   )r   objectr/   boolrk   )re   rp   r/   ri   )r   r   r   r   r3   r4   r5   rK   r*   rx   r{   r   classmethodr   r   r`   rf   r   r   r   r   ri   ri      sN     
   
 	 
 	) , 
	  	  =	
 
  >!>).>	> > 	 
 	 
 	 r   ri   c                       \ rS rSrSrSrSrSrg)r      	secp521r1i	  l#   	dp"z\}[z3"nZ;PK#
`7roCQr   Nr   r   r   r   r%   r*   r-   r   r   r   r   r   r      s    DH XKr   r   c                       \ rS rSrSrSrSrSrg)r      	secp384r1  l   s)e`gwlX_[nlv|r   Nr   r   r   r   r   r      s    DHtKr   r   c                       \ rS rSrSrSrSrSrg)r      	secp256r1   l   Q%x+Ohbi+}s   @ r   Nr   r   r   r   r   r          DHJ r   r   c                       \ rS rSrSrSrSrSrg)r      	secp256k1r   l   AAl 3z~i9nW~ r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSrSrSrSrSrg)r      	secp224r1   l   =*8%(?r   Nr   r   r   r   r   r      s    DHLKr   r   c                       \ rS rSrSrSrSrSrg)r      	secp192r1   l   1(i&^#a;r   Nr   r   r   r   r   r      s    DHDKr   r   c                       \ rS rSrSrSrSrSrg)BrainpoolP256R1i  brainpoolP256r1r   l   V.
: yo4,(qvBT0C7U{h+) r   Nr   r   r   r   r   r     s    DHJ r   r   c                       \ rS rSrSrSrSrSrg)BrainpoolP384R1i  brainpoolP384r1r   l   eeRHA\1o+['K2s31
U{8/C{u%NQA9r   Nr   r   r   r   r   r     s    DHtKr   r   c                       \ rS rSrSrSrSrSrg)BrainpoolP512R1i  brainpoolP512r1i   l#   i R9
Z<,-B`XG Xe3$*S .>U@Sf9fAtrY0'qjNg"qmU r   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                  Z    \ rS rSr S   SS jjr\  S	S j5       r\  S
S j5       rSrg)ECDSAi'  c                    SSK Jn  U(       a/  UR                  5       (       d  [        S[        R
                  5      eXl        X l        g )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__ECDSA.__init__(  sD    
 	I "99;;&899 
 $&;#r   c                    U R                   $ N)r   r#   s    r   r;   ECDSA.algorithm;  s     r   c                    U R                   $ r   )r   r#   s    r   r   ECDSA.deterministic_signingA  s     ***r   )r   r   N)F)r;   r>   r   r   r=   )r/   r   )	r   r   r   r   r   r3   r;   r   r   r   r   r   r   r   '  sV     ',<><  $<& 	4 
 +	+ +r   r   c                    [        U [        5      (       d  [        S5      eU S::  a  [        S5      e[        R
                  R                  X5      $ )Nz&private_value must be an integer type.r   z)private_value must be a positive integer.)
isinstancer2   	TypeErrorr   r   r   derive_private_key)private_valuerK   r   s      r   r   r   K  sF    
 mS))@AADEE??--mCCr   c                      \ rS rSrSrg)rh   iY  r   N)r   r   r   r   r   r   r   r   rh   rh   Y  s    r   rh   c                H     [         U    $ ! [         a    [        S5      ef = f)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   r2   rK   r    r   z
typing.Anyr/   r@   )r   r   r/   ztype[EllipticCurve])5
__future__r   r4   typingcryptographyr   cryptography.exceptionsr   r   cryptography.hazmat._oidr   "cryptography.hazmat.bindings._rustr   r   cryptography.hazmat.primitivesr	   r
   )cryptography.hazmat.primitives.asymmetric
asym_utilsr   ABCMetar    r8   r@   (EllipticCurvePrivateKeyWithSerializationregisterr   ECPrivateKeyri   'EllipticCurvePublicKeyWithSerializationECPublicKeyrn   r   r   r   r   r   r   r   r   r   r   r   __annotations__r   generate_private_keyr   rh   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   