update exception to contain detail
diff --git a/docs/x509.rst b/docs/x509.rst
index 0ce9016..2e4a0ef 100644
--- a/docs/x509.rst
+++ b/docs/x509.rst
@@ -274,6 +274,9 @@
:raises cryptography.x509.UnsupportedExtension: If the certificate
contains an extension that is not supported.
+ :raises cryptography.x509.UnsupportedGeneralNameType: If an extension
+ contains a general name that is not supported.
+
.. doctest::
>>> for ext in cert.extensions:
@@ -969,6 +972,10 @@
This is raised when a certificate contains an unsupported general name
type in an extension.
+ .. attribute:: type
+
+ :type: :term:`text` or int
+
.. _`public key infrastructure`: https://en.wikipedia.org/wiki/Public_key_infrastructure
.. _`TLS`: https://en.wikipedia.org/wiki/Transport_Layer_Security
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py
index affb79d..07e79fe 100644
--- a/src/cryptography/hazmat/backends/openssl/x509.py
+++ b/src/cryptography/hazmat/backends/openssl/x509.py
@@ -68,7 +68,8 @@
raise x509.UnsupportedGeneralNameType(
"{0} is not a supported type".format(
x509._GENERAL_NAMES.get(gn.type, gn.type)
- )
+ ),
+ x509._GENERAL_NAMES.get(gn.type, gn.type)
)
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index 3dc066f..dd6ea92 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -129,7 +129,9 @@
class UnsupportedGeneralNameType(Exception):
- pass
+ def __init__(self, msg, type):
+ super(UnsupportedGeneralNameType, self).__init__(msg)
+ self.type = type
class NameAttribute(object):
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py
index 5f175c4..c17beba 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -766,5 +766,7 @@
x509.load_pem_x509_certificate,
backend
)
- with pytest.raises(x509.UnsupportedGeneralNameType):
+ with pytest.raises(x509.UnsupportedGeneralNameType) as exc:
cert.extensions
+
+ assert exc.value.type == "otherName"