o
    kÒYiá  ã                   @   s`   d dl 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 G dd„ de	ƒZdS )é    N)ÚRSA)Ú
PKCS1_v1_5)Ú	Algorithm)Ústring_typesÚ	text_typec                   @   sH   e Zd ZdZejjZejjZejjZdd„ Z	dd„ Z
dd„ Zdd	„ Zd
S )ÚRSAAlgorithmzé
    Performs signing and verification operations using
    RSASSA-PKCS-v1_5 and the specified hash function.

    This class requires PyCrypto package to be installed.

    This is based off of the implementation in PyJWT 0.3.2
    c                 C   s
   || _ d S ©N)Úhash_alg)Úselfr	   © r   úc/var/www/html/asistente-voz-ia/venv/lib/python3.10/site-packages/jwt/contrib/algorithms/pycrypto.pyÚ__init__   s   
zRSAAlgorithm.__init__c                 C   sD   t |tjƒr|S t |tƒrt |tƒr| d¡}t |¡}|S tdƒ‚)Nzutf-8z&Expecting a PEM- or RSA-formatted key.)Ú
isinstancer   Ú_RSAobjr   r   ÚencodeÚ	importKeyÚ	TypeError)r
   Úkeyr   r   r   Úprepare_key   s   



þzRSAAlgorithm.prepare_keyc                 C   s   t  |¡ | j |¡¡S r   )r   ÚnewÚsignr	   )r
   Úmsgr   r   r   r   r   *   s   zRSAAlgorithm.signc                 C   s   t  |¡ | j |¡|¡S r   )r   r   Úverifyr	   )r
   r   r   Úsigr   r   r   r   -   s   zRSAAlgorithm.verifyN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚCryptoÚHashÚSHA256ÚSHA384ÚSHA512r   r   r   r   r   r   r   r   r      s    r   )ÚCrypto.Hash.SHA256r   ÚCrypto.Hash.SHA384ÚCrypto.Hash.SHA512ÚCrypto.PublicKeyr   ÚCrypto.Signaturer   Újwt.algorithmsr   Ú
jwt.compatr   r   r   r   r   r   r   Ú<module>   s    