§
    tŠtjÖ  ã                   óò   — d dl Z d dlZ	 d dlmZmZ n# e$ r d dlmZmZ Y nw xY wd dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZmZ dej        fd	„Zdd„Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„ZdS )é    N)ÚIterableÚMapping)r   r   )Újwk)ÚKey)Ú
ALGORITHMS)ÚJWSErrorÚJWSSignatureError)Úbase64url_decodeÚbase64url_encodec                 óª   — |t           j        vrt          d|z  ¦  «        ‚t          ||¬¦  «        }t	          | ¦  «        }t          ||||¦  «        }|S )aw  Signs a claims set and returns a JWS string.

    Args:
        payload (str or dict): A string to sign
        key (str or dict): The key to use for signing the claim set. Can be
            individual JWK or JWK set.
        headers (dict, optional): A set of headers that will be added to
            the default headers.  Any headers that are added as additional
            headers will override the default headers.
        algorithm (str, optional): The algorithm to use for signing the
            the claims.  Defaults to HS256.

    Returns:
        str: The string representation of the header, claims, and signature.

    Raises:
        JWSError: If there is an error signing the token.

    Examples:

        >>> jws.sign({'a': 'b'}, 'secret', algorithm='HS256')
        'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhIjoiYiJ9.jiMyrsmD8AoHWeQgmxZ5yq8z0lXS67_QGs52AzC8Ru8'

    zAlgorithm %s not supported.)Úadditional_headers)r   Ú	SUPPORTEDr   Ú_encode_headerÚ_encode_payloadÚ_sign_header_and_claims)ÚpayloadÚkeyÚheadersÚ	algorithmÚencoded_headerÚencoded_payloadÚsigned_outputs          úF/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/jose/jws.pyÚsignr      s_   € ð4 �
Ô,Ð,Ð,ÝÐ4°yÑ@ÑAÔAÐAå# IÀ'ÐJÑJÔJ€NÝ% gÑ.Ô.€OÝ+¨N¸OÈYÐX[Ñ\Ô\€MàÐó    Tc                 óX   — t          | ¦  «        \  }}}}|rt          |||||¦  «         |S )a£  Verifies a JWS string's signature.

    Args:
        token (str): A signed JWS to be verified.
        key (str or dict): A key to attempt to verify the payload with. Can be
            individual JWK or JWK set.
        algorithms (str or list): Valid algorithms that should be used to verify the JWS.

    Returns:
        str: The str representation of the payload, assuming the signature is valid.

    Raises:
        JWSError: If there is an exception verifying a token.

    Examples:

        >>> token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhIjoiYiJ9.jiMyrsmD8AoHWeQgmxZ5yq8z0lXS67_QGs52AzC8Ru8'
        >>> jws.verify(token, 'secret', algorithms='HS256')

    )Ú_loadÚ_verify_signature)Útokenr   Ú
algorithmsÚverifyÚheaderr   Úsigning_inputÚ	signatures           r   r!   r!   4   s<   € õ, 16°e±´Ñ-€FˆG�] Iàð MÝ˜-¨°¸CÀÑLÔLÐLà€Nr   c                 ó.   — t          | ¦  «        \  }}}}|S )a!  Returns the decoded headers without verification of any kind.

    Args:
        token (str): A signed JWS to decode the headers from.

    Returns:
        dict: The dict representation of the token headers.

    Raises:
        JWSError: If there is an exception decoding the token.
    ©r   ©r   r"   Úclaimsr#   r$   s        r   Úget_unverified_headerr)   R   ó   € õ 05°U©|¬|Ñ,€FˆF�M 9Ø€Mr   c                 ó    — t          | ¦  «        S )a{  Returns the decoded headers without verification of any kind.

    This is simply a wrapper of get_unverified_header() for backwards
    compatibility.

    Args:
        token (str): A signed JWS to decode the headers from.

    Returns:
        dict: The dict representation of the token headers.

    Raises:
        JWSError: If there is an exception decoding the token.
    )r)   )r   s    r   Úget_unverified_headersr,   b   s   € õ ! Ñ'Ô'Ð'r   c                 ó.   — t          | ¦  «        \  }}}}|S )a  Returns the decoded claims without verification of any kind.

    Args:
        token (str): A signed JWS to decode the headers from.

    Returns:
        str: The str representation of the token claims.

    Raises:
        JWSError: If there is an exception decoding the token.
    r&   r'   s        r   Úget_unverified_claimsr.   t   r*   r   c                 ó¬   — d| dœ}|r|                      |¦  «         t          j        |dd¬¦  «                             d¦  «        }t	          |¦  «        S )NÚJWT)ÚtypÚalg©ú,ú:T)Ú
separatorsÚ	sort_keysúutf-8)ÚupdateÚjsonÚdumpsÚencoder   )r   r   r"   Újson_headers       r   r   r   „   si   € Ø 9Ð-Ð-€Fàð *Ø�ŠÐ(Ñ)Ô)Ð)å”*ØØØðñ ô ÷ ‚fˆW�o„oð	 õ ˜KÑ(Ô(Ð(r   c                 óÀ   — t          | t          ¦  «        r;	 t          j        | d¬¦  «                             d¦  «        } n# t
          $ r Y nw xY wt          | ¦  «        S )Nr3   )r6   r8   )Ú
isinstancer   r:   r;   r<   Ú
ValueErrorr   )r   s    r   r   r   “   sy   € Ý�'�7Ñ#Ô#ð ð	Ý”jØØ%ðñ ô ÷ Šf�W‰oŒoð ˆGøõ ð 	ð 	ð 	ØˆDð	øøøõ ˜GÑ$Ô$Ð$s   —)A Á
AÁAc                 ól  — d                      | |g¦  «        }	 t          |t          ¦  «        st          j        ||¦  «        }|                     |¦  «        }n!# t          $ r}t          |¦  «        ‚d }~ww xY wt          |¦  «        }d                      | ||g¦  «        }| 	                    d¦  «        S )Nó   .r8   )
Újoinr?   r   r   Ú	constructr   Ú	Exceptionr   r   Údecode)	r   Úencoded_claimsr   r   r#   r$   ÚeÚencoded_signatureÚencoded_strings	            r   r   r       s»   € Ø—I’I˜~¨~Ð>Ñ?Ô?€MðÝ˜#�sÑ#Ô#ð 	0Ý”-  YÑ/Ô/ˆCØ—H’H˜]Ñ+Ô+ˆ	ˆ	øÝð ð ð Ý�q‰kŒkÐøøøøðøøøõ )¨Ñ3Ô3Ðà—Y’Y °Ð@QÐRÑSÔS€Nà× Ò  Ñ)Ô)Ð)s   ™?A Á
A7Á#A2Á2A7c                 ó4  — t          | t          ¦  «        r|                      d¦  «        } 	 |                      dd¦  «        \  }}|                     dd¦  «        \  }}t          |¦  «        }nA# t          $ r t          d¦  «        ‚t          t          j
        f$ r t          d¦  «        ‚w xY w	 t          j        |                     d¦  «        ¦  «        }n$# t          $ r}t          d|z  ¦  «        ‚d }~ww xY wt          |t          ¦  «        st          d¦  «        ‚	 t          |¦  «        }n)# t          t          j
        f$ r t          d¦  «        ‚w xY w	 t          |¦  «        }	n)# t          t          j
        f$ r t          d	¦  «        ‚w xY w||||	fS )
Nr8   rB   é   zNot enough segmentszInvalid header paddingzInvalid header string: %sz,Invalid header string: must be a json objectzInvalid payload paddingzInvalid crypto padding)r?   Ústrr<   ÚrsplitÚsplitr
   r@   r   Ú	TypeErrorÚbinasciiÚErrorr:   ÚloadsrF   r   )
Újwtr#   Úcrypto_segmentÚheader_segmentÚclaims_segmentÚheader_datar"   rH   r   r$   s
             r   r   r   °   sÓ  € Ý�#•sÑÔð "Ø�jŠj˜Ñ!Ô!ˆð1Ø(+¯
ª
°4¸Ñ(;Ô(;Ñ%ˆ�~Ø)6×)<Ò)<¸TÀ1Ñ)EÔ)EÑ&ˆ˜Ý& ~Ñ6Ô6ˆˆøÝð .ð .ð .ÝÐ,Ñ-Ô-Ð-Ý•x”~Ð&ð 1ð 1ð 1ÝÐ/Ñ0Ô0Ð0ð1øøøð8Ý”˜K×.Ò.¨wÑ7Ô7Ñ8Ô8ˆˆøÝð 8ð 8ð 8ÝÐ2°QÑ6Ñ7Ô7Ð7øøøøð8øøøõ �f�gÑ&Ô&ð GÝÐEÑFÔFÐFð2Ý" >Ñ2Ô2ˆˆøÝ•x”~Ð&ð 2ð 2ð 2ÝÐ0Ñ1Ô1Ð1ð2øøøð1Ý$ ^Ñ4Ô4ˆ	ˆ	øÝ•x”~Ð&ð 1ð 1ð 1ÝÐ/Ñ0Ô0Ð0ð1øøøð �G˜]¨IÐ6Ð6s<   ¬AA. Á.>B,Â0'C Ã
C9Ã"C4Ã4C9Ä!D1 Ä1&EÅE+ Å+&Fc                 ó¸   — | D ]V}t          |t          ¦  «        st          j        ||¦  «        }	 |                     ||¦  «        r dS ŒG# t
          $ r Y ŒSw xY wdS )NTF)r?   r   r   rD   r!   rE   )Úkeysr#   r$   r2   r   s        r   Ú_sig_matches_keysr[   Ñ   s€   € Øð ð ˆÝ˜#�sÑ#Ô#ð 	*Ý”-  SÑ)Ô)ˆCð	Ø�zŠz˜-¨Ñ3Ô3ð Ø�t�tðøåð 	ð 	ð 	ØˆDð	øøøàˆ5s   °A
Á

AÁAc                 ó¦  — t          | t          ¦  «        r| fS 	 t          j        | t          t          ¬¦  «        } n# t
          $ r Y nw xY wt          | t          ¦  «        r.d| v r| d         S d| v r| fS |                      ¦   «         }|r|S | fS t          | t          ¦  «        r,t          | t          ¦  «        st          | t          ¦  «        s| S | fS )N)Ú	parse_intÚparse_floatrZ   Úkty)
r?   r   r:   rS   rM   rE   r   Úvaluesr   Úbytes)r   r`   s     r   Ú	_get_keysrb   Ý   s÷   € Ý�#•sÑÔð ØˆvˆðÝŒj˜­½Ð=Ñ=Ô=ˆˆøÝð ð ð Øˆðøøøõ �#•wÑÔð Ø�Sˆ=ˆ=à�v”;ÐØ�cˆ\ˆ\à�6ˆMð —Z’Z‘\”\ˆFØð Ø�Ø�6ˆMõ 
�C�Ñ	"Ô	"ð ­J°s½CÑ,@Ô,@ð ÅJÈsÕTYÑDZÔDZð Øˆ
ð ˆvˆs   š!< ¼
A	ÁA	Ú c                 óL  — |                      d¦  «        }|st          d¦  «        ‚|�||vrt          d¦  «        ‚t          |¦  «        }	 t          || ||¦  «        st	          ¦   «         ‚d S # t          $ r t          d¦  «        ‚t          $ r t          d|z  ¦  «        ‚w xY w)Nr2   z-No algorithm was specified in the JWS header.z&The specified alg value is not allowedzSignature verification failed.z$Invalid or unsupported algorithm: %s)Úgetr   rb   r[   r	   )r#   r"   r$   r   r    r2   rZ   s          r   r   r   ý   sÛ   € Ø
�*Š*�UÑ
Ô
€CØð HÝÐFÑGÔGÐGàÐ #¨ZÐ"7Ð"7ÝÐ?Ñ@Ô@Ð@å�S‰>Œ>€DðEÝ   }°iÀÑEÔEð 	&Ý#Ñ%Ô%Ð%ð	&ð 	&øåð 9ð 9ð 9ÝÐ7Ñ8Ô8Ð8Ýð Eð Eð EÝÐ=ÀÑCÑDÔDÐDðEøøøs   Á A. Á.5B#)T)N)rc   N) rQ   r:   Úcollections.abcr   r   ÚImportErrorÚcollectionsÚjoser   Újose.backends.baser   Újose.constantsr   Újose.exceptionsr   r	   Ú
jose.utilsr
   r   ÚHS256r   r!   r)   r,   r.   r   r   r   r   r[   rb   r   © r   r   ú<module>rp      s½  ðØ €€€Ø €€€ð.Ø1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øØð .ð .ð .Ø-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ð.øøøð Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø %Ð %Ð %Ð %Ð %Ð %Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð  $¨zÔ/?ð !ð !ð !ð !ðHð ð ð ð<ð ð ð (ð (ð (ð$ð ð ð )ð )ð )ð )ð
%ð 
%ð 
%ð*ð *ð *ð 7ð 7ð 7ðB	ð 	ð 	ðð ð ð@Eð Eð Eð Eð Eð Es   Š “#¢#