B _ @sddlZddlZddlmZmZy ddlmZddlmZm Z Wne k rXeZYnXee e fe dddZ ee e fe dd d Ze e dd d Zee d ddZee e fed ddZeee dddZe edddZee d ddZe ee dddZe ee dddZdS) N)AnyUnion) EllipticCurve)decode_dss_signatureencode_dss_signature)valuereturncCs.t|tr|dSt|tr"|StddS)Nzutf-8zExpected a string value) isinstancestrencodebytes TypeError)rr:/opt/alt/python37/lib/python3.7/site-packages/jwt/utils.py force_bytess    r)inputrcCsBt|tr|d}t|d}|dkr8|dd|7}t|S)Nasciir=)r r r lenbase64Zurlsafe_b64decode)rZremrrrbase64url_decodes    rcCst|ddS)Nr)rZurlsafe_b64encodereplace)rrrrbase64url_encode$sr)valrcCs0|dkrtdt|}t|dkr(d}t|S)NrzMust be a positive integer) ValueErrorbytes_from_intrr)r int_bytesrrrto_base64url_uint(s  r cCs*t|tr|d}t|}tj|ddS)Nrbig) byteorder)r r r rint from_bytes)rdatarrrfrom_base64url_uint4s  r&)num num_bytesrcCs$dd||f}t|d}|S)Nz%0*xr)binasciiZa2b_hexr )r'r(Z padded_hexZ big_endianrrrnumber_to_bytes<sr+)stringrcCstt|dS)N)r#r*Zb2a_hex)r,rrrbytes_to_numberBsr.cCs6|}d}x|dkr$|d?}|d7}q W|j|dddS)Nrr!F)signed)to_bytes)r remainingZ byte_lengthrrrrFs   r)der_sigcurvercCs2|j}|dd}t|\}}t||t||S)Nr/)key_sizerr+)r4r5num_bitsr(rsrrrder_to_raw_signatureQs  r;)raw_sigr5rcCsT|j}|dd}t|d|kr*tdt|d|}t||d}t||S)Nr6r/r)zInvalid signature)r7rrr.r)r<r5r8r(r9r:rrrraw_to_der_signatureZs r=)rr*typingrrZ,cryptography.hazmat.primitives.asymmetric.ecrZ/cryptography.hazmat.primitives.asymmetric.utilsrrModuleNotFoundErrorr r rrrr#r r&r+r.rr;r=rrrrs"