3
ฅKด^^  ใ               @   sx  d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
 dd ZejeejeG dd deZejeejeG d	d
 d
eZejeejeG dd deZejeejeG dd deZejeejeG dd deZejeG dd deZejeG dd deZejeejeG dd deZejeeje
G dd deZdS )้    )ฺabsolute_importฺdivisionฺprint_function)ฺutils)ฺBlockCipherAlgorithmฺCipherAlgorithm)ฺModeWithNoncec             C   s<   t jd| t|d | jkr8tdjt|d | j|S )Nฺkey้   zInvalid key size ({}) for {}.)r   ฺ_check_byteslikeฺlenฺ	key_sizesฺ
ValueErrorฺformatฺname)ฺ	algorithmr	   ฉ r   ๚U/tmp/pip-unpacked-wheel-vvkwn1hz/cryptography/hazmat/primitives/ciphers/algorithms.pyฺ_verify_key_size   s
    r   c               @   s8   e Zd Zd ZdZeddddgZdd Zedd Z	d	S )
ฺAES้   ้ภ   ้   i   c             C   s   t | || _d S )N)r   r	   )ฺselfr	   r   r   r   ฺ__init__"   s    zAES.__init__c             C   s   t | jd S )Nr
   )r   r	   )r   r   r   r   ฺkey_size%   s    zAES.key_sizeN)
ฺ__name__ฺ
__module__ฺ__qualname__r   ฺ
block_sizeฺ	frozensetr   r   ฺpropertyr   r   r   r   r   r      s
   r   c               @   s6   e Zd ZdZdZedddgZdd Zedd Z	d	S )
ฺCamelliaZcamelliar   r   r   c             C   s   t | || _d S )N)r   r	   )r   r	   r   r   r   r   1   s    zCamellia.__init__c             C   s   t | jd S )Nr
   )r   r	   )r   r   r   r   r   4   s    zCamellia.key_sizeN)
r   r   r   r   r   r    r   r   r!   r   r   r   r   r   r"   *   s
   r"   c               @   s6   e Zd ZdZdZedddgZdd Zedd Z	d	S )
ฺ	TripleDESZ3DES้@   r   r   c             C   sF   t |dkr||| 7 }nt |dkr6||d d 7 }t| || _d S )Nr
   ้   )r   r   r	   )r   r	   r   r   r   r   @   s
    zTripleDES.__init__c             C   s   t | jd S )Nr
   )r   r	   )r   r   r   r   r   G   s    zTripleDES.key_sizeN)
r   r   r   r   r   r    r   r   r!   r   r   r   r   r   r#   9   s
   r#   c               @   s8   e Zd Zd ZdZeedddZdd Ze	dd Z
d	S )
ฺBlowfishr$   ้    iม  r
   c             C   s   t | || _d S )N)r   r	   )r   r	   r   r   r   r   S   s    zBlowfish.__init__c             C   s   t | jd S )Nr
   )r   r	   )r   r   r   r   r   V   s    zBlowfish.key_sizeN)r   r   r   r   r   r    ฺranger   r   r!   r   r   r   r   r   r&   L   s
   r&   c               @   s8   e Zd Zd ZdZeedddZdd Ze	dd Z
d	S )
ฺCAST5r$   ้(   ้   r
   c             C   s   t | || _d S )N)r   r	   )r   r	   r   r   r   r   b   s    zCAST5.__init__c             C   s   t | jd S )Nr
   )r   r	   )r   r   r   r   r   e   s    zCAST5.key_sizeN)r   r   r   r   r   r    r(   r   r   r!   r   r   r   r   r   r)   [   s
   r)   c            	   @   s<   e Zd ZdZedddddddd	gZd
d Zedd ZdS )ฺARC4ZRC4r*   ้8   r$   ้P   r   ้    r   r   c             C   s   t | || _d S )N)r   r	   )r   r	   r   r   r   r   o   s    zARC4.__init__c             C   s   t | jd S )Nr
   )r   r	   )r   r   r   r   r   r   s    zARC4.key_sizeN)	r   r   r   r   r    r   r   r!   r   r   r   r   r   r,   j   s   r,   c               @   s2   e Zd Zd ZdZedgZdd Zedd Z	dS )ฺIDEAr$   r   c             C   s   t | || _d S )N)r   r	   )r   r	   r   r   r   r   }   s    zIDEA.__init__c             C   s   t | jd S )Nr
   )r   r	   )r   r   r   r   r      s    zIDEA.key_sizeN)
r   r   r   r   r   r    r   r   r!   r   r   r   r   r   r0   w   s
   
r0   c               @   s2   e Zd Zd ZdZedgZdd Zedd Z	dS )ฺSEEDr   c             C   s   t | || _d S )N)r   r	   )r   r	   r   r   r   r      s    zSEED.__init__c             C   s   t | jd S )Nr
   )r   r	   )r   r   r   r   r      s    zSEED.key_sizeN)
r   r   r   r   r   r    r   r   r!   r   r   r   r   r   r1      s
   
r1   c               @   s8   e Zd Zd ZedgZdd ZejdZ	e
dd ZdS )ฺChaCha20r   c             C   s6   t | || _tjd| t|dkr,td|| _d S )Nฺnoncer%   z!nonce must be 128-bits (16 bytes))r   r	   r   r   r   r   ฺ_nonce)r   r	   r3   r   r   r   r      s
    zChaCha20.__init__r4   c             C   s   t | jd S )Nr
   )r   r	   )r   r   r   r   r   ฅ   s    zChaCha20.key_sizeN)r   r   r   r   r    r   r   r   Zread_only_propertyr3   r!   r   r   r   r   r   r2      s
   
	
r2   N)ฺ
__future__r   r   r   Zcryptographyr   Z&cryptography.hazmat.primitives.ciphersr   r   Z,cryptography.hazmat.primitives.ciphers.modesr   r   Zregister_interfaceฺobjectr   r"   r#   r&   r)   r,   r0   r1   r2   r   r   r   r   ฺ<module>   s:   





