3 kZ@s@ddlZddlZddlmZddlmZmZGdddeZdS)N) Algorithm) string_types text_typec@sBeZdZdZejZejZej Z ddZ ddZ ddZ dd Zd S) ECAlgorithmz Performs signing and verification operations using ECDSA and the specified hash function This class requires the ecdsa package to be installed. This is based off of the implementation in PyJWT 0.3.2 cCs ||_dS)N)hash_alg)selfrr/usr/lib/python3.6/py_ecdsa.py__init__szECAlgorithm.__init__c Cs~t|tjst|tjr|St|trrt|tr:|jd}ytjj|}Wqztjj k rntjj|}YqzXnt d|S)Nzutf-8zExpecting a PEM-formatted key.) isinstanceecdsaZ SigningKeyZ VerifyingKeyrrencodeZfrom_pemZderZ UnexpectedDER TypeError)rkeyrrr prepare_keys     zECAlgorithm.prepare_keycCs|j||jtjjdS)N)hashfuncZ sigencode)signrr utilZsigencode_string)rmsgrrrr r3s zECAlgorithm.signc Cs2y|j|||jtjjdStk r,dSXdS)N)rZ sigdecodeF)verifyrr rZsigdecode_stringAssertionError)rrrZsigrrr r7s   zECAlgorithm.verifyN)__name__ __module__ __qualname____doc__hashlibZsha256ZSHA256Zsha384ZSHA384Zsha512ZSHA512r rrrrrrr r sr)rr Zjwt.algorithmsrZ jwt.compatrrrrrrr s