§
    pïg;   ã                   óF  — d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z	 ej
        rd dlmZ  G d„ de j        ¬¦  «        Z G d	„ d
ee j        ¬¦  «        Z G d„ dee j        ¬¦  «        Z G d„ dee j        ¬¦  «        Z ej        dej        e	j                 d¬¦  «        Z G d„ dej        e         ¦  «        Zeej        e	j        e	j        de	j        e	j        f                  Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Z G d„ dee¦  «        Z dS )é    N)ÚAlreadyFinalizedÚAlreadyUpdatedÚNotYetFinalized)ÚCipherAlgorithm)Úmodes)Ú_CipherContextc                   óŒ   — e Zd Zej        dedefd„¦   «         Zej        dededefd„¦   «         Zej        defd„¦   «         Z	dS )ÚCipherContextÚdataÚreturnc                 ó   — dS )zk
        Processes the provided bytes through the cipher and returns the results
        as bytes.
        N© ©Úselfr   s     úM/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/ciphers/base.pyÚupdatezCipherContext.update   ó   € € € ó    Úbufc                 ó   — dS )z“
        Processes the provided bytes and writes the resulting data into the
        provided buffer. Returns the number of bytes written.
        Nr   ©r   r   r   s      r   Úupdate_intozCipherContext.update_into    r   r   c                 ó   — dS )zM
        Returns the results of processing the final block as bytes.
        Nr   ©r   s    r   ÚfinalizezCipherContext.finalize'   r   r   N)
Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodÚbytesr   Úintr   r   r   r   r   r
   r
      s¨   € € € € € ØÔð˜5ð  Uð ð ð ñ Ôðð 	Ôð ð ¨Eð °cð ð ð ñ Ôðð 	Ôð˜%ð ð ð ñ Ôðð ð r   r
   )Ú	metaclassc                   ó8   — e Zd Zej        deddfd„¦   «         ZdS )ÚAEADCipherContextr   r   Nc                 ó   — dS )z3
        Authenticates the provided bytes.
        Nr   r   s     r   Úauthenticate_additional_dataz.AEADCipherContext.authenticate_additional_data/   r   r   )r   r   r   r   r    r!   r'   r   r   r   r%   r%   .   sD   € € € € € ØÔð°ð ¸4ð ð ð ñ Ôðð ð r   r%   c                   ó8   — e Zd Zej        dedefd„¦   «         ZdS )ÚAEADDecryptionContextÚtagr   c                 ó   — dS )zŠ
        Returns the results of processing the final block as bytes and allows
        delayed passing of the authentication tag.
        Nr   )r   r*   s     r   Úfinalize_with_tagz'AEADDecryptionContext.finalize_with_tag7   r   r   N)r   r   r   r   r    r!   r,   r   r   r   r)   r)   6   sD   € € € € € ØÔð Uð ¨uð ð ð ñ Ôðð ð r   r)   c                   ó4   — e Zd Zej        defd„¦   «         ZdS )ÚAEADEncryptionContextr   c                 ó   — dS )zb
        Returns tag bytes. This is only available after encryption is
        finalized.
        Nr   r   s    r   r*   zAEADEncryptionContext.tag@   r   r   N)r   r   r   r   Úabstractpropertyr!   r*   r   r   r   r.   r.   ?   s=   € € € € € ØÔð�Uð ð ð ñ Ôðð ð r   r.   ÚModeT)ÚboundÚ	covariantc            	       ó  — e Zd Z	 ddededej        fd„Zej        ddde	fd	„¦   «         Z
ej        dd
defd„¦   «         Z
d„ Z
ej        dddefd„¦   «         Zej        dd
defd„¦   «         Zd„ Zdddedej        e	eef         fd„ZdS )ÚCipherNÚ	algorithmÚmodeÚbackendc                 óÐ   — t          |t          ¦  «        st          d¦  «        ‚|�1t          |t          j        ¦  «        sJ ‚|                     |¦  «         || _        || _        d S )Nz&Expected interface of CipherAlgorithm.)Ú
isinstancer   Ú	TypeErrorr   r1   Úvalidate_for_algorithmr6   r7   )r   r6   r7   r8   s       r   Ú__init__zCipher.__init__N   sl   € õ ˜)¥_Ñ5Ô5ð 	FÝÐDÑEÔEÐEàÐõ ˜d¥E¤JÑ/Ô/Ð/Ð/Ð/Ø×'Ò'¨	Ñ2Ô2Ð2à"ˆŒØˆŒ	ˆ	ˆ	r   r   z'Cipher[modes.ModeWithAuthenticationTag]r   c                 ó   — d S ©Nr   r   s    r   Ú	encryptorzCipher.encryptora   ó	   € ð 	ˆr   Ú_CIPHER_TYPEc                 ó   — d S r?   r   r   s    r   r@   zCipher.encryptorg   rA   r   c                 óð   — t          | j        t          j        ¦  «        r| j        j        �t          d¦  «        ‚ddlm} |                     | j	        | j        ¦  «        }|  
                    |d¬¦  «        S )Nz0Authentication tag must be None when encrypting.r   ©r8   T©Úencrypt)r:   r7   r   ÚModeWithAuthenticationTagr*   Ú
ValueErrorÚ,cryptography.hazmat.backends.openssl.backendr8   Úcreate_symmetric_encryption_ctxr6   Ú	_wrap_ctx©r   r8   Úctxs      r   r@   zCipher.encryptorm   sƒ   € Ý�d”i¥Ô!@ÑAÔAð 	ØŒyŒ}Ð(Ý ØFñô ð ð 	IÐHÐHÐHÐHÐHà×5Ò5ØŒN˜DœIñ
ô 
ˆð �~Š~˜c¨4ˆ~Ñ0Ô0Ð0r   c                 ó   — d S r?   r   r   s    r   Ú	decryptorzCipher.decryptorz   rA   r   c                 ó   — d S r?   r   r   s    r   rP   zCipher.decryptor€   rA   r   c                 ó|   — ddl m} |                     | j        | j        ¦  «        }|                      |d¬¦  «        S )Nr   rE   FrF   )rJ   r8   Úcreate_symmetric_decryption_ctxr6   r7   rL   rM   s      r   rP   zCipher.decryptor†   sJ   € ØHÐHÐHÐHÐHÐHà×5Ò5ØŒN˜DœIñ
ô 
ˆð �~Š~˜c¨5ˆ~Ñ1Ô1Ð1r   rN   Ú_BackendCipherContextrG   c                 óž   — t          | j        t          j        ¦  «        r |rt	          |¦  «        S t          |¦  «        S t          |¦  «        S r?   )r:   r7   r   rH   Ú_AEADEncryptionContextÚ_AEADDecryptionContextr   )r   rN   rG   s      r   rL   zCipher._wrap_ctxŽ   sM   € õ
 �d”i¥Ô!@ÑAÔAð 	'Øð 3Ý-¨cÑ2Ô2Ð2å-¨cÑ2Ô2Ð2å! #Ñ&Ô&Ð&r   r?   )r   r   r   r   r1   ÚtypingÚAnyr=   Úoverloadr.   r@   r
   r)   rP   ÚboolÚUnionrL   r   r   r   r5   r5   M   st  € € € € € ð
 #ð	ð à"ðð ðð ”ð	ð ð ð ð& „_ðØ7ðà	ðð ð ñ „_ðð
 „_ðØðà	ðð ð ñ „_ðð
1ð 1ð 1ð „_ðØ7ðà	ðð ð ñ „_ðð
 „_ðØðà	ðð ð ñ „_ðð
2ð 2ð 2ð'Ø*ð'Ø59ð'à	ŒØÐ4°mÐCô
ð'ð 'ð 'ð 'ð 'ð 'r   r5   c                   óh   — e Zd ZU ej        d         ed<   dd„Zdedefd„Zded	ede	fd
„Z
defd„ZdS )r   rT   Ú_ctxrN   r   Nc                 ó   — || _         d S r?   )r^   ©r   rN   s     r   r=   z_CipherContext.__init__ª   s   € ØˆŒ	ˆ	ˆ	r   r   c                 ób   — | j         €t          d¦  «        ‚| j                              |¦  «        S ©NúContext was already finalized.)r^   r   r   r   s     r   r   z_CipherContext.update­   s/   € ØŒ9ÐÝ"Ð#CÑDÔDÐDØŒy×Ò Ñ%Ô%Ð%r   r   c                 ód   — | j         €t          d¦  «        ‚| j                              ||¦  «        S rb   )r^   r   r   r   s      r   r   z_CipherContext.update_into²   s1   € ØŒ9ÐÝ"Ð#CÑDÔDÐDØŒy×$Ò$ T¨3Ñ/Ô/Ð/r   c                 ór   — | j         €t          d¦  «        ‚| j                              ¦   «         }d | _         |S rb   )r^   r   r   r   s     r   r   z_CipherContext.finalize·   s8   € ØŒ9ÐÝ"Ð#CÑDÔDÐDØŒy×!Ò!Ñ#Ô#ˆØˆŒ	Øˆr   ©rN   rT   r   N)r   r   r   rX   ÚOptionalÚ__annotations__r=   r!   r   r"   r   r   r   r   r   r   r   §   s¤   € € € € € € Ø
Œ/Ð1Ô
2Ð2Ð2Ñ2ðð ð ð ð&˜5ð & Uð &ð &ð &ð &ð
0 ð 0¨Eð 0°cð 0ð 0ð 0ð 0ð
˜%ð ð ð ð ð ð r   r   c                   ó¨   — e Zd ZU ej        d         ed<   ej        e         ed<   dd„Zdeddfd	„Z	d
edefd„Z
d
ededefd„Zdefd„Zd
eddfd„ZdS )Ú_AEADCipherContextrT   r^   Ú_tagrN   r   Nc                 óL   — || _         d| _        d| _        d | _        d| _        d S )Nr   F)r^   Ú_bytes_processedÚ_aad_bytes_processedrk   Ú_updatedr`   s     r   r=   z_AEADCipherContext.__init__Ã   s+   € ØˆŒ	Ø !ˆÔØ$%ˆÔ!ØˆŒ	ØˆŒˆˆr   Ú	data_sizec                 ó  — | j         €t          d¦  «        ‚d| _        | xj        |z  c_        | j        | j         j        j        k    rAt          d                     | j         j        j        | j         j        j        ¦  «        ¦  «        ‚d S )Nrc   Tz+{} has a maximum encrypted byte limit of {})	r^   r   ro   rm   Ú_modeÚ_MAX_ENCRYPTED_BYTESrI   ÚformatÚname)r   rp   s     r   Ú_check_limitz_AEADCipherContext._check_limitÊ   sŠ   € ØŒ9ÐÝ"Ð#CÑDÔDÐDØˆŒØÐÔ Ñ*ÐÔØÔ  4¤9¤?Ô#GÒGÐGÝØ=×DÒDØ”I”OÔ(¨$¬)¬/Ô*Nñô ñô ð ð HÐGr   r   c                 óŒ   — |                       t          |¦  «        ¦  «         | j        €J ‚| j                             |¦  «        S r?   )rv   Úlenr^   r   r   s     r   r   z_AEADCipherContext.updateÖ   s@   € Ø×Ò�#˜d™)œ)Ñ$Ô$Ð$àŒyÐ$Ð$Ð$ØŒy×Ò Ñ%Ô%Ð%r   r   c                 óŽ   — |                       t          |¦  «        ¦  «         | j        €J ‚| j                             ||¦  «        S r?   )rv   rx   r^   r   r   s      r   r   z_AEADCipherContext.update_intoÜ   sB   € Ø×Ò�#˜d™)œ)Ñ$Ô$Ð$àŒyÐ$Ð$Ð$ØŒy×$Ò$ T¨3Ñ/Ô/Ð/r   c                 ó”   — | j         €t          d¦  «        ‚| j                              ¦   «         }| j         j        | _        d | _         |S rb   )r^   r   r   r*   rk   r   s     r   r   z_AEADCipherContext.finalizeâ   sC   € ØŒ9ÐÝ"Ð#CÑDÔDÐDØŒy×!Ò!Ñ#Ô#ˆØ”I”MˆŒ	ØˆŒ	Øˆr   c                 ó‚  — | j         €t          d¦  «        ‚| j        rt          d¦  «        ‚| xj        t          |¦  «        z  c_        | j        | j         j        j        k    rAt          d 	                    | j         j        j
        | j         j        j        ¦  «        ¦  «        ‚| j                              |¦  «         d S )Nrc   z'Update has been called on this context.z%{} has a maximum AAD byte limit of {})r^   r   ro   r   rn   rx   rr   Ú_MAX_AAD_BYTESrI   rt   ru   r'   r   s     r   r'   z/_AEADCipherContext.authenticate_additional_dataê   s¸   € ØŒ9ÐÝ"Ð#CÑDÔDÐDØŒ=ð 	LÝ Ð!JÑKÔKÐKàÐ!Ô!¥S¨¡Y¤YÑ.Ð!Ô!ØÔ$ t¤y¤Ô'EÒEÐEÝØ7×>Ò>Ø”I”OÔ(¨$¬)¬/Ô*Hñô ñô ð ð 	Œ	×.Ò.¨tÑ4Ô4Ð4Ð4Ð4r   rf   )r   r   r   rX   rg   rh   r!   r=   r"   rv   r   r   r   r'   r   r   r   rj   rj   ¿   sû   € € € € € € Ø
Œ/Ð1Ô
2Ð2Ð2Ñ2Ø
Œ/˜%Ô
 Ð Ð Ñ ðð ð ð ð
 cð 
¨dð 
ð 
ð 
ð 
ð&˜5ð & Uð &ð &ð &ð &ð0 ð 0¨Eð 0°cð 0ð 0ð 0ð 0ð˜%ð ð ð ð ð5°ð 5¸4ð 5ð 5ð 5ð 5ð 5ð 5r   rj   c                   ó   — e Zd Zdedefd„ZdS )rW   r*   r   c                 ó–   — | j         €t          d¦  «        ‚| j                              |¦  «        }| j         j        | _        d | _         |S rb   )r^   r   r,   r*   rk   )r   r*   r   s      r   r,   z(_AEADDecryptionContext.finalize_with_tagü   sE   € ØŒ9ÐÝ"Ð#CÑDÔDÐDØŒy×*Ò*¨3Ñ/Ô/ˆØ”I”MˆŒ	ØˆŒ	Øˆr   N)r   r   r   r!   r,   r   r   r   rW   rW   û   s6   € € € € € ð Uð ¨uð ð ð ð ð ð r   rW   c                   ó*   — e Zd Zedefd„¦   «         ZdS )rV   r   c                 óN   — | j         �t          d¦  «        ‚| j        €J ‚| j        S )Nz4You must finalize encryption before getting the tag.)r^   r   rk   r   s    r   r*   z_AEADEncryptionContext.tag  s7   € àŒ9Ð Ý!ØIñô ð ð ŒyÐ$Ð$Ð$ØŒyÐr   N)r   r   r   Úpropertyr!   r*   r   r   r   rV   rV     s9   € € € € € Øð�Uð ð ð ñ „Xðð ð r   rV   )!r   rX   Úcryptography.exceptionsr   r   r   Ú/cryptography.hazmat.primitives._cipheralgorithmr   Ú&cryptography.hazmat.primitives.ciphersr   ÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.ciphersr   rT   ÚABCMetar
   r%   r)   r.   ÚTypeVarrg   r1   ÚGenericr5   r\   ÚModeWithNonceÚModeWithTweakÚECBÚModeWithInitializationVectorrB   rj   rW   rV   r   r   r   ú<module>rŽ      s¾  ðð €
€
€
Ø €€€ðð ð ð ð ð ð ð ð ð ð
 LÐ KÐ KÐ KÐ KÐ KØ 8Ð 8Ð 8Ð 8Ð 8Ð 8ð 
Ôð ðð ð ð ð ð ð
ð ð ð ð ˜cœkð ñ ô ð ð,ð ð ð ð ˜°´ð ñ ô ð ðð ð ð ð Ð-¸¼ð ñ ô ð ðð ð ð ð Ð-¸¼ð ñ ô ð ð €v„~Ø
�&”/ %¤*Ô-¸ðñ ô €ð
L'ð L'ð L'ð L'ð L'ˆVŒ^˜DÔ!ñ L'ô L'ð L'ð^ Ø
„LØÔØÔØØŒ	ØÔ*ð		,ôô€ðð ð ð ð �]ñ ô ð ð095ð 95ð 95ð 95ð 95Ð*ñ 95ô 95ð 95ðxð ð ð ð Ð/Ð1Fñ ô ð ðð ð ð ð Ð/Ð1Fñ ô ð ð ð r   