a
    còfŽ  ã                   @  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G d d!„ d!eƒZ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Úcheck_ansix923_paddingÚcheck_pkcs7_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   úc/home/httpd/docs/test/DocsMgr/lib/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   )Ú_PKCS7UnpaddingContextr   r   r   r   r   Úunpadderu   s    zPKCS7.unpadderN©r   r   r   r6   r7   r9   r   r   r   r   r2   m   s   r2   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 )r8   r!   Ú_bufferr   r   c                 C  s   || _ d| _d S ©Nó    ©r   r;   r5   r   r   r   r6   |   s    z_PKCS7UnpaddingContext.__init__r	   r
   c                 C  s   t | j|| jƒ\| _}|S r3   ©r.   r;   r   ©r   r   r'   r   r   r   r   �   s    
ÿ
z_PKCS7UnpaddingContext.updater   c                 C  s   t | j| jtƒ}d | _|S r3   )r1   r;   r   r   ©r   r'   r   r   r   r   ‡   s
    
ÿz_PKCS7UnpaddingContext.finalizeN©r   r   r   Ú__annotations__r6   r   r   r   r   r   r   r8   y   s   
r8   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   r9   š   s    zANSIX923.unpadderNr:   r   r   r   r   rD   ’   s   rD   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 )rE   r!   r;   r   r   c                 C  s   || _ d| _d S 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   ¦   s    
ÿ
z_ANSIX923PaddingContext.update)Úsizer   c                 C  s   t dgƒ|d  t |gƒ S )Nr   r,   )r	   )r   rG   r   r   r   Ú_padding¬   s    z _ANSIX923PaddingContext._paddingr   c                 C  s   t | j| j| jƒ}d | _|S r3   )r+   r;   r   rH   rA   r   r   r   r   ¯   s
    ÿz _ANSIX923PaddingContext.finalizeN)r   r   r   rC   r6   r   rH   r   r   r   r   r   rE   ž   s
   
rE   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 )rF   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   r   r   r   ¿   s    
ÿ
z _ANSIX923UnpaddingContext.updater   c                 C  s   t | j| jtƒ}d | _|S r3   )r1   r;   r   r   rA   r   r   r   r   Å   s    ýz"_ANSIX923UnpaddingContext.finalizeNrB   r   r   r   r   rF   ·   s   
rF   )Ú
__future__r   r   ÚtypingZcryptographyr   Zcryptography.exceptionsr   Z"cryptography.hazmat.bindings._rustr   r   r   ÚABCMetar   r    r(   r+   r.   r1   r2   r8   ÚregisterrD   rE   rF   r   r   r   r   Ú<module>   s"   
