
    #|h                     &    d dgZ ddl ddZddZy)padunpad    )*c                    |t        |       |z  z
  }|dk(  rt        |      |z  }| |z   S |dk(  r"t        d      |dz
  z  t        |      z   }| |z   S |dk(  r"t        d      t        d      |dz
  z  z   }| |z   S t        d      )a  Apply standard padding.

    Args:
      data_to_pad (byte string):
        The data that needs to be padded.
      block_size (integer):
        The block boundary to use for padding. The output length is guaranteed
        to be a multiple of :data:`block_size`.
      style (string):
        Padding algorithm. It can be *'pkcs7'* (default), *'iso7816'* or *'x923'*.

    Return:
      byte string : the original data with the appropriate padding added at the end.
    pkcs7x923r      iso7816   Unknown padding style)lenbchr
ValueError)data_to_pad
block_sizestylepadding_lenpaddings        R/var/www/html/test/engine/venv/lib/python3.12/site-packages/Crypto/Util/Padding.pyr   r   '   s      s;/*<<K{#k1    
&q';q=)D,==    
)	s)d1gQ77    011    c                 B   t        |       }|dk(  rt        d      ||z  rt        d      |dv rut        | d         }|dk  s|t        ||      kD  rt        d      |dk(  r | | d	 t	        |      |z  k7  rt        d
      | | d t	        d      |dz
  z  k7  rt        d      |dk(  rf|| j                  t	        d            z
  }|dk  s|t        ||      kD  rt        d      |dkD  r0| d|z
  d	 t	        d      |dz
  z  k7  rt        d      t        d      | d	|  S )a  Remove standard padding.

    Args:
      padded_data (byte string):
        A piece of data with padding that needs to be stripped.
      block_size (integer):
        The block boundary to use for padding. The input length
        must be a multiple of :data:`block_size`.
      style (string):
        Padding algorithm. It can be *'pkcs7'* (default), *'iso7816'* or *'x923'*.
    Return:
        byte string : data without padding.
    Raises:
      ValueError: if the padding is incorrect.
    r   z$Zero-length input cannot be unpaddedzInput data is not padded)r   r   r	   zPadding is incorrect.r   NzPKCS#7 padding is incorrect.z ANSI X.923 padding is incorrect.r
   r   z ISO 7816-4 padding is incorrect.r   )r   r   bordminr   rfind)padded_datar   r   	pdata_lenr   s        r   r   r   E   sV   " K IA~?@@:344!!;r?+?kC
I,FF455GK<=)T+->{-JJ !?@@K<+tAwA/FF !CDD	)	+"3"3DI">>?kC
I,FF455?{1[=>:d1g{ST}>UU?@@011}%%r   N)r   )__all__Crypto.Util.py3compatr   r    r   r   <module>r!      s   D 7
 #!<1&r   