3 “k®Záã@s`ddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z Gdd„de ƒZ dS)éN)ÚRSA)Ú PKCS1_v1_5)Ú Algorithm)Ú string_typesÚ text_typec@sHeZdZdZejjZejjZejjZdd„Z dd„Z dd„Z dd „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 cCs ||_dS)N)Úhash_alg)Úselfr©r ú/usr/lib/python3.6/pycrypto.pyÚ__init__szRSAAlgorithm.__init__cCsFt|tjƒr|St|tƒr:t|tƒr.|jdƒ}tj|ƒ}ntdƒ‚|S)Nzutf-8z&Expecting a PEM- or RSA-formatted key.)Ú isinstancerZ_RSAobjrrÚencodeZ importKeyÚ TypeError)r Úkeyr r r Ú prepare_keys     zRSAAlgorithm.prepare_keycCstj|ƒj|jj|ƒƒS)N)rÚnewÚsignr)r Úmsgrr r r r*szRSAAlgorithm.signcCstj|ƒj|jj|ƒ|ƒS)N)rrÚverifyr)r rrZsigr r r r-szRSAAlgorithm.verifyN) Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚCryptoZHashZSHA256ZSHA384ZSHA512r rrrr r r r r sr)ZCrypto.Hash.SHA256rZCrypto.Hash.SHA384ZCrypto.Hash.SHA512ZCrypto.PublicKeyrZCrypto.SignaturerZjwt.algorithmsrZ jwt.compatrrrr r r r Ús