File: //lib/python3/dist-packages/jwt/contrib/algorithms/__pycache__/pycrypto.cpython-38.pyc
U
�b�[� � @ s` d dl Zd dlZd dlZd dlmZ d dlmZ d dlm Z d dl
mZmZ G dd� de �Z
dS )� N)�RSA)�
PKCS1_v1_5)� Algorithm)�string_types� text_typec @ sH e Zd ZdZejjZejjZejjZdd� Z dd� Z
dd� Zdd � Zd
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 �A/usr/lib/python3/dist-packages/jwt/contrib/algorithms/pycrypto.py�__init__ s zRSAAlgorithm.__init__c C sF t |tj�r|S t |t�r:t |t�r.|�d�}t�|�}ntd��|S )Nzutf-8z&Expecting a PEM- or RSA-formatted key.)�
isinstancer Z_RSAobjr r �encodeZ importKey� TypeError)r
�keyr r r �prepare_key s
zRSAAlgorithm.prepare_keyc C s t �|��| j�|��S r )r �new�signr )r
�msgr r r r r * s zRSAAlgorithm.signc C s t �|��| j�|�|�S r )r r �verifyr )r
r r Zsigr r r r - s zRSAAlgorithm.verifyN)
�__name__�
__module__�__qualname__�__doc__�CryptoZHashZSHA256ZSHA384ZSHA512r
r r r r r r r r s r )ZCrypto.Hash.SHA256r ZCrypto.Hash.SHA384ZCrypto.Hash.SHA512ZCrypto.PublicKeyr ZCrypto.Signaturer Zjwt.algorithmsr Z
jwt.compatr r r r r r r �<module> s