aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2015-12-24 10:27:18 -0500
committerAlex Gaynor <alex.gaynor@gmail.com>2015-12-24 10:27:18 -0500
commita1476217655be21dde7453fd35d80b8fae3ecb1a (patch)
tree1da4e1c088dbbe9089e420f14b6fcdddceef9619
parentb9d9021b9961c8616b6ed4ec987d76dead284059 (diff)
downloadcryptography-a1476217655be21dde7453fd35d80b8fae3ecb1a.tar.gz
cryptography-a1476217655be21dde7453fd35d80b8fae3ecb1a.tar.bz2
cryptography-a1476217655be21dde7453fd35d80b8fae3ecb1a.zip
Make indexing a CRL O(1) instead of O(n).
This drops support for slicing, if that's important someone say something and I can add it back
-rw-r--r--src/cryptography/hazmat/backends/openssl/x509.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py
index 7b9f71cd..4bddee4c 100644
--- a/src/cryptography/hazmat/backends/openssl/x509.py
+++ b/src/cryptography/hazmat/backends/openssl/x509.py
@@ -6,6 +6,7 @@ from __future__ import absolute_import, division, print_function
import datetime
import ipaddress
+import operator
from email.utils import parseaddr
@@ -872,8 +873,10 @@ class _CertificateRevocationList(object):
yield self._revoked_cert(i)
def __getitem__(self, idx):
- # TODO: indexing is O(n)
- return list(self)[idx]
+ idx = operator.index(idx)
+ if not 0 <= idx < len(self):
+ raise IndexError
+ return self._revoked_cert(idx)
def __len__(self):
revoked = self._backend._lib.X509_CRL_get_REVOKED(self._x509_crl)