U +Mb@s(ddgZddlTdddZd ddZdS) padunpad)*pkcs7cCsz|t||}|dkr&t||}nL|dkrHtd|dt|}n*|dkrjtdtd|d}ntd||S)aApply 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. rx923riso7816Unknown padding style)lenbchr ValueError)Z data_to_pad block_sizestyle padding_lenpaddingr:/tmp/pip-target-t616c12r/lib/python/Crypto/Util/Padding.pyr'scCs4t|}|dkrtd||r(td|dkrt|d}|dksR|t||krZtd|dkr|| d t||krtd n&|| dtd|dkrtd nx|d kr||td }|dks|t||krtd|dkr&|d|d td|dkr&tdntd|d | S)aRemove 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. rz$Zero-length input cannot be unpaddedzInput data is not padded)rrrzPadding is incorrect.rNzPKCS#7 padding is incorrect.z ANSI X.923 padding is incorrect.rr z ISO 7816-4 padding is incorrect.r )r r Zbordminr rfind)Z padded_datarrZ pdata_lenrrrrrCs,    , N)r)r)__all__ZCrypto.Util.py3compatrrrrrr"s