diff options
author | Ilya Etingof <etingof@gmail.com> | 2019-05-14 22:34:49 +0200 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2019-05-14 22:34:49 +0200 |
commit | 9ced271d90e585b291af215f4ddda9cd9b676409 (patch) | |
tree | 19a8ad16d9e081cdba02fa27442758a700f35dc6 /tests | |
parent | 9c6b27562a7cd9ffa6cb2cd0207c603c6d9f6d75 (diff) | |
download | pyasn1-modules-9ced271d90e585b291af215f4ddda9cd9b676409.tar.gz |
Add support for RFC3709
Cherry-picked from [1].
1. https://github.com/etingof/pyasn1-modules/pull/33
Diffstat (limited to 'tests')
-rw-r--r-- | tests/__main__.py | 1 | ||||
-rw-r--r-- | tests/test_rfc3709.py | 71 |
2 files changed, 72 insertions, 0 deletions
diff --git a/tests/__main__.py b/tests/__main__.py index 85feffa..8b143fe 100644 --- a/tests/__main__.py +++ b/tests/__main__.py @@ -21,6 +21,7 @@ suite = unittest.TestLoader().loadTestsFromNames( 'tests.test_rfc3161.suite', 'tests.test_rfc3560.suite', 'tests.test_rfc3565.suite', + 'tests.test_rfc3709.suite', 'tests.test_rfc3779.suite', 'tests.test_rfc4055.suite', 'tests.test_rfc4108.suite', diff --git a/tests/test_rfc3709.py b/tests/test_rfc3709.py new file mode 100644 index 0000000..dbe1edf --- /dev/null +++ b/tests/test_rfc3709.py @@ -0,0 +1,71 @@ +# +# This file is part of pyasn1-modules software. +# +# Copyright (c) 2019, Vigil Security, LLC +# License: http://snmplabs.com/pyasn1/license.html +# +import sys + +from pyasn1.codec.der import decoder as der_decoder +from pyasn1.codec.der import encoder as der_encoder + +from pyasn1_modules import pem +from pyasn1_modules import rfc5280 +from pyasn1_modules import rfc3709 + +try: + import unittest2 as unittest +except ImportError: + import unittest + + +class CertificateExtnTestCase(unittest.TestCase): + pem_text = """\ +MIIC9zCCAn2gAwIBAgIJAKWzVCgbsG46MAoGCCqGSM49BAMDMD8xCzAJBgNVBAYT +AlVTMQswCQYDVQQIDAJWQTEQMA4GA1UEBwwHSGVybmRvbjERMA8GA1UECgwIQm9n +dXMgQ0EwHhcNMTkwNTE0MTAwMjAwWhcNMjAwNTEzMTAwMjAwWjBlMQswCQYDVQQG +EwJVUzELMAkGA1UECBMCVkExEDAOBgNVBAcTB0hlcm5kb24xGzAZBgNVBAoTElZp +Z2lsIFNlY3VyaXR5IExMQzEaMBgGA1UEAxMRbWFpbC52aWdpbHNlYy5jb20wdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAATwUXZUseiOaqWdrClDCMbp9YFAM87LTmFirygp +zKDU9cfqSCg7zBDIphXCwMcS9zVWDoStCbcvN0jw5CljHcffzpHYX91P88SZRJ1w +4hawHjOsWxvM3AkYgZ5nfdlL7EajggEdMIIBGTALBgNVHQ8EBAMCB4AwQgYJYIZI +AYb4QgENBDUWM1RoaXMgY2VydGlmaWNhdGUgY2Fubm90IGJlIHRydXN0ZWQgZm9y +IGFueSBwdXJwb3NlLjAdBgNVHQ4EFgQU8jXbNATapVXyvWkDmbBi7OIVCMEwHwYD +VR0jBBgwFoAU8jXbNATapVXyvWkDmbBi7OIVCMEwgYUGCCsGAQUFBwEMBHkwd6J1 +oHMwcTBvMG0WCWltYWdlL3BuZzAzMDEwDQYJYIZIAWUDBAIBBQAEIJtBNrMSSNo+ +6Rwqwctmcy0qf68ilRuKEmlf3GLwGiIkMCsWKWh0dHA6Ly93d3cudmlnaWxzZWMu +Y29tL3ZpZ2lsc2VjX2xvZ28ucG5nMAoGCCqGSM49BAMDA2gAMGUCMGhfLH4kZaCD +H43A8m8mHCUpYt9unT0qYu4TCMaRuOTYEuqj3qtuwyLcfAGuXKp/oAIxAIrPY+3y +Pj22pmfmQi5w21UljqoTj/+lQLkU3wfy5BdVKBwI0GfEA+YL3ctSzPNqAA== +""" + + def setUp(self): + self.asn1Spec = rfc5280.Certificate() + + def testDerCodec(self): + + substrate = pem.readBase64fromText(self.pem_text) + + asn1Object, rest = der_decoder.decode(substrate, asn1Spec=self.asn1Spec) + + assert not rest + assert asn1Object.prettyPrint() + assert der_encoder.encode(asn1Object) == substrate + + for extn in asn1Object['tbsCertificate']['extensions']: + + if extn['extnID'] == rfc3709.id_pe_logotype: + s = extn['extnValue'] + logotype, rest = der_decoder.decode(s, rfc3709.LogotypeExtn()) + assert not rest + assert logotype.prettyPrint() + assert der_encoder.encode(logotype) == s + assert logotype['subjectLogo']['direct']['image'][0]['imageDetails']['mediaType'] == "image/png" + assert logotype['subjectLogo']['direct']['image'][0]['imageDetails']['logotypeURI'][ + 0] == "http://www.vigilsec.com/vigilsec_logo.png" + + +suite = unittest.TestLoader().loadTestsFromModule(sys.modules[__name__]) + +if __name__ == '__main__': + unittest.TextTestRunner(verbosity=2).run(suite) |