U
    ÈZjÙ  ã                   @   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   úV/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/Crypto/Util/Padding.pyr   '   s    c                 C   s4  t | ƒ}|dkrtdƒ‚|| r(tdƒ‚|dkr®t| d ƒ}|dk sR|t||ƒkrZtdƒ‚|dkr†| | d	… t|ƒ| kr¬td
ƒ‚n&| | d… tdƒ|d  kr¬tdƒ‚nx|dk�r||  tdƒ¡ }|dk sà|t||ƒkrèt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Crypto.Util.py3compatr   r   r   r   r   r   Ú<module>"   s   
