Ë
    åÞËjØ  ã                   ó¶  — d dl Z d dlZd dlZd dlmZ 	 d dlmZ d dlmZm	Z	 deeef   defd„Zdeeef   defd	„Zdedefd
„Zdedefd„Zdeeef   defd„Zdededefd„Zdedefd„Zdedefd„Zdedddefd„Zdedddefd„Zh d£Z ej2                  ddj5                  e«      z   dz   ej6                  «      Zdedefd„Zd Zdedefd!„Z y# e
$ r Y Œµw xY w)"é    N)ÚUnion)ÚEllipticCurve)Údecode_dss_signatureÚencode_dss_signatureÚvalueÚreturnc                 ó~   — t        | t        «      r| j                  d«      S t        | t        «      r| S t	        d«      ‚)Nzutf-8zExpected a string value)Ú
isinstanceÚstrÚencodeÚbytesÚ	TypeError)r   s    úF/var/www/photos/backend/venv/lib/python3.12/site-packages/jwt/utils.pyÚforce_bytesr      s6   € Ü�%œÔØ�|‰|˜GÓ$Ð$Ü	�Eœ5Ô	!ØˆäÐ1Ó2Ð2ó    Úinputc                 ó~   — t        | «      }t        |«      dz  }|dkD  r|dd|z
  z  z  }t        j                  |«      S )Né   r   ó   =)r   ÚlenÚbase64Úurlsafe_b64decode)r   Úinput_bytesÚrems      r   Úbase64url_decoder      sF   € Ü˜eÓ$€Kä
ˆkÓ
˜QÑ
€Cà
ˆQ‚wØ�t˜q 3™wÑ'Ñ'ˆä×#Ñ# KÓ0Ð0r   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   Úvalc                 ón   — | dk  rt        d«      ‚t        | «      }t        |«      dk(  rd}t        |«      S )Nr   zMust be a positive integeró    )Ú
ValueErrorÚbytes_from_intr   r   )r    Ú	int_bytess     r   Úto_base64url_uintr&   (   s;   € Ø
ˆQ‚wÜÐ5Ó6Ð6ä˜sÓ#€Iä
ˆ9ƒ~˜ÒØˆ	ä˜IÓ&Ð&r   c                 óX   — t        t        | «      «      }t        j                  |d¬«      S )NÚbig)Ú	byteorder)r   r   ÚintÚ
from_bytes)r    Údatas     r   Úfrom_base64url_uintr-   4   s$   € ÜœK¨Ó,Ó-€DÜ�>‰>˜$¨%ˆ>Ó0Ð0r   ÚnumÚ	num_bytesc                 ó^   — dd|z  | fz  }t        j                  |j                  d«      «      S )Nz%0*xé   Úascii)ÚbinasciiÚa2b_hexr   )r.   r/   Ú
padded_hexs      r   Únumber_to_bytesr6   9   s1   € Ø˜1˜y™=¨#Ð.Ñ.€JÜ×Ñ˜J×-Ñ-¨gÓ6Ó7Ð7r   Ústringc                 ó@   — t        t        j                  | «      d«      S )Né   )r*   r3   Úb2a_hex)r7   s    r   Úbytes_to_numberr;   >   s   € ÜŒx×Ñ Ó'¨Ó,Ð,r   c                 ó\   — | }d}|dk7  r|dz  }|dz  }|dk7  rŒ| j                  |dd¬«      S )Nr   é   é   r(   F)Úsigned)Úto_bytes)r    Ú	remainingÚbyte_lengths      r   r$   r$   B   sF   € Ø€IØ€Kà
�qŠ.Ø�a‰ˆ	Ø�qÑˆð �q‹.ð �<‰<˜ U°5ˆ<Ó9Ð9r   Úder_sigÚcurver   c                 óx   — |j                   }|dz   dz  }t        | «      \  }}t        ||«      t        ||«      z   S )Né   r=   )Úkey_sizer   r6   )rC   rD   Únum_bitsr/   ÚrÚss         r   Úder_to_raw_signaturerK   M   s@   € Ø�~‰~€HØ˜A‘ !Ñ#€Iä Ó(�D€A€qä˜1˜iÓ(¬?¸1¸iÓ+HÑHÐHr   Úraw_sigc                 óÄ   — |j                   }|dz   dz  }t        | «      d|z  k7  rt        d«      ‚t        | d | «      }t        | |d  «      }t	        t        ||«      «      S )NrF   r=   r1   zInvalid signature)rG   r   r#   r;   r   r   )rL   rD   rH   r/   rI   rJ   s         r   Úraw_to_der_signaturerN   V   sj   € Ø�~‰~€HØ˜A‘ !Ñ#€Iä
ˆ7ƒ|�q˜9‘}Ò$ÜÐ,Ó-Ð-ä˜ 
 Ð+Ó,€AÜ˜ 	 
Ð+Ó,€AäÔ% a¨Ó+Ó,Ð,r   >   ó   X509 CRLó
   PUBLIC KEYó   CERTIFICATEó   PRIVATE KEYó   DH PARAMETERSó   EC PRIVATE KEYó   RSA PUBLIC KEYó   DSA PRIVATE KEYó   RSA PRIVATE KEYó   SSH2 PUBLIC KEYó   CERTIFICATE REQUESTó   OPENSSH PRIVATE KEYó   TRUSTED CERTIFICATEó   ENCRYPTED PRIVATE KEYó   NEW CERTIFICATE REQUESTó   SSH2 ENCRYPTED PRIVATE KEYs   ----[- ]BEGIN (ó   |s,   )[- ]----?
.+??
----[- ]END \1[- ]----?
?Úkeyc                 ó>   — t        t        j                  | «      «      S ©N)ÚboolÚ_PEM_REÚsearch©r`   s    r   Úis_pem_formatrg   �   s   € Ü”—‘˜sÓ#Ó$Ð$r   )s   ssh-ed25519s   ssh-rsas   ssh-dsss   ecdsa-sha2-nistp256s   ecdsa-sha2-nistp384s   ecdsa-sha2-nistp521c                 ó,   — | j                  t        «      S rb   )Ú
startswithÚ_SSH_KEY_FORMATSrf   s    r   Ú
is_ssh_keyrk   �   s   € Ø�>‰>Ô*Ó+Ð+r   )!r   r3   ÚreÚtypingr   Ú,cryptography.hazmat.primitives.asymmetric.ecr   Ú/cryptography.hazmat.primitives.asymmetric.utilsr   r   ÚModuleNotFoundErrorr   r   r   r   r   r*   r&   r-   r6   r;   r$   rK   rN   Ú_PEMSÚcompileÚjoinÚDOTALLrd   rc   rg   rj   rk   © r   r   ú<module>rv      s“  ðÛ Û Û 	Ý ð	ÝJ÷ð3�u˜U C˜ZÑ(ð 3¨Uó 3ð1˜E %¨ *Ñ-ð 1°%ó 1ð>˜Eð > eó >ð	'˜3ð 	' 5ó 	'ð1˜U 5¨# :Ñ.ð 1°3ó 1ð
8˜ð 8¨ð 8°ó 8ð
-˜Eð - có -ð:˜ð : ó :ðI %ð I°ð IÀEó Ið
- %ð 
-°ð 
-ÀEó 
-ò	€ð& ˆ"�*‰*ØØ
‡i�i�Óñð!ñ!ð
 ‡I�Ió€ð%�uð % ó %ð
Ð ð,�Eð ,˜dô ,øðI ò 	Ùð	ús   ”C ÃCÃC