aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2015-12-30 23:05:37 -0500
committerAlex Gaynor <alex.gaynor@gmail.com>2015-12-30 23:05:37 -0500
commit5660526e6baadb10a1969a32a2dda3bc14c78133 (patch)
tree5742a9f386b4dcba97e898fb0825a319df5c33df
parente3a40812e7f686d101d00fbfbba67335af271d80 (diff)
parente69c5fe0649adcfb1c540c39e2b296ad44cde244 (diff)
downloadcryptography-5660526e6baadb10a1969a32a2dda3bc14c78133.tar.gz
cryptography-5660526e6baadb10a1969a32a2dda3bc14c78133.tar.bz2
cryptography-5660526e6baadb10a1969a32a2dda3bc14c78133.zip
Merge pull request #2609 from reaperhulk/extension-for-class-exception
don't allow UnrecognizedExtension with get_extension_for_class
-rw-r--r--src/cryptography/x509/extensions.py7
-rw-r--r--tests/test_x509_ext.py5
2 files changed, 12 insertions, 0 deletions
diff --git a/src/cryptography/x509/extensions.py b/src/cryptography/x509/extensions.py
index 0c5b5523..f7b5d7f5 100644
--- a/src/cryptography/x509/extensions.py
+++ b/src/cryptography/x509/extensions.py
@@ -91,6 +91,13 @@ class Extensions(object):
raise ExtensionNotFound("No {0} extension was found".format(oid), oid)
def get_extension_for_class(self, extclass):
+ if extclass is UnrecognizedExtension:
+ raise TypeError(
+ "UnrecognizedExtension can't be used with "
+ "get_extension_for_class because more than one instance of the"
+ " class may be present."
+ )
+
for ext in self:
if isinstance(ext.value, extclass):
return ext
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py
index 7c5ca5f2..df796e0a 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -1057,6 +1057,11 @@ class TestExtensions(object):
exts.get_extension_for_class(x509.IssuerAlternativeName)
assert exc.value.oid == ExtensionOID.ISSUER_ALTERNATIVE_NAME
+ def test_unrecognized_extension_for_class(self):
+ exts = x509.Extensions([])
+ with pytest.raises(TypeError):
+ exts.get_extension_for_class(x509.UnrecognizedExtension)
+
def test_indexing(self, backend):
cert = _load_cert(
os.path.join("x509", "cryptography.io.pem"),