diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2013-10-29 15:14:28 -0700 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2013-10-29 15:14:28 -0700 |
commit | f108871b04c27c557f3e1a7fa3982c6d9d77d7fd (patch) | |
tree | 84f61706abf5e32f502bc6db352ddfaed23ea393 /cryptography | |
parent | 5787fb5dcde454404bfa9c2ec1a601bbafd62404 (diff) | |
download | cryptography-f108871b04c27c557f3e1a7fa3982c6d9d77d7fd.tar.gz cryptography-f108871b04c27c557f3e1a7fa3982c6d9d77d7fd.tar.bz2 cryptography-f108871b04c27c557f3e1a7fa3982c6d9d77d7fd.zip |
Perform this comparison in a constan ttime fashion
Diffstat (limited to 'cryptography')
-rw-r--r-- | cryptography/hazmat/primitives/padding.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/cryptography/hazmat/primitives/padding.py b/cryptography/hazmat/primitives/padding.py index 86ea26e3..ddcadd89 100644 --- a/cryptography/hazmat/primitives/padding.py +++ b/cryptography/hazmat/primitives/padding.py @@ -109,9 +109,12 @@ class _PKCS7UnpaddingContext(object): if pad_size > self.block_size // 8: raise ValueError("Invalid padding bytes") + mismatch = 0 for b in six.iterbytes(self._buffer[-pad_size:]): - if b != pad_size: - raise ValueError("Invalid padding bytes") + mismatch |= b ^ pad_size + + if mismatch != 0: + raise ValueError("Invalid padding bytes") res = self._buffer[:-pad_size] self._buffer = None |