o
    þÑÐb4  ã                   @   sò   d dl mZ d dlmZmZ d dlmZ dededef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G dd„ deeƒZdS )é    )Úutils)ÚBlockCipherAlgorithmÚCipherAlgorithm)ÚModeWithNonceÚ	algorithmÚkeyÚreturnc                 C   s<   t  d|¡ t|ƒd | jvrtd t|ƒd | j¡ƒ‚|S )Nr   é   zInvalid key size ({}) for {}.)r   Ú_check_byteslikeÚlenÚ	key_sizesÚ
ValueErrorÚformatÚname)r   r   © r   úp/var/www/secure340b-portal/env/lib/python3.10/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.pyÚ_verify_key_size   s   ÿÿr   c                   @   s@   e Zd Zd ZdZeg d¢ƒZdefdd„Ze	de
fdd„ƒZd	S )
ÚAESé€   )r   éÀ   é   i   r   c                 C   ó   t | |ƒ| _d S ©N©r   r   ©Úselfr   r   r   r   Ú__init__"   ó   zAES.__init__r   c                 C   ó   t | jƒd S ©Nr	   ©r   r   ©r   r   r   r   Úkey_size%   ó   zAES.key_sizeN©Ú__name__Ú
__module__Ú__qualname__r   Ú
block_sizeÚ	frozensetr   Úbytesr   ÚpropertyÚintr"   r   r   r   r   r      s    r   c                   @   ó@   e Zd ZdZdZeg d¢ƒZdefdd„Ze	de
fdd	„ƒZd
S )ÚCamelliaZcamelliar   )r   r   r   r   c                 C   r   r   r   r   r   r   r   r   /   r   zCamellia.__init__r   c                 C   r   r   r    r!   r   r   r   r"   2   r#   zCamellia.key_sizeNr$   r   r   r   r   r.   *   s    r.   c                   @   r-   )Ú	TripleDESZ3DESé@   )r0   r   r   r   c                 C   sF   t |ƒdkr||| 7 }nt |ƒdkr||d d… 7 }t| |ƒ| _d S )Nr	   é   )r   r   r   r   r   r   r   r   <   s
   zTripleDES.__init__r   c                 C   r   r   r    r!   r   r   r   r"   C   r#   zTripleDES.key_sizeNr$   r   r   r   r   r/   7   s    r/   c                   @   óD   e Zd Zd ZdZeedddƒƒZdefdd„Z	e
defd	d
„ƒZdS )ÚBlowfishr0   é    iÁ  r	   r   c                 C   r   r   r   r   r   r   r   r   M   r   zBlowfish.__init__r   c                 C   r   r   r    r!   r   r   r   r"   P   r#   zBlowfish.key_sizeN©r%   r&   r'   r   r(   r)   Úranger   r*   r   r+   r,   r"   r   r   r   r   r3   H   ó    r3   c                   @   r2   )ÚCAST5r0   é(   é   r	   r   c                 C   r   r   r   r   r   r   r   r   Z   r   zCAST5.__init__r   c                 C   r   r   r    r!   r   r   r   r"   ]   r#   zCAST5.key_sizeNr5   r   r   r   r   r8   U   r7   r8   c                   @   s<   e Zd ZdZeg d¢ƒZdefdd„Zede	fdd„ƒZ
d	S )
ÚARC4ZRC4)r9   é8   r0   éP   r   é    r   r   r   c                 C   r   r   r   r   r   r   r   r   f   r   zARC4.__init__r   c                 C   r   r   r    r!   r   r   r   r"   i   r#   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defdd„Ze	de
fdd„ƒZd	S )
ÚIDEAr0   r   r   c                 C   r   r   r   r   r   r   r   r   s   r   zIDEA.__init__r   c                 C   r   r   r    r!   r   r   r   r"   v   r#   zIDEA.key_sizeNr$   r   r   r   r   r?   n   ó    
r?   c                   @   ó>   e Zd Zd ZdZedgƒZdefdd„Ze	de
fdd„ƒZdS )	ÚSEEDr   r   c                 C   r   r   r   r   r   r   r   r   €   r   zSEED.__init__r   c                 C   r   r   r    r!   r   r   r   r"   ƒ   r#   zSEED.key_sizeNr$   r   r   r   r   rB   {   r@   rB   c                   @   sP   e Zd Zd ZedgƒZdedefdd„Zedefdd„ƒZ	ede
fd	d
„ƒZdS )ÚChaCha20r   r   Únoncec                 C   s6   t | |ƒ| _t d|¡ t|ƒdkrtdƒ‚|| _d S )NrD   r1   z!nonce must be 128-bits (16 bytes))r   r   r   r
   r   r   Ú_nonce)r   r   rD   r   r   r   r   Œ   s
   
zChaCha20.__init__r   c                 C   s   | j S r   )rE   r!   r   r   r   rD   •   s   zChaCha20.noncec                 C   r   r   r    r!   r   r   r   r"   ™   r#   zChaCha20.key_sizeN)r%   r&   r'   r   r)   r   r*   r   r+   rD   r,   r"   r   r   r   r   rC   ˆ   s    
	rC   c                   @   rA   )	ÚSM4r   r   c                 C   r   r   r   r   r   r   r   r   £   r   zSM4.__init__r   c                 C   r   r   r    r!   r   r   r   r"   ¦   r#   zSM4.key_sizeNr$   r   r   r   r   rF   ž   r@   rF   N)Zcryptographyr   Z&cryptography.hazmat.primitives.ciphersr   r   Z,cryptography.hazmat.primitives.ciphers.modesr   r*   r   r   r.   r/   r3   r8   r;   r?   rB   rC   rF   r   r   r   r   Ú<module>   s   