
    ÿig                     &    d dgZ ddlT ddZddZdS )	padunpad    )*pkcs7c                 6   |t          |           |z  z
  }|dk    rt          |          |z  }ng|dk    r&t          d          |dz
  z  t          |          z   }n;|dk    r&t          d          t          d          |dz
  z  z   }nt          d          | |z   S )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.
    r   x923r      iso7816   Unknown padding style)lenbchr
ValueError)data_to_pad
block_sizestylepadding_lenpaddings        S/var/www/html/afkarena/venv/lib/python3.11/site-packages/Cryptodome/Util/Padding.pyr   r   '   s      S--j88K{##K/	&q'';q=)D,=,==	)		s))d1gg{1}550111      c                    t          |           }|dk    rt          d          ||z  rt          d          |dv rt          | d                   }|dk     s|t          ||          k    rt          d          |dk    r/| | d	         t	          |          |z  k    rt          d
          n| | d         t	          d          |dz
  z  k    rt          d          n|dk    r||                     t	          d                    z
  }|dk     s|t          ||          k    rt          d          |dk    r3| d|z
  d	         t	          d          |dz
  z  k    rt          d          n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   C   s   " K  IA~~?@@@: 53444!!!;r?++q==KJ	(B(BBB4555GK<==)4+<+<[+HHH !?@@@ I K<?+T!WWk!m-DDD !CDDD E	)		+"3"3DII">">>q==KJ	(B(BBB4555q==[;8$q'';q=:QQQ?@@@0111}}%%r   N)r   )__all__Cryptodome.Util.py3compatr   r    r   r   <module>r!      sP   D 7
 ' ' ' '! ! ! !8(& (& (& (& (& (&r   