Ë
    ”Âi4  ã                   ó¸   — 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
y)é    N)ÚABCMetac                   ó4   — e Zd ZdZdZdZdZdZdZdZ	d„ Z
d„ Zy)ÚJWEAlgorithmBasez&Base interface for all JWE algorithms.NFÚJWEÚalgc                 ó   — t         ‚©N©ÚNotImplementedError)ÚselfÚraw_datas     úS/var/www/timesheet/venv/lib/python3.12/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Ú
deprecatedÚalgorithm_typeÚalgorithm_locationr   r   © r   r   r   r      s.   „ Ù0à€Mà€DØ€KØ€JØ€NØÐò"ó"r   r   )Ú	metaclassc                   ó   — e Zd ZdZdd„Zd„ Zy)Ú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#      s   „ ñó
"ó"r   r#   c                   ó.   — e Zd ZdZdd„Zd„ Zdd„Zdd„Zy)Ú$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-   s
   € ô "Ð!r   c                 ó   — t         ‚r	   r
   )r   r   r%   r   r.   r&   s         r   r'   z)JWEAlgorithmWithTagAwareKeyAgreement.wrap2   r   r   c                 ó   — t         ‚r	   r
   )r   r   r)   r%   r   r.   r3   s          r   r*   z+JWEAlgorithmWithTagAwareKeyAgreement.unwrap5   r   r   r	   )r   r   r   r   r/   r4   r'   r*   r    r   r   r,   r,   $   s   „ ñó
"ò"ó
"ô"r   r,   c                   óB   — 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y)	ÚJWEEncAlgorithmNr   Úencc                 óF   — t        j                  | j                  dz  «      S ©Né   )ÚosÚurandomÚCEK_SIZE©r   s    r   Úgenerate_cekzJWEEncAlgorithm.generate_cekB   s   € Ü�z‰z˜$Ÿ-™-¨1Ñ,Ó-Ð-r   c                 óF   — t        j                  | j                  dz  «      S r;   )r=   r>   ÚIV_SIZEr@   s    r   Úgenerate_ivzJWEEncAlgorithm.generate_ivE   s   € Ü�z‰z˜$Ÿ,™,¨!Ñ+Ó,Ð,r   c                 óP   — t        |«      dz  | j                  k7  rt        d«      ‚y )Nr<   zInvalid "iv" size)ÚlenrC   Ú
ValueError)r   Úivs     r   Úcheck_ivzJWEEncAlgorithm.check_ivH   s'   € Üˆr‹7�Q‰;˜$Ÿ,™,Ò&ÜÐ0Ó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ÚaadrH   r   s        r   ÚencryptzJWEEncAlgorithm.encryptL   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   Ú
ciphertextrL   rH   r3   r   s         r   ÚdecryptzJWEEncAlgorithm.decryptW   s
   € ô "Ð!r   )r   r   r   r   r   r   r   rC   r?   rA   rD   rI   rM   rP   r    r   r   r8   r8   9   s:   „ Ø€DØ€KØ€NØÐà€GØ€Hò.ò-ò2ò	"ó
"r   r8   c                   ó(   — e Zd ZdZdZdZdZd„ Zd„ Zy)ÚJWEZipAlgorithmNr   Úzipc                 ó   — t         ‚r	   r
   ©r   Úss     r   ÚcompresszJWEZipAlgorithm.compressj   r   r   c                 ó   — t         ‚r	   r
   rU   s     r   Ú
decompresszJWEZipAlgorithm.decompressm   r   r   )	r   r   r   r   r   r   r   rW   rY   r    r   r   rR   rR   d   s!   „ Ø€DØ€KØ€NØÐò"ó"r   rR   c                   ó8   ‡ — 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|j                  |«       |r|j                  |«       t        ‰| �	  |«       |r|ni | _        |r|| _        y i | _        y r	   )ÚupdateÚsuperÚ__init__Ú	protectedÚunprotected)r   r`   ra   ÚobjÚ	__class__s       €r   r_   zJWESharedHeader.__init__w   sO   ø€ ØˆÙØ�J‰J�{Ô#ÙØ�J‰J�yÔ!Ü‰Ñ˜ÔÙ&/™°RˆŒÙ*5˜;ˆÕ¸2ˆÕr   c                 ó\   — | j                  |«       | j                  j                  |«       y r	   )r]   r`   )r   Úadditions     r   Úupdate_protectedz JWESharedHeader.update_protected�   s    € Ø�‰�HÔØ�‰×Ñ˜hÕ'r   c                 ól   — t        || «      r|S  | |j                  d«      |j                  d«      «      S )Nr`   ra   )Ú
isinstanceÚget)Úclsrb   s     r   Ú	from_dictzJWESharedHeader.from_dict…   s0   € ä�c˜3ÔØˆJÙ�3—7‘7˜;Ó'¨¯©°Ó)?Ó@Ð@r   )	r   r   r   r   r_   rf   Úclassmethodrk   Ú__classcell__©rc   s   @r   r[   r[   q   s(   ø„ ñô
>ò(ð ñAó ôAr   r[   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|j                  |«       |r|j                  |«       |r|j                  |«       t        ‰| �	  |«       |r|ni | _        |r|ni | _        |r|| _        y i | _        y r	   )r]   r^   r_   r`   ra   Úheader)r   r`   ra   rr   rb   rc   s        €r   r_   zJWEHeader.__init__“   sh   ø€ ØˆÙØ�J‰J�{Ô#ÙØ�J‰J�vÔÙØ�J‰J�yÔ!Ü‰Ñ˜ÔÙ&/™°RˆŒÙ*5™;¸2ˆÔÙ &�fˆ�¨Bˆ�r   )r   r   r   r   r_   rm   rn   s   @r   rp   rp   Œ   s   ø„ ñ÷/ð /r   rp   )r=   Úabcr   r   r#   r,   r8   rR   Údictr[   rp   r    r   r   ú<module>ru      sd   ðÛ 	Ý ô" õ "ô$
"Ð#¨wõ 
"ô"Ð+;Àwõ "÷*("ñ ("÷V
"ñ 
"ôA�dô Aô6/�õ /r   