o
    Ìn~bÝ  ã                   @   s(   d dgZ ddlT ddd „Zddd„ZdS )	ÚpadÚunpadé    )Ú*Úpkcs7c                 C   s„   |t | ƒ|  }|dkrt|ƒ| }| | S |dkr*tdƒ|d  t|ƒ }| | S |dkr>tdƒtdƒ|d   }| | 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.
    r   Úx923r   é   Úiso7816é€   úUnknown padding style)ÚlenÚbchrÚ
ValueError)Zdata_to_padÚ
block_sizeÚstyleÚpadding_lenÚpadding© r   úB/usr/local/lib/python3.10/dist-packages/Cryptodome/Util/Padding.pyr   '   s   úüÿc                 C   s.  t | ƒ}|dkrtdƒ‚|| rtdƒ‚|dv rWt| d ƒ}|dk s)|t||ƒkr-tdƒ‚|dkrC| | d	… t|ƒ| krBtd
ƒ‚nM| | d… tdƒ|d  krVtdƒ‚n9|dkrŒ||  tdƒ¡ }|dk so|t||ƒkrst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   s2   ÿÿ(€N)r   )Ú__all__ZCryptodome.Util.py3compatr   r   r   r   r   r   Ú<module>   s   !
