§
    ¥”jw  ã                  óè  — d dl mZ d dlmZ d dlmZmZ 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 d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZmZmZ d dlm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 ej        e
edej         d¬¦  «          ej        eedej         d¬¦  «          ej        e	edej         d¬¦  «         d S )!é    )Úannotations)Úutils)ÚUnsupportedAlgorithmÚ_Reasons)ÚCFB)ÚCFB8)ÚOFB)ÚBlockCipherAlgorithmÚCipherAlgorithm)ÚMode)ÚModeWithAuthenticationTag)ÚModeWithInitializationVector)ÚModeWithNonce)ÚModeWithTweak)Ú_check_aes_key_lengthÚ_check_iv_and_key_lengthÚ_check_nonce_length)Ú
algorithmsc                  ó6   — e Zd Zd Zdd„Zedd„¦   «         ZeZdS )	ÚCBCÚinitialization_vectorúutils.Bufferc                ó>   — t          j        d|¦  «         || _        d S )Nr   )r   Ú_check_byteslikeÚ_initialization_vector)Úselfr   s     ú{/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/ciphers/modes.pyÚ__init__zCBC.__init__*   s%   € ÝÔÐ6Ð8MÑNÔNÐNØ&;ˆÔ#Ð#Ð#ó    Úreturnc                ó   — | j         S ©N©r   ©r   s    r   r   zCBC.initialization_vector.   ó   € àÔ*Ð*r   N)r   r   ©r    r   )	Ú__name__Ú
__module__Ú__qualname__Únamer   Úpropertyr   r   Úvalidate_for_algorithm© r   r   r   r   '   sQ   € € € € € Ø€Dð<ð <ð <ð <ð ð+ð +ð +ñ „Xð+ð 6ÐÐÐr   r   c                  ó:   — e Zd Zd Zdd„Zedd„¦   «         Zdd	„Zd
S )ÚXTSÚtweakr   c                ó‚   — t          j        d|¦  «         t          |¦  «        dk    rt          d¦  «        ‚|| _        d S )Nr0   é   z!tweak must be 128-bits (16 bytes))r   r   ÚlenÚ
ValueErrorÚ_tweak)r   r0   s     r   r   zXTS.__init__8   s@   € ÝÔ˜w¨Ñ.Ô.Ð.åˆu‰:Œ:˜ÒÐÝÐ@ÑAÔAÐAàˆŒˆˆr   r    c                ó   — | j         S r"   )r5   r$   s    r   r0   z	XTS.tweak@   ó
   € àŒ{Ðr   Ú	algorithmr   ÚNonec                ó    — 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.)é   i   z\The XTS specification requires a 256-bit key for AES-128-XTS and 512-bit key for AES-256-XTS)Ú
isinstancer   ÚAES128ÚAES256Ú	TypeErrorÚkey_sizer4   ©r   r8   s     r   r,   zXTS.validate_for_algorithmD   se   € Ý�i¥*Ô"3µZÔ5FÐ!GÑHÔHð 	Ýð2ñô ð ð
 Ô ZÐ/Ð/Ýð3ñô ð ð 0Ð/r   N)r0   r   r&   ©r8   r   r    r9   )r'   r(   r)   r*   r   r+   r0   r,   r-   r   r   r/   r/   5   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   rD   rD   R   s   € € € € € Ø€Dà2ÐÐÐr   rD   c                  ó:   — e Zd Zd Zdd„Zedd„¦   «         Zdd	„Zd
S )ÚCTRÚnoncer   c                ó>   — t          j        d|¦  «         || _        d S )NrG   )r   r   Ú_nonce)r   rG   s     r   r   zCTR.__init__[   s    € ÝÔ˜w¨Ñ.Ô.Ð.ØˆŒˆˆr   r    c                ó   — | j         S r"   )rI   r$   s    r   rG   z	CTR.nonce_   r7   r   r8   r   r9   c                ó\   — t          | |¦  «         t          | j        | j        |¦  «         d S r"   )r   r   rG   r*   rA   s     r   r,   zCTR.validate_for_algorithmc   s.   € Ý˜d IÑ.Ô.Ð.Ý˜DœJ¨¬	°9Ñ=Ô=Ð=Ð=Ð=r   N)rG   r   r&   rB   )r'   r(   r)   r*   r   r+   rG   r,   r-   r   r   rF   rF   X   sa   € € € € € Ø€Dðð ð ð ð ðð ð ñ „Xðð>ð >ð >ð >ð >ð >r   rF   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            Nr2   r   r   Útagúbytes | NoneÚ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   é   é€   zIinitialization_vector must be between 8 and 128 bytes (64 and 1024 bits).rN   é   zmin_tag_length must be >= 4zAuthentication tag must be z bytes or longer.)r   r   r3   r4   r   Ú_check_bytesÚ_tagÚ_min_tag_length)r   r   rN   rP   s       r   r   zGCM.__init__m   sã   € õ 	ÔÐ6Ð8MÑNÔNÐNÝÐ$Ñ%Ô%¨Ò)Ð)­SÐ1FÑ-GÔ-GÈ#Ò-MÐ-MÝð"ñô ð ð '<ˆÔ#Øˆ?ÝÔ˜u cÑ*Ô*Ð*Ø Ò!Ð!Ý Ð!>Ñ?Ô?Ð?Ý�3‰xŒx˜.Ò(Ð(Ý ð°.ð ð ð ñô ð ð ˆŒ	Ø-ˆÔÐÐr   r    c                ó   — | j         S r"   )rW   r$   s    r   rN   zGCM.tagˆ   s
   € àŒyÐr   c                ó   — | j         S r"   r#   r$   s    r   r   zGCM.initialization_vectorŒ   r%   r   r8   r   r9   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 algorithmrS   z'Authentication tag cannot be more than z bytes.)
r   r<   r
   r   r   ÚUNSUPPORTED_CIPHERÚ
block_sizerW   r3   r4   )r   r8   Ú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   )Nr2   )r   r   rN   rO   rP   rQ   )r    rO   r&   rB   )r'   r(   r)   r*   Ú_MAX_ENCRYPTED_BYTESÚ_MAX_AAD_BYTESr   r+   rN   r   r,   r-   r   r   rM   rM   h   s™   € € € € € Ø€DØ-ÐØ!€Nð
 !Ø ð	.ð .ð .ð .ð .ð6 ðð ð ñ „Xðð ð+ð +ð +ñ „Xð+ðð ð ð ð ð r   rM   z•OFB has been moved to cryptography.hazmat.decrepit.ciphers.modes.OFB and will be removed from cryptography.hazmat.primitives.ciphers.modes in 49.0.0.r	   )r*   z•CFB has been moved to cryptography.hazmat.decrepit.ciphers.modes.CFB and will be removed from cryptography.hazmat.primitives.ciphers.modes in 49.0.0.r   z—CFB8 has been moved to cryptography.hazmat.decrepit.ciphers.modes.CFB8 and will be removed from cryptography.hazmat.primitives.ciphers.modes in 49.0.0.r   N)!Ú
__future__r   Úcryptographyr   Úcryptography.exceptionsr   r   Ú*cryptography.hazmat.decrepit.ciphers.modesr   r   r	   Ú/cryptography.hazmat.primitives._cipheralgorithmr
   r   Ú%cryptography.hazmat.primitives._modesr   r   r   r   r   r   r   r   Ú&cryptography.hazmat.primitives.ciphersr   r   r/   rD   rF   rM   Ú
deprecatedr'   ÚDeprecatedIn47r-   r   r   ú<module>rj      sû  ðð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ AÐ AÐ AÐ AÐ AÐ AØ CÐ CÐ CÐ CÐ CÐ CØ AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 >Ð =Ð =Ð =Ð =Ð =ð6ð 6ð 6ð 6ð 6Ð
&ñ 6ô 6ð 6ðð ð ð ð ˆ-ñ ô ð ð:3ð 3ð 3ð 3ð 3ˆ$ñ 3ô 3ð 3ð>ð >ð >ð >ð >ˆ-ñ >ô >ð >ð 4ð 4ð 4ð 4ð 4Ð
&Ð(Añ 4ô 4ð 4ðn €Ô ØØð>ð 
ÔØ	ð	ñ 	ô 	ð 	ð €Ô ØØð>ð 
ÔØ	ð	ñ 	ô 	ð 	ð €Ô ØØð>ð 
ÔØ	ð	ñ 	ô 	ð 	ð 	ð 	r   