o
     `                     @   s   d dl mZmZmZ d dlZd dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d
d Zdd Zdd ZeeG dd deZeeG dd deZdS )    )absolute_importdivisionprint_functionN)utils)AlreadyFinalized
InvalidKeyUnsupportedAlgorithm_Reasons)_get_backend)HMACBackend)HashBackend)constant_timehasheshmac)KeyDerivationFunctionc                 C   s   t d| S )Nz>I)structpack)n r   home/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py_int_to_u32be   s   r   c                 C   s<   | j d }||krtd||d urtd| d S d S )Nl    z(Can not derive keys larger than {} bits.	otherinfo)digest_size
ValueErrorformatr   _check_bytes)	algorithmlengthr   
max_lengthr   r   r   _common_args_checks   s   
r   c                 C   s   t d|  dg}d}d}||kr<| }|t| ||  || ||  |t|d 7 }|d7 }||ksd|d | S )Nkey_material    r      )r   Z_check_byteslikeupdater   appendfinalizelenjoin)r    r   Zauxfnr   outputZoutlencounterhr   r   r   _concatkdf_derive%   s   

	r,   c                   @   .   e Zd Zd
ddZdd Zdd Zdd	 ZdS )ConcatKDFHashNc                 C   s\   t |}t||| || _|| _|| _| jd u rd| _t|ts&tdtj	|| _
d| _d S )Nr!   z.Backend object does not implement HashBackend.F)r
   r   
_algorithm_length
_otherinfo
isinstancer   r   r	   BACKEND_MISSING_INTERFACE_backend_used)selfr   r   r   backendr   r   r   __init__9   s   


zConcatKDFHash.__init__c                 C   s   t | j| jS N)r   ZHashr/   r4   r6   r   r   r   _hashK   s   zConcatKDFHash._hashc                 C   $   | j rtd| _ t|| j| j| jS NT)r5   r   r,   r0   r;   r1   r6   r    r   r   r   deriveN      zConcatKDFHash.derivec                 C      t | ||std S r9   r   Zbytes_eqr?   r   r6   r    Zexpected_keyr   r   r   verifyV      zConcatKDFHash.verifyr9   )__name__
__module____qualname__r8   r;   r?   rD   r   r   r   r   r.   7   s
    
r.   c                   @   r-   )ConcatKDFHMACNc                 C   s   t |}t||| || _|| _|| _| jd u rd| _|d u r%d|j }ntd| || _t	|t
s9tdtj|| _d| _d S )Nr!       saltz.Backend object does not implement HMACBackend.F)r
   r   r/   r0   r1   
block_sizer   r   _saltr2   r   r   r	   r3   r4   r5   )r6   r   r   rK   r   r7   r   r   r   r8   ]   s$   


zConcatKDFHMAC.__init__c                 C   s   t | j| j| jS r9   )r   ZHMACrM   r/   r4   r:   r   r   r   _hmacv   s   zConcatKDFHMAC._hmacc                 C   r<   r=   )r5   r   r,   r0   rN   r1   r>   r   r   r   r?   y   r@   zConcatKDFHMAC.derivec                 C   rA   r9   rB   rC   r   r   r   rD      rE   zConcatKDFHMAC.verifyr9   )rF   rG   rH   r8   rN   r?   rD   r   r   r   r   rI   [   s
    
rI   )
__future__r   r   r   r   cryptographyr   Zcryptography.exceptionsr   r   r   r	   Zcryptography.hazmat.backendsr
   Z'cryptography.hazmat.backends.interfacesr   r   Zcryptography.hazmat.primitivesr   r   r   Z"cryptography.hazmat.primitives.kdfr   r   r   r,   Zregister_interfaceobjectr.   rI   r   r   r   r   <module>   s    
#