diff options
Diffstat (limited to 'lib/Crypto/Util/Padding.py')
-rw-r--r-- | lib/Crypto/Util/Padding.py | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/lib/Crypto/Util/Padding.py b/lib/Crypto/Util/Padding.py index b8498a3..e05b79a 100644 --- a/lib/Crypto/Util/Padding.py +++ b/lib/Crypto/Util/Padding.py @@ -27,17 +27,14 @@ This module provides minimal support for adding and removing standard padding from data. """ -__all__ = [ 'PaddingError', 'pad', 'unpad' ] +__all__ = [ 'ValueError', 'pad', 'unpad' ] from Crypto.Util.py3compat import * -class PaddingError(ValueError): - """Exception raised when padding is incorrect and cannot be removed.""" - pass def pad(data_to_pad, block_size, style='pkcs7'): """Apply standard padding. - + :Parameters: data_to_pad : byte string The data that needs to be padded. @@ -63,7 +60,7 @@ def pad(data_to_pad, block_size, style='pkcs7'): def unpad(padded_data, block_size, style='pkcs7'): """Remove standard padding. - + :Parameters: padded_data : byte string A piece of data with padding that needs to be stripped. @@ -74,29 +71,29 @@ def unpad(padded_data, block_size, style='pkcs7'): Padding algorithm. It can be *'pkcs7'* (default), *'iso7816'* or *'x923'*. :Return: Data without padding. - :Raises PaddingError: + :Raises ValueError: if the padding is incorrect. """ pdata_len = len(padded_data) if pdata_len % block_size: - raise PaddingError("Input data is not padded") + raise ValueError("Input data is not padded") if style in ('pkcs7', 'x923'): padding_len = bord(padded_data[-1]) if padding_len<1 or padding_len>min(block_size, pdata_len): - raise PaddingError("Padding is incorrect.") + raise ValueError("Padding is incorrect.") if style == 'pkcs7': if padded_data[-padding_len:]!=bchr(padding_len)*padding_len: - raise PaddingError("PKCS#7 padding is incorrect.") + raise ValueError("PKCS#7 padding is incorrect.") else: if padded_data[-padding_len:-1]!=bchr(0)*(padding_len-1): - raise PaddingError("ANSI X.923 padding is incorrect.") + raise ValueError("ANSI X.923 padding is incorrect.") elif style == 'iso7816': padding_len = pdata_len - padded_data.rfind(bchr(128)) if padding_len<1 or padding_len>min(block_size, pdata_len): - raise PaddingError("Padding is incorrect.") + raise ValueError("Padding is incorrect.") if padding_len>1 and padded_data[1-padding_len:]!=bchr(0)*(padding_len-1): - raise PaddingError("ISO 7816-4 padding is incorrect.") + raise ValueError("ISO 7816-4 padding is incorrect.") else: raise ValueError("Unknown padding style") return padded_data[:-padding_len] |