diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2013-10-29 14:10:37 -0700 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2013-10-29 14:10:37 -0700 |
commit | 25f96e511f1e1bf70393cdd34c83f57a4b45d458 (patch) | |
tree | c03e7b60e64cbee35672dba9ee9a61c92456a4c8 /cryptography | |
parent | f0bec9c3efe7f6def1b9b4ae53f0278e7cfbadba (diff) | |
download | cryptography-25f96e511f1e1bf70393cdd34c83f57a4b45d458.tar.gz cryptography-25f96e511f1e1bf70393cdd34c83f57a4b45d458.tar.bz2 cryptography-25f96e511f1e1bf70393cdd34c83f57a4b45d458.zip |
Optimize + test cases
Diffstat (limited to 'cryptography')
-rw-r--r-- | cryptography/hazmat/primitives/padding.py | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/cryptography/hazmat/primitives/padding.py b/cryptography/hazmat/primitives/padding.py index 27a1face..5c7c7e91 100644 --- a/cryptography/hazmat/primitives/padding.py +++ b/cryptography/hazmat/primitives/padding.py @@ -48,11 +48,12 @@ class _PKCS7PaddingContext(object): raise ValueError("Context was already finalized") self._buffer += data - result = b"" - while len(self._buffer) >= self.block_size // 8: - result += self._buffer[:self.block_size // 8] - self._buffer = self._buffer[self.block_size // 8:] + finished_blocks = len(self._buffer) // (self.block_size // 8) + + result = self._buffer[:finished_blocks * (self.block_size // 8)] + self._buffer = self._buffer[finished_blocks * (self.block_size // 8):] + return result def finalize(self): @@ -79,10 +80,15 @@ class _PKCS7UnpaddingContext(object): raise ValueError("Context was already finalized") self._buffer += data - result = b"" - while len(self._buffer) >= 2 * (self.block_size // 8): - result += self._buffer[:self.block_size // 8] - self._buffer = self._buffer[self.block_size // 8:] + + finished_blocks = max( + len(self._buffer) // (self.block_size // 8) - 1, + 0 + ) + + result = self._buffer[:finished_blocks * (self.block_size // 8)] + self._buffer = self._buffer[finished_blocks * (self.block_size // 8):] + return result def finalize(self): |