o
    CZh                     @  s   d dl 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	m
Z
 G dd dejdZd,ddZd-ddZd.ddZd-ddZd/ddZG d d! d!ZG d"d# d#eZG d$d% d%eZG d&d' d'ZG d(d) d)eZG d*d+ d+eZdS )0    )annotationsN)utils)AlreadyFinalized)check_ansix923_paddingcheck_pkcs7_paddingc                   @  s,   e Zd Zejd	ddZejd
ddZdS )PaddingContextdatabytesreturnc                 C     dS )zR
        Pads the provided bytes and returns any available data as bytes.
        N )selfr   r   r   ]/var/www/html/lang_env/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r   r	   r
   r	   r
   r	   )__name__
__module____qualname__abcabstractmethodr   r   r   r   r   r   r      s
    r   )	metaclass
block_sizeintr
   Nonec                 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)r   r   r   r   _byte_padding_check    s   r    buffer_bytes | Noner   r	   tuple[bytes, bytes]c                 C  sh   | d u rt dtd| | t|7 } t| |d  }| d ||d   }| ||d  d  } | |fS )NContext was already finalized.r   r   )r   r   _check_bytesliker	   lenr!   r   r   Zfinished_blocksresultr   r   r   _byte_padding_update(   s   r)   	paddingfntyping.Callable[[int], bytes]c                 C  s,   | d u rt d|d t|  }| || S )Nr$   r   )r   r&   )r!   r   r*   pad_sizer   r   r   _byte_padding_pad:   s   r-   c                 C  sr   | d u rt dtd| | t|7 } tt| |d  d d}| d ||d   }| ||d  d  } | |fS )Nr$   r   r      r   )r   r   r%   r	   maxr&   r'   r   r   r   _byte_unpadding_updateF   s   r0   checkfntyping.Callable[[bytes], int]c                 C  sR   | d u rt dt| |d krtd|| }|std| d }| d |  S )Nr$   r   zInvalid padding bytes.)r   r&   r   )r!   r   r1   Zvalidr,   r   r   r   _byte_unpadding_checkX   s   r4   c                   @  *   e Zd ZdddZdddZdd	d
ZdS )PKCS7r   r   c                 C     t | || _d S Nr    r   r   r   r   r   r   __init__m      
zPKCS7.__init__r
   r   c                 C  
   t | jS r8   )_PKCS7PaddingContextr   r   r   r   r   padderq      
zPKCS7.padderc                 C  r=   r8   )_PKCS7UnpaddingContextr   r   r   r   r   unpaddert   r@   zPKCS7.unpadderNr   r   r
   r   r   r   r   r;   r?   rB   r   r   r   r   r6   l       

r6   c                   @  >   e Zd ZU ded< dddZdd
dZdddZdddZdS )r>   r"   _bufferr   r   c                 C     || _ d| _d S N    r   rH   r:   r   r   r   r;   {      
z_PKCS7PaddingContext.__init__r   r	   r
   c                 C     t | j|| j\| _}|S r8   r)   rH   r   r   r   r(   r   r   r   r         

z_PKCS7PaddingContext.updatesizec                 C  s   t |g| S r8   r	   r   rR   r   r   r   _padding   s   z_PKCS7PaddingContext._paddingc                 C     t | j| j| j}d | _|S r8   r-   rH   r   rU   r   r(   r   r   r   r      
   z_PKCS7PaddingContext.finalizeNrC   r   rR   r   r
   r	   r   r   r   r   __annotations__r;   r   rU   r   r   r   r   r   r>   x      
 


r>   c                   @  4   e Zd ZU ded< dddZdd
dZdddZdS )rA   r"   rH   r   r   c                 C  rI   rJ   rL   r:   r   r   r   r;      rM   z_PKCS7UnpaddingContext.__init__r   r	   r
   c                 C  rN   r8   r0   rH   r   rP   r   r   r   r      rQ   z_PKCS7UnpaddingContext.updatec                 C     t | j| jt}d | _|S r8   )r4   rH   r   r   rX   r   r   r   r      s
   
z_PKCS7UnpaddingContext.finalizeNrC   r   r   r   r   r   r\   r;   r   r   r   r   r   r   rA      
   
 

rA   c                   @  r5   )ANSIX923r   r   c                 C  r7   r8   r9   r:   r   r   r   r;      r<   zANSIX923.__init__r
   r   c                 C  r=   r8   )_ANSIX923PaddingContextr   r   r   r   r   r?      r@   zANSIX923.padderc                 C  r=   r8   )_ANSIX923UnpaddingContextr   r   r   r   r   rB      r@   zANSIX923.unpadderNrC   rD   rE   r   r   r   r   rc      rF   rc   c                   @  rG   )rd   r"   rH   r   r   c                 C  rI   rJ   rL   r:   r   r   r   r;      rM   z _ANSIX923PaddingContext.__init__r   r	   r
   c                 C  rN   r8   rO   rP   r   r   r   r      rQ   z_ANSIX923PaddingContext.updaterR   c                 C  s   t dg|d  t |g S )Nr   r.   rS   rT   r   r   r   rU      s   z _ANSIX923PaddingContext._paddingc                 C  rV   r8   rW   rX   r   r   r   r      rY   z _ANSIX923PaddingContext.finalizeNrC   r   rZ   r   r[   r   r   r   r   rd      r]   rd   c                   @  r^   )re   r"   rH   r   r   c                 C  rI   rJ   rL   r:   r   r   r   r;      rM   z"_ANSIX923UnpaddingContext.__init__r   r	   r
   c                 C  rN   r8   r_   rP   r   r   r   r      rQ   z _ANSIX923UnpaddingContext.updatec                 C  r`   r8   )r4   rH   r   r   rX   r   r   r   r      s   z"_ANSIX923UnpaddingContext.finalizeNrC   r   r   ra   r   r   r   r   re      rb   re   )r   r   r
   r   )r!   r"   r   r	   r   r   r
   r#   )r!   r"   r   r   r*   r+   r
   r	   )r!   r"   r   r   r1   r2   r
   r	   )
__future__r   r   typingZcryptographyr   Zcryptography.exceptionsr   Z"cryptography.hazmat.bindings._rustr   r   ABCMetar   r    r)   r-   r0   r4   r6   r>   rA   rc   rd   re   r   r   r   r   <module>   s$   




