U
    *}f                     @   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eeeG dd deZeeeeG d	d
 d
eZeeeeG dd deZeeeeG dd deZeeeeG dd deZeeG dd deZeeG dd deZeeeeG dd deZeeee
G dd deZdS )    )absolute_importdivisionprint_function)utils)BlockCipherAlgorithmCipherAlgorithm)ModeWithNoncec                 C   s<   t d| t|d | jkr8td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-x36vw73o/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 r   r   r   r   r   r   r   4   s    zCamellia.__init__c                 C   s   t | jd S r   r   r    r   r   r   r!   7   s    zCamellia.key_sizeNr"   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   C   s
    zTripleDES.__init__c                 C   s   t | jd S r   r   r    r   r   r   r!   J   s    zTripleDES.key_sizeNr"   r   r   r   r   r*   <   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 r   r   r   r   r   r   r   V   s    zBlowfish.__init__c                 C   s   t | jd S r   r   r    r   r   r   r!   Y   s    zBlowfish.key_sizeNr#   r$   r%   r   r&   r'   ranger   r   r(   r!   r   r   r   r   r-   O   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 r   r   r   r   r   r   r   e   s    zCAST5.__init__c                 C   s   t | jd S r   r   r    r   r   r   r!   h   s    zCAST5.key_sizeNr/   r   r   r   r   r1   ^   s   r1   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RC4r2   8   r+   P   r      r   r   c                 C   s   t | || _d S r   r   r   r   r   r   r   r   s    zARC4.__init__c                 C   s   t | jd S r   r   r    r   r   r   r!   u   s    zARC4.key_sizeN)	r#   r$   r%   r   r'   r   r   r(   r!   r   r   r   r   r4   m   s
   r4   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 r   r   r   r   r   r   r      s    zIDEA.__init__c                 C   s   t | jd S r   r   r    r   r   r   r!      s    zIDEA.key_sizeNr"   r   r   r   r   r8   z   s   
r8   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 r   r   r   r   r   r   r      s    zSEED.__init__c                 C   s   t | jd S r   r   r    r   r   r   r!      s    zSEED.key_sizeNr"   r   r   r   r   r9      s   
r9   c                   @   s8   e Zd Zd ZedgZdd ZedZ	e
dd ZdS )ChaCha20r   c                 C   s6   t | || _t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	   r;   r   r   r   r      s
    zChaCha20.__init__r<   c                 C   s   t | jd S r   r   r    r   r   r   r!      s    zChaCha20.key_sizeN)r#   r$   r%   r   r'   r   r   r   Zread_only_propertyr;   r(   r!   r   r   r   r   r:      s   
	
r:   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-   r1   r4   r8   r9   r:   r   r   r   r   <module>   s:   