o
     `                     @   sx   d dl mZmZmZ d dlZd dlmZmZ d dlm	Z	 d dl
mZ G dd deZG dd	 d	eZG d
d deZdS )    )absolute_importdivisionprint_functionN)
exceptionsutils)aead)backendc                   @   <   e Zd ZdZdd Zedd Zdd Zdd	 Zd
d Z	dS )ChaCha20Poly1305        c                 C   sD   t | stdtjjtd| t|dkrt	d|| _
d S )Nz<ChaCha20Poly1305 is not supported by this version of OpenSSLkey    z&ChaCha20Poly1305 key must be 32 bytes.)r   Zaead_cipher_supportedr   ZUnsupportedAlgorithmZ_ReasonsZUNSUPPORTED_CIPHERr   _check_byteslikelen
ValueError_keyselfr    r   home/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/hazmat/primitives/ciphers/aead.py__init__   s   

zChaCha20Poly1305.__init__c                 C   s
   t dS )Nr   )osurandom)clsr   r   r   generate_key   s   
zChaCha20Poly1305.generate_keyc                 C   R   |d u rd}t || jkst || jkrtd| ||| tt| |||dS N    1Data or associated data too long. Max 2**32 bytes   r   	_MAX_SIZEOverflowError_check_paramsr   _encryptr   r   noncedataassociated_datar   r   r   encrypt"      zChaCha20Poly1305.encryptc                 C   .   |d u rd}|  ||| tt| |||dS Nr   r   r#   r   _decryptr   r%   r   r   r   decrypt/      zChaCha20Poly1305.decryptc                 C   s<   t d| t d| t d| t|dkrtdd S )Nr&   r'   r(      zNonce must be 12 bytesr   r   _check_bytesr   r   r%   r   r   r   r#   6   s   zChaCha20Poly1305._check_paramsN
__name__
__module____qualname__r!   r   classmethodr   r)   r/   r#   r   r   r   r   r
      s    
r
   c                   @   sF   e Zd ZdZdddZedd Zdd Zd	d
 Zdd Z	dd Z
dS )AESCCMr   r   c                 C   sR   t d| t|dvrtd|| _t|tstd|dvr$td|| _d S )Nr   r      r   z)AESCCM key must be 128, 192, or 256 bits.ztag_length must be an integer)         
   r1      r   zInvalid tag_length)	r   r   r   r   r   
isinstanceint	TypeError_tag_length)r   r   Z
tag_lengthr   r   r   r   A   s   

zAESCCM.__init__c                 C   0   t |ts	td|dvrtdt|d S Nzbit_length must be an integer)         z#bit_length must be 128, 192, or 256r>   rA   rB   rC   r   r   r   r   
bit_lengthr   r   r   r   O   
   
zAESCCM.generate_keyc                 C   sd   |d u rd}t || jkst || jkrtd| ||| | |t | tt| |||| jS )Nr   r   )	r   r!   r"   r#   _validate_lengthsr   r$   r   rD   r%   r   r   r   r)   Y   s   zAESCCM.encryptc                 C   s0   |d u rd}|  ||| tt| |||| jS )Nr   )r#   r   r.   r   rD   r%   r   r   r   r/   i   s   zAESCCM.decryptc                 C   s(   dt | }dd|  |k rtdd S )N      r>   zData too long for nonce)r   r   )r   r&   Zdata_lenZl_valr   r   r   rN   r   s   zAESCCM._validate_lengthsc                 C   sP   t d| t d| t d| dt|  kr!dks&td tdd S )Nr&   r'   r(         z$Nonce must be between 7 and 13 bytesr2   r%   r   r   r   r#   y   s   zAESCCM._check_paramsN)r   )r5   r6   r7   r!   r   r8   r   r)   r/   rN   r#   r   r   r   r   r9   >   s    

		r9   c                   @   r	   )AESGCMr   c                 C   s*   t d| t|dvrtd|| _d S )Nr   r:   z)AESGCM key must be 128, 192, or 256 bits.)r   r   r   r   r   r   r   r   r   r      s   
zAESGCM.__init__c                 C   rE   rF   rJ   rK   r   r   r   r      rM   zAESGCM.generate_keyc                 C   r   r   r    r%   r   r   r   r)      r*   zAESGCM.encryptc                 C   r+   r,   r-   r%   r   r   r   r/      r0   zAESGCM.decryptc                 C   sH   t d| t d| t d| t|dk st|dkr"tdd S )Nr&   r'   r(   r>   rG   z%Nonce must be between 8 and 128 bytesr2   r%   r   r   r   r#      s   zAESGCM._check_paramsNr4   r   r   r   r   rS      s    
	rS   )
__future__r   r   r   r   cryptographyr   r   Z$cryptography.hazmat.backends.opensslr   Z,cryptography.hazmat.backends.openssl.backendr   objectr
   r9   rS   r   r   r   r   <module>   s   0C