+
    7›j~   ã                  ó  € ^ RI Ht ^ RIt^ RIHt ^ RIHtHt ^ RIH	t	H
t
 ^ RIHt  ! R R]P                  R	7      t ! R
 R]]P                  R	7      t ! R R]]P                  R	7      t ! R R]]P                  R	7      t ! R R]]P                  R	7      tR R ltR R ltR R ltR R lt ! R R]4      t ! R R]4      t ! R R]4      t ! R  R!]4      t ! R" R#]4      t ! R$ R%]4      t ! R& R']4      t ! R( R)]]4      tR# )*é    )ÚannotationsN)Úutils)ÚUnsupportedAlgorithmÚ_Reasons)ÚBlockCipherAlgorithmÚCipherAlgorithm)Ú
algorithmsc                  ót   € ] tR t^t]]P                  R R l4       4       t]P                  R R l4       tRt	R# )ÚModec               ó   € V ^8„  d   QhRR/# )é   ÚreturnÚstr© )Úformats   "ÚN/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/ciphers/modes.pyÚ__annotate__ÚMode.__annotate__   s   € ÷ ñ �cñ ó    c                ó   € R# )z0
A string naming this mode (e.g. "ECB", "CBC").
Nr   ©Úselfs   &r   ÚnameÚ	Mode.name   ó   ‚ r   c               ó    € V ^8„  d   QhRRRR/# ©r   Ú	algorithmr   r   ÚNoner   )r   s   "r   r   r      s   € ÷ ñ °ð ÀDñ r   c                ó   € R# )zY
Checks that all the necessary invariants of this (mode, algorithm)
combination are met.
Nr   ©r   r   s   &&r   Úvalidate_for_algorithmÚMode.validate_for_algorithm   r   r   r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚpropertyÚabcÚabstractmethodr   r"   Ú__static_attributes__r   r   r   r   r      s<   † ØØ×Ñôó ó ðð
 	×Ñôó ôr   r   )Ú	metaclassc                  óJ   € ] tR t^"t]]P                  R R l4       4       tRtR# )ÚModeWithInitializationVectorc               ó   € V ^8„  d   QhRR/# ©r   r   úutils.Bufferr   )r   s   "r   r   Ú)ModeWithInitializationVector.__annotate__%   s   € ÷ ñ  |ñ r   c                ó   € R# )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$   r%   r&   r'   r(   r)   r*   r4   r+   r   r   r   r.   r.   "   ó"   † ØØ×Ñôó ó ôr   r.   c                  óJ   € ] tR t^+t]]P                  R R l4       4       tRtR# )ÚModeWithTweakc               ó   € V ^8„  d   QhRR/# r0   r   )r   s   "r   r   ÚModeWithTweak.__annotate__.   ó   € ÷ ñ �|ñ r   c                ó   € R# )z0
The value of the tweak for this mode as bytes.
Nr   r   s   &r   ÚtweakÚModeWithTweak.tweak,   r   r   r   N)	r$   r%   r&   r'   r(   r)   r*   r=   r+   r   r   r   r8   r8   +   r6   r   r8   c                  óJ   € ] tR t^4t]]P                  R R l4       4       tRtR# )ÚModeWithNoncec               ó   € V ^8„  d   QhRR/# r0   r   )r   s   "r   r   ÚModeWithNonce.__annotate__7   r;   r   c                ó   € R# )z0
The value of the nonce for this mode as bytes.
Nr   r   s   &r   ÚnonceÚModeWithNonce.nonce5   r   r   r   N)	r$   r%   r&   r'   r(   r)   r*   rD   r+   r   r   r   r@   r@   4   r6   r   r@   c                  óJ   € ] tR t^=t]]P                  R R l4       4       tRtR# )ÚModeWithAuthenticationTagc               ó   € V ^8„  d   QhRR/# ©r   r   úbytes | Noner   )r   s   "r   r   Ú&ModeWithAuthenticationTag.__annotate__@   s   € ÷ ñ �\ñ r   c                ó   € R# )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$   r%   r&   r'   r(   r)   r*   rM   r+   r   r   r   rG   rG   =   r6   r   rG   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   r   r   r   r   r   )r   s   "r   r   r   F   s!   € ÷ 
ñ 
 ð 
°ð 
ÀTñ 
r   c                ód   € VP                   R 8”  d   VP                  R8X  d   \        R4      hR# R# )é   ÚAESz=Only 128, 192, and 256 bit keys are allowed for this AES modeN)Úkey_sizer   Ú
ValueErrorr!   s   &&r   Ú_check_aes_key_lengthrU   F   s3   € Ø×Ñ˜CÔ I§N¡N°eÔ$;ÜØKó
ð 	
ñ %<Ñr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r.   r   r   r   r   r   )r   s   "r   r   r   M   s)   € ÷ Iñ IØ
&ðIØ3GðIà	ñIr   c                ó˜   € \        V P                  4      pV^,          VP                  8w  d   \        RV RV P                   R24      hR# )é   zInvalid IV size (ú) for Ú.N)Úlenr4   Ú
block_sizerT   r   )r   r   Úiv_lens   && r   Ú_check_iv_lengthr^   M   sJ   € ô �×+Ñ+Ó,€FØ�…z�Y×)Ñ)Ô)ÜÐ,¨V¨H°F¸4¿9¹9¸+ÀQÐGÓHÐHñ *r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rD   r1   r   r   r   r   r   r   r   )r   s   "r   r   r   U   s2   € ÷ 	Kñ 	KØð	KØ"ð	KØ/>ð	Kà	ñ	Kr   c                óä   € \        V\        4      '       g   \        V R 2\        P                  4      h\        V 4      ^,          VP                  8w  d   \        R\        V 4       RV R24      hR# )ú" requires a block cipher algorithmzInvalid nonce size (rY   rZ   N)Ú
isinstancer   r   r   ÚUNSUPPORTED_CIPHERr[   r\   rT   )rD   r   r   s   &&&r   Ú_check_nonce_lengthrd   U   so   € ô �iÔ!5×6Ò6Ü"ØˆfÐ6Ð7Ü×'Ñ'ó
ð 	
ô ˆ5ƒz�A…~˜×-Ñ-Ô-ÜÐ/´°E³
¨|¸6À$ÀÀqÐIÓJÐJñ .r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r.   r   r   r   r   r   )r   s   "r   r   r   a   s$   € ÷ 	&ñ 	&Ø
&ð	&Ø3Bð	&à	ñ	&r   c                ó˜   € \        V\        4      '       g   \        V  R 2\        P                  4      h\        W4       \        W4       R# )ra   N)rb   r   r   r   rc   rU   r^   r!   s   &&r   Ú_check_iv_and_key_lengthrg   a   sE   € ô �iÔ!5×6Ò6Ü"ØˆfÐ6Ð7Ü×'Ñ'ó
ð 	
ô ˜$Ô*Ü�TÖ%r   c                  ó@   € ] tR t^mtR tR R lt]R R l4       t]t	Rt
R# )ÚCBCc               ó   € V ^8„  d   QhRR/# ©r   r4   r1   r   )r   s   "r   r   ÚCBC.__annotate__p   ó   € ÷ <ñ <¨lñ <r   c                	ó@   € \         P                  ! R V4       Wn        R# ©r4   N©r   Ú_check_byteslikeÚ_initialization_vector©r   r4   s   &&r   Ú__init__ÚCBC.__init__p   ó   € Ü×ÒÐ6Ð8MÔNØ&;Ö#r   c               ó   € V ^8„  d   QhRR/# r0   r   )r   s   "r   r   rl   u   ó   € ÷ +ñ + |ñ +r   c                	ó   € V P                   # ©N©rr   r   s   &r   r4   ÚCBC.initialization_vectort   ó   € à×*Ñ*Ð*r   r{   N©r$   r%   r&   r'   r   rt   r(   r4   rg   r"   r+   r   r   r   ri   ri   m   ó(   † Ø€Dõ<ð ô+ó ð+ð 6Ôr   ri   c                  óH   € ] tR t^{tR tR R lt]R R l4       tR R ltRt	R# )	ÚXTSc               ó   € V ^8„  d   QhRR/# )r   r=   r1   r   )r   s   "r   r   ÚXTS.__annotate__~   s   € ÷ ñ ˜lñ r   c                	óv   € \         P                  ! R V4       \        V4      ^8w  d   \        R4      hWn        R# )r=   z!tweak must be 128-bits (16 bytes)N)r   rq   r[   rT   Ú_tweak)r   r=   s   &&r   rt   ÚXTS.__init__~   s/   € Ü×Ò˜w¨Ô.äˆu‹:˜ÔÜÐ@ÓAÐAàŽr   c               ó   € V ^8„  d   QhRR/# r0   r   )r   s   "r   r   rƒ   ‡   ó   € ÷ ñ �|ñ r   c                	ó   € V P                   # rz   ©r…   r   s   &r   r=   Ú	XTS.tweak†   ó   € à�{‰{Ðr   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   rƒ   Š   s   € ÷ ñ °ð ÀDñ r   c                	ó´   € \        V\        P                  \        P                  34      '       d   \	        R 4      hVP
                  R9  d   \        R4      hR# )z\The AES128 and AES256 classes do not support XTS, please use the standard AES class instead.z\The XTS specification requires a 256-bit key for AES-128-XTS and 512-bit key for AES-256-XTSN)rQ   i   )rb   r	   ÚAES128ÚAES256Ú	TypeErrorrS   rT   r!   s   &&r   r"   ÚXTS.validate_for_algorithmŠ   sY   € Ü�i¤*×"3Ñ"3´Z×5FÑ5FÐ!G×HÒHÜð2óð ð
 ×Ñ ZÔ/Üð3óð ñ 0r   rŠ   N)
r$   r%   r&   r'   r   rt   r(   r=   r"   r+   r   r   r   r�   r�   {   s*   † Ø€Dõð ôó ð÷ñ r   r�   c                  ó   € ] tR t^˜tR t]tRtR# )ÚECBr   N)r$   r%   r&   r'   r   rU   r"   r+   r   r   r   r”   r”   ˜   s   † Ø€Dà2Ôr   r”   c                  ó@   € ] tR t^žtR tR R lt]R R l4       t]t	Rt
R# )ÚOFBc               ó   € V ^8„  d   QhRR/# rk   r   )r   s   "r   r   ÚOFB.__annotate__¡   rm   r   c                	ó@   € \         P                  ! R V4       Wn        R# ro   rp   rs   s   &&r   rt   ÚOFB.__init__¡   rv   r   c               ó   € V ^8„  d   QhRR/# r0   r   )r   s   "r   r   r˜   ¦   rx   r   c                	ó   € V P                   # rz   r{   r   s   &r   r4   ÚOFB.initialization_vector¥   r}   r   r{   Nr~   r   r   r   r–   r–   ž   r   r   r–   c                  ó@   € ] tR t^¬tR tR R lt]R R l4       t]t	Rt
R# )ÚCFBc               ó   € V ^8„  d   QhRR/# rk   r   )r   s   "r   r   ÚCFB.__annotate__¯   rm   r   c                	ó@   € \         P                  ! R V4       Wn        R# ro   rp   rs   s   &&r   rt   ÚCFB.__init__¯   rv   r   c               ó   € V ^8„  d   QhRR/# r0   r   )r   s   "r   r   r¡   ´   rx   r   c                	ó   € V P                   # rz   r{   r   s   &r   r4   ÚCFB.initialization_vector³   r}   r   r{   Nr~   r   r   r   rŸ   rŸ   ¬   r   r   rŸ   c                  ó@   € ] tR t^ºtR tR R lt]R R l4       t]t	Rt
R# )ÚCFB8c               ó   € V ^8„  d   QhRR/# rk   r   )r   s   "r   r   ÚCFB8.__annotate__½   rm   r   c                	ó@   € \         P                  ! R V4       Wn        R# ro   rp   rs   s   &&r   rt   ÚCFB8.__init__½   rv   r   c               ó   € V ^8„  d   QhRR/# r0   r   )r   s   "r   r   rª   Â   rx   r   c                	ó   € V P                   # rz   r{   r   s   &r   r4   ÚCFB8.initialization_vectorÁ   r}   r   r{   Nr~   r   r   r   r¨   r¨   º   s(   † Ø€Dõ<ð ô+ó ð+ð 6Ôr   r¨   c                  óH   € ] tR t^ÈtR tR R lt]R R l4       tR R ltRt	R# )	ÚCTRc               ó   € V ^8„  d   QhRR/# )r   rD   r1   r   )r   s   "r   r   ÚCTR.__annotate__Ë   s   € ÷ ñ ˜lñ r   c                	ó@   € \         P                  ! R V4       Wn        R# )rD   N)r   rq   Ú_nonce)r   rD   s   &&r   rt   ÚCTR.__init__Ë   s   € Ü×Ò˜w¨Ô.ØŽr   c               ó   € V ^8„  d   QhRR/# r0   r   )r   s   "r   r   r³   Ð   rˆ   r   c                	ó   € V P                   # rz   ©rµ   r   s   &r   rD   Ú	CTR.nonceÏ   rŒ   r   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   r³   Ó   s   € ÷ >ñ >°ð >ÀDñ >r   c                	ó^   € \        W4       \        V P                  V P                  V4       R # rz   )rU   rd   rD   r   r!   s   &&r   r"   ÚCTR.validate_for_algorithmÓ   s   € Ü˜dÔ.Ü˜DŸJ™J¨¯	©	°9Ö=r   r¹   N)
r$   r%   r&   r'   r   rt   r(   rD   r"   r+   r   r   r   r±   r±   È   s*   † Ø€Dõð ôó ð÷>ñ >r   r±   c                  ój   € ] tR t^ØtR tRtRtRR R llt]R R l4       t	]R R l4       t
R R	 ltR
tR# )ÚGCMNc               ó$   € V ^8„  d   QhRRRRRR/# )r   r4   r1   rM   rJ   Úmin_tag_lengthÚintr   )r   s   "r   r   ÚGCM.__annotate__Ý   s(   € ÷ .ñ .à+ð.ð ð.ð ñ	.r   c                	óF  € \         P                  ! R V4       \        V4      ^8  g   \        V4      ^€8”  d   \        R4      hWn        VeI   \         P
                  ! RV4       V^8  d   \        R4      h\        V4      V8  d   \        RV R24      hW n        W0n        R# )r4   zIinitialization_vector must be between 8 and 128 bytes (64 and 1024 bits).NrM   zmin_tag_length must be >= 4zAuthentication tag must be z bytes or longer.)r   rq   r[   rT   rr   Ú_check_bytesÚ_tagÚ_min_tag_length)r   r4   rM   rÁ   s   &&&&r   rt   ÚGCM.__init__Ý   s­   € ô 	×ÒÐ6Ð8MÔNÜÐ$Ó%¨Ô)¬SÐ1FÓ-GÈ#Ô-MÜð"óð ð '<Ô#ØŠ?Ü×Ò˜u cÔ*Ø Ô!Ü Ð!>Ó?Ð?Ü�3‹x˜.Ô(Ü Ø1°.Ð1Að Bð óð ð Œ	Ø-Ör   c               ó   € V ^8„  d   QhRR/# rI   r   )r   s   "r   r   rÃ   ù   s   € ÷ ñ �\ñ r   c                	ó   € V P                   # rz   )rÆ   r   s   &r   rM   ÚGCM.tagø   s   € à�y‰yÐr   c               ó   € V ^8„  d   QhRR/# r0   r   )r   s   "r   r   rÃ   ý   rx   r   c                	ó   € V P                   # rz   r{   r   s   &r   r4   ÚGCM.initialization_vectorü   r}   r   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   rÃ      s   € ÷ ñ °ð ÀDñ r   c                	ó  € \        W4       \        V\        4      '       g   \        R \        P
                  4      hVP                  ^,          pV P                  e,   \        V P                  4      V8”  d   \        RV R24      hR# R# )z%GCM requires a block cipher algorithmNz'Authentication tag cannot be more than z bytes.)
rU   rb   r   r   r   rc   r\   rÆ   r[   rT   )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   )rr   rÇ   rÆ   l   àÿ? l            )Né   )r$   r%   r&   r'   r   Ú_MAX_ENCRYPTED_BYTESÚ_MAX_AAD_BYTESrt   r(   rM   r4   r"   r+   r   r   r   r¿   r¿   Ø   sI   † Ø€DØ-ÐØ!€N÷.ð6 ôó ðð ô+ó ð+÷ñ r   r¿   )Ú
__future__r   r)   Úcryptographyr   Úcryptography.exceptionsr   r   Ú/cryptography.hazmat.primitives._cipheralgorithmr   r   Ú&cryptography.hazmat.primitives.ciphersr	   ÚABCMetar   r.   r8   r@   rG   rU   r^   rd   rg   ri   r�   r”   r–   rŸ   r¨   r±   r¿   r   r   r   Ú<module>rÜ      só   ðõ
 #ã 
å ß B÷õ >ô�S—[‘[õ ô  4°3·;±;õ ô�D C§K¡Kõ ô�D C§K¡Kõ ô °·±õ õ
õIõ	Kõ	&ô6Ð
&ô 6ôˆ-ô ô:3ˆ$ô 3ô6Ð
&ô 6ô6Ð
&ô 6ô6Ð'ô 6ô>ˆ-ô >ô 4Ð
&Ð(Aö 4r   