o
     `                     @   s  d dl mZmZmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mZ eejG dd deZdd	 Zd
d Zdd Zdd Zdd ZG dd deZeeG dd deZeeG dd deZG dd de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)libc                   @   s(   e Zd Zejdd Zejdd ZdS )PaddingContextc                 C      dS )zR
        Pads the provided bytes and returns any available data as bytes.
        N )selfdatar
   r
   |home/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/hazmat/primitives/padding.pyupdate       zPaddingContext.updatec                 C   r	   )z6
        Finalize the padding, returns bytes.
        Nr
   r   r
   r
   r   finalize   r   zPaddingContext.finalizeN)__name__
__module____qualname__abcabstractmethodr   r   r
   r
   r
   r   r      s
    
r   c                 C   s<   d|   krdkst d t d| d dkrt dd S )Nr   i  z%block_size must be in range(0, 2041).   z#block_size must be a multiple of 8.)
ValueError)
block_sizer
   r
   r   _byte_padding_check   s   r   c                 C   sv   | d u rt dtd| | t|tr|nt|7 } t| |d  }| d ||d   }| ||d  d  } | |fS )NContext was already finalized.r   r   )r   r   _check_byteslike
isinstancebyteslenbuffer_r   r   Zfinished_blocksresultr
   r
   r   _byte_padding_update'   s   r#   c                 C   s,   | d u rt d|d t|  }| || S )Nr   r   )r   r   )r!   r   Z	paddingfnpad_sizer
   r
   r   _byte_padding_pad:   s   r%   c                 C   s   | d u rt dtd| | t|tr|nt|7 } tt| |d  d d}| d ||d   }| ||d  d  } | |fS )Nr   r   r      r   )r   r   r   r   r   maxr   r    r
   r
   r   _byte_unpadding_updateB   s   r(   c                 C   s\   | d u rt dt| |d krtd|| |d }|s!tdt| d}| d |  S )Nr   r   zInvalid padding bytes.)r   r   r   sixZ
indexbytes)r!   r   Zcheckfnvalidr$   r
   r
   r   _byte_unpadding_checkU   s   r,   c                   @   $   e Zd Zdd Zdd Zdd ZdS )PKCS7c                 C      t | || _d S Nr   r   r   r   r
   r
   r   __init__f      
zPKCS7.__init__c                 C   
   t | jS r0   )_PKCS7PaddingContextr   r   r
   r
   r   padderj      
zPKCS7.padderc                 C   r5   r0   )_PKCS7UnpaddingContextr   r   r
   r
   r   unpadderm   r8   zPKCS7.unpadderNr   r   r   r3   r7   r:   r
   r
   r
   r   r.   e       r.   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r6   c                 C      || _ d| _d S N    r   _bufferr2   r
   r
   r   r3   s      
z_PKCS7PaddingContext.__init__c                 C      t | j|| j\| _}|S r0   r#   rB   r   r   r   r"   r
   r
   r   r   x      

z_PKCS7PaddingContext.updatec                 C   s   t || S r0   r*   Zint2byter   sizer
   r
   r   _padding~   s   z_PKCS7PaddingContext._paddingc                 C      t | j| j| j}d | _|S r0   r%   rB   r   rK   r   r"   r
   r
   r   r      
   z_PKCS7PaddingContext.finalizeNr   r   r   r3   r   rK   r   r
   r
   r
   r   r6   q   
    r6   c                   @   r-   )r9   c                 C   r>   r?   rA   r2   r
   r
   r   r3      rC   z_PKCS7UnpaddingContext.__init__c                 C   rD   r0   r(   rB   r   rF   r
   r
   r   r      rG   z_PKCS7UnpaddingContext.updatec                 C      t | j| jtj}d | _|S r0   )r,   rB   r   r   Z Cryptography_check_pkcs7_paddingrN   r
   r
   r   r      rO   z_PKCS7UnpaddingContext.finalizeNr   r   r   r3   r   r   r
   r
   r
   r   r9          r9   c                   @   r-   )ANSIX923c                 C   r/   r0   r1   r2   r
   r
   r   r3      r4   zANSIX923.__init__c                 C   r5   r0   )_ANSIX923PaddingContextr   r   r
   r
   r   r7      r8   zANSIX923.padderc                 C   r5   r0   )_ANSIX923UnpaddingContextr   r   r
   r
   r   r:      r8   zANSIX923.unpadderNr;   r
   r
   r
   r   rV      r<   rV   c                   @   r=   )
rW   c                 C   r>   r?   rA   r2   r
   r
   r   r3      rC   z _ANSIX923PaddingContext.__init__c                 C   rD   r0   rE   rF   r
   r
   r   r      rG   z_ANSIX923PaddingContext.updatec                 C   s   t d|d  t | S )Nr   r&   rH   rI   r
   r
   r   rK      s   z _ANSIX923PaddingContext._paddingc                 C   rL   r0   rM   rN   r
   r
   r   r      rO   z _ANSIX923PaddingContext.finalizeNrP   r
   r
   r
   r   rW      rQ   rW   c                   @   r-   )rX   c                 C   r>   r?   rA   r2   r
   r
   r   r3      rC   z"_ANSIX923UnpaddingContext.__init__c                 C   rD   r0   rR   rF   r
   r
   r   r      rG   z _ANSIX923UnpaddingContext.updatec                 C   rS   r0   )r,   rB   r   r   Z#Cryptography_check_ansix923_paddingrN   r
   r
   r   r      s   z"_ANSIX923UnpaddingContext.finalizeNrT   r
   r
   r
   r   rX      rU   rX   )
__future__r   r   r   r   r*   cryptographyr   Zcryptography.exceptionsr   Z%cryptography.hazmat.bindings._paddingr   Zadd_metaclassABCMetaobjectr   r   r#   r%   r(   r,   r.   Zregister_interfacer6   r9   rV   rW   rX   r
   r
   r
   r   <module>   s.   
