Viewing File: /opt/alt/python35/lib/python3.5/site-packages/jwt/__pycache__/api_jws.cpython-35.opt-1.pyc



b'[@sGddlZddlZddlZddlmZy,ddlmZmZmZm	Z	m
Z
Wnek
rtYnXddlm
Z
mZmZmZddlmZmZmZddlmZmZmZmZddlmZmZmZmZGd	d
d
eZ e Z!e!j"Z"e!j#Z#e!j$Z$e!j%Z%e!j&Z&dS)N)Mapping)CallableDictListOptionalUnion)	Algorithmget_default_algorithms
has_cryptorequires_cryptography)binary_typestring_types	text_type)DecodeErrorInvalidAlgorithmErrorInvalidSignatureErrorInvalidTokenError)base64url_decodebase64url_encodeforce_bytes
merge_dictc@seZdZdZddddZeddZddZd	d
ZddZ	d
ddddZ
ddddddZddZddZ
ddddZddZddZdS)PyJWSZJWTNcCst|_|dk	r$t|nt|j|_x6t|jjD]}||jkrL|j|=qLW|s{i}t|j||_dS)N)	r
_algorithmsset_valid_algslistkeysr_get_default_optionsoptions)self
algorithmsrkeyr#/api_jws.py__init__szPyJWS.__init__cCs
ddiS)Nverify_signatureTr#r#r#r#r$r(szPyJWS._get_default_optionscCsW||jkrtdt|ts6td||j|<|jj|dS)zW
        Registers a new Algorithm for use when creating and verifying tokens.
        z Algorithm already has a handler.z!Object is not of type `Algorithm`N)r
ValueError
isinstancer		TypeErrorradd)r alg_idalg_objr#r#r$register_algorithm.s
zPyJWS.register_algorithmcCs9||jkrtd|j|=|jj|dS)z
        Unregisters an Algorithm for use when creating and verifying tokens
        Throws KeyError if algorithm is not registered.
        zJThe specified algorithm could not be removed because it is not registered.N)rKeyErrorrremove)r r+r#r#r$unregister_algorithm;s
zPyJWS.unregister_algorithmcCs
t|jS)zM
        Returns a list of supported values for the 'alg' parameter.
        )rr)r r#r#r$get_algorithmsGszPyJWS.get_algorithmsZHS256cCsKg}|dkrd}||jkr'd|jd|i}|r\|j||j|ttj|ddd|}|jt||jt|dj	|}	y2|j
|}
|
j|}|
j|	|}WnDt
k
r*tr|tkrtd	|ntd
YnX|jt|dj	|S)NZnonetypalgZ
separators,:cls.zFAlgorithm '%s' could not be found. Do you have cryptography installed?zAlgorithm not supported)r4r5)r
header_typ_validate_headersupdaterjsondumpsappendrjoinrprepare_keyZsignr.rrNotImplementedError)r payloadr"	algorithmheadersZjson_encoderZsegmentsheaderZjson_header
signing_inputr,	signaturer#r#r$encodeMs8




zPyJWS.encodeTc
Kst|j|}|d}|rA|rAtjdddt|j|\}	}
}}|s{tjdtddn"|r|j|	|
|||||	S)Nr&z.It is strongly recommended that you pass in a z;value for the "algorithms" argument when calling decode(). z4This argument will be mandatory in a future version.zSThe verify parameter is deprecated. Please use verify_signature in options instead.
stacklevel)rrwarningswarnDeprecationWarning_load_verify_signature)
r jwtr"verifyr!rkwargsZmerged_optionsr&rArErDrFr#r#r$decodes

	
zPyJWS.decodecCs$|j|d}|j||S)zReturns back the JWT header parameters as a dict()

        Note: The signature is not verified so the header parameters
        should not be fully trusted until signature verification is complete
        rJ)rNr9)r rPrCr#r#r$get_unverified_headers
zPyJWS.get_unverified_headerc2Cst|tr|jd}tt|tsHtdjty4|jdd\}}|j	dd\}}Wnt
k
rtdYnXyt|}Wn'tt
jfk
rtdYnXytj|jd}Wn5t
k
r*}ztd|WYdd}~XnXt|tsFtdyt|}	Wn'tt
jfk
rtd	YnXyt|}
Wn'tt
jfk
rtd
YnX|	|||
fS)Nzutf-8z'Invalid token type. Token must be a {0}r7rzNot enough segmentszInvalid header paddingzInvalid header string: %sz,Invalid header string: must be a json objectzInvalid payload paddingzInvalid crypto padding)r(rrG
issubclasstyper
rformatrsplitsplitr'rr)binasciiErrorr;loadsrSr)r rPrEZcrypto_segmentZheader_segmentZpayload_segmentZheader_datarDerArFr#r#r$rNs:	
#zPyJWS._loadc	Cs|jd}|dk	r3||kr3tdyA|j|}|j|}|j|||sstdWntk
rtdYnXdS)Nr3z&The specified alg value is not allowedzSignature verification failedzAlgorithm not supported)getrrr?rQrr.)	r rArErDrFr"r!r3r,r#r#r$rOs

zPyJWS._verify_signaturecCs!d|kr|j|ddS)Nkid)
_validate_kid)r rCr#r#r$r9szPyJWS._validate_headerscCst|tstddS)Nz(Key ID header parameter must be a string)r(rr)r r_r#r#r$r`szPyJWS._validate_kid)__name__
__module____qualname__r8r%staticmethodrr-r0r1rGrSrTrNrOr9r`r#r#r#r$rs$
	2(r)'rZr;rKcollectionsrZtypingrrrrrImportErrorr!r	r
rrcompatr
rr
exceptionsrrrrZutilsrrrrobjectrZ_jws_global_objrGrSr-r0rTr#r#r#r$<module>s$,
"""					
Back to Directory File Manager