U
    ÒZj?  ã                   @   sP  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
eddœd	d
„Zeje eeejeef dœdd„Zeje eejegef edœdd„Zeje eeejeef dœdd„Zeje eejegef e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 )"é    N)Úutils)ÚAlreadyFinalized)Úcheck_ansix923_paddingÚcheck_pkcs7_paddingc                   @   s6   e Zd Zejeedœdd„ƒZejedœdd„ƒZdS )ÚPaddingContext©ÚdataÚreturnc                 C   s   dS )zR
        Pads the provided bytes and returns any available data as bytes.
        N© )Úselfr   r
   r
   úi/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/padding.pyÚupdate   s    zPaddingContext.update©r	   c                 C   s   dS )z6
        Finalize the padding, returns bytes.
        Nr
   ©r   r
   r
   r   Úfinalize   s    zPaddingContext.finalizeN)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodÚbytesr   r   r
   r
   r
   r   r      s   r   )Ú	metaclass)Ú
block_sizer	   c                 C   s6   d|   krdksn t dƒ‚| d dkr2t 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_r   r   r	   c                 C   sh   | d k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#   )r   r   Ú	paddingfnr	   c                 C   s,   | d krt dƒ‚|d t| ƒ }| ||ƒ S )Nr   r   )r   r    )r   r   r$   Úpad_sizer
   r
   r   Ú_byte_padding_pad9   s    r&   c                 C   sr   | d k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_updateE   s    r)   )r   r   Úcheckfnr	   c                 C   sR   | d k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   r*   Zvalidr%   r
   r
   r   Ú_byte_unpadding_checkW   s    r,   c                   @   s6   e Zd Zedœdd„Zedœdd„Zedœdd„Zd	S )
ÚPKCS7r   c                 C   s   t |ƒ || _d S ©N©r   r   ©r   r   r
   r
   r   Ú__init__l   s    zPKCS7.__init__r   c                 C   s
   t | jƒS r.   )Ú_PKCS7PaddingContextr   r   r
   r
   r   Úpadderp   s    zPKCS7.padderc                 C   s
   t | jƒS r.   )Ú_PKCS7UnpaddingContextr   r   r
   r
   r   Úunpadders   s    zPKCS7.unpadderN©r   r   r   Úintr1   r   r3   r5   r
   r
   r
   r   r-   k   s   r-   c                   @   sX   e Zd ZU eje ed< edœdd„Zeedœdd„Z	eedœd	d
„Z
edœdd„ZdS )r2   Ú_bufferr   c                 C   s   || _ d| _d S ©Nó    ©r   r8   r0   r
   r
   r   r1   z   s    z_PKCS7PaddingContext.__init__r   c                 C   s   t | j|| jƒ\| _}|S r.   ©r#   r8   r   ©r   r   r"   r
   r
   r   r      s      ÿ
z_PKCS7PaddingContext.update©Úsizer	   c                 C   s   t |gƒ| S r.   ©r   ©r   r?   r
   r
   r   Ú_padding…   s    z_PKCS7PaddingContext._paddingr   c                 C   s   t | j| j| jƒ}d | _|S r.   ©r&   r8   r   rB   ©r   r"   r
   r
   r   r   ˆ   s      ÿz_PKCS7PaddingContext.finalizeN©r   r   r   ÚtypingÚOptionalr   Ú__annotations__r7   r1   r   rB   r   r
   r
   r
   r   r2   w   s
   
r2   c                   @   sH   e Zd ZU eje ed< edœdd„Zeedœdd„Z	edœd	d
„Z
dS )r4   r8   r   c                 C   s   || _ d| _d S r9   r;   r0   r
   r
   r   r1   “   s    z_PKCS7UnpaddingContext.__init__r   c                 C   s   t | j|| jƒ\| _}|S r.   ©r)   r8   r   r=   r
   r
   r   r   ˜   s      ÿ
z_PKCS7UnpaddingContext.updater   c                 C   s   t | j| jtƒ}d | _|S r.   )r,   r8   r   r   rD   r
   r
   r   r   ž   s      ÿz_PKCS7UnpaddingContext.finalizeN©r   r   r   rF   rG   r   rH   r7   r1   r   r   r
   r
   r
   r   r4   �   s   
r4   c                   @   s6   e Zd Zedœdd„Zedœdd„Zedœdd„Zd	S )
ÚANSIX923r   c                 C   s   t |ƒ || _d S r.   r/   r0   r
   r
   r   r1   §   s    zANSIX923.__init__r   c                 C   s
   t | jƒS r.   )Ú_ANSIX923PaddingContextr   r   r
   r
   r   r3   «   s    zANSIX923.padderc                 C   s
   t | jƒS r.   )Ú_ANSIX923UnpaddingContextr   r   r
   r
   r   r5   ®   s    zANSIX923.unpadderNr6   r
   r
   r
   r   rK   ¦   s   rK   c                   @   sX   e Zd ZU eje ed< edœdd„Zeedœdd„Z	eedœd	d
„Z
edœdd„ZdS )rL   r8   r   c                 C   s   || _ d| _d S r9   r;   r0   r
   r
   r   r1   µ   s    z _ANSIX923PaddingContext.__init__r   c                 C   s   t | j|| jƒ\| _}|S r.   r<   r=   r
   r
   r   r   º   s      ÿ
z_ANSIX923PaddingContext.updater>   c                 C   s   t dgƒ|d  t |gƒ S )Nr   r'   r@   rA   r
   r
   r   rB   À   s    z _ANSIX923PaddingContext._paddingr   c                 C   s   t | j| j| jƒ}d | _|S r.   rC   rD   r
   r
   r   r   Ã   s      ÿz _ANSIX923PaddingContext.finalizeNrE   r
   r
   r
   r   rL   ²   s
   
rL   c                   @   sH   e Zd ZU eje ed< edœdd„Zeedœdd„Z	edœd	d
„Z
dS )rM   r8   r   c                 C   s   || _ d| _d S r9   r;   r0   r
   r
   r   r1   Î   s    z"_ANSIX923UnpaddingContext.__init__r   c                 C   s   t | j|| jƒ\| _}|S r.   rI   r=   r
   r
   r   r   Ó   s      ÿ
z _ANSIX923UnpaddingContext.updater   c                 C   s   t | j| jtƒ}d | _|S r.   )r,   r8   r   r   rD   r
   r
   r   r   Ù   s    ýz"_ANSIX923UnpaddingContext.finalizeNrJ   r
   r
   r
   r   rM   Ë   s   
rM   )r   rF   Zcryptographyr   Zcryptography.exceptionsr   Z"cryptography.hazmat.bindings._rustr   r   ÚABCMetar   r7   r   rG   r   ÚTupler#   ÚCallabler&   r)   r,   r-   r2   r4   rK   rL   rM   r
   r
   r
   r   Ú<module>   s@   	  þü  þü