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 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)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)binasciia2b_hexr )r*r+Z padded_hexZ big_endianrrrnumber_to_bytes<sr/)stringrcCstt|dS)N)r&r-b2a_hex)r0rrrbytes_to_numberBsr3cCs6|}d}x|dkr$|d?}|d7}q W|j|dddS)Nrr$F)signed)to_bytes)r remainingZ byte_lengthrrrr!Fs   r!)der_sigcurvercCs2|j}|dd}t|\}}t||t||S)Nr4)key_sizerr/)r9r:num_bitsr+rsrrrder_to_raw_signatureQs  r@)raw_sigr:rcCsT|j}|dd}t|d|kr*tdt|d|}t||d}t||S)Nr;r4r,zInvalid signature)r<rr r3r)rAr:r=r+r>r?rrrraw_to_der_signatureZs rB)rr-typingrrZ,cryptography.hazmat.primitives.asymmetric.ecrZ/cryptography.hazmat.primitives.asymmetric.utilsrrModuleNotFoundErrorr r rrrr&r#r)r/r3r!r@rBrrrrs"