Ë
    €V.jo  ã                  óò  — 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¬«       y )!é    )Ú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                  ó.   — e Zd Zd Zdd„Zedd„«       ZeZy)ÚCBCc                ó>   — t        j                  d|«       || _        y )NÚinitialization_vector)r   Ú_check_byteslikeÚ_initialization_vector)Úselfr   s     únC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\cryptography/hazmat/primitives/ciphers/modes.pyÚ__init__zCBC.__init__*   s   € Ü×ÑÐ6Ð8MÔNØ&;ˆÕ#ó    c                ó   — | j                   S ©N©r   ©r   s    r   r   zCBC.initialization_vector.   ó   € à×*Ñ*Ð*r   N)r   úutils.Buffer©Úreturnr$   )	Ú__name__Ú
__module__Ú__qualname__Únamer   Úpropertyr   r   Úvalidate_for_algorithm© r   r   r   r   '   s(   „ Ø€Dó<ð ò+ó ð+ð 6Ñr   r   c                  ó2   — e Zd Zd Zdd„Zedd„«       Zdd„Zy)ÚXTSc                óp   — t        j                  d|«       t        |«      dk7  rt        d«      ‚|| _        y )NÚtweaké   z!tweak must be 128-bits (16 bytes))r   r   ÚlenÚ
ValueErrorÚ_tweak)r   r1   s     r   r   zXTS.__init__8   s1   € Ü×Ñ˜w¨Ô.äˆu‹:˜ÒÜÐ@ÓAÐAàˆ�r   c                ó   — | j                   S r    )r5   r"   s    r   r1   z	XTS.tweak@   ó   € à�{‰{Ðr   c                ó    — t        |t        j                  t        j                  f«      rt	        d«      ‚|j
                  dvrt        d«      ‚y )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   Ú	algorithms     r   r,   zXTS.validate_for_algorithmD   sV   € Ü�i¤*×"3Ñ"3´Z×5FÑ5FÐ!GÔHÜð2óð ð
 ×Ñ ZÑ/Üð3óð ð 0r   N)r1   r$   r%   ©r@   r   r&   ÚNone)r'   r(   r)   r*   r   r+   r1   r,   r-   r   r   r/   r/   5   s%   „ Ø€Dóð òó ðôr   r/   c                  ó   — e Zd Zd ZeZy)ÚECBN)r'   r(   r)   r*   r   r,   r-   r   r   rD   rD   R   s   „ Ø€Dà2Ñr   rD   c                  ó2   — e Zd Zd Zdd„Zedd„«       Zdd„Zy)ÚCTRc                ó>   — t        j                  d|«       || _        y )NÚnonce)r   r   Ú_nonce)r   rH   s     r   r   zCTR.__init__[   s   € Ü×Ñ˜w¨Ô.Øˆ�r   c                ó   — | j                   S r    )rI   r"   s    r   rH   z	CTR.nonce_   r7   r   c                ó^   — t        | |«       t        | j                  | j                  |«       y r    )r   r   rH   r*   r?   s     r   r,   zCTR.validate_for_algorithmc   s    € Ü˜d IÔ.Ü˜DŸJ™J¨¯	©	°9Õ=r   N)rH   r$   r%   rA   )r'   r(   r)   r*   r   r+   rH   r,   r-   r   r   rF   rF   X   s%   „ Ø€Dóð òó ðô>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
y)ÚGCMl   àÿ? l            Nc                ó2  — t        j                  d|«       t        |«      dk  st        |«      dkD  rt        d«      ‚|| _        |dk  rt        d«      ‚|�3t        j
                  d|«       t        |«      |k  rt        d|› d	�«      ‚|| _        || _        y )
Nr   é   é€   zIinitialization_vector must be between 8 and 128 bytes (64 and 1024 bits).é   zmin_tag_length must be >= 4ÚtagzAuthentication tag must be z bytes or longer.)r   r   r3   r4   r   Ú_check_bytesÚ_tagÚ_min_tag_length)r   r   rR   Úmin_tag_lengths       r   r   zGCM.__init__m   s³   € ô 	×ÑÐ6Ð8MÔNÜÐ$Ó%¨Ò)¬SÐ1FÓ-GÈ#Ò-MÜð"óð ð '<ˆÔ#Ø˜AÒÜÐ:Ó;Ð;Øˆ?Ü×Ñ˜u cÔ*Ü�3‹x˜.Ò(Ü Ø1°.Ð1Að Bð óð ð ˆŒ	Ø-ˆÕr   c                ó   — | j                   S r    )rT   r"   s    r   rR   zGCM.tagˆ   s   € à�y‰yÐr   c                ó   — | j                   S r    r!   r"   s    r   r   zGCM.initialization_vectorŒ   r#   r   c                óö   — t        | |«       t        |t        «      st        dt        j
                  «      ‚|j                  dz  }| j                  �(t        | j                  «      |kD  rt        d|› d�«      ‚y y )Nz%GCM requires a block cipher algorithmrO   z'Authentication tag cannot be more than z bytes.)
r   r:   r
   r   r   ÚUNSUPPORTED_CIPHERÚ
block_sizerT   r3   r4   )r   r@   Úblock_size_bytess      r   r,   zGCM.validate_for_algorithm�   s‡   € Ü˜d IÔ.Ü˜)Ô%9Ô:Ü&Ø7Ü×+Ñ+óð ð %×/Ñ/°1Ñ4ÐØ�9‰9Ð ¤S¨¯©£^Ð6FÒ%FÜØ9Ð:JÐ9Kð Lð óð ð &GÐ r   )Nr2   )r   r$   rR   úbytes | NonerV   Úint)r&   r]   r%   rA   )r'   r(   r)   r*   Ú_MAX_ENCRYPTED_BYTESÚ_MAX_AAD_BYTESr   r+   rR   r   r,   r-   r   r   rM   rM   h   sh   „ Ø€DØ-ÐØ!€Nð
 !Ø ð	.à+ð.ð ð.ð ó	.ð6 òó ðð ò+ó ð+ô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Ý AÝ CÝ A÷õõõõõ÷ñ õ
 >ô6Ð
&ô 6ôˆ-ô ô:3ˆ$ô 3ô>ˆ-ô >ô 4Ð
&Ð(Aô 4ðn €× Ñ ØØð>ð 
×ÑØ	õ	ð €× Ñ ØØð>ð 
×ÑØ	õ	ð €× Ñ ØØð>ð 
×ÑØ	ö	r   