ó
    ‹Âj~   ã                  ó  • S SK Jr  S SKrS SKJr  S SKJrJr  S SKJ	r	J
r
  S SKJr   " S S\R                  S	9r " S
 S\\R                  S	9r " S S\\R                  S	9r " S S\\R                  S	9r " S S\\R                  S	9rS&S jr      S'S jr        S(S jr      S)S jr " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\5      r " S$ S%\\5      rg)*é    )ÚannotationsN)Úutils)ÚUnsupportedAlgorithmÚ_Reasons)ÚBlockCipherAlgorithmÚCipherAlgorithm)Ú
algorithmsc                  ón   • \ rS rSr\\R                  SS j5       5       r\R                  SS j5       rSr	g)ÚModeé   c                ó   • g)z0
A string naming this mode (e.g. "ECB", "CBC").
N© ©Úselfs    Úb/var/www/website/venv/lib/python3.13/site-packages/cryptography/hazmat/primitives/ciphers/modes.pyÚnameÚ	Mode.name   ó   � ó    c                ó   • g)zY
Checks that all the necessary invariants of this (mode, algorithm)
combination are met.
Nr   ©r   Ú	algorithms     r   Úvalidate_for_algorithmÚMode.validate_for_algorithm   r   r   r   N)ÚreturnÚstr©r   r   r   ÚNone)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚpropertyÚabcÚabstractmethodr   r   Ú__static_attributes__r   r   r   r   r      s<   † ØØ×Ñóó ó ðð
 	×Ñóó ór   r   )Ú	metaclassc                  óF   • \ rS rSr\\R                  SS j5       5       rSrg)ÚModeWithInitializationVectoré"   c                ó   • g)z@
The value of the initialization vector for this mode as bytes.
Nr   r   s    r   Úinitialization_vectorÚ2ModeWithInitializationVector.initialization_vector#   r   r   r   N©r   úutils.Buffer)	r   r    r!   r"   r#   r$   r%   r,   r&   r   r   r   r)   r)   "   ó"   † ØØ×Ñóó ó ór   r)   c                  óF   • \ rS rSr\\R                  SS j5       5       rSrg)ÚModeWithTweaké+   c                ó   • g)z0
The value of the tweak for this mode as bytes.
Nr   r   s    r   ÚtweakÚModeWithTweak.tweak,   r   r   r   Nr.   )	r   r    r!   r"   r#   r$   r%   r5   r&   r   r   r   r2   r2   +   r0   r   r2   c                  óF   • \ rS rSr\\R                  SS j5       5       rSrg)ÚModeWithNonceé4   c                ó   • g)z0
The value of the nonce for this mode as bytes.
Nr   r   s    r   ÚnonceÚModeWithNonce.nonce5   r   r   r   Nr.   )	r   r    r!   r"   r#   r$   r%   r;   r&   r   r   r   r8   r8   4   r0   r   r8   c                  óF   • \ rS rSr\\R                  SS j5       5       rSrg)ÚModeWithAuthenticationTagé=   c                ó   • g)z@
The value of the tag supplied to the constructor of this mode.
Nr   r   s    r   ÚtagÚModeWithAuthenticationTag.tag>   r   r   r   N©r   úbytes | None)	r   r    r!   r"   r#   r$   r%   rA   r&   r   r   r   r>   r>   =   r0   r   r>   c                ó\   • UR                   S:”  a  UR                  S:X  a  [        S5      eg g )Né   ÚAESz=Only 128, 192, and 256 bit keys are allowed for this AES mode)Úkey_sizer   Ú
ValueErrorr   s     r   Ú_check_aes_key_lengthrJ   F   s3   € Ø×Ñ˜CÓ I§N¡N°eÓ$;ÜØKó
ð 	
ð %<Ðr   c                óŒ   • [        U R                  5      nUS-  UR                  :w  a  [        SU SU R                   S35      eg )Né   zInvalid IV size (ú) for Ú.)Úlenr,   Ú
block_sizerI   r   )r   r   Úiv_lens      r   Ú_check_iv_lengthrR   M   sJ   € ô �×+Ñ+Ó,€FØ��z�Y×)Ñ)Ó)ÜÐ,¨V¨H°F¸4¿9¹9¸+ÀQÐGÓHÐHð *r   c                óÖ   • [        U[        5      (       d  [        U S3[        R                  5      e[        U 5      S-  UR                  :w  a  [        S[        U 5       SU S35      eg )Nú" requires a block cipher algorithmrL   zInvalid nonce size (rM   rN   )Ú
isinstancer   r   r   ÚUNSUPPORTED_CIPHERrO   rP   rI   )r;   r   r   s      r   Ú_check_nonce_lengthrW   U   so   € ô �iÔ!5×6Ñ6Ü"ØˆfÐ6Ð7Ü×'Ñ'ó
ð 	
ô ˆ5ƒz�A�~˜×-Ñ-Ó-ÜÐ/´°E³
¨|¸6À$ÀÀqÐIÓJÐJð .r   c                ó”   • [        U[        5      (       d  [        U  S3[        R                  5      e[        X5        [        X5        g )NrT   )rU   r   r   r   rV   rJ   rR   r   s     r   Ú_check_iv_and_key_lengthrY   a   sE   € ô �iÔ!5×6Ñ6Ü"ØˆfÐ6Ð7Ü×'Ñ'ó
ð 	
ô ˜$Ô*Ü�TÕ%r   c                  ó:   • \ rS rSrS rSS jr\SS j5       r\r	Sr
g)ÚCBCém   c                ó>   • [         R                  " SU5        Xl        g ©Nr,   ©r   Ú_check_byteslikeÚ_initialization_vector©r   r,   s     r   Ú__init__ÚCBC.__init__p   ó   € Ü×ÒÐ6Ð8MÔNØ&;Õ#r   c                ó   • U R                   $ ©N©ra   r   s    r   r,   ÚCBC.initialization_vectort   ó   € à×*Ñ*Ð*r   rh   N©r,   r/   r.   ©r   r    r!   r"   r   rc   r#   r,   rY   r   r&   r   r   r   r[   r[   m   ó(   † Ø€Dô<ð ó+ó ð+ð 6Ór   r[   c                  ó@   • \ rS rSrS rSS jr\SS j5       rS	S jrSr	g)
ÚXTSé{   c                ór   • [         R                  " SU5        [        U5      S:w  a  [        S5      eXl        g )Nr5   é   z!tweak must be 128-bits (16 bytes))r   r`   rO   rI   Ú_tweak)r   r5   s     r   rc   ÚXTS.__init__~   s/   € Ü×Ò˜w¨Ô.äˆu‹:˜ÓÜÐ@ÓAÐAà�r   c                ó   • U R                   $ rg   ©rs   r   s    r   r5   Ú	XTS.tweak†   ó   € à�{‰{Ðr   c                ó®   • [        U[        R                  [        R                  45      (       a  [	        S5      eUR
                  S;  a  [        S5      eg )Nz\The AES128 and AES256 classes do not support XTS, please use the standard AES class instead.)rF   i   z\The XTS specification requires a 256-bit key for AES-128-XTS and 512-bit key for AES-256-XTS)rU   r	   ÚAES128ÚAES256Ú	TypeErrorrH   rI   r   s     r   r   ÚXTS.validate_for_algorithmŠ   sY   € Ü�i¤*×"3Ñ"3´Z×5FÑ5FÐ!G×HÑHÜð2óð ð
 ×Ñ ZÓ/Üð3óð ð 0r   rv   N)r5   r/   r.   r   )
r   r    r!   r"   r   rc   r#   r5   r   r&   r   r   r   ro   ro   {   s%   † Ø€Dôð óó ð÷r   ro   c                  ó   • \ rS rSrS r\rSrg)ÚECBé˜   r   N)r   r    r!   r"   r   rJ   r   r&   r   r   r   r   r   ˜   s   † Ø€Dà2Ór   r   c                  ó:   • \ rS rSrS rSS jr\SS j5       r\r	Sr
g)ÚOFBéž   c                ó>   • [         R                  " SU5        Xl        g r^   r_   rb   s     r   rc   ÚOFB.__init__¡   re   r   c                ó   • U R                   $ rg   rh   r   s    r   r,   ÚOFB.initialization_vector¥   rj   r   rh   Nrk   r.   rl   r   r   r   r‚   r‚   ž   rm   r   r‚   c                  ó:   • \ rS rSrS rSS jr\SS j5       r\r	Sr
g)ÚCFBé¬   c                ó>   • [         R                  " SU5        Xl        g r^   r_   rb   s     r   rc   ÚCFB.__init__¯   re   r   c                ó   • U R                   $ rg   rh   r   s    r   r,   ÚCFB.initialization_vector³   rj   r   rh   Nrk   r.   rl   r   r   r   r‰   r‰   ¬   rm   r   r‰   c                  ó:   • \ rS rSrS rSS jr\SS j5       r\r	Sr
g)ÚCFB8éº   c                ó>   • [         R                  " SU5        Xl        g r^   r_   rb   s     r   rc   ÚCFB8.__init__½   re   r   c                ó   • U R                   $ rg   rh   r   s    r   r,   ÚCFB8.initialization_vectorÁ   rj   r   rh   Nrk   r.   rl   r   r   r   r�   r�   º   s(   † Ø€Dô<ð ó+ó ð+ð 6Ór   r�   c                  ó@   • \ rS rSrS rSS jr\SS j5       rS	S jrSr	g)
ÚCTRéÈ   c                ó>   • [         R                  " SU5        Xl        g )Nr;   )r   r`   Ú_nonce)r   r;   s     r   rc   ÚCTR.__init__Ë   s   € Ü×Ò˜w¨Ô.Ø�r   c                ó   • U R                   $ rg   ©rš   r   s    r   r;   Ú	CTR.nonceÏ   rx   r   c                ó\   • [        X5        [        U R                  U R                  U5        g rg   )rJ   rW   r;   r   r   s     r   r   ÚCTR.validate_for_algorithmÓ   s   € Ü˜dÔ.Ü˜DŸJ™J¨¯	©	°9Õ=r   r�   N)r;   r/   r.   r   )
r   r    r!   r"   r   rc   r#   r;   r   r&   r   r   r   r—   r—   È   s%   † Ø€Dôð óó ð÷>r   r—   c                  ón   • \ rS rSrS rSrSr  S
     SS jjr\SS j5       r	\SS j5       r
SS jrS	rg)ÚGCMéØ   l   àÿ? l            Nc                ó:  • [         R                  " SU5        [        U5      S:  d  [        U5      S:”  a  [        S5      eXl        UbF  [         R
                  " SU5        US:  a  [        S5      e[        U5      U:  a  [        SU S	35      eX l        X0l        g )
Nr,   rL   é€   zIinitialization_vector must be between 8 and 128 bytes (64 and 1024 bits).rA   é   zmin_tag_length must be >= 4zAuthentication tag must be z bytes or longer.)r   r`   rO   rI   ra   Ú_check_bytesÚ_tagÚ_min_tag_length)r   r,   rA   Úmin_tag_lengths       r   rc   ÚGCM.__init__Ý   s­   € ô 	×ÒÐ6Ð8MÔNÜÐ$Ó%¨Ó)¬SÐ1FÓ-GÈ#Ó-MÜð"óð ð '<Ô#Ø‰?Ü×Ò˜u cÔ*Ø Ó!Ü Ð!>Ó?Ð?Ü�3‹x˜.Ó(Ü Ø1°.Ð1Að Bð óð ð Œ	Ø-Õr   c                ó   • U R                   $ rg   )r¨   r   s    r   rA   ÚGCM.tagø   s   € à�y‰yÐr   c                ó   • U R                   $ rg   rh   r   s    r   r,   ÚGCM.initialization_vectorü   rj   r   c                ó  • [        X5        [        U[        5      (       d  [        S[        R
                  5      eUR                  S-  nU R                  b)  [        U R                  5      U:”  a  [        SU S35      eg g )Nz%GCM requires a block cipher algorithmrL   z'Authentication tag cannot be more than z bytes.)
rJ   rU   r   r   r   rV   rP   r¨   rO   rI   )r   r   Úblock_size_bytess      r   r   ÚGCM.validate_for_algorithm   sˆ   € Ü˜dÔ.Ü˜)Ô%9×:Ñ:Ü&Ø7Ü×+Ñ+óð ð %×/Ñ/°1Ñ4ÐØ�9‰9Ñ ¤S¨¯©£^Ð6FÓ%FÜØ9Ð:JÐ9Kð Lð óð ð &GÐ r   )ra   r©   r¨   )Nrr   )r,   r/   rA   rD   rª   ÚintrC   r.   r   )r   r    r!   r"   r   Ú_MAX_ENCRYPTED_BYTESÚ_MAX_AAD_BYTESrc   r#   rA   r,   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   )r;   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)   r2   r8   r>   rJ   rR   rW   rY   r[   ro   r   r‚   r‰   r�   r—   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Ø/>ð	Kà	ô	Kð	&Ø
&ð	&Ø3Bð	&à	ô	&ô6Ð
&ô 6ôˆ-ô ô:3ˆ$ô 3ô6Ð
&ô 6ô6Ð
&ô 6ô6Ð'ô 6ô>ˆ-ô >ô 4Ð
&Ð(Aõ 4r   