Ë
    jjØ  ã                   óB  — d dl Z d dlZd dlZ	 d dlmZ dd„Zdd„Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zh d£Z ej&                  ddj)                  d„ eD «       «      z   dz   «      Zdedefd„ZdZ ej&                  d«      Zg d¢Zdedefd„Zy# e$ r d dlm	Z dd„ZY Œ…w xY w)é    N)Úint_to_bytesc                 ó"   — t        | |xs d «      S ©N)Ú_long_to_bytes)ÚnÚ	blocksizes     úS/var/www/html/sergio/sergio-backend/venv/lib/python3.12/site-packages/jose/utils.pyÚlong_to_bytesr
   
   s   € Ü˜a Ò!2¨dÓ3Ð3ó    )Úint_to_stringc                 ór   — t        | «      }|dk(  r|S t        |«      |k  sJ ‚|t        |«      z
  }d|z  |z   S )Nr   ó    )r   Úlen)r   r   ÚretÚpaddings       r	   r
   r
      sH   € Ü˜QÓˆØ˜Š>ØˆJä�s“8˜yÒ(Ð(Ð(Ø¤# c£(Ñ*ˆGØ˜WÑ$ sÑ*Ð*r   c                 ó^   — t        j                  t        | |«      «      j                  d«      S )Nó   =)Úbase64Úurlsafe_b64encoder
   Ústrip)ÚdataÚsizes     r	   Úlong_to_base64r      s%   € Ü×#Ñ#¤M°$¸Ó$=Ó>×DÑDÀTÓJÐJr   c           	      ód   — t        dj                  | D �cg c]  }d|z  ‘Œ	 c}«      d«      S c c}w )NÚ z%02xé   )ÚintÚjoin)ÚarrÚbytes     r	   Úint_arr_to_longr!      s.   € Üˆr�w‰w±#Ó6±#¨$˜ ›°#Ñ6Ó7¸Ó<Ð<ùÒ6s   •-c                 óÜ   — t        | t        «      r| j                  d«      } t        j                  t        | «      dz   «      }t        t        j                  dt        |«      z  |«      «      S )NÚasciis   ==z%sB)
Ú
isinstanceÚstrÚencoder   Úurlsafe_b64decodeÚbytesr!   ÚstructÚunpackr   )r   Ú_ds     r	   Úbase64_to_longr,   "   sS   € Ü�$œÔØ�{‰{˜7Ó#ˆô 
×	!Ñ	!¤%¨£+°Ñ"5Ó	6€BÜœ6Ÿ=™=¨´°R³©¸"Ó=Ó>Ð>r   c                 ó¼   —  || j                  d«      «      j                  «       }t        t        |«      dz  «      }|d| }t	        |«      }|j                  d«      S )añ  Helper method for calculating an access token
    hash, as described in http://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken

    Its value is the base64url encoding of the left-most half of the hash of the octets
    of the ASCII representation of the access_token value, where the hash algorithm
    used is the hash algorithm used in the alg Header Parameter of the ID Token's JOSE
    Header. For instance, if the alg is RS256, hash the access_token value with SHA-256,
    then take the left-most 128 bits and base64url encode them. The at_hash value is a
    case sensitive string.

    Args:
        access_token (str): An access token string.
        hash_alg (callable): A callable returning a hash object, e.g. hashlib.sha256

    úutf-8é   N)r&   Údigestr   r   Úbase64url_encodeÚdecode)Úaccess_tokenÚhash_algÚhash_digestÚcut_atÚ	truncatedÚat_hashs         r	   Úcalculate_at_hashr9   +   s[   € ñ  ˜<×.Ñ.¨wÓ7Ó8×?Ñ?ÓA€KÜ”�[Ó! AÑ%Ó&€FØ˜G˜VÐ$€IÜ˜yÓ)€GØ�>‰>˜'Ó"Ð"r   c                 óh   — t        | «      dz  }|dkD  r| dd|z
  z  z  } t        j                  | «      S )z�Helper method to base64url_decode a string.

    Args:
        input (bytes): A base64url_encoded string (bytes) to decode.

    é   r   r   )r   r   r'   )ÚinputÚrems     r	   Úbase64url_decoder>   B   s<   € ô ˆe‹*�q‰.€Cà
ˆQ‚wØ�˜˜S™Ñ!Ñ!ˆä×#Ñ# EÓ*Ð*r   c                 óL   — t        j                  | «      j                  dd«      S )z�Helper method to base64url_encode a string.

    Args:
        input (bytes): A base64url_encoded string (bytes) to encode.

    r   r   )r   r   Úreplace)r<   s    r	   r1   r1   Q   s"   € ô ×#Ñ# EÓ*×2Ñ2°4¸Ó=Ð=r   c                 óF   — | j                   dz  dz  dz  | j                  z   S )zšHelper method to determine the total number of seconds
    from a timedelta.

    Args:
        delta (timedelta): A timedelta to convert to seconds.
    é   é<   )ÚdaysÚseconds)Údeltas    r	   Útimedelta_total_secondsrG   [   s%   € ð �:‰:˜‰?˜RÑ "Ñ$ u§}¡}Ñ4Ð4r   c                 óš   — t        | t        «      r| S t        | t        «      r| j                  dd«      S t	        dt        | «      › d�«      ‚)zCoerce **s** to bytes.r.   Ústrictznot expecting type 'Ú')r$   r(   r%   r&   Ú	TypeErrorÚtype)Úss    r	   Úensure_binaryrN   e   sG   € ô �!”UÔØˆÜ�!”SÔØ�x‰x˜ Ó*Ð*Ü
Ð*¬4°«7¨)°1Ð5Ó
6Ð6r   >   ó   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 (ó   |c              #   óF   K  — | ]  }t        j                  |«      –— Œ y ­wr   )ÚreÚescape)Ú.0Úpems     r	   Ú	<genexpr>re   †   s   è ø€ Ð"C¹U°c¤2§9¡9¨S§>¹Uùs   ‚!s	   )[- ]----ÚkeyÚreturnc                 ó>   — t        t        j                  | «      «      S r   )ÚboolÚ_PEM_REÚsearch)rf   s    r	   Úis_pem_formatrl   Š   s   € Ü”—‘˜sÓ#Ó$Ð$r   s   -cert-v01@openssh.coms   \A(\S+)[ \t]+(\S+))s   ssh-ed25519s   ssh-rsas   ssh-dsss   ecdsa-sha2-nistp256s   ecdsa-sha2-nistp384s   ecdsa-sha2-nistp521c                 ó¾   ‡ — t        ˆ fd„t        D «       «      ryt        j                  ‰ «      }|r,|j	                  d«      }t
        |t        t
        «       d  k(  ryy)Nc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   © )rc   Ústring_valuerf   s     €r	   re   zis_ssh_key.<locals>.<genexpr>ž   s   øè ø€ Ð
DÑ3C <ˆ<˜3ÔÑ3Cùs   ƒTé   F)ÚanyÚ_SSH_KEY_FORMATSÚ_SSH_PUBKEY_RCÚmatchÚgroupÚ_CERT_SUFFIXr   )rf   Ússh_pubkey_matchÚkey_types   `  r	   Ú
is_ssh_keyrz   �   sW   ø€ Ü
Ó
DÕ3CÓ
DÔDØÜ%×+Ñ+¨CÓ0ÐÙØ#×)Ñ)¨!Ó,ˆÜ˜8¤S¬Ó%6Ð$6Ð$8Ð9Ò9ØØr   )r   )r   ra   r)   Úcryptography.utilsr   r   r
   ÚImportErrorÚecdsa.ecdsar   r   r!   r,   r9   r>   r1   rG   rN   Ú_PEMSÚcompiler   rj   r(   ri   rl   rw   rt   rs   rz   ro   r   r	   Ú<module>r€      sÙ   ðÛ Û 	Û ð+ÝAó4ó Kò=ò?ò#ò.+ò>ò5ò7ò	€ð$ ˆ"�*‰*Ø˜Ÿ™Ñ"C¹UÓ"CÓCÑCÀlÑRó€ð
%�uð % ó %ð (€Ø�—‘Ð2Ó3€òÐ ð�Eð ˜dô øða ò 
+Ý;õ+ð
+ús   Ž
B ÂBÂB