Compatibility with CPython 2.5 though CPython 3.2
diff --git a/OpenSSL/crypto/x509name.c b/OpenSSL/crypto/x509name.c
index 4ff2c34..a62c957 100644
--- a/OpenSSL/crypto/x509name.c
+++ b/OpenSSL/crypto/x509name.c
@@ -202,13 +202,19 @@
char *buffer;
char *name;
- if (!PyString_CheckExact(nameobj) || !(name = PyString_AsString(nameobj))) {
+ if (!PyBytes_CheckExact(nameobj) && !PyUnicode_CheckExact(nameobj)) {
PyErr_Format(PyExc_TypeError,
"attribute name must be string, not '%.200s'",
Py_TYPE(nameobj)->tp_name);
return -1;
}
+#ifdef PY3
+ name = PyBytes_AsString(PyUnicode_AsASCIIString(nameobj));
+#else
+ name = PyBytes_AsString(nameobj);
+#endif
+
if ((nid = OBJ_txt2nid(name)) == NID_undef)
{
/* Just like the case in the getattr function */