Ë
    ±éä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d&d„Z	 	 	 	 	 	 d'd„Z	 	 	 	 	 	 	 	 d(d„Z	 	 	 	 	 	 d)d„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y)*é    )ÚannotationsN)Úutils)ÚUnsupportedAlgorithmÚ_Reasons)ÚBlockCipherAlgorithmÚCipherAlgorithm)Ú
algorithmsc                  ób   — e Zd Zeej
                  dd„«       «       Zej
                  dd„«       Zy)ÚModec                 ó   — y)z@
        A string naming this mode (e.g. "ECB", "CBC").
        N© ©Úselfs    új/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/ciphers/modes.pyÚnamez	Mode.name   ó   � ó    c                 ó   — y)zq
        Checks that all the necessary invariants of this (mode, algorithm)
        combination are met.
        Nr   ©r   Ú	algorithms     r   Úvalidate_for_algorithmzMode.validate_for_algorithm   r   r   N)ÚreturnÚstr©r   r   r   ÚNone)Ú__name__Ú
__module__Ú__qualname__ÚpropertyÚabcÚabstractmethodr   r   r   r   r   r   r      s<   „ ØØ×Ñòó ó ðð
 	×Ñòó ñr   r   )Ú	metaclassc                  ó<   — e Zd Zeej
                  dd„«       «       Zy)ÚModeWithInitializationVectorc                 ó   — y)zP
        The value of the initialization vector for this mode as bytes.
        Nr   r   s    r   Úinitialization_vectorz2ModeWithInitializationVector.initialization_vector#   r   r   N©r   Úbytes)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y)ÚModeWithTweakc                 ó   — y)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y)ÚModeWithNoncec                 ó   — y)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y)ÚModeWithAuthenticationTagc                 ó   — y)zP
        The value of the tag supplied to the constructor of this mode.
        Nr   r   s    r   ÚtagzModeWithAuthenticationTag.tag>   r   r   N©r   úbytes | None)r   r   r   r   r    r!   r5   r   r   r   r3   r3   =   r)   r   r3   c                óX   — |j                   dkD  r|j                  dk(  rt        d«      ‚y y )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   s3   € Ø×Ñ˜CÒ I§N¡N°eÒ$;ÜØKó
ð 	
ð %<Ðr   c                óŠ   — t        | j                  «      }|dz  |j                  k7  rt        d|› d| j                  › d�«      ‚y )Né   zInvalid IV size (ú) for ú.)Úlenr&   Ú
block_sizer<   r   )r   r   Úiv_lens      r   Ú_check_iv_lengthrE   M   sJ   € ô �×+Ñ+Ó,€FØ��z�Y×)Ñ)Ò)ÜÐ,¨V¨H°F¸4¿9¹9¸+ÀQÐGÓHÐHð *r   c                óÊ   — t        |t        «      st        |› d�t        j                  «      ‚t        | «      dz  |j                  k7  rt        dt        | «      › d|› d�«      ‚y )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   sl   € ô �iÔ!5Ô6Ü"ØˆfÐ6Ð7Ü×'Ñ'ó
ð 	
ô ˆ5ƒz�A�~˜×-Ñ-Ò-ÜÐ/´°E³
¨|¸6À$ÀÀqÐIÓJÐJð .r   c                óŽ   — t        |t        «      st        | › d�t        j                  «      ‚t        | |«       t        | |«       y )NrG   )rH   r   r   r   rI   r=   rE   r   s     r   Ú_check_iv_and_key_lengthrL   a   sF   € ô �iÔ!5Ô6Ü"ØˆfÐ6Ð7Ü×'Ñ'ó
ð 	
ô ˜$ 	Ô*Ü�T˜9Õ%r   c                  ó.   — e Zd Zd Zdd„Zedd„«       ZeZy)ÚCBCc                ó>   — t        j                  d|«       || _        y ©Nr&   ©r   Ú_check_byteslikeÚ_initialization_vector©r   r&   s     r   Ú__init__zCBC.__init__p   ó   € Ü×ÑÐ6Ð8MÔNØ&;ˆÕ#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   ó(   „ Ø€Dó<ð ò+ó ð+ð 6Ñr   rN   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 )Nr-   é   z!tweak must be 128-bits (16 bytes))r   rR   rB   r<   Ú_tweak)r   r-   s     r   rU   zXTS.__init__~   s1   € Ü×Ñ˜w¨Ô.äˆu‹:˜ÒÜÐ@ÓAÐAàˆ�r   c                ó   — | j                   S rX   )rb   r   s    r   r-   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.)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Š   sV   € Ü�i¤*×"3Ñ"3´Z×5FÑ5FÐ!GÔHÜð2óð ð
 ×Ñ ZÑ/Üð3óð ð 0r   N)r-   r(   r'   r   )r   r   r   r   rU   r   r-   r   r   r   r   r_   r_   {   s%   „ Ø€Dóð òó ðôr   r_   c                  ó   — e Zd Zd ZeZy)ÚECBN)r   r   r   r   r=   r   r   r   r   rj   rj   ˜   s   „ Ø€Dà2Ñr   rj   c                  ó.   — e Zd Zd Zdd„Zedd„«       ZeZy)ÚOFBc                ó>   — t        j                  d|«       || _        y rP   rQ   rT   s     r   rU   zOFB.__init__¡   rV   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                  ó.   — e Zd Zd Zdd„Zedd„«       ZeZy)ÚCFBc                ó>   — t        j                  d|«       || _        y rP   rQ   rT   s     r   rU   zCFB.__init__¯   rV   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                  ó.   — e Zd Zd Zdd„Zedd„«       ZeZy)ÚCFB8c                ó>   — t        j                  d|«       || _        y rP   rQ   rT   s     r   rU   zCFB8.__init__½   rV   r   c                ó   — | j                   S rX   rY   r   s    r   r&   zCFB8.initialization_vectorÁ   rZ   r   Nr[   r'   r\   r   r   r   rt   rt   º   s(   „ Ø€Dó<ð ò+ó ð+ð 6Ñr   rt   c                  ó2   — e Zd Zd Zdd„Zedd„«       Zdd„Zy)ÚCTRc                ó>   — t        j                  d|«       || _        y )Nr1   )r   rR   Ú_nonce)r   r1   s     r   rU   zCTR.__init__Ë   s   € Ü×Ñ˜w¨Ô.Øˆ�r   c                ó   — | j                   S rX   )rz   r   s    r   r1   z	CTR.nonceÏ   rd   r   c                ó^   — t        | |«       t        | j                  | j                  |«       y rX   )r=   rJ   r1   r   r   s     r   r   zCTR.validate_for_algorithmÓ   s    € Ü˜d IÔ.Ü˜DŸJ™J¨¯	©	°9Õ=r   N)r1   r(   r'   r   )r   r   r   r   rU   r   r1   r   r   r   r   rx   rx   È   s%   „ Ø€Dóð òó ðô>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
y)ÚGCMl   àÿ? l            Nc                ó2  — t        j                  d|«       t        |«      dk  st        |«      dkD  rt        d«      ‚|| _        |�Ct        j
                  d|«       |dk  rt        d«      ‚t        |«      |k  rt        d|› d	�«      ‚|| _        || _        y )
Nr&   r?   é€   zIinitialization_vector must be between 8 and 128 bytes (64 and 1024 bits).r5   é   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&   r5   Úmin_tag_lengths       r   rU   zGCM.__init__Ý   s³   € ô 	×ÑÐ6Ð8MÔNÜÐ$Ó%¨Ò)¬SÐ1FÓ-GÈ#Ò-MÜð"óð ð '<ˆÔ#Øˆ?Ü×Ñ˜u cÔ*Ø Ò!Ü Ð!>Ó?Ð?Ü�3‹x˜.Ò(Ü Ø1°.Ð1Að Bð óð ð ˆŒ	Ø-ˆÕr   c                ó   — | j                   S rX   )rƒ   r   s    r   r5   zGCM.tagø   s   € à�y‰yÐr   c                ó   — | j                   S rX   rY   r   s    r   r&   zGCM.initialization_vectorü   rZ   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 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‰9Ð ¤S¨¯©£^Ð6FÒ%FÜØ9Ð:JÐ9Kð Lð óð ð &GÐ r   )Nra   )r&   r(   r5   r7   r…   Úintr6   r'   r   )r   r   r   r   Ú_MAX_ENCRYPTED_BYTESÚ_MAX_AAD_BYTESrU   r   r5   r&   r   r   r   r   r~   r~   Ø   sh   „ Ø€DØ-ÐØ!€Nð
 !Ø ð	.à$ð.ð ð.ð ó	.ð6 òó ðð ò+ó ð+ô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“      sJ  ðõ
 #ã 
å ß B÷õ >ô�S—[‘[õ ô  4°3·;±;õ ô�D C§K¡Kõ ô�D C§K¡Kõ ô °·±õ ó
ðIØ
&ðIØ3GðIà	óIð	KØð	KØð	KØ(7ð	Kà	ó	Kð	&Ø
&ð	&Ø3Bð	&à	ó	&ô6Ð
&ô 6ôˆ-ô ô:3ˆ$ô 3ô6Ð
&ô 6ô6Ð
&ô 6ô6Ð'ô 6ô>ˆ-ô >ô 4Ð
&Ð(Aõ 4r   