Revert all changes unrelated to the new *client_CA* functionality.
diff --git a/src/crypto/netscape_spki.c b/src/crypto/netscape_spki.c
index 51bb83e..4fa9d8d 100644
--- a/src/crypto/netscape_spki.c
+++ b/src/crypto/netscape_spki.c
@@ -243,7 +243,7 @@
PyTypeObject crypto_NetscapeSPKI_Type = {
PyObject_HEAD_INIT(NULL)
0,
- "OpenSSL.crypto.NetscapeSPKI",
+ "NetscapeSPKI",
sizeof(crypto_NetscapeSPKIObj),
0,
(destructor)crypto_NetscapeSPKI_dealloc,
diff --git a/src/crypto/pkcs12.c b/src/crypto/pkcs12.c
index da58df9..2302242 100644
--- a/src/crypto/pkcs12.c
+++ b/src/crypto/pkcs12.c
@@ -71,14 +71,14 @@
\n\
@returns: PKey object containing the private key\n\
";
-static PyObject *
+static crypto_PKeyObj *
crypto_PKCS12_get_privatekey(crypto_PKCS12Obj *self, PyObject *args)
{
if (!PyArg_ParseTuple(args, ":get_privatekey"))
return NULL;
Py_INCREF(self->key);
- return self->key;
+ return (crypto_PKeyObj *) self->key;
}
static char crypto_PKCS12_set_privatekey_doc[] = "\n\
@@ -514,7 +514,7 @@
PyTypeObject crypto_PKCS12_Type = {
PyObject_HEAD_INIT(NULL)
0,
- "OpenSSL.crypto.PKCS12",
+ "PKCS12",
sizeof(crypto_PKCS12Obj),
0,
(destructor)crypto_PKCS12_dealloc,
diff --git a/src/crypto/pkcs7.c b/src/crypto/pkcs7.c
index ad9cbae..1cb0813 100644
--- a/src/crypto/pkcs7.c
+++ b/src/crypto/pkcs7.c
@@ -177,7 +177,7 @@
PyTypeObject crypto_PKCS7_Type = {
PyObject_HEAD_INIT(NULL)
0,
- "OpenSSL.crypto.PKCS7",
+ "PKCS7",
sizeof(crypto_PKCS7Obj),
0,
(destructor)crypto_PKCS7_dealloc,
diff --git a/src/crypto/x509.c b/src/crypto/x509.c
index 7d3e46d..e089d40 100644
--- a/src/crypto/x509.c
+++ b/src/crypto/x509.c
@@ -800,7 +800,7 @@
PyTypeObject crypto_X509_Type = {
PyObject_HEAD_INIT(NULL)
0,
- "OpenSSL.crypto.X509",
+ "X509",
sizeof(crypto_X509Obj),
0,
(destructor)crypto_X509_dealloc,
diff --git a/src/crypto/x509ext.c b/src/crypto/x509ext.c
index a8e5f14..90ef543 100644
--- a/src/crypto/x509ext.c
+++ b/src/crypto/x509ext.c
@@ -256,7 +256,7 @@
PyTypeObject crypto_X509Extension_Type = {
PyObject_HEAD_INIT(NULL)
0,
- "OpenSSL.crypto.X509Extension",
+ "X509Extension",
sizeof(crypto_X509ExtensionObj),
0,
(destructor)crypto_X509Extension_dealloc,
diff --git a/src/crypto/x509name.c b/src/crypto/x509name.c
index 77046fb..39fdcf8 100644
--- a/src/crypto/x509name.c
+++ b/src/crypto/x509name.c
@@ -55,22 +55,12 @@
crypto_X509Name_new(PyTypeObject *subtype, PyObject *args, PyObject *kwargs)
{
crypto_X509NameObj *name;
- X509_NAME *sslname;
- PyObject *newname;
if (!PyArg_ParseTuple(args, "O!:X509Name", &crypto_X509Name_Type, &name)) {
return NULL;
}
- sslname = X509_NAME_dup(name->x509_name);
- if (sslname == NULL) {
- exception_from_error_queue(crypto_Error);
- return NULL;
- }
- newname = (PyObject *)crypto_X509Name_New(sslname, 1);
- if (newname == NULL) {
- X509_NAME_free(sslname);
- }
- return newname;
+
+ return (PyObject *)crypto_X509Name_New(X509_NAME_dup(name->x509_name), 1);
}
@@ -433,7 +423,7 @@
PyTypeObject crypto_X509Name_Type = {
PyObject_HEAD_INIT(NULL)
0,
- "OpenSSL.crypto.X509Name",
+ "X509Name",
sizeof(crypto_X509NameObj),
0,
(destructor)crypto_X509Name_dealloc,
diff --git a/src/crypto/x509req.c b/src/crypto/x509req.c
index 486df93..07bd44b 100644
--- a/src/crypto/x509req.c
+++ b/src/crypto/x509req.c
@@ -372,7 +372,7 @@
PyTypeObject crypto_X509Req_Type = {
PyObject_HEAD_INIT(NULL)
0,
- "OpenSSL.crypto.X509Req",
+ "X509Req",
sizeof(crypto_X509ReqObj),
0,
(destructor)crypto_X509Req_dealloc,
diff --git a/src/crypto/x509store.c b/src/crypto/x509store.c
index ce67e46..16af3b0 100644
--- a/src/crypto/x509store.c
+++ b/src/crypto/x509store.c
@@ -109,7 +109,7 @@
PyTypeObject crypto_X509Store_Type = {
PyObject_HEAD_INIT(NULL)
0,
- "OpenSSL.crypto.X509Store",
+ "X509Store",
sizeof(crypto_X509StoreObj),
0,
(destructor)crypto_X509Store_dealloc,
diff --git a/src/ssl/connection.c b/src/ssl/connection.c
index bd39b66..90a9652 100755
--- a/src/ssl/connection.c
+++ b/src/ssl/connection.c
@@ -819,21 +819,10 @@
return NULL;
lst = PyList_New(0);
- if (lst == NULL) {
- return NULL;
- }
while ((ret = SSL_get_cipher_list(self->ssl, idx)) != NULL)
{
item = PyString_FromString(ret);
- if (item == NULL) {
- Py_DECREF(lst);
- return NULL;
- }
- if (PyList_Append(lst, item)) {
- Py_DECREF(lst);
- Py_DECREF(item);
- return NULL;
- }
+ PyList_Append(lst, item);
Py_DECREF(item);
idx++;
}
diff --git a/src/ssl/context.c b/src/ssl/context.c
index a3d798e..d03e92c 100644
--- a/src/ssl/context.c
+++ b/src/ssl/context.c
@@ -347,17 +347,11 @@
static PyTypeObject *
import_crypto_type(const char *name, size_t objsize)
{
- PyObject *module, *type;
+ PyObject *module, *type, *name_attr;
PyTypeObject *res;
- char modname[] = "OpenSSL.crypto";
- char buffer[256] = "OpenSSL.crypto.";
+ int right_name;
- if (strlen(buffer) + strlen(name) >= sizeof(buffer)) {
- PyErr_BadInternalCall();
- return NULL;
- }
- strcat(buffer, name);
- module = PyImport_ImportModule(modname);
+ module = PyImport_ImportModule("OpenSSL.crypto");
if (module == NULL) {
return NULL;
}
@@ -370,8 +364,16 @@
Py_DECREF(type);
return type_modified_error(name);
}
+ name_attr = PyObject_GetAttrString(type, "__name__");
+ if (name_attr == NULL) {
+ Py_DECREF(type);
+ return NULL;
+ }
+ right_name = (PyString_CheckExact(name_attr) &&
+ strcmp(name, PyString_AsString(name_attr)) == 0);
+ Py_DECREF(name_attr);
res = (PyTypeObject *)type;
- if (strcmp(buffer, res->tp_name) != 0 || res->tp_basicsize != objsize) {
+ if (!right_name || res->tp_basicsize != objsize) {
Py_DECREF(type);
return type_modified_error(name);
}
diff --git a/src/util.c b/src/util.c
index 0ad93e3..ae6ee5e 100644
--- a/src/util.c
+++ b/src/util.c
@@ -22,40 +22,26 @@
PyObject *
error_queue_to_list(void) {
PyObject *errlist, *tuple;
- int failed;
long err;
errlist = PyList_New(0);
- if (errlist == NULL) {
- return NULL;
- }
+
while ((err = ERR_get_error()) != 0) {
- tuple = Py_BuildValue("(sss)", ERR_lib_error_string(err),
- ERR_func_error_string(err),
- ERR_reason_error_string(err));
- if (tuple == NULL) {
- Py_DECREF(errlist);
- return NULL;
- }
- failed = PyList_Append(errlist, tuple);
+ tuple = Py_BuildValue("(sss)", ERR_lib_error_string(err),
+ ERR_func_error_string(err),
+ ERR_reason_error_string(err));
+ PyList_Append(errlist, tuple);
Py_DECREF(tuple);
- if (failed) {
- Py_DECREF(errlist);
- return NULL;
- }
}
return errlist;
}
-void exception_from_error_queue(PyObject *the_Error) {
+void exception_from_error_queue(PyObject *the_Error) {
PyObject *errlist = error_queue_to_list();
-
- if (errlist != NULL) {
- PyErr_SetObject(the_Error, errlist);
- Py_DECREF(errlist);
- }
-}
+ PyErr_SetObject(the_Error, errlist);
+ Py_DECREF(errlist);
+}
/*
* Flush OpenSSL's error queue and ignore the result
@@ -71,5 +57,5 @@
* very nasty things if we just invoked it with error_queue_to_list().
*/
PyObject *list = error_queue_to_list();
- Py_XDECREF(list);
+ Py_DECREF(list);
}