U _ @sddlZddlZddlmZmZz 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/python38/lib/python3.8/site-packages/jwt/utils.py force_bytess    r)inputrcCsBt|tr|d}t|d}|dkr8|dd|7}t|S)Nasciir=)r r r lenbase64urlsafe_b64decode)rremrrrbase64url_decodes    rcCst|ddS)Nr)rurlsafe_b64encodereplace)rrrrbase64url_encode$sr)valrcCs0|dkrtdt|}t|dkr(d}t|S)NrzMust be a positive integer) ValueErrorbytes_from_intrr)rZ 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)binasciia2b_hexr )r)r*Z padded_hexZ big_endianrrrnumber_to_bytes<sr.)stringrcCstt|dS)N)r%r,b2a_hex)r/rrrbytes_to_numberBsr2cCs2|}d}|dkr"|d?}|d7}q|j|dddS)Nrr#F)signed)to_bytes)r remainingZ byte_lengthrrrr!Fs  r!)der_sigcurvercCs2|j}|dd}t|\}}t||t||S)Nr3)key_sizerr.)r8r9num_bitsr*rsrrrder_to_raw_signatureQs  r?)raw_sigr9rcCsT|j}|dd}t|d|kr*tdt|d|}t||d}t||S)Nr:r3r+zInvalid signature)r;rr r2r)r@r9r<r*r=r>rrrraw_to_der_signatureZs rA)rr,typingrrZ,cryptography.hazmat.primitives.asymmetric.ecrZ/cryptography.hazmat.primitives.asymmetric.utilsrrModuleNotFoundErrorr r rrrr%r"r(r.r2r!r?rArrrrs"