B
    ๓ฑ๔`๕  ใ               @   sฺ   d dl mZ d dlmZmZ d dlmZ eedddZG dd deeZ	G d	d
 d
eeZ
G dd deeZG dd deeZG dd deeZG dd deZG dd deZG dd deeZG dd deeZdS )้    )ฺutils)ฺBlockCipherAlgorithmฺCipherAlgorithm)ฺModeWithNonce)ฺ	algorithmฺkeyc             C   s<   t  d|ก t|d | jkr8td t|d | jก|S )Nr   ้   zInvalid key size ({}) for {}.)r   ฺ_check_byteslikeฺlenฺ	key_sizesฺ
ValueErrorฺformatฺname)r   r   ฉ r   ๚`/home/dcms/DCMS/lib/python3.7/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.pyฺ_verify_key_size   s    r   c               @   sD   e Zd Zd ZdZeddddgZedddZe	e
dd	d
ZdS )ฺAES้   ้ภ   ้   i   )r   c             C   s   t | || _d S )N)r   r   )ฺselfr   r   r   r   ฺ__init__"   s    zAES.__init__)ฺreturnc             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   ฺbytesr   ฺpropertyฺintr   r   r   r   r   r      s   r   c               @   sB   e Zd ZdZdZedddgZedddZe	e
dd	d
ZdS )ฺCamelliaZcamelliar   r   r   )r   c             C   s   t | || _d S )N)r   r   )r   r   r   r   r   r   /   s    zCamellia.__init__)r   c             C   s   t | jd S )Nr   )r
   r   )r   r   r   r   r   2   s    zCamellia.key_sizeN)r   r   r   r   r   r   r   r   r   r    r!   r   r   r   r   r   r"   *   s   r"   c               @   sB   e Zd ZdZdZedddgZedddZe	e
dd	d
ZdS )ฺ	TripleDESZ3DES้@   r   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__)r   c             C   s   t | jd S )Nr   )r
   r   )r   r   r   r   r   C   s    zTripleDES.key_sizeN)r   r   r   r   r   r   r   r   r   r    r!   r   r   r   r   r   r#   7   s   r#   c               @   sD   e Zd Zd ZdZeedddZedddZ	e
edd	d
ZdS )ฺBlowfishr$   ้    iม  r   )r   c             C   s   t | || _d S )N)r   r   )r   r   r   r   r   r   M   s    zBlowfish.__init__)r   c             C   s   t | jd S )Nr   )r
   r   )r   r   r   r   r   P   s    zBlowfish.key_sizeN)r   r   r   r   r   r   ฺranger   r   r   r    r!   r   r   r   r   r   r&   H   s   r&   c               @   sD   e Zd Zd ZdZeedddZedddZ	e
edd	d
ZdS )ฺCAST5r$   ้(   ้   r   )r   c             C   s   t | || _d S )N)r   r   )r   r   r   r   r   r   Z   s    zCAST5.__init__)r   c             C   s   t | jd S )Nr   )r
   r   )r   r   r   r   r   ]   s    zCAST5.key_sizeN)r   r   r   r   r   r   r(   r   r   r   r    r!   r   r   r   r   r   r)   U   s   r)   c            	   @   sH   e Zd ZdZedddddddd	gZed
ddZee	dddZ
dS )ฺARC4ZRC4r*   ้8   r$   ้P   r   ้    r   r   )r   c             C   s   t | || _d S )N)r   r   )r   r   r   r   r   r   f   s    zARC4.__init__)r   c             C   s   t | jd S )Nr   )r
   r   )r   r   r   r   r   i   s    zARC4.key_sizeN)r   r   r   r   r   r   r   r   r    r!   r   r   r   r   r   r,   b   s
   r,   c               @   s>   e Zd Zd ZdZedgZedddZe	e
dddZd	S )
ฺIDEAr$   r   )r   c             C   s   t | || _d S )N)r   r   )r   r   r   r   r   r   s   s    zIDEA.__init__)r   c             C   s   t | jd S )Nr   )r
   r   )r   r   r   r   r   v   s    zIDEA.key_sizeN)r   r   r   r   r   r   r   r   r   r    r!   r   r   r   r   r   r0   n   s   
r0   c               @   s>   e Zd Zd ZdZedgZedddZe	e
dddZdS )	ฺSEEDr   )r   c             C   s   t | || _d S )N)r   r   )r   r   r   r   r   r      s    zSEED.__init__)r   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   r   r   r1   {   s   
r1   c               @   sF   e Zd Zd ZedgZeedddZe 	dกZ
eedddZd	S )
ฺChaCha20r   )r   ฺnoncec             C   s6   t | || _t d|ก t|dkr,td|| _d S )Nr3   r%   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   )r   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   r   Zread_only_propertyr3   r    r!   r   r   r   r   r   r2      s   
	
r2   N)Zcryptographyr   Z&cryptography.hazmat.primitives.ciphersr   r   Z,cryptography.hazmat.primitives.ciphers.modesr   r   r   r   r"   r#   r&   r)   r,   r0   r1   r2   r   r   r   r   ฺ<module>   s   