aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2013-10-29 15:14:28 -0700
committerAlex Gaynor <alex.gaynor@gmail.com>2013-10-29 15:14:28 -0700
commitf108871b04c27c557f3e1a7fa3982c6d9d77d7fd (patch)
tree84f61706abf5e32f502bc6db352ddfaed23ea393
parent5787fb5dcde454404bfa9c2ec1a601bbafd62404 (diff)
downloadcryptography-f108871b04c27c557f3e1a7fa3982c6d9d77d7fd.tar.gz
cryptography-f108871b04c27c557f3e1a7fa3982c6d9d77d7fd.tar.bz2
cryptography-f108871b04c27c557f3e1a7fa3982c6d9d77d7fd.zip
Perform this comparison in a constan ttime fashion
-rw-r--r--cryptography/hazmat/primitives/padding.py7
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