3 lá˜_J ã @ sø d dl mZmZmZ d dlZd dlZd dlmZ ejej ƒG dd„ de ƒƒZejej ƒG dd„ de ƒƒZejej ƒG dd „ d e ƒƒZ ejej ƒG d d„ de ƒƒZejej ƒG dd „ d e ƒƒZdd„ Zdd„ Zdd„ ZejeƒejeƒG dd„ de ƒƒƒZejeƒeje ƒG dd„ de ƒƒƒZejeƒG dd„ de ƒƒZejeƒejeƒG dd„ de ƒƒƒZejeƒejeƒG dd„ de ƒƒƒZejeƒejeƒG dd„ de ƒƒƒZejeƒejeƒG d d!„ d!e ƒƒƒZejeƒejeƒejeƒG d"d#„ d#e ƒƒƒƒZdS )$é )Úabsolute_importÚdivisionÚprint_functionN)Úutilsc @ s( e Zd Zejdd„ ƒZejdd„ ƒZdS )ÚModec C s dS )z@ A string naming this mode (e.g. "ECB", "CBC"). N© )Úselfr r ú/usr/lib64/python3.6/modes.pyÚname s z Mode.namec C s dS )zq Checks that all the necessary invariants of this (mode, algorithm) combination are met. Nr )r Ú algorithmr r r Úvalidate_for_algorithm s zMode.validate_for_algorithmN)Ú__name__Ú __module__Ú__qualname__ÚabcÚabstractpropertyr Úabstractmethodr r r r r r s r c @ s e Zd Zejdd„ ƒZdS )ÚModeWithInitializationVectorc C s dS )zP The value of the initialization vector for this mode as bytes. Nr )r r r r Úinitialization_vector s z2ModeWithInitializationVector.initialization_vectorN)r r r r r r r r r r r s r c @ s e Zd Zejdd„ ƒZdS )Ú ModeWithTweakc C s dS )z@ The value of the tweak for this mode as bytes. Nr )r r r r Útweak) s zModeWithTweak.tweakN)r r r r r r r r r r r ' s r c @ s e Zd Zejdd„ ƒZdS )Ú ModeWithNoncec C s dS )z@ The value of the nonce for this mode as bytes. Nr )r r r r Únonce2 s zModeWithNonce.nonceN)r r r r r r r r r r r 0 s r c @ s e Zd Zejdd„ ƒZdS )ÚModeWithAuthenticationTagc C s dS )zP The value of the tag supplied to the constructor of this mode. Nr )r r r r Útag; s zModeWithAuthenticationTag.tagN)r r r r r r r r r r r 9 s r c C s |j dkr|jdkrtdƒ‚d S )Né ZAESz=Only 128, 192, and 256 bit keys are allowed for this AES mode)Úkey_sizer Ú ValueError)r r r r r Ú_check_aes_key_lengthB s r c C s0 t | jƒd |jkr,tdjt | jƒ| jƒƒ‚d S )Né zInvalid IV size ({}) for {}.)Úlenr Ú block_sizer Úformatr )r r r r r Ú_check_iv_lengthI s r# c C s t | |ƒ t| |ƒ d S )N)r r# )r r r r r Ú_check_iv_and_key_lengthR s r$ c @ s&