o
    j                     @   s`   d dl mZmZ d dlmZmZmZ d dlmZ d dl	m
Z
 d dl mZmZ G dd deZdS )    )symmetricBASE
cipherMODE)Cipher
algorithmsmodes)padding)default_backendc                   @   s<   e Zd ZejdddfddZdd ZdddZdd	d
ZdS )AESN   c                 C   s$   d | _ d | _tj| ||||d d S )N)segment_size)	encryptor	decryptorr   __init__)selfkeymodeIVpadr    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/unicrypto/backends/cryptography/AES.pyr      s   zAES.__init__c                 C   sF  | j tjkrt | _ny| j tjkrt| j| _nk| j tjkr(t| j| _n]| j tjkrH| jdkr;t	| j| _nJ| jdkrGt| j| _n=| j tj
krVt
| j| _n/| j tjkrmddlm} || j| jd| _d S | j tjkrddlm} || j| _d S tdt| j}t|| jt d| _| j | _| j | _d S )	N   r
   r   )AESCCM)
tag_length)AESGCMzUnknown cipher mode!)r   backend)r   r   ECBr   r   CBCCTRCFBr   CFB8OFBCCM+cryptography.hazmat.primitives.ciphers.aeadr   r   _cipherGCMr   	Exceptionr   r	   r   r   r   r   )r   r   r   	algorithmr   r   r   setup_cipher   s6   

zAES.setup_cipherc                 C   sN   | j tjks| j tjkr!| j| j||}|d d |dd  fS | j|S )Ni)	r   r   r!   r$   r#   encryptr   r   update)r   dataaadresr   r   r   r(   -   s   zAES.encryptc                 C   s:   | j tjks| j tjkr| j| j|| |S | j|S N)	r   r   r!   r$   r#   decryptr   r   r)   )r   r*   r+   macr   r   r   r.   4   s   zAES.decryptr-   )NN)	__name__
__module____qualname__r   r   r   r'   r(   r.   r   r   r   r   r	      s
    
r	   N)unicrypto.symmetricr   r   &cryptography.hazmat.primitives.ciphersr   r   r   cryptography.hazmat.primitivesr   cryptography.hazmat.backendsr   r	   r   r   r   r   <module>   s    