§
    cÒ³g    ã                  ó$  — d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
 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 G d„ deej        ¬	¦  «        Zd0d„Zd1d„Zd2d„Zd3d„Z G d „ d!e¦  «        Z G d"„ d#e¦  «        Z G d$„ d%e¦  «        Z G d&„ d'e¦  «        Z G d(„ d)e¦  «        Z G d*„ d+e¦  «        Z G d,„ d-e¦  «        Z G d.„ d/ee¦  «        ZdS )4é    )ÚannotationsN)Úutils)ÚUnsupportedAlgorithmÚ_Reasons)ÚBlockCipherAlgorithmÚCipherAlgorithm)Ú
algorithmsc                  ób   — e Zd Zeej        d	d„¦   «         ¦   «         Zej        d
d„¦   «         ZdS )ÚModeÚreturnÚstrc                ó   — dS )z@
        A string naming this mode (e.g. "ECB", "CBC").
        N© ©Úselfs    új/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/ciphers/modes.pyÚnamez	Mode.name   ó   € € € ó    Ú	algorithmr   ÚNonec                ó   — dS )zq
        Checks that all the necessary invariants of this (mode, algorithm)
        combination are met.
        Nr   ©r   r   s     r   Úvalidate_for_algorithmzMode.validate_for_algorithm   r   r   N)r   r   ©r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__ÚpropertyÚabcÚabstractmethodr   r   r   r   r   r   r      sd   € € € € € ØØÔðð ð ñ Ôñ „Xðð
 	Ôðð ð ñ Ôðð ð r   r   )Ú	metaclassc                  ó@   — e Zd Zeej        dd„¦   «         ¦   «         ZdS )ÚModeWithInitializationVectorr   Úbytesc                ó   — dS )zP
        The value of the initialization vector for this mode as bytes.
        Nr   r   s    r   Úinitialization_vectorz2ModeWithInitializationVector.initialization_vector#   r   r   N©r   r%   )r   r   r   r   r    r!   r'   r   r   r   r$   r$   "   ó@   € € € € € ØØÔðð ð ñ Ôñ „Xðð ð r   r$   c                  ó@   — e Zd Zeej        dd„¦   «         ¦   «         ZdS )ÚModeWithTweakr   r%   c                ó   — dS )z@
        The value of the tweak for this mode as bytes.
        Nr   r   s    r   ÚtweakzModeWithTweak.tweak,   r   r   Nr(   )r   r   r   r   r    r!   r-   r   r   r   r+   r+   +   r)   r   r+   c                  ó@   — e Zd Zeej        dd„¦   «         ¦   «         ZdS )ÚModeWithNoncer   r%   c                ó   — dS )z@
        The value of the nonce for this mode as bytes.
        Nr   r   s    r   ÚnoncezModeWithNonce.nonce5   r   r   Nr(   )r   r   r   r   r    r!   r1   r   r   r   r/   r/   4   r)   r   r/   c                  ó@   — e Zd Zeej        dd„¦   «         ¦   «         ZdS )ÚModeWithAuthenticationTagr   úbytes | Nonec                ó   — dS )zP
        The value of the tag supplied to the constructor of this mode.
        Nr   r   s    r   ÚtagzModeWithAuthenticationTag.tag>   r   r   N©r   r4   )r   r   r   r   r    r!   r6   r   r   r   r3   r3   =   r)   r   r3   r   r   r   r   r   c                óT   — |j         dk    r|j        dk    rt          d¦  «        ‚d S d S )Né   ÚAESz=Only 128, 192, and 256 bit keys are allowed for this AES mode)Úkey_sizer   Ú
ValueErrorr   s     r   Ú_check_aes_key_lengthr=   F   s?   € ØÔ˜CÒÐ I¤N°eÒ$;Ð$;ÝØKñ
ô 
ð 	
ð  ÐÐ$;Ð$;r   r   c                ó€   — t          | j        ¦  «        }|dz  |j        k    rt          d|› d| j        › d�¦  «        ‚d S )Né   zInvalid IV size (ú) for ú.)Úlenr'   Ú
block_sizer<   r   )r   r   Úiv_lens      r   Ú_check_iv_lengthrE   M   sR   € õ �Ô+Ñ,Ô,€FØ��z�YÔ)Ò)Ð)ÝÐG¨VÐGÐG¸4¼9ÐGÐGÐGÑHÔHÐHð *Ð)r   r1   r%   r   r   c                óæ   — t          |t          ¦  «        st          |› d�t          j        ¦  «        ‚t          | ¦  «        dz  |j        k    r#t          dt          | ¦  «        › d|› d�¦  «        ‚d S )Nú" requires a block cipher algorithmr?   zInvalid nonce size (r@   rA   )Ú
isinstancer   r   r   ÚUNSUPPORTED_CIPHERrB   rC   r<   )r1   r   r   s      r   Ú_check_nonce_lengthrJ   U   s…   € õ �iÕ!5Ñ6Ô6ð 
Ý"ØÐ7Ð7Ð7ÝÔ'ñ
ô 
ð 	
õ ˆ5�z„z�A�~˜Ô-Ò-Ð-ÝÐIµ°E±
´
ÐIÐIÀ$ÐIÐIÐIÑJÔJÐJð .Ð-r   c                óª   — t          |t          ¦  «        st          | › d�t          j        ¦  «        ‚t          | |¦  «         t          | |¦  «         d S )NrG   )rH   r   r   r   rI   r=   rE   r   s     r   Ú_check_iv_and_key_lengthrL   a   sc   € õ �iÕ!5Ñ6Ô6ð 
Ý"ØÐ7Ð7Ð7ÝÔ'ñ
ô 
ð 	
õ ˜$ 	Ñ*Ô*Ð*Ý�T˜9Ñ%Ô%Ð%Ð%Ð%r   c                  ó6   — e Zd Zd Zdd„Zedd„¦   «         ZeZdS )	ÚCBCr'   r%   c                ó>   — t          j        d|¦  «         || _        d S ©Nr'   ©r   Ú_check_byteslikeÚ_initialization_vector©r   r'   s     r   Ú__init__zCBC.__init__p   ó%   € ÝÔÐ6Ð8MÑNÔNÐNØ&;ˆÔ#Ð#Ð#r   r   c                ó   — | j         S ©N©rS   r   s    r   r'   zCBC.initialization_vectort   ó   € àÔ*Ð*r   N©r'   r%   r(   ©	r   r   r   r   rU   r   r'   rL   r   r   r   r   rN   rN   m   óQ   € € € € € Ø€Dð<ð <ð <ð <ð ð+ð +ð +ñ „Xð+ð 6ÐÐÐr   rN   c                  ó:   — e Zd Zd Zdd„Zedd„¦   «         Zdd	„Zd
S )ÚXTSr-   r%   c                ó‚   — t          j        d|¦  «         t          |¦  «        dk    rt          d¦  «        ‚|| _        d S )Nr-   é   z!tweak must be 128-bits (16 bytes))r   rR   rB   r<   Ú_tweak)r   r-   s     r   rU   zXTS.__init__~   s@   € ÝÔ˜w¨Ñ.Ô.Ð.åˆu‰:Œ:˜ÒÐÝÐ@ÑAÔAÐAàˆŒˆˆr   r   c                ó   — | j         S rX   )rb   r   s    r   r-   z	XTS.tweak†   ó
   € àŒ{Ðr   r   r   r   c                ó    — t          |t          j        t          j        f¦  «        rt	          d¦  «        ‚|j        dvrt          d¦  «        ‚d S )Nz\The AES128 and AES256 classes do not support XTS, please use the standard AES class instead.)r9   i   z\The XTS specification requires a 256-bit key for AES-128-XTS and 512-bit key for AES-256-XTS)rH   r	   ÚAES128ÚAES256Ú	TypeErrorr;   r<   r   s     r   r   zXTS.validate_for_algorithmŠ   se   € Ý�i¥*Ô"3µZÔ5FÐ!GÑHÔHð 	Ýð2ñô ð ð
 Ô ZÐ/Ð/Ýð3ñô ð ð 0Ð/r   N)r-   r%   r(   r   )r   r   r   r   rU   r   r-   r   r   r   r   r_   r_   {   sa   € € € € € Ø€Dðð ð ð ð ðð ð ñ „Xððð ð ð ð ð r   r_   c                  ó   — e Zd Zd ZeZdS )ÚECBN)r   r   r   r   r=   r   r   r   r   rj   rj   ˜   s   € € € € € Ø€Dà2ÐÐÐr   rj   c                  ó6   — e Zd Zd Zdd„Zedd„¦   «         ZeZdS )	ÚOFBr'   r%   c                ó>   — t          j        d|¦  «         || _        d S rP   rQ   rT   s     r   rU   zOFB.__init__¡   rV   r   r   c                ó   — | j         S rX   rY   r   s    r   r'   zOFB.initialization_vector¥   rZ   r   Nr[   r(   r\   r   r   r   rl   rl   ž   r]   r   rl   c                  ó6   — e Zd Zd Zdd„Zedd„¦   «         ZeZdS )	ÚCFBr'   r%   c                ó>   — t          j        d|¦  «         || _        d S rP   rQ   rT   s     r   rU   zCFB.__init__¯   rV   r   r   c                ó   — | j         S rX   rY   r   s    r   r'   zCFB.initialization_vector³   rZ   r   Nr[   r(   r\   r   r   r   rp   rp   ¬   r]   r   rp   c                  ó6   — e Zd Zd Zdd„Zedd„¦   «         ZeZdS )	ÚCFB8r'   r%   c                ó>   — t          j        d|¦  «         || _        d S rP   rQ   rT   s     r   rU   zCFB8.__init__½   rV   r   r   c                ó   — | j         S rX   rY   r   s    r   r'   zCFB8.initialization_vectorÁ   rZ   r   Nr[   r(   r\   r   r   r   rt   rt   º   sQ   € € € € € Ø€Dð<ð <ð <ð <ð ð+ð +ð +ñ „Xð+ð 6ÐÐÐr   rt   c                  ó:   — e Zd Zd Zdd„Zedd„¦   «         Zdd	„Zd
S )ÚCTRr1   r%   c                ó>   — t          j        d|¦  «         || _        d S )Nr1   )r   rR   Ú_nonce)r   r1   s     r   rU   zCTR.__init__Ë   s    € ÝÔ˜w¨Ñ.Ô.Ð.ØˆŒˆˆr   r   c                ó   — | j         S rX   )rz   r   s    r   r1   z	CTR.nonceÏ   rd   r   r   r   r   c                ó\   — t          | |¦  «         t          | j        | j        |¦  «         d S rX   )r=   rJ   r1   r   r   s     r   r   zCTR.validate_for_algorithmÓ   s.   € Ý˜d IÑ.Ô.Ð.Ý˜DœJ¨¬	°9Ñ=Ô=Ð=Ð=Ð=r   N)r1   r%   r(   r   )r   r   r   r   rU   r   r1   r   r   r   r   rx   rx   È   sa   € € € € € Ø€Dðð ð ð ð ðð ð ñ „Xðð>ð >ð >ð >ð >ð >r   rx   c                  ó`   — e Zd Zd ZdZdZ	 	 ddd„Zedd„¦   «         Zedd„¦   «         Z	dd„Z
dS )ÚGCMl   àÿ? l            Nra   r'   r%   r6   r4   Úmin_tag_lengthÚintc                óh  — t          j        d|¦  «         t          |¦  «        dk     st          |¦  «        dk    rt          d¦  «        ‚|| _        |�Pt          j        d|¦  «         |dk     rt          d¦  «        ‚t          |¦  «        |k     rt          d|› d	�¦  «        ‚|| _        || _        d S )
Nr'   r?   é€   zIinitialization_vector must be between 8 and 128 bytes (64 and 1024 bits).r6   é   zmin_tag_length must be >= 4zAuthentication tag must be z bytes or longer.)r   rR   rB   r<   rS   Ú_check_bytesÚ_tagÚ_min_tag_length)r   r'   r6   r   s       r   rU   zGCM.__init__Ý   sã   € õ 	ÔÐ6Ð8MÑNÔNÐNÝÐ$Ñ%Ô%¨Ò)Ð)­SÐ1FÑ-GÔ-GÈ#Ò-MÐ-MÝð"ñô ð ð '<ˆÔ#Øˆ?ÝÔ˜u cÑ*Ô*Ð*Ø Ò!Ð!Ý Ð!>Ñ?Ô?Ð?Ý�3‰xŒx˜.Ò(Ð(Ý ð°.ð ð ð ñô ð ð ˆŒ	Ø-ˆÔÐÐr   r   c                ó   — | j         S rX   )r…   r   s    r   r6   zGCM.tagø   s
   € àŒyÐr   c                ó   — | j         S rX   rY   r   s    r   r'   zGCM.initialization_vectorü   rZ   r   r   r   r   c                ó   — t          | |¦  «         t          |t          ¦  «        st          dt          j        ¦  «        ‚|j        dz  }| j        �+t          | j        ¦  «        |k    rt          d|› d�¦  «        ‚d S d S )Nz%GCM requires a block cipher algorithmr?   z'Authentication tag cannot be more than z bytes.)
r=   rH   r   r   r   rI   rC   r…   rB   r<   )r   r   Úblock_size_bytess      r   r   zGCM.validate_for_algorithm   s¢   € Ý˜d IÑ.Ô.Ð.Ý˜)Õ%9Ñ:Ô:ð 	Ý&Ø7ÝÔ+ñô ð ð %Ô/°1Ñ4ÐØŒ9Ð ¥S¨¬¡^¤^Ð6FÒ%FÐ%FÝðÐ:Jð ð ð ñô ð ð !Ð Ð%FÐ%Fr   )Nra   )r'   r%   r6   r4   r   r€   r7   r(   r   )r   r   r   r   Ú_MAX_ENCRYPTED_BYTESÚ_MAX_AAD_BYTESrU   r   r6   r'   r   r   r   r   r~   r~   Ø   s™   € € € € € Ø€DØ-ÐØ!€Nð
 !Ø ð	.ð .ð .ð .ð .ð6 ðð ð ñ „Xðð ð+ð +ð +ñ „Xð+ðð ð ð ð ð r   r~   )r   r   r   r   r   r   )r   r$   r   r   r   r   )r1   r%   r   r   r   r   r   r   )r   r$   r   r   r   r   )Ú
__future__r   r    Úcryptographyr   Úcryptography.exceptionsr   r   Ú/cryptography.hazmat.primitives._cipheralgorithmr   r   Ú&cryptography.hazmat.primitives.ciphersr	   ÚABCMetar   r$   r+   r/   r3   r=   rE   rJ   rL   rN   r_   rj   rl   rp   rt   rx   r~   r   r   r   ú<module>r“      s?  ðð
 #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
à Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð ð ð >Ð =Ð =Ð =Ð =Ð =ðð ð ð ð �S”[ð ñ ô ð ð ð ð ð ð  4°3´;ð ñ ô ð ðð ð ð ð �D C¤Kð ñ ô ð ðð ð ð ð �D C¤Kð ñ ô ð ðð ð ð ð  °´ð ñ ô ð ð
ð 
ð 
ð 
ðIð Ið Ið Ið	Kð 	Kð 	Kð 	Kð	&ð 	&ð 	&ð 	&ð6ð 6ð 6ð 6ð 6Ð
&ñ 6ô 6ð 6ðð ð ð ð ˆ-ñ ô ð ð:3ð 3ð 3ð 3ð 3ˆ$ñ 3ô 3ð 3ð6ð 6ð 6ð 6ð 6Ð
&ñ 6ô 6ð 6ð6ð 6ð 6ð 6ð 6Ð
&ñ 6ô 6ð 6ð6ð 6ð 6ð 6ð 6Ð'ñ 6ô 6ð 6ð>ð >ð >ð >ð >ˆ-ñ >ô >ð >ð 4ð 4ð 4ð 4ð 4Ð
&Ð(Añ 4ô 4ð 4ð 4ð 4r   