o
    j                     @   s   d dl mZ d dlZdd Zedkrmd dlZdZedZdZ	d	Z
eeejeZee	 ee
Ze Zee  ee  ee
e	eed
\ZZed ee  ee  eekrged dS ed dS dS )    )AESNc                 C   s  d}|dvrt d| |rdt|  krdks"t d t ddt| }tj|tjtd|d	 | d
}|d}|| }	t| }
t|}tj|tjd| d}d|dk d|d d   |d	  }td|| |
	|d }d}|dkr|dk rd}n|dk rd}d}nd}d}||	|d7 }t
dt|  || }|d|t||   7 }| d||
|    }|| | }t
dt|  ||dd  }tdd t||D }|	|fS )N   )         
         r   z@Parameter 'mac_len' must be even and in the range 4..16 (not %d)      z<Length of parameter 'nonce' must be in the range 7..13 bytes   B   )keymodenonces                       )r   r   iv@   r   r      big    i   l        s   r   s   zLength of block 0: zLength of MAC input ic                 S   s   g | ]\}}||A qS  r   ).0abr   r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/unicrypto/backends/pure/external/AES/ccm.py
<listcomp>1   s    z!aesCCMEncrypt.<locals>.<listcomp>)
ValueErrorlenr   newMODE_CTRstructpackencryptMODE_CBCto_bytesprintbyteszip)	plaintextaadr   r   macLen	blockSizeqciphers0cpLenaadLenmacflagsb0assocLenEncodedencsize	aadPadded
ptxtPaddedmacDatattagr   r   r   aesCCMEncrypt   sF   "

$r>   __main__s      s(   s   r   otherzEncryption OK!zEncryption fail)Cryptodome.Cipherr   r"   r>   __name__osEncryptionKeyurandomr   hdrmsg_datar    MODE_CCMr/   updater$   enc_datadigestsigr'   hexr1   r<   r   r   r   r   <module>   s.    .


