a
    `mgD                     @  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ddZddd	ddddZdd	dddddZddd	ddddZdd	dd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                   @  s6   e Zd ZejdddddZejddddZdS )	PaddingContextbytesdatareturnc                 C  s   dS )zR
        Pads the provided bytes and returns any available data as bytes.
        N )selfr   r   r   _/var/www/html/idle/venv/lib64/python3.9/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abstractmethodr   r   r   r   r   r   r      s   r   )	metaclassintNone)
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    bytes | Noner	   ztuple[bytes, bytes])buffer_r   r   r   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(   ztyping.Callable[[int], bytes])r"   r   	paddingfnr   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    r.   ztyping.Callable[[bytes], int])r"   r   checkfnr   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   r/   Zvalidr*   r   r   r   _byte_unpadding_checkY   s    r1   c                   @  s6   e Zd ZddddZddddZddd	d
ZdS )PKCS7r   r   c                 C  s   t | || _d S Nr    r   r   r   r   r   r   __init__n   s    zPKCS7.__init__r   r   c                 C  s
   t | jS r3   )r   r   r   r   r   r   padderr   s    zPKCS7.padderc                 C  s
   t | jS r3   )r   r   r   r   r   r   unpadderu   s    zPKCS7.unpadderNr   r   r   r6   r7   r8   r   r   r   r   r2   m   s   r2   c                   @  s6   e Zd ZddddZddddZddd	d
ZdS )ANSIX923r   r   c                 C  s   t | || _d S r3   r4   r5   r   r   r   r6   ~   s    zANSIX923.__init__r   r   c                 C  s
   t | jS r3   )_ANSIX923PaddingContextr   r   r   r   r   r7      s    zANSIX923.padderc                 C  s
   t | jS r3   )_ANSIX923UnpaddingContextr   r   r   r   r   r8      s    zANSIX923.unpadderNr9   r   r   r   r   r:   }   s   r:   c                   @  sR   e Zd ZU ded< ddddZdddd	d
ZdddddZddddZdS )r;   r!   _bufferr   r   c                 C  s   || _ d| _d S N    r   r=   r5   r   r   r   r6      s    z _ANSIX923PaddingContext.__init__r	   r
   c                 C  s   t | j|| j\| _}|S r3   )r(   r=   r   r   r   r'   r   r   r   r      s    

z_ANSIX923PaddingContext.update)sizer   c                 C  s   t dg|d  t |g S )Nr   r,   )r	   )r   rB   r   r   r   _padding   s    z _ANSIX923PaddingContext._paddingr   c                 C  s   t | j| j| j}d | _|S r3   )r+   r=   r   rC   r   r'   r   r   r   r      s
    z _ANSIX923PaddingContext.finalizeN)r   r   r   __annotations__r6   r   rC   r   r   r   r   r   r;      s
   
r;   c                   @  sB   e Zd ZU ded< ddddZdddd	d
ZddddZdS )r<   r!   r=   r   r   c                 C  s   || _ d| _d S r>   r@   r5   r   r   r   r6      s    z"_ANSIX923UnpaddingContext.__init__r	   r
   c                 C  s   t | j|| j\| _}|S r3   )r.   r=   r   rA   r   r   r   r      s    

z _ANSIX923UnpaddingContext.updater   c                 C  s   t | j| jt}d | _|S r3   )r1   r=   r   r   rD   r   r   r   r      s    z"_ANSIX923UnpaddingContext.finalizeN)r   r   r   rE   r6   r   r   r   r   r   r   r<      s   
r<   )
__future__r   r   typingZcryptographyr   Zcryptography.exceptionsr   Z"cryptography.hazmat.bindings._rustr   r   r   ABCMetar   r    r(   r+   r.   r1   r2   registerr:   r;   r<   r   r   r   r   <module>   s"   

