
    Ug                    l   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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ej+                  e	        G d d      Z G d de      Z G d de      Zy)    )annotationsN)utils)AlreadyFinalized)PKCS7PaddingContext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     d/var/www/django-tutorial/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_padr1   ;   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_updater5   G   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validr0   s        r   _byte_unpadding_checkr:   Y   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__n       J'$r   c                ,    t        | j                        S r>   )r   r#   r   s    r   padderzPKCS7.padderr   s    "4??33r   c                ,    t        | j                        S r>   )_PKCS7UnpaddingContextr#   r   s    r   unpadderzPKCS7.unpadderu   s    %doo66r   Nr#   intr   r
   r   r   r   rA   rD   rG   r   r   r   r<   r<   m   s    %47r   r<   c                  0    e Zd ZU ded<   ddZddZd	dZy)
rF   bytes | None_bufferc                     || _         d| _        y Nr   r#   rN   r@   s     r   rA   z_PKCS7UnpaddingContext.__init__|       $r   c                X    t        | j                  || j                        \  | _        }|S r>   r5   rN   r#   r   r   r,   s      r   r   z_PKCS7UnpaddingContext.update   )    5LL$ 
f r   c                ^    t        | j                  | j                  t              }d | _        |S r>   )r:   rN   r#   r   r   r,   s     r   r   z_PKCS7UnpaddingContext.finalize   s*    &LL$//+>
 r   NrH   r   r   r   r   r   __annotations__rA   r   r   r   r   r   rF   rF   y   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   rA   zANSIX923.__init__   rB   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   r\   r\      s    %8:r   r\   c                  8    e Zd ZU ded<   ddZd	dZd
dZddZy)r_   rM   rN   c                     || _         d| _        y rP   rQ   r@   s     r   rA   z _ANSIX923PaddingContext.__init__   rR   r   c                X    t        | j                  || j                        \  | _        }|S r>   )r-   rN   r#   rU   s      r   r   z_ANSIX923PaddingContext.update   s)    3LL$ 
f r   c                @    t        dg      |dz
  z  t        |g      z   S )Nr   r3   )r   )r   sizes     r   _paddingz _ANSIX923PaddingContext._padding   s"    aSzTAX&v66r   c                j    t        | j                  | j                  | j                        }d | _        |S r>   )r1   rN   r#   rg   rX   s     r   r   z _ANSIX923PaddingContext.finalize   s-    "LL$//4==
 r   NrH   r   )rf   rI   r   r   r   )r   r   r   rZ   rA   r   rg   r   r   r   r   r_   r_      s    
7r   r_   c                  0    e Zd ZU ded<   ddZddZd	dZy)
ra   rM   rN   c                     || _         d| _        y rP   rQ   r@   s     r   rA   z"_ANSIX923UnpaddingContext.__init__   rR   r   c                X    t        | j                  || j                        \  | _        }|S r>   rT   rU   s      r   r   z _ANSIX923UnpaddingContext.update   rV   r   c                ^    t        | j                  | j                  t              }d | _        |S r>   )r:   rN   r#   r   rX   s     r   r   z"_ANSIX923UnpaddingContext.finalize   s+    &LLOO"

 r   NrH   r   r   rY   r   r   r   ra   ra      s    
r   ra   )r#   rI   r   None)r*   rM   r   r   r#   rI   r   ztuple[bytes, bytes])r*   rM   r#   rI   r/   ztyping.Callable[[int], bytes]r   r   )r*   rM   r#   rI   r8   ztyping.Callable[[bytes], int]r   r   )
__future__r   r   typingcryptographyr   cryptography.exceptionsr   "cryptography.hazmat.bindings._rustr   r   r   ABCMetar
   r$   r-   r1   r5   r:   r<   rF   registerr\   r_   ra   r   r   r   <module>ru      s  
 # 
   4 s{{ @!&47$	)	)	) -	) 		)!&47$ + 	(	7 	7^ ,   + ,	: 	:n 2 r   