Server IP : 192.158.238.246 / Your IP : 18.223.188.252 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /usr/lib/python3.6/site-packages/jwt/contrib/algorithms/ |
Upload File : |
import Crypto.Hash.SHA256 import Crypto.Hash.SHA384 import Crypto.Hash.SHA512 from Crypto.PublicKey import RSA from Crypto.Signature import PKCS1_v1_5 from jwt.algorithms import Algorithm from jwt.compat import string_types, text_type class RSAAlgorithm(Algorithm): """ 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 """ SHA256 = Crypto.Hash.SHA256 SHA384 = Crypto.Hash.SHA384 SHA512 = Crypto.Hash.SHA512 def __init__(self, hash_alg): self.hash_alg = hash_alg def prepare_key(self, key): if isinstance(key, RSA._RSAobj): return key if isinstance(key, string_types): if isinstance(key, text_type): key = key.encode('utf-8') key = RSA.importKey(key) else: raise TypeError('Expecting a PEM- or RSA-formatted key.') return key def sign(self, msg, key): return PKCS1_v1_5.new(key).sign(self.hash_alg.new(msg)) def verify(self, msg, key, sig): return PKCS1_v1_5.new(key).verify(self.hash_alg.new(msg), sig)