Ë
    o UfE
  ã                   óš   — d dl Z d dlZd dlZddlmZmZmZ 	 d dlmZm	Z	 d„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy# e
$ r Y Œ)w xY w)é    Né   )Úbinary_typeÚbytes_from_intÚ	text_type)Údecode_dss_signatureÚencode_dss_signaturec                 ó~   — t        | t        «      r| j                  d«      S t        | t        «      r| S t	        d«      ‚©Nzutf-8zExpected a string value)Ú
isinstancer   Údecoder   Ú	TypeError©Úvalues    úHC:\Users\user\Documents\project_loop\venv\Lib\site-packages\jwt/utils.pyÚforce_unicoder      s6   € Ü�%œÔ%Ø�|‰|˜GÓ$Ð$Ü	�Eœ9Ô	%ØˆäÐ1Ó2Ð2ó    c                 ó~   — t        | t        «      r| j                  d«      S t        | t        «      r| S t	        d«      ‚r
   )r   r   Úencoder   r   r   s    r   Úforce_bytesr      s6   € Ü�%œÔ#Ø�|‰|˜GÓ$Ð$Ü	�Eœ;Ô	'ØˆäÐ1Ó2Ð2r   c                 óª   — t        | t        «      r| j                  d«      } t        | «      dz  }|dkD  r| dd|z
  z  z  } t	        j
                  | «      S )NÚasciié   r   ó   =)r   r   r   ÚlenÚbase64Úurlsafe_b64decode)ÚinputÚrems     r   Úbase64url_decoder   !   sR   € Ü�%œÔ#Ø—‘˜WÓ%ˆä
ˆe‹*�q‰.€Cà
ˆQ‚wØ�˜˜S™Ñ!Ñ!ˆä×#Ñ# EÓ*Ð*r   c                 óL   — t        j                  | «      j                  dd«      S )Nr   r   )r   Úurlsafe_b64encodeÚreplace)r   s    r   Úbase64url_encoder#   -   s    € Ü×#Ñ# EÓ*×2Ñ2°4¸Ó=Ð=r   c                 ón   — | dk  rt        d«      ‚t        | «      }t        |«      dk(  rd}t        |«      S )Nr   zMust be a positive integeró    )Ú
ValueErrorr   r   r#   )ÚvalÚ	int_bytess     r   Úto_base64url_uintr)   1   s;   € Ø
ˆQ‚wÜÐ5Ó6Ð6ä˜sÓ#€Iä
ˆ9ƒ~˜ÒØˆ	ä˜IÓ&Ð&r   c           	      ó   — t        | t        «      r| j                  d«      } t        | «      }t	        j
                  dt        |«      z  |«      }t        dj                  |D �cg c]  }d|z  ‘Œ	 c}«      d«      S c c}w )Nr   z%sBÚ z%02xé   )	r   r   r   r   ÚstructÚunpackr   ÚintÚjoin)r'   ÚdataÚbufÚbytes       r   Úfrom_base64url_uintr4   =   se   € Ü�#”yÔ!Ø�j‰j˜Ó!ˆä˜CÓ €Dä
�-‰-˜¤ D£	Ñ)¨4Ó
0€CÜˆr�w‰w°#Ö6¨$˜ ›Ò6Ó7¸Ó<Ð<ùÒ6s   Á#A;c                 óœ   — |s| S 	 | j                  «       }|j                  |«       |S # t        t        f$ r}t	        d|z  «      ‚d }~ww xY w)Nz-original and updates must be a dictionary: %s)ÚcopyÚupdateÚAttributeErrorr&   r   )ÚoriginalÚupdatesÚmerged_optionsÚes       r   Ú
merge_dictr=   G   s[   € ÙØˆðMØ!Ÿ™›ˆØ×Ñ˜gÔ&ð Ðøô œJÐ'ò MÜÐGÈ!ÑKÓLÐLûðMús   †!) ©A¸AÁAc                 ób   — dd|z  | fz  }t        j                  |j                  d«      «      }|S )Nz%0*xé   r   )ÚbinasciiÚa2b_hexr   )ÚnumÚ	num_bytesÚ
padded_hexÚ
big_endians       r   Únumber_to_bytesrF   T   s6   € Ø˜1˜y™=¨#Ð.Ñ.€JÜ×!Ñ! *×"3Ñ"3°GÓ"<Ó=€JØÐr   c                 ó@   — t        t        j                  | «      d«      S )Nr,   )r/   r@   Úb2a_hex)Ústrings    r   Úbytes_to_numberrJ   Z   s   € ÜŒx×Ñ Ó'¨Ó,Ð,r   c                 óx   — |j                   }|dz   dz  }t        | «      \  }}t        ||«      t        ||«      z   S )Né   é   )Úkey_sizer   rF   )Úder_sigÚcurveÚnum_bitsrC   ÚrÚss         r   Úder_to_raw_signaturerT   ^   s@   € Ø�~‰~€HØ˜A‘ !Ñ#€Iä Ó(�D€A€qä˜1˜iÓ(¬?¸1¸iÓ+HÑHÐHr   c                 ó²   — |j                   }|dz   dz  }t        | «      d|z  k7  rt        d«      ‚t        | d | «      }t        | |d  «      }t	        ||«      S )NrL   rM   r?   zInvalid signature)rN   r   r&   rJ   r   )Úraw_sigrP   rQ   rC   rR   rS   s         r   Úraw_to_der_signaturerW   g   sd   € Ø�~‰~€HØ˜A‘ !Ñ#€Iä
ˆ7ƒ|�q˜9‘}Ò$ÜÐ,Ó-Ð-ä˜ 
 Ð+Ó,€AÜ˜ 	 
Ð+Ó,€Aä  1Ó%Ð%r   )r   r@   r-   Úcompatr   r   r   Ú/cryptography.hazmat.primitives.asymmetric.utilsr   r   ÚImportErrorr   r   r   r#   r)   r4   r=   rF   rJ   rT   rW   © r   r   ú<module>r\      sk   ðÛ Û Û ç :Ñ :ð	÷ò3ò3ò	+ò>ò	'ò=ò
òò-òIó
&øðy ò 	Ùð	ús   ˜A ÁA
Á	A
