diff options
author | Ian Cordasco <graffatcolmingov@gmail.com> | 2015-06-24 21:45:55 -0500 |
---|---|---|
committer | Ian Cordasco <graffatcolmingov@gmail.com> | 2015-06-24 21:45:57 -0500 |
commit | 13cdc7bf087dc017ca5cfdfc3c0afdfd99b7979b (patch) | |
tree | 54cc84f17ecefad4c25ef3923285ed625df5da15 | |
parent | 22e69b58a95d69cc0001d16f888411cf52db96e1 (diff) | |
download | cryptography-13cdc7bf087dc017ca5cfdfc3c0afdfd99b7979b.tar.gz cryptography-13cdc7bf087dc017ca5cfdfc3c0afdfd99b7979b.tar.bz2 cryptography-13cdc7bf087dc017ca5cfdfc3c0afdfd99b7979b.zip |
Add test for unicode attributes in CSRs
This creates a CSR, converts it to bytes, and then loads it again to ensure
that the unicode strings are parsed properly.
-rw-r--r-- | tests/test_x509.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/test_x509.py b/tests/test_x509.py index fb7f17d4..5be51773 100644 --- a/tests/test_x509.py +++ b/tests/test_x509.py @@ -728,6 +728,38 @@ class TestCertificateSigningRequestBuilder(object): assert basic_constraints.value.path_length == 2 @pytest.mark.requires_backend_interface(interface=RSABackend) + def test_build_ca_request_with_unicode(self, backend): + private_key = RSA_KEY_2048.private_key(backend) + + request = x509.CertificateSigningRequestBuilder().subject_name( + x509.Name([ + x509.NameAttribute(x509.OID_COUNTRY_NAME, u'US'), + x509.NameAttribute(x509.OID_STATE_OR_PROVINCE_NAME, u'Texas'), + x509.NameAttribute(x509.OID_LOCALITY_NAME, u'Austin'), + x509.NameAttribute(x509.OID_ORGANIZATION_NAME, + u'PyCA\U0001f37a'), + x509.NameAttribute(x509.OID_COMMON_NAME, u'cryptography.io'), + ]) + ).add_extension( + x509.BasicConstraints(ca=True, path_length=2), critical=True + ).sign( + backend, private_key, hashes.SHA1() + ) + + loaded_request = x509.load_pem_x509_csr( + request.public_bytes(encoding=serialization.Encoding.PEM), backend + ) + subject = loaded_request.subject + assert isinstance(subject, x509.Name) + assert list(subject) == [ + x509.NameAttribute(x509.OID_COUNTRY_NAME, u'US'), + x509.NameAttribute(x509.OID_STATE_OR_PROVINCE_NAME, u'Texas'), + x509.NameAttribute(x509.OID_LOCALITY_NAME, u'Austin'), + x509.NameAttribute(x509.OID_ORGANIZATION_NAME, u'PyCA\U0001f37a'), + x509.NameAttribute(x509.OID_COMMON_NAME, u'cryptography.io'), + ] + + @pytest.mark.requires_backend_interface(interface=RSABackend) def test_build_nonca_request_with_rsa(self, backend): private_key = RSA_KEY_2048.private_key(backend) |