o
    ÖèFhè%  ã                   @  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 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.d/„ d/eƒZ,G d0d1„ d1eƒZ-G d2d3„ d3eƒZ.G d4d5„ d5eƒZ/G d6d7„ d7eƒZ0i d8e-ƒ “d9e*ƒ “d:e-ƒ “d;e,ƒ “d<e*ƒ “d=e)ƒ “d>e(ƒ “d?e+ƒ “d@e'ƒ “dAe&ƒ “dBe%ƒ “dCe$ƒ “dDe#ƒ “dEe"ƒ “dFe!ƒ “dGe ƒ “dHeƒ “eƒ e.ƒ e/ƒ e0ƒ dIœ¥Z1dJe2dK< G dLdM„ dMeƒZ3e
jj4Z4	d]d^dTdU„Z5G dVdW„ dWƒZ6i ej-e-“ej,e,“ej+e+“ej*e*“ej)e)“ej(e(“ej7e.“ej8e/“ej9e0“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 )`é    )ÚannotationsN)Úutils)Ú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   úe/var/www/html/loop/nvenv/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_size/   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    Ú	algorithm8   r(   z)EllipticCurveSignatureAlgorithm.algorithmN©r"   r2   )r	   r
   r   r-   r.   r/   r3   r   r   r   r    r1   7   s    r1   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 ))ÚEllipticCurvePrivateKeyr3   Ú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&   r3   r7   r   r   r    ÚexchangeC   r(   z EllipticCurvePrivateKey.exchangec                 C  r$   )zB
        The EllipticCurvePublicKey for this private key.
        Nr   r%   r   r   r    Ú
public_keyL   r(   z"EllipticCurvePrivateKey.public_keyr!   c                 C  r$   ©z8
        The EllipticCurve that this key is on.
        Nr   r%   r   r   r    ÚcurveR   r(   zEllipticCurvePrivateKey.curver)   c                 C  r$   r*   r   r%   r   r   r    r+   Y   r(   z EllipticCurvePrivateKey.key_sizeÚdataÚsignature_algorithmr1   c                 C  r$   )z 
        Signs the data
        Nr   )r&   r>   r?   r   r   r    Úsign`   r(   zEllipticCurvePrivateKey.signÚEllipticCurvePrivateNumbersc                 C  r$   )z9
        Returns an EllipticCurvePrivateNumbers.
        Nr   r%   r   r   r    Úprivate_numbersj   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&   rC   rE   rG   r   r   r    Úprivate_bytesp   r(   z%EllipticCurvePrivateKey.private_bytesN)r3   r6   r7   r8   r"   r9   )r"   r8   ©r"   r!   r,   )r>   r9   r?   r1   r"   r9   )r"   rA   )rC   rD   rE   rF   rG   rH   r"   r9   )r	   r
   r   r.   r/   r:   r;   r-   r=   r+   r@   rB   rJ   r   r   r   r    r5   B   s"    	r5   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 ))r8   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_numbersrC   rD   rE   ú_serialization.PublicFormatr9   c                 C  r$   rI   r   )r&   rC   rE   r   r   r    Úpublic_bytes•   r(   z#EllipticCurvePublicKey.public_bytesÚ	signaturer>   r?   r1   ÚNonec                 C  r$   )z5
        Verifies the signature of the data.
        Nr   )r&   rP   r>   r?   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__NrK   r,   )r"   rL   )rC   rD   rE   rN   r"   r9   )rP   r9   r>   r9   r?   r1   r"   rQ   )r=   r!   r>   r9   r"   r8   )r^   r_   r"   r`   )r	   r
   r   r-   r.   r/   r=   r+   rM   rO   rR   Úclassmethodr]   ra   r   r   r   r    r8   €   s"    	
r8   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                   @  rc   )r   Ú	sect409r1é™  Nre   r   r   r   r    r   Ë   rf   r   c                   @  rc   )r   Ú	sect283r1é  Nre   r   r   r   r    r   Ð   rf   r   c                   @  rc   )r   Ú	sect233r1éé   Nre   r   r   r   r    r   Õ   rf   r   c                   @  rc   )r   Ú	sect163r2é£   Nre   r   r   r   r    r   Ú   rf   r   c                   @  rc   )r   Ú	sect571k1i;  Nre   r   r   r   r    r   ß   rf   r   c                   @  rc   )r   Ú	sect409k1rh   Nre   r   r   r   r    r   ä   rf   r   c                   @  rc   )r   Ú	sect283k1rj   Nre   r   r   r   r    r   é   rf   r   c                   @  rc   )r   Ú	sect233k1rl   Nre   r   r   r   r    r   î   rf   r   c                   @  rc   )r   Ú	sect163k1rn   Nre   r   r   r   r    r   ó   rf   r   c                   @  rc   )r   Ú	secp521r1i	  Nre   r   r   r   r    r   ø   rf   r   c                   @  rc   )r   Ú	secp384r1é€  Nre   r   r   r   r    r   ý   rf   r   c                   @  rc   )r   Ú	secp256r1é   Nre   r   r   r   r    r     rf   r   c                   @  rc   )r   Ú	secp256k1rx   Nre   r   r   r   r    r     rf   r   c                   @  rc   )r   Ú	secp224r1éà   Nre   r   r   r   r    r     rf   r   c                   @  rc   )r   Ú	secp192r1éÀ   Nre   r   r   r   r    r     rf   r   c                   @  rc   )ÚBrainpoolP256R1ÚbrainpoolP256r1rx   Nre   r   r   r   r    r~     rf   r~   c                   @  rc   )ÚBrainpoolP384R1ÚbrainpoolP384r1rv   Nre   r   r   r   r    r€     rf   r€   c                   @  rc   )ÚBrainpoolP512R1ÚbrainpoolP512r1i   Nre   r   r   r   r    r‚      rf   r‚   Ú
prime192v1Ú
prime256v1r|   rz   rw   ru   rt   ry   rs   rr   rq   rp   ro   rm   rk   ri   rg   )rd   r   r�   rƒ   zdict[str, EllipticCurve]Ú_CURVE_TYPESc                   @  s$   e Zd Zd	dd„Zed
dd„ƒZdS )ÚECDSAr3   r2   c                 C  s
   || _ d S ©N©Ú
_algorithm)r&   r3   r   r   r    Ú__init__?  s   
zECDSA.__init__r"   c                 C  s   | j S rˆ   r‰   r%   r   r   r    r3   E  s   zECDSA.algorithmN)r3   r2   r4   )r	   r
   r   r‹   r-   r3   r   r   r   r    r‡   >  s    
r‡   Úprivate_valuer)   r=   Úbackendú
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)   Ú	TypeErrorrX   rY   rZ   Úderive_private_key)rŒ   r=   r�   r   r   r    r‘   O  s
   
r‘   c                   @  s   e Zd ZdS )r6   N)r	   r
   r   r   r   r   r    r6   ]  s    r6   Ú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_oidx  s   
ÿÿr—   rˆ   )rŒ   r)   r=   r!   r�   rŽ   r"   r5   )r’   r   r"   r“   )<Ú
__future__r   r.   ÚtypingÚcryptographyr   Úcryptography.hazmat._oidr   Ú"cryptography.hazmat.bindings._rustr   rY   Úcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricÚ
asym_utilsr   ÚABCMetar!   r1   r5   Ú(EllipticCurvePrivateKeyWithSerializationÚregisterrZ   ÚECPrivateKeyr8   Ú'EllipticCurvePublicKeyWithSerializationÚECPublicKeyrA   rL   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‘   r6   r   r   r   r”   r—   r   r   r   r    Ú<module>   sô   :?ÿþýüûúùø	÷
öõôóòñðïëýÿþýüûúùø	÷
öõôóòñðïí