§
    (ê[fõ  ã                   óä   — d dl Z d dlmZ  G d„ de¬¦  «        Z G d„ dee¬¦  «        Z G d„ d	ee¬¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z	 G d„ de¦  «        Z
dS )é    N)ÚABCMetac                   ó2   — e Zd ZdZdZdZdZdZdZd„ Z	d„ Z
dS )ÚJWEAlgorithmBasez+Base interface for all JWE algorithms.
    NÚJWEÚalgc                 ó   — t           ‚©N©ÚNotImplementedError)ÚselfÚraw_datas     úO/var/www/piapp/venv/lib/python3.11/site-packages/authlib/jose/rfc7516/models.pyÚprepare_keyzJWEAlgorithmBase.prepare_key   ó   € Ý!Ð!ó    c                 ó   — t           ‚r	   r
   )r   Úenc_algÚkeys      r   Úgenerate_presetz JWEAlgorithmBase.generate_preset   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚEXTRA_HEADERSÚnameÚdescriptionÚalgorithm_typeÚalgorithm_locationr   r   © r   r   r   r      sV   € € € € € ðð à€Mà€DØ€KØ€NØÐð"ð "ð "ð"ð "ð "ð "ð "r   r   )Ú	metaclassc                   ó    — e Zd ZdZdd„Zd„ ZdS )ÚJWEAlgorithmzžInterface for JWE algorithm conforming to RFC7518.
    JWA specification (RFC7518) SHOULD implement the algorithms for JWE with this base implementation.
    Nc                 ó   — t           ‚r	   r
   )r   r   Úheadersr   Úpresets        r   ÚwrapzJWEAlgorithm.wrap   r   r   c                 ó   — t           ‚r	   r
   )r   r   Úekr$   r   s        r   ÚunwrapzJWEAlgorithm.unwrap   r   r   r	   )r   r   r   r   r&   r)   r   r   r   r"   r"      sA   € € € € € ðð ð"ð "ð "ð "ð"ð "ð "ð "ð "r   r"   c                   ó0   — e Zd ZdZdd„Zd„ Zdd„Zdd„ZdS )Ú$JWEAlgorithmWithTagAwareKeyAgreementz™Interface for JWE algorithm with tag-aware key agreement (in key agreement with key wrapping mode).
    ECDH-1PU is an example of such an algorithm.
    Nc                 ó   — t           ‚r	   r
   )r   r   r   Ú
sender_keyr%   s        r   Ú!generate_keys_and_prepare_headerszFJWEAlgorithmWithTagAwareKeyAgreement.generate_keys_and_prepare_headers%   r   r   c                 ó   — t           ‚r	   r
   )r   r   r$   r   r-   ÚepkÚcekÚtags           r   Úagree_upon_key_and_wrap_cekz@JWEAlgorithmWithTagAwareKeyAgreement.agree_upon_key_and_wrap_cek(   r   r   c                 ó   — t           ‚r	   r
   )r   r   r$   r   r-   r%   s         r   r&   z)JWEAlgorithmWithTagAwareKeyAgreement.wrap+   r   r   c                 ó   — t           ‚r	   r
   )r   r   r(   r$   r   r-   r2   s          r   r)   z+JWEAlgorithmWithTagAwareKeyAgreement.unwrap.   r   r   r	   )r   r   r   r   r.   r3   r&   r)   r   r   r   r+   r+   !   si   € € € € € ðð ð"ð "ð "ð "ð"ð "ð "ð"ð "ð "ð "ð"ð "ð "ð "ð "ð "r   r+   c                   óD   — e Zd ZdZdZdZdZdZdZd„ Z	d„ Z
d„ Zd„ Zd„ ZdS )	ÚJWEEncAlgorithmNr   Úencc                 ó:   — t          j        | j        dz  ¦  «        S ©Né   )ÚosÚurandomÚCEK_SIZE©r   s    r   Úgenerate_cekzJWEEncAlgorithm.generate_cek;   s   € ÝŒz˜$œ-¨1Ñ,Ñ-Ô-Ð-r   c                 ó:   — t          j        | j        dz  ¦  «        S r:   )r<   r=   ÚIV_SIZEr?   s    r   Úgenerate_ivzJWEEncAlgorithm.generate_iv>   s   € ÝŒz˜$œ,¨!Ñ+Ñ,Ô,Ð,r   c                 óZ   — t          |¦  «        dz  | j        k    rt          d¦  «        ‚d S )Nr;   zInvalid "iv" size)ÚlenrB   Ú
ValueError)r   Úivs     r   Úcheck_ivzJWEEncAlgorithm.check_ivA   s0   € Ýˆr‰7Œ7�Q‰;˜$œ,Ò&Ð&ÝÐ0Ñ1Ô1Ð1ð 'Ð&r   c                 ó   — t           ‚)a  Encrypt the given "msg" text.

        :param msg: text to be encrypt in bytes
        :param aad: additional authenticated data in bytes
        :param iv: initialization vector in bytes
        :param key: encrypted key in bytes
        :return: (ciphertext, tag)
        r
   )r   ÚmsgÚaadrG   r   s        r   ÚencryptzJWEEncAlgorithm.encryptE   s
   € õ "Ð!r   c                 ó   — t           ‚)a8  Decrypt the given cipher text.

        :param ciphertext: ciphertext in bytes
        :param aad: additional authenticated data in bytes
        :param iv: initialization vector in bytes
        :param tag: authentication tag in bytes
        :param key: encrypted key in bytes
        :return: message
        r
   )r   Ú
ciphertextrK   rG   r2   r   s         r   ÚdecryptzJWEEncAlgorithm.decryptP   s
   € õ "Ð!r   )r   r   r   r   r   r   r   rB   r>   r@   rC   rH   rL   rO   r   r   r   r7   r7   2   s~   € € € € € Ø€DØ€KØ€NØÐà€GØ€Hð.ð .ð .ð-ð -ð -ð2ð 2ð 2ð	"ð 	"ð 	"ð
"ð 
"ð 
"ð 
"ð 
"r   r7   c                   ó*   — e Zd ZdZdZdZdZd„ Zd„ ZdS )ÚJWEZipAlgorithmNr   Úzipc                 ó   — t           ‚r	   r
   ©r   Úss     r   ÚcompresszJWEZipAlgorithm.compressc   r   r   c                 ó   — t           ‚r	   r
   rT   s     r   Ú
decompresszJWEZipAlgorithm.decompressf   r   r   )	r   r   r   r   r   r   r   rV   rX   r   r   r   rQ   rQ   ]   sG   € € € € € Ø€DØ€KØ€NØÐð"ð "ð "ð"ð "ð "ð "ð "r   rQ   c                   ó>   ‡ — e Zd ZdZˆ fd„Zd„ Zed„ ¦   «         Zˆ xZS )ÚJWESharedHeaderziShared header object for JWE.

    Combines protected header and shared unprotected header together.
    c                 óÖ   •— i }|r|                      |¦  «         |r|                      |¦  «         t          ¦   «                              |¦  «         |r|ni | _        |r|ni | _        d S r	   )ÚupdateÚsuperÚ__init__Ú	protectedÚunprotected)r   r_   r`   ÚobjÚ	__class__s       €r   r^   zJWESharedHeader.__init__o   s{   ø€ ØˆØð 	"Ø�JŠJ�yÑ!Ô!Ð!Øð 	$Ø�JŠJ�{Ñ#Ô#Ð#Ý‰Œ×Ò˜ÑÔÐØ&/Ð7˜˜°RˆŒØ*5Ð=˜;˜;¸2ˆÔÐÐr   c                 ód   — |                       |¦  «         | j                              |¦  «         d S r	   )r\   r_   )r   Úadditions     r   Úupdate_protectedz JWESharedHeader.update_protectedy   s0   € Ø�Š�HÑÔÐØŒ×Ò˜hÑ'Ô'Ð'Ð'Ð'r   c                 óŠ   — t          || ¦  «        r|S  | |                     d¦  «        |                     d¦  «        ¦  «        S )Nr_   r`   )Ú
isinstanceÚget)Úclsra   s     r   Ú	from_dictzJWESharedHeader.from_dict}   sC   € å�c˜3ÑÔð 	ØˆJØˆs�3—7’7˜;Ñ'Ô'¨¯ª°Ñ)?Ô)?Ñ@Ô@Ð@r   )	r   r   r   r   r^   re   Úclassmethodrj   Ú__classcell__©rb   s   @r   rZ   rZ   j   ss   ø€ € € € € ðð ð>ð >ð >ð >ð >ð(ð (ð (ð ðAð Añ „[ðAð Að Að Að Ar   rZ   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )Ú	JWEHeaderz‹Header object for JWE.

    Combines protected header, shared unprotected header and specific recipient's unprotected header together.
    c                 ó  •— i }|r|                      |¦  «         |r|                      |¦  «         |r|                      |¦  «         t          ¦   «                              |¦  «         |r|ni | _        |r|ni | _        |r|ni | _        d S r	   )r\   r]   r^   r_   r`   Úheader)r   r_   r`   rq   ra   rb   s        €r   r^   zJWEHeader.__init__‰   s£   ø€ ØˆØð 	"Ø�JŠJ�yÑ!Ô!Ð!Øð 	$Ø�JŠJ�{Ñ#Ô#Ð#Øð 	Ø�JŠJ�vÑÔÐÝ‰Œ×Ò˜ÑÔÐØ&/Ð7˜˜°RˆŒØ*5Ð=˜;˜;¸2ˆÔØ &Ð.�f�f¨BˆŒˆˆr   )r   r   r   r   r^   rl   rm   s   @r   ro   ro   „   sB   ø€ € € € € ðð ð/ð /ð /ð /ð /ð /ð /ð /ð /r   ro   )r<   Úabcr   r   r"   r+   r7   rQ   ÚdictrZ   ro   r   r   r   ú<module>rt      sj  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð ð"ð "ð "ð "ð " ð "ñ "ô "ð "ð""ð "ð "ð "ð "Ð#¨wð "ñ "ô "ð "ð"ð "ð "ð "ð "Ð+;Àwð "ñ "ô "ð "ð"("ð ("ð ("ð ("ð ("ñ ("ô ("ð ("ðV
"ð 
"ð 
"ð 
"ð 
"ñ 
"ô 
"ð 
"ðAð Að Að Að A�dñ Aô Að Að4/ð /ð /ð /ð /�ñ /ô /ð /ð /ð /r   