o
    VhD                     @  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
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ee	 ee
 G d"d# d#ZG d$d% d%eZG d&d' d'eZdS ),    )annotationsN)utils)AlreadyFinalized)PKCS7PaddingContextPKCS7UnpaddingContextcheck_ansix923_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   z/var/www/html/construction_image-detection-poc/venv/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   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_updateG   s   r2   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   r3   validr.   r   r   r   _byte_unpadding_checkY   s   r7   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__n      
zPKCS7.__init__r   r   c                 C  
   t | jS r;   )r   r   r   r   r   r   padderr      
zPKCS7.padderc                 C  r@   r;   )r   r   r   r   r   r   unpadderu   rB   zPKCS7.unpadderNr   r   r   r   r   r   r   r>   rA   rC   r   r   r   r   r9   m       

r9   c                   @  r8   )ANSIX923r   r   c                 C  r:   r;   r<   r=   r   r   r   r>   ~   r?   zANSIX923.__init__r   r   c                 C  r@   r;   )_ANSIX923PaddingContextr   r   r   r   r   rA      rB   zANSIX923.padderc                 C  r@   r;   )_ANSIX923UnpaddingContextr   r   r   r   r   rC      rB   zANSIX923.unpadderNrD   rE   rF   r   r   r   r   rH   }   rG   rH   c                   @  s>   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 )rI   r#   _bufferr   r   c                 C     || _ d| _d S N    r   rK   r=   r   r   r   r>         
z _ANSIX923PaddingContext.__init__r	   r
   r   c                 C     t | j|| j\| _}|S r;   )r+   rK   r   r   r	   r*   r   r   r   r         

z_ANSIX923PaddingContext.updatesizec                 C  s   t dg|d  t |g S )Nr   r0   )r
   )r   rT   r   r   r   _padding   s   z _ANSIX923PaddingContext._paddingc                 C  s   t | j| j| j}d | _|S r;   )r/   rK   r   rU   r   r*   r   r   r   r      s
   z _ANSIX923PaddingContext.finalizeNrD   r   )rT   r   r   r
   r   )r   r   r   __annotations__r>   r   rU   r   r   r   r   r   rI      s   
 


rI   c                   @  s4   e Zd ZU ded< dddZdd
dZdddZdS )rJ   r#   rK   r   r   c                 C  rL   rM   rO   r=   r   r   r   r>      rP   z"_ANSIX923UnpaddingContext.__init__r	   r
   r   c                 C  rQ   r;   )r2   rK   r   rR   r   r   r   r      rS   z _ANSIX923UnpaddingContext.updatec                 C  s   t | j| jt}d | _|S r;   )r7   rK   r   r   rV   r   r   r   r      s   z"_ANSIX923UnpaddingContext.finalizeNrD   r   r   )r   r   r   rW   r>   r   r   r   r   r   r   rJ      s
   
 

rJ   )r   r   r   r   )r"   r#   r	   r
   r   r   r   r$   )r"   r#   r   r   r,   r-   r   r
   )r"   r#   r   r   r3   r4   r   r
   )
__future__r   r   typingcryptographyr   cryptography.exceptionsr   "cryptography.hazmat.bindings._rustr   r   r   ABCMetar   r!   r+   r/   r2   r7   r9   registerrH   rI   rJ   r   r   r   r   <module>   s$   






