From 2ee5e3c6240721120146d6d81c70e1b900029ee0 Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Sat, 4 Jul 2015 20:09:46 +0000 Subject: parse SAN otherNames into OtherName instances rather than raising an exception Test added. --- tests/test_x509_ext.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'tests/test_x509_ext.py') diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py index d15d6669..06adaa37 100644 --- a/tests/test_x509_ext.py +++ b/tests/test_x509_ext.py @@ -1578,6 +1578,30 @@ class TestRSASubjectAlternativeNameExtension(object): assert 'Invalid rfc822name value' in str(exc.value) + def test_other_name(self, backend): + cert = _load_cert( + os.path.join( + "x509", "custom", "san_other_name.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 + + assert len(ext.value) == 1 + assert list(ext.value)[0] == \ + x509.OtherName( + x509.ObjectIdentifier("1.2.3.4"), + b'\x16\x0bHello World') + + othernames = ext.value.get_values_for_type(x509.OtherName) + assert othernames == [b'\x16\x0bHello World'] + @pytest.mark.requires_backend_interface(interface=RSABackend) @pytest.mark.requires_backend_interface(interface=X509Backend) -- cgit v1.2.3 From 18b6fc84fcb671412aaaf453f623a44a30a1a2a3 Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Sun, 5 Jul 2015 21:44:51 +0000 Subject: additional tests and doc spelling error fix for OtherName --- tests/test_x509_ext.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'tests/test_x509_ext.py') diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py index 06adaa37..e6ee7d66 100644 --- a/tests/test_x509_ext.py +++ b/tests/test_x509_ext.py @@ -1147,6 +1147,55 @@ class TestIPAddress(object): assert gn != object() +class TestOtherName(object): + def test_invalid_args(self): + with pytest.raises(TypeError): + x509.OtherName(b"notanobjectidentifier", b"derdata") + + with pytest.raises(TypeError): + x509.OtherName(x509.ObjectIdentifier("1.2.3.4"), u"notderdata") + + def test_repr(self): + gn = x509.OtherName(x509.ObjectIdentifier("1.2.3.4"), b"derdata") + if six.PY3: + assert repr(gn) == ( + ", value=b'derdata')>" + ) + else: + assert repr(gn) == ( + ", value='derdata')>" + ) + + gn = x509.OtherName(x509.ObjectIdentifier("2.5.4.65"), b"derdata") + if six.PY3: + assert repr(gn) == ( + ", value=b'derdata')>" + ) + else: + assert repr(gn) == ( + ", value='derdata')>" + ) + + def test_eq(self): + gn = x509.OtherName(x509.ObjectIdentifier("1.2.3.4"), b"derdata") + gn2 = x509.OtherName(x509.ObjectIdentifier("1.2.3.4"), b"derdata") + assert gn == gn2 + + def test_ne(self): + gn = x509.OtherName(x509.ObjectIdentifier("1.2.3.4"), b"derdata") + assert gn != object() + + gn2 = x509.OtherName(x509.ObjectIdentifier("1.2.3.4"), b"derdata2") + assert gn != gn2 + + gn2 = x509.OtherName(x509.ObjectIdentifier("1.2.3.5"), b"derdata") + assert gn != gn2 + + class TestGeneralNames(object): def test_get_values_for_type(self): gns = x509.GeneralNames( -- cgit v1.2.3 From d2afad325e2e9c52765b4a696d6f6b646c4e855b Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Mon, 6 Jul 2015 22:37:53 +0000 Subject: special-case GeneralNames.get_values_for_type to return OtherName instances directly rather than their value properties; tests updated --- tests/test_x509_ext.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'tests/test_x509_ext.py') diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py index e6ee7d66..993802b8 100644 --- a/tests/test_x509_ext.py +++ b/tests/test_x509_ext.py @@ -1642,14 +1642,13 @@ class TestRSASubjectAlternativeNameExtension(object): assert ext is not None assert ext.critical is False + expected = x509.OtherName(x509.ObjectIdentifier("1.2.3.4"), + b'\x16\x0bHello World') assert len(ext.value) == 1 - assert list(ext.value)[0] == \ - x509.OtherName( - x509.ObjectIdentifier("1.2.3.4"), - b'\x16\x0bHello World') + assert list(ext.value)[0] == expected othernames = ext.value.get_values_for_type(x509.OtherName) - assert othernames == [b'\x16\x0bHello World'] + assert othernames == [expected] @pytest.mark.requires_backend_interface(interface=RSABackend) -- cgit v1.2.3