o
    "“iÇ2  ã                   @  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!   úl/var/www/html/premium_crap/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/asymmetric/ec.pyr
      s(    r
   c                   @  sH   e Zd Zeejdd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_sizec                 C  r&   )z1
        The order of the curve's group.
        Nr!   r'   r!   r!   r"   Úgroup_order7   r*   zEllipticCurve.group_orderN)r$   r%   ©r$   r+   )	r   r   r   ÚpropertyÚabcÚabstractmethodr)   r-   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"   Ú	algorithm@   r*   z)EllipticCurveSignatureAlgorithm.algorithmN©r$   r5   )r   r   r   r0   r1   r2   r6   r!   r!   r!   r"   r4   ?   s    r4   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ejd,d"d#„ƒZd$S )-ÚEllipticCurvePrivateKeyr6   Ú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(   r6   r:   r!   r!   r"   ÚexchangeK   r*   z EllipticCurvePrivateKey.exchangec                 C  r&   )zB
        The EllipticCurvePublicKey for this private key.
        Nr!   r'   r!   r!   r"   Ú
public_keyT   r*   z"EllipticCurvePrivateKey.public_keyr#   c                 C  r&   ©z8
        The EllipticCurve that this key is on.
        Nr!   r'   r!   r!   r"   ÚcurveZ   r*   zEllipticCurvePrivateKey.curver+   c                 C  r&   r,   r!   r'   r!   r!   r"   r-   a   r*   z EllipticCurvePrivateKey.key_sizeÚdataúutils.BufferÚsignature_algorithmr4   c                 C  r&   )z 
        Signs the data
        Nr!   )r(   rA   rC   r!   r!   r"   Úsignh   r*   zEllipticCurvePrivateKey.signÚEllipticCurvePrivateNumbersc                 C  r&   )z9
        Returns an EllipticCurvePrivateNumbers.
        Nr!   r'   r!   r!   r"   Úprivate_numbersr   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(   rG   rI   rK   r!   r!   r"   Úprivate_bytesx   r*   z%EllipticCurvePrivateKey.private_bytesc                 C  r&   ©z!
        Returns a copy.
        Nr!   r'   r!   r!   r"   Ú__copy__ƒ   r*   z EllipticCurvePrivateKey.__copy__N)r6   r9   r:   r;   r$   r<   ©r$   r;   ©r$   r#   r/   )rA   rB   rC   r4   r$   r<   )r$   rE   )rG   rH   rI   rJ   rK   rL   r$   r<   )r$   r8   )r   r   r   r1   r2   r=   r>   r0   r@   r-   rD   rF   rN   rP   r!   r!   r!   r"   r8   J   s&    	
r8   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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_numbersrG   rH   rI   ú_serialization.PublicFormatr<   c                 C  r&   rM   r!   )r(   rG   rI   r!   r!   r"   Úpublic_bytes£   r*   z#EllipticCurvePublicKey.public_bytesÚ	signaturerB   rA   rC   r4   ÚNonec                 C  r&   )z5
        Verifies the signature of the data.
        Nr!   )r(   rW   rA   rC   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 )NrA   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@   rA   r!   r!   r"   Úfrom_encoded_point¸   s   z)EllipticCurvePublicKey.from_encoded_pointÚotherÚobjectÚboolc                 C  r&   )z"
        Checks equality.
        Nr!   )r(   re   r!   r!   r"   Ú__eq__Æ   r*   zEllipticCurvePublicKey.__eq__c                 C  r&   rO   r!   r'   r!   r!   r"   rP   Ì   r*   zEllipticCurvePublicKey.__copy__NrR   r/   )r$   rS   )rG   rH   rI   rU   r$   r<   )rW   rB   rA   rB   rC   r4   r$   rX   )r@   r#   rA   r<   r$   r;   )re   rf   r$   rg   rQ   )r   r   r   r0   r1   r2   r@   r-   rT   rV   rY   Úclassmethodrd   rh   rP   r!   r!   r!   r"   r;   Ž   s&    	
r;   c                   @  ó   e Zd ZdZdZdZdS )r    Ú	sect571r1i:  l&   GNÐ_ì&èfš.TOô!9;{(‚c3B9LU1‡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿN©r   r   r   r)   r-   r.   r!   r!   r!   r"   r    Ú   ó    r    c                   @  rj   )r   Ú	sect409r1é™  l   sD3ß4&8x¥@'>R_>fÌK05­*<                            Nrl   r!   r!   r!   r"   r   à   rm   r   c                   @  rj   )r   Ú	sect283r1é  l   3[_ó)!XeRq$?0K9ßÿÿÿÿÿÿÿÿÿNrl   r!   r!   r!   r"   r   æ   rm   r   c                   @  rj   )r   Ú	sect233r1éé   l   ×`Ÿ˜t’&ñe9]ô	              € Nrl   r!   r!   r!   r"   r   ì   rm   r   c                   @  rj   )r   Ú	sect163r2é£   l   3LFHJ08?ç/R          Nrl   r!   r!   r!   r"   r   ò   rm   r   c                   @  rj   )r   Ú	sect571k1i;  l&   øF=^ógEk;RNkåK°aØb	z95ä,ò1šqÃ!aL                                     @Nrl   r!   r!   r!   r"   r   ø   rm   r   c                   @  rj   )r   Ú	sect409k1ro   l   Ï_<@ãäZ´%ù|ø4¯>UD �(§;xËÿÿÿÿÿÿÿÿÿÿÿÿÿ Nrl   r!   r!   r!   r"   r   þ   rm   r   c                   @  rj   )r   Ú	sect283k1rq   l   a<,<x("ùw¿KÉ]:h..ÓÿÿÿÿÿÿÿÿÿNrl   r!   r!   r!   r"   r     rm   r   c                   @  rj   )r   Ú	sect233k1rs   l   ß+çbWkØwFM·"îVN              @ Nrl   r!   r!   r!   r"   r   
  rm   r   c                   @  rj   )r   Ú	sect163k1ru   l   ï%ñ360Š@          Nrl   r!   r!   r!   r"   r     rm   r   c                   @  rj   )r   Ú	secp521r1i	  l#   	dp"z\}[ëzˆ3"näZ;PKÜ#
`ü7ÍrËoÁC†QôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNrl   r!   r!   r!   r"   r     rm   r   c                   @  rj   )r   Ú	secp384r1é€  l   s)Š«e`g®w’lX_[nÐlv|ÿÿÿÿÿÿÿÿÿÿÿÿÿNrl   r!   r!   r!   r"   r     rm   r   c                   @  rj   )r   Ú	secp256r1é   l   Q%Æx+ÎOhóbi+}s¼ÿÿÿÿ   @ÿÿ Nrl   r!   r!   r!   r"   r   "  ó
    ÿr   c                   @  rj   )r   Ú	secp256k1r   l   AAl 3z’~»i«9nWº~ÿÿÿÿÿÿÿÿ Nrl   r!   r!   r!   r"   r   *  r€   r   c                   @  rj   )r   Ú	secp224r1éà   l   =*¸8%éá¸(‹ÿÿÿÿÿÿÿ?Nrl   r!   r!   r!   r"   r   2  rm   r   c                   @  rj   )r   Ú	secp192r1éÀ   l   1(¤iÆ&^#aß;æÿÿÿÿÿÿNrl   r!   r!   r!   r"   r   8  rm   r   c                   @  rj   )ÚBrainpoolP256R1ÚbrainpoolP256r1r   l   §V�.
:ð yo4,í(½ŒqvBT0æC7U{hí+û) Nrl   r!   r!   r!   r"   r†   >  r€   r†   c                   @  rj   )ÚBrainpoolP384R1ÚbrainpoolP384r1r}   l   eeRHA\1øoÚ+[Ï'K°2s3ñ1Ö
U{„8/¾™Cò{Öu%NQA9Nrl   r!   r!   r!   r"   rˆ   F  rm   rˆ   c                   @  rj   )ÚBrainpoolP512R1ÚbrainpoolP512r1i   l#   i R9
Z<,Û-»B`éXG Xþe3Ã$*S .>UàÌ@Sf9fÚAtrÙY�0–ð'žqjNúg"qôm¸»U Nrl   r!   r!   r!   r"   rŠ   L  rm   rŠ   Ú
prime192v1Ú
prime256v1r„   r‚   r~   r|   r{   r�   rz   ry   rx   rw   rv   rt   rr   rp   rn   )rk   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 )ÚECDSAFr6   r5   Údeterministic_signingrg   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(   r6   r�   r‘   r!   r!   r"   Ú__init__l  s   ÿþý
zECDSA.__init__r$   c                 C  ó   | j S ©N)r•   r'   r!   r!   r"   r6     ó   zECDSA.algorithmc                 C  r˜   r™   )r–   r'   r!   r!   r"   r�   …  rš   zECDSA.deterministic_signingN)F)r6   r5   r�   rg   r7   )r$   rg   )r   r   r   r—   r0   r6   r�   r!   r!   r!   r"   r�   k  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+   Ú	TypeErrorr_   r`   ra   Úderive_private_key)r›   r@   r‘   r!   r!   r"   rŸ   �  s
   
rŸ   c                   @  s   e Zd ZdS )r9   N)r   r   r   r!   r!   r!   r"   r9   �  s    r9   Ú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$   r8   )r    r   r$   r¡   )?Ú
__future__r   r1   ÚtypingÚcryptographyr   Úcryptography.exceptionsr   r   Úcryptography.hazmat._oidr   Ú"cryptography.hazmat.bindings._rustr   r`   Úcryptography.hazmat.primitivesr   r	   Ú)cryptography.hazmat.primitives.asymmetricÚ
asym_utilsr
   ÚABCMetar#   r4   r8   Ú(EllipticCurvePrivateKeyWithSerializationÚregisterra   ÚECPrivateKeyr;   Ú'EllipticCurvePublicKeyWithSerializationÚECPublicKeyrE   rS   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Ÿ   r9   r   r   r   r¢   r¥   r!   r!   r!   r"   Ú<module>   sö   @Eÿþýüûúùø	÷
öõôóòñðïë!ýÿþýüûúùø	÷
öõôóòñðïí