
    +hb                    \   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ej                        Zdd	Z	 	 	 	 	 	 	 	 dd
Z	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZ G d d      Z G d de      Z G d de      Z G d d      Z G d de      Z G d de      Zy)    )annotationsN)utils)AlreadyFinalized)check_ansix923_paddingcheck_pkcs7_paddingc                  X    e Zd Zej                  dd       Zej                  dd       Zy)PaddingContextc                     y)zR
        Pads the provided bytes and returns any available data as bytes.
        N )selfdatas     Y/var/www/html/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/padding.pyupdatezPaddingContext.update           c                     y)z6
        Finalize the padding, returns bytes.
        Nr   r   s    r   finalizezPaddingContext.finalize   r   r   Nr   bytesreturnr   r   r   )__name__
__module____qualname__abcabstractmethodr   r   r   r   r   r	   r	      s4     
 	 r   r	   )	metaclassc                n    d| cxk  rdk  st        d       t        d      | dz  dk7  rt        d      y )Nr   i  z%block_size must be in range(0, 2041).   z#block_size must be a multiple of 8.)
ValueError)
block_sizes    r   _byte_padding_checkr#       sI    #t#@AA $@AAA~>?? r   c                    | t        d      t        j                  d|       | t        |      z  } t	        |       |dz  z  }| d ||dz  z   }| ||dz  z  d  } | |fS )NContext was already finalized.r   r    )r   r   _check_bytesliker   lenbuffer_r   r"   finished_blocksresults        r   _byte_padding_updater,   (   s{     ?@@	64(uT{G'lzQ7O:*/:;Foq9;<GF?r   c                T    | t        d      |dz  t        |       z
  }|  ||      z   S )Nr%   r    )r   r'   )r)   r"   	paddingfnpad_sizes       r   _byte_padding_padr0   :   s7    
 ?@@QW-HYx(((r   c                    | t        d      t        j                  d|       | t        |      z  } t	        t        |       |dz  z  dz
  d      }| d ||dz  z   }| ||dz  z  d  } | |fS )Nr%   r   r       r   )r   r   r&   r   maxr'   r(   s        r   _byte_unpadding_updater4   F   s     ?@@	64(uT{G#g,:?;a?CO:*/:;Foq9;<GF?r   c                    | t        d      t        |       |dz  k7  rt        d       ||       }|st        d      | d   }| d |  S )Nr%   r    zInvalid padding bytes.)r   r'   r!   )r)   r"   checkfnvalidr/   s        r   _byte_unpadding_checkr9   X   sb    
 ?@@
7|zQ&122GE122r{H:XIr   c                  $    e Zd ZddZddZddZy)PKCS7c                (    t        |       || _        y Nr#   r"   r   r"   s     r   __init__zPKCS7.__init__m       J'$r   c                ,    t        | j                        S r=   )_PKCS7PaddingContextr"   r   s    r   padderzPKCS7.padderq   s    #DOO44r   c                ,    t        | j                        S r=   )_PKCS7UnpaddingContextr"   r   s    r   unpadderzPKCS7.unpaddert   s    %doo66r   Nr"   intr   r	   r   r   r   r@   rD   rG   r   r   r   r;   r;   l   s    %57r   r;   c                  8    e Zd ZU ded<   ddZd	dZd
dZddZy)rC   typing.Optional[bytes]_bufferc                     || _         d| _        y Nr   r"   rN   r?   s     r   r@   z_PKCS7PaddingContext.__init__{       $r   c                X    t        | j                  || j                        \  | _        }|S r=   r,   rN   r"   r   r   r+   s      r   r   z_PKCS7PaddingContext.update   )    3LL$ 
f r   c                     t        |g      |z  S r=   r   r   sizes     r   _paddingz_PKCS7PaddingContext._padding   s    dV}t##r   c                j    t        | j                  | j                  | j                        }d | _        |S r=   r0   rN   r"   r[   r   r+   s     r   r   z_PKCS7PaddingContext.finalize   -    "LL$//4==
 r   NrH   r   rZ   rI   r   r   r   r   r   r   __annotations__r@   r   r[   r   r   r   r   rC   rC   x   s    ##
$r   rC   c                  0    e Zd ZU ded<   ddZddZd	dZy)
rF   rM   rN   c                     || _         d| _        y rP   rQ   r?   s     r   r@   z_PKCS7UnpaddingContext.__init__   rR   r   c                X    t        | j                  || j                        \  | _        }|S r=   r4   rN   r"   rU   s      r   r   z_PKCS7UnpaddingContext.update   )    5LL$ 
f r   c                ^    t        | j                  | j                  t              }d | _        |S r=   )r9   rN   r"   r   r^   s     r   r   z_PKCS7UnpaddingContext.finalize   s*    &LL$//+>
 r   NrH   r   r   r   r   r   rb   r@   r   r   r   r   r   rF   rF      s    ##
r   rF   c                  $    e Zd ZddZddZddZy)ANSIX923c                (    t        |       || _        y r=   r>   r?   s     r   r@   zANSIX923.__init__   rA   r   c                ,    t        | j                        S r=   )_ANSIX923PaddingContextr"   r   s    r   rD   zANSIX923.padder   s    &t77r   c                ,    t        | j                        S r=   )_ANSIX923UnpaddingContextr"   r   s    r   rG   zANSIX923.unpadder   s    (99r   NrH   rJ   rK   r   r   r   rk   rk      s    %8:r   rk   c                  8    e Zd ZU ded<   ddZd	dZd
dZddZy)rn   rM   rN   c                     || _         d| _        y rP   rQ   r?   s     r   r@   z _ANSIX923PaddingContext.__init__   rR   r   c                X    t        | j                  || j                        \  | _        }|S r=   rT   rU   s      r   r   z_ANSIX923PaddingContext.update   rV   r   c                @    t        dg      |dz
  z  t        |g      z   S )Nr   r2   rX   rY   s     r   r[   z _ANSIX923PaddingContext._padding   s"    aSzTAX&v66r   c                j    t        | j                  | j                  | j                        }d | _        |S r=   r]   r^   s     r   r   z _ANSIX923PaddingContext.finalize   r_   r   NrH   r   r`   r   ra   r   r   r   rn   rn      s    ##
7r   rn   c                  0    e Zd ZU ded<   ddZddZd	dZy)
rp   rM   rN   c                     || _         d| _        y rP   rQ   r?   s     r   r@   z"_ANSIX923UnpaddingContext.__init__   rR   r   c                X    t        | j                  || j                        \  | _        }|S r=   rf   rU   s      r   r   z _ANSIX923UnpaddingContext.update   rg   r   c                ^    t        | j                  | j                  t              }d | _        |S r=   )r9   rN   r"   r   r^   s     r   r   z"_ANSIX923UnpaddingContext.finalize   s+    &LLOO"

 r   NrH   r   r   ri   r   r   r   rp   rp      s    ##
r   rp   )r"   rI   r   None)r)   rM   r   r   r"   rI   r   ztyping.Tuple[bytes, bytes])r)   rM   r"   rI   r.   ztyping.Callable[[int], bytes]r   r   )r)   rM   r"   rI   r7   ztyping.Callable[[bytes], int]r   r   )
__future__r   r   typingcryptographyr   cryptography.exceptionsr   "cryptography.hazmat.bindings._rustr   r   ABCMetar	   r#   r,   r0   r4   r9   r;   rC   rF   rk   rn   rp   r   r   r   <module>r      s  
 # 
   4s{{ @#+0>A$	)#	)	) -	) 		)#+0>A$# + 	(	7 	7> 2^ ,	: 	:n 2 r   