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mZ d dlm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)constant_timehmac)KeyDerivationFunctionc                   @   .   e Zd Zd
ddZdd Zdd Zdd	 ZdS )HKDFNc                 C   sh   t |}t|tstdtj|| _|d u rd| jj }nt	d| || _
|| _t| j|||| _d S )N.Backend object does not implement HMACBackend.    salt)r
   
isinstancer   r   r	   BACKEND_MISSING_INTERFACE
_algorithmdigest_sizer   _check_bytes_salt_backend
HKDFExpand_hkdf_expand)self	algorithmlengthr   infobackend r"   }home/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py__init__   s   
zHKDF.__init__c                 C   s(   t j| j| j| jd}|| | S )Nr!   )r   HMACr   r   r   updatefinalize)r   key_materialhr"   r"   r#   _extract-   s   
zHKDF._extractc                 C   s   t d| | j| |S )Nr)   )r   _check_bytesliker   deriver+   r   r)   r"   r"   r#   r-   2   s   zHKDF.derivec                 C      t | ||std S Nr   Zbytes_eqr-   r   r   r)   Zexpected_keyr"   r"   r#   verify6      zHKDF.verifyr0   )__name__
__module____qualname__r$   r+   r-   r3   r"   r"   r"   r#   r      s
    
r   c                   @   r   )r   Nc                 C   sz   t |}t|tstdtj|| _|| _d|j }||kr%t	d
||| _|d u r/d}ntd| || _d| _d S )Nr      z*Can not derive keys larger than {} octets.    r    F)r
   r   r   r   r	   r   r   r   r   
ValueErrorformat_lengthr   r   _info_used)r   r   r   r    r!   
max_lengthr"   r"   r#   r$   =   s&   


zHKDFExpand.__init__c                 C   s   dg}d}| j jt|d  | jk rItj|| j | jd}||d  || j |t	
| ||  |d7 }| j jt|d  | jk sd|d | j S )Nr9      r%   )r   r   lenr<   r   r&   r   r'   r=   sixZint2byteappendr(   join)r   r)   outputcounterr*   r"   r"   r#   _expand[   s   zHKDFExpand._expandc                 C   s&   t d| | jrtd| _| |S )Nr)   T)r   r,   r>   r   rH   r.   r"   r"   r#   r-   i   s
   
zHKDFExpand.derivec                 C   r/   r0   r1   r2   r"   r"   r#   r3   q   r4   zHKDFExpand.verifyr0   )r5   r6   r7   r$   rH   r-   r3   r"   r"   r"   r#   r   ;   s
    
r   )
__future__r   r   r   rC   cryptographyr   Zcryptography.exceptionsr   r   r   r	   Zcryptography.hazmat.backendsr
   Z'cryptography.hazmat.backends.interfacesr   Zcryptography.hazmat.primitivesr   r   Z"cryptography.hazmat.primitives.kdfr   Zregister_interfaceobjectr   r   r"   r"   r"   r#   <module>   s   $