U
    g                     @   s(   d dgZ ddlT ddd Zd	ddZdS )
padunpad    )*pkcs7c                 C   sz   |t | |  }|dkr&t|| }nL|dkrHtd|d  t| }n*|dkrjtdtd|d   }ntd| | 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)Zdata_to_pad
block_sizestylepadding_lenpadding r   ;/tmp/pip-unpacked-wheel-_q8s9isk/Cryptodome/Util/Padding.pyr   '   s    c                 C   s4  t | }|dkrtd|| r(td|dkrt| d }|dk sR|t||krZtd|dkr| | d	 t|| krtd
n&| | d td|d  krtdnx|dkr|| td }|dk s|t||krtd|dkr&| d| d	 td|d  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   Zbordminr   rfind)Zpadded_datar   r   Z	pdata_lenr   r   r   r   r   C   s,    


,
N)r   )r   )__all__ZCryptodome.Util.py3compatr   r   r   r   r   r   <module>"   s   
