File: //lib/python3.6/site-packages/jwt/contrib/algorithms/__pycache__/pycrypto.cpython-36.pyc
3
�k�Z� � @ 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
�/usr/lib/python3.6/pycrypto.py�__init__ s zRSAAlgorithm.__init__c C sF t |tj�r|S t |t�r:t |t�r.|jd�}tj|�}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|�j| jj|��S )N)r �new�signr )r �msgr r
r
r r * s zRSAAlgorithm.signc C s t j|�j| jj|�|�S )N)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