U
    [e1                     @   sR  d dl Z d dlZd dlmZ d dlmZ d dl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e
ge
f edddZG dd deZG dd de	ZG dd de	ZG dd deZG dd de	ZG d d! d!e	ZdS )"    N)utils)AlreadyFinalized)libc                   @   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	   h/var/www/html/services/stratfitenv/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_pad6   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_updateB   s    r(   )r   r   checkfnr   c                 C   sX   | d krt dt| |d kr(td|| |d }|sBtd| d }| d |  S )Nr   r   zInvalid padding bytes.)r   r   r   )r   r   r)   validr$   r	   r	   r   _byte_unpadding_checkT   s    r,   c                   @   s*   e Zd ZedddZdd Zdd ZdS )	PKCS7r   c                 C   s   t | || _d S Nr   r   r
   r   r	   r	   r   __init__i   s    zPKCS7.__init__c                 C   s
   t | jS r.   )_PKCS7PaddingContextr   r   r	   r	   r   padderm   s    zPKCS7.padderc                 C   s
   t | jS r.   )_PKCS7UnpaddingContextr   r   r	   r	   r   unpadderp   s    zPKCS7.unpadderN)r   r   r   intr1   r3   r5   r	   r	   r	   r   r-   h   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   r7   r0   r	   r	   r   r1   w   s    z_PKCS7PaddingContext.__init__r   c                 C   s   t | j|| j\| _}|S r.   r"   r7   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%   r7   r   rA   r
   r!   r	   r	   r   r      s      z_PKCS7PaddingContext.finalizeNr   r   r   typingOptionalr   __annotations__r6   r1   r   rA   r   r	   r	   r	   r   r2   t   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   r7   r   c                 C   s   || _ d| _d S r8   r:   r0   r	   r	   r   r1      s    z_PKCS7UnpaddingContext.__init__r   c                 C   s   t | j|| j\| _}|S r.   r(   r7   r   r<   r	   r	   r   r      s      
z_PKCS7UnpaddingContext.updater   c                 C   s   t | j| jtj}d | _|S r.   )r,   r7   r   r   Z Cryptography_check_pkcs7_paddingrC   r	   r	   r   r      s      z_PKCS7UnpaddingContext.finalizeNr   r   r   rE   rF   r   rG   r6   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.unpadderN)r   r   r   r6   r1   r   r3   r5   r	   r	   r	   r   rJ      s   rJ   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 )rK   r7   r   c                 C   s   || _ d| _d S r8   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?   r@   r	   r	   r   rA      s    z _ANSIX923PaddingContext._paddingr   c                 C   s   t | j| j| j}d | _|S r.   rB   rC   r	   r	   r   r      s      z _ANSIX923PaddingContext.finalizeNrD   r	   r	   r	   r   rK      s
   
rK   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 )rL   r7   r   c                 C   s   || _ d| _d S r8   r:   r0   r	   r	   r   r1      s    z"_ANSIX923UnpaddingContext.__init__r   c                 C   s   t | j|| j\| _}|S r.   rH   r<   r	   r	   r   r      s      
z _ANSIX923UnpaddingContext.updater   c                 C   s   t | j| jtj}d | _|S r.   )r,   r7   r   r   Z#Cryptography_check_ansix923_paddingrC   r	   r	   r   r      s    z"_ANSIX923UnpaddingContext.finalizeNrI   r	   r	   r	   r   rL      s   
rL   )r   rE   Zcryptographyr   Zcryptography.exceptionsr   Z%cryptography.hazmat.bindings._paddingr   ABCMetar   r6   r   rF   r   Tupler"   Callabler%   r(   r,   objectr-   r2   r4   rJ   rK   rL   r	   r	   r	   r   <module>   s@   	    