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 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)rZ int_bytesrrrto_base64url_uint(s  rcCs*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-cCs2|}d}|dkr"|d?}|d7}q|j|dddS)Nrr F)Zsigned)to_bytes)rZ remainingZ byte_lengthrrrrFs  r)der_sigcurvercCs2|j}|dd}t|\}}t||t||S)Nr.)key_sizerr*)r1r2num_bitsr'rsrrrder_to_raw_signatureQs  r8)raw_sigr2rcCsT|j}|dd}t|d|kr*tdt|d|}t||d}t||S)Nr3r.r(zInvalid signature)r4rrr-r)r9r2r5r'r6r7rrrraw_to_der_signatureZs r:)rr)typingrrZ,cryptography.hazmat.primitives.asymmetric.ecrZ/cryptography.hazmat.primitives.asymmetric.utilsrrModuleNotFoundErrorr r rrrr"rr%r*r-rr8r:rrrrs"