o
    ÖèFh  ã                   @  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/loop/nvenv/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_updateF   s   r1   Ú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   r2   Úvalidr-   r   r   r   Ú_byte_unpadding_checkX   s   r6   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 r:   )Ú_PKCS7PaddingContextr   r   r   r   r   Úpadderq   ó   
zPKCS7.padderc                 C  r?   r:   )Ú_PKCS7UnpaddingContextr   r   r   r   r   Úunpaddert   rB   zPKCS7.unpadderN©r   r   ©r
   r   ©r   r   r   r=   rA   rD   r   r   r   r   r8   l   ó    

r8   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   rJ   r<   r   r   r   r=   {   ó   
z_PKCS7PaddingContext.__init__r   r	   r
   c                 C  ó   t | j|| jƒ\| _}|S r:   ©r*   rJ   r   ©r   r   r)   r   r   r   r   €   ó   

ÿz_PKCS7PaddingContext.updateÚsizec                 C  s   t |gƒ| S r:   ©r	   ©r   rT   r   r   r   Ú_padding†   s   z_PKCS7PaddingContext._paddingc                 C  ó   t | j| j| jƒ}d | _|S r:   ©r.   rJ   r   rW   ©r   r)   r   r   r   r   ‰   ó
   ÿz_PKCS7PaddingContext.finalizeNrE   r   ©rT   r   r
   r	   r   ©r   r   r   Ú__annotations__r=   r   rW   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 )rC   r"   rJ   r   r   c                 C  rK   rL   rN   r<   r   r   r   r=   ”   rO   z_PKCS7UnpaddingContext.__init__r   r	   r
   c                 C  rP   r:   ©r1   rJ   r   rR   r   r   r   r   ™   rS   z_PKCS7UnpaddingContext.updatec                 C  ó   t | j| jtƒ}d | _|S r:   )r6   rJ   r   r   rZ   r   r   r   r   Ÿ   s
   
ÿz_PKCS7UnpaddingContext.finalizeNrE   r   r   ©r   r   r   r^   r=   r   r   r   r   r   r   rC   ‘   ó
   
 

rC   c                   @  r7   )ÚANSIX923r   r   c                 C  r9   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   rD   ¯   rB   zANSIX923.unpadderNrE   rF   rG   r   r   r   r   re   §   rH   re   c                   @  rI   )rf   r"   rJ   r   r   c                 C  rK   rL   rN   r<   r   r   r   r=   ¶   rO   z _ANSIX923PaddingContext.__init__r   r	   r
   c                 C  rP   r:   rQ   rR   r   r   r   r   »   rS   z_ANSIX923PaddingContext.updaterT   c                 C  s   t dgƒ|d  t |gƒ S )Nr   r/   rU   rV   r   r   r   rW   Á   s   z _ANSIX923PaddingContext._paddingc                 C  rX   r:   rY   rZ   r   r   r   r   Ä   r[   z _ANSIX923PaddingContext.finalizeNrE   r   r\   r   r]   r   r   r   r   rf   ³   r_   rf   c                   @  r`   )rg   r"   rJ   r   r   c                 C  rK   rL   rN   r<   r   r   r   r=   Ï   rO   z"_ANSIX923UnpaddingContext.__init__r   r	   r
   c                 C  rP   r:   ra   rR   r   r   r   r   Ô   rS   z _ANSIX923UnpaddingContext.updatec                 C  rb   r:   )r6   rJ   r   r   rZ   r   r   r   r   Ú   s   ýz"_ANSIX923UnpaddingContext.finalizeNrE   r   r   rc   r   r   r   r   rg   Ì   rd   rg   )r   r   r
   r   )r!   r"   r   r	   r   r   r
   r#   )r!   r"   r   r   r+   r,   r
   r	   )r!   r"   r   r   r2   r3   r
   r	   )Ú
__future__r   r   ÚtypingÚcryptographyr   Úcryptography.exceptionsr   Ú"cryptography.hazmat.bindings._rustr   r   ÚABCMetar   r    r*   r.   r1   r6   r8   r@   rC   re   rf   rg   r   r   r   r   Ú<module>   s$   




