diff options
author | Jean-Paul Calderone <exarkun@twistedmatrix.com> | 2014-01-18 10:30:55 -0500 |
---|---|---|
committer | Jean-Paul Calderone <exarkun@twistedmatrix.com> | 2014-01-18 10:30:55 -0500 |
commit | d86079859904fdbe70f1af496300b900d5458a6c (patch) | |
tree | e8ea1daed3e31e0d4096e395a6b753156f94e627 | |
parent | 11ed8e87c3223d445c69921fbdd157062465f84b (diff) | |
download | pyopenssl-d86079859904fdbe70f1af496300b900d5458a6c.tar.gz |
make use_certificate_chain_file can accept unicode too
-rw-r--r-- | OpenSSL/SSL.py | 6 | ||||
-rw-r--r-- | OpenSSL/test/test_ssl.py | 8 |
2 files changed, 9 insertions, 5 deletions
diff --git a/OpenSSL/SSL.py b/OpenSSL/SSL.py index 325d47c..fe13c4f 100644 --- a/OpenSSL/SSL.py +++ b/OpenSSL/SSL.py @@ -359,8 +359,12 @@ class Context(object): :param certfile: The name of the certificate chain file :return: None """ + if isinstance(certfile, _text_type): + # Perhaps sys.getfilesystemencoding() could be better? + certfile = certfile.encode("utf-8") + if not isinstance(certfile, bytes): - raise TypeError("certfile must be a byte string") + raise TypeError("certfile must be bytes or unicode") result = _lib.SSL_CTX_use_certificate_chain_file(self._context, certfile) if not result: diff --git a/OpenSSL/test/test_ssl.py b/OpenSSL/test/test_ssl.py index 132cdff..572b963 100644 --- a/OpenSSL/test/test_ssl.py +++ b/OpenSSL/test/test_ssl.py @@ -960,11 +960,11 @@ class ContextTests(TestCase, _LoopbackMixin): # Write out the chain file. chainFile = self.mktemp() - fObj = open(chainFile, 'w') + fObj = open(chainFile, 'wb') # Most specific to least general. - fObj.write(dump_certificate(FILETYPE_PEM, scert).decode('ascii')) - fObj.write(dump_certificate(FILETYPE_PEM, icert).decode('ascii')) - fObj.write(dump_certificate(FILETYPE_PEM, cacert).decode('ascii')) + fObj.write(dump_certificate(FILETYPE_PEM, scert)) + fObj.write(dump_certificate(FILETYPE_PEM, icert)) + fObj.write(dump_certificate(FILETYPE_PEM, cacert)) fObj.close() serverContext = Context(TLSv1_METHOD) |