o
    jC                     @   s   d dl mZmZ d dlmZ d dlZG dd dejZejZ	ej
ZejZejZejZejZejZG dd dZdd	 Zd
d ZedZedZedZedZdS )    )ABCabstractmethod)get_preferred_cipherNc                   @   sD   e Zd Ze Ze Ze Ze Ze Z	e Z
e ZdS )
cipherMODEN)__name__
__module____qualname__enumautoECBCBCCTRCCMCFBOFBGCM r   r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/unicrypto/symmetric.pyr      s    r   c                	   @   sl   e Zd ZejddfdedededefddZed	d
 Z	edd Z
edd Zedd Zedd ZdS )symmetricBASEN   keymodeIVsegment_sizec                 C   s*   || _ || _|| _|| _d | _|   d S N)r   r   r   r   _ciphersetup_cipher)selfr   r   r   r   r   r   r   __init__   s   zsymmetricBASE.__init__c                 C      t  r   NotImplementedErrorr   r   r   r   r      s   zsymmetricBASE.setup_cipherc                 C   r   r   r    r   datar   r   r   encrypt$      zsymmetricBASE.encryptc                 C   r   r   r    r"   r   r   r   decrypt(   r&   zsymmetricBASE.decryptc                 C   r   r   r    r#   r   r   r   update,   r&   zsymmetricBASE.updatec                 C   r   r   r    r"   r   r   r   digest0   r&   zsymmetricBASE.digest)r   r   r   r   r   bytesintr   r   r   r%   r'   r(   r)   r   r   r   r   r      s    $



r   c                 C   s  | d d } | ddt |   7 } | d d? d@ d> jddd}|| d d@ d> | d d	? d
@ B d> jddd7 }|| d d@ d> | d	 d? d@ B d> jddd7 }|| d	 d@ d> | d d? d@ B d> jddd7 }|| d d@ d> | d d? d@ B d> jddd7 }|| d d@ d	> | d d? d@ B d> jddd7 }|| d d
@ d> | d d? d@ B d> jddd7 }|| d d@ d> jddd7 }|S )N       r         big)	byteorder      ?                  )lento_bytes)r   sr   r   r   expand_DES_key5   s   222222r=   c                 C   s   | j dddd}|d |d |d |d |d |d |d g}|d |d |d |d |d |d |d g}tt|tt|fS )	Nr8   littleF)r1   signedr   r.   r3   r5   )r;   r=   r*   )baseKeyr   key1key2r   r   r   	deriveKeyD   s   ..rC   DESTDESAESRC4)abcr   r   	unicryptor   r	   Enumr   r   MODE_ECBr   MODE_CBCr   MODE_CTRr   MODE_CCMr   MODE_CFBr   MODE_OFBr   MODE_GCMr   r=   rC   rD   rE   rF   rG   r   r   r   r   <module>   s$    	