diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-04-30 08:22:07 -0500 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-04-30 09:02:55 -0500 |
commit | 2187a05ef1a74eeb66bad9b4525afe841d9c2624 (patch) | |
tree | b895009eeddb83753ae0d83941d1338620d54d4b | |
parent | b3995a9a0708b49e0d29091420022ba5445f72c5 (diff) | |
download | cryptography-2187a05ef1a74eeb66bad9b4525afe841d9c2624.tar.gz cryptography-2187a05ef1a74eeb66bad9b4525afe841d9c2624.tar.bz2 cryptography-2187a05ef1a74eeb66bad9b4525afe841d9c2624.zip |
add support for directory name general names
-rw-r--r-- | src/cryptography/hazmat/backends/openssl/x509.py | 4 | ||||
-rw-r--r-- | tests/test_x509_ext.py | 25 |
2 files changed, 29 insertions, 0 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/x509.py b/src/cryptography/hazmat/backends/openssl/x509.py index 23aa95c4..5558f140 100644 --- a/src/cryptography/hazmat/backends/openssl/x509.py +++ b/src/cryptography/hazmat/backends/openssl/x509.py @@ -103,6 +103,10 @@ def _build_general_name(backend, gn): )[:] ) ) + elif gn.type == backend._lib.GEN_DIRNAME: + return x509.DirectoryName( + _build_x509_name(backend, gn.d.directoryName) + ) else: # otherName, x400Address or ediPartyName raise x509.UnsupportedGeneralNameType( diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py index 5c35c970..d38fe573 100644 --- a/tests/test_x509_ext.py +++ b/tests/test_x509_ext.py @@ -831,3 +831,28 @@ class TestRSASubjectAlternativeNameExtension(object): ipaddress.ip_address(u"127.0.0.1"), ipaddress.ip_address(u"ff::") ] == ip + + def test_dirname(self, backend): + cert = _load_cert( + os.path.join( + "x509", "custom", "san_dirname.pem" + ), + x509.load_pem_x509_certificate, + backend + ) + ext = cert.extensions.get_extension_for_oid( + x509.OID_SUBJECT_ALTERNATIVE_NAME + ) + assert ext is not None + assert ext.critical is False + + san = ext.value + + dirname = san.get_values_for_type(x509.DirectoryName) + assert [ + x509.Name([ + x509.NameAttribute(x509.OID_COMMON_NAME, 'test'), + x509.NameAttribute(x509.OID_ORGANIZATION_NAME, 'Org'), + x509.NameAttribute(x509.OID_STATE_OR_PROVINCE_NAME, 'Texas'), + ]) + ] == dirname |