Revert all changes unrelated to the new *client_CA* functionality.
diff --git a/doc/tools/texinputs/howto.cls b/doc/tools/texinputs/howto.cls
index fd74133..899b4ae 100644
--- a/doc/tools/texinputs/howto.cls
+++ b/doc/tools/texinputs/howto.cls
@@ -6,7 +6,6 @@
\ProvidesClass{howto}
[1998/02/25 Document class (Python HOWTO)]
-\RequirePackage{ifpdf}
\RequirePackage{pypaper}
% Change the options here to get a different set of basic options, This
@@ -24,7 +23,7 @@
% distribution.
%
% The "fancyhdr" package makes nicer page footers reasonable to
-% implement, and is used to put the chapter and section information in
+% implement, and is used to put the chapter and section information in
% the footers.
%
\RequirePackage{fancyhdr}\typeout{Using fancier footers than usual.}
@@ -50,8 +49,7 @@
%
\renewcommand{\maketitle}{
\py@doHorizontalRule
- \ifpdf
- \begingroup
+ \@ifundefined{pdfinfo}{}{{
% This \def is required to deal with multi-line authors; it
% changes \\ to ', ' (comma-space), making it pass muster for
% generating document info in the PDF file.
@@ -60,8 +58,7 @@
/Author (\@author)
/Title (\@title)
}
- \endgroup
- \fi
+ }}
\begin{flushright}
{\rm\Huge\py@HeaderFamily \@title} \par
{\em\large\py@HeaderFamily \py@release} \par
@@ -87,7 +84,7 @@
\py@doHorizontalRule
\vspace{12pt}
\py@doing@page@targetstrue
-}
+}
% Fix the theindex environment to add an entry to the Table of
% Contents; this is much nicer than just having to jump to the end of
diff --git a/doc/tools/texinputs/manual.cls b/doc/tools/texinputs/manual.cls
index 942cb49..789cae1 100644
--- a/doc/tools/texinputs/manual.cls
+++ b/doc/tools/texinputs/manual.cls
@@ -6,7 +6,6 @@
\ProvidesClass{manual}
[1998/03/03 Document class (Python manual)]
-\RequirePackage{ifpdf}
\RequirePackage{pypaper}
% Change the options here to get a different set of basic options, but only
@@ -24,7 +23,7 @@
% distribution.
%
% The "fancyhdr" package makes nicer page footers reasonable to
-% implement, and is used to put the chapter and section information in
+% implement, and is used to put the chapter and section information in
% the footers.
%
\RequirePackage{fancyhdr}\typeout{Using fancier footers than usual.}
@@ -64,8 +63,7 @@
\let\footnotesize\small
\let\footnoterule\relax
\py@doHorizontalRule%
- \ifpdf
- \begingroup
+ \@ifundefined{pdfinfo}{}{{
% This \def is required to deal with multi-line authors; it
% changes \\ to ', ' (comma-space), making it pass muster for
% generating document info in the PDF file.
@@ -74,8 +72,7 @@
/Author (\@author)
/Title (\@title)
}
- \endgroup
- \fi
+ }}
\begin{flushright}%
{\rm\Huge\py@HeaderFamily \@title \par}%
{\em\LARGE\py@HeaderFamily \py@release \par}
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);
}
diff --git a/test/test_crypto.py b/test/test_crypto.py
index 3d49fd0..fbe5635 100644
--- a/test/test_crypto.py
+++ b/test/test_crypto.py
@@ -10,7 +10,6 @@
from os import popen2
from datetime import datetime, timedelta
-from OpenSSL import crypto
from OpenSSL.crypto import TYPE_RSA, TYPE_DSA, Error, PKey, PKeyType
from OpenSSL.crypto import X509, X509Type, X509Name, X509NameType
from OpenSSL.crypto import X509Req, X509ReqType
@@ -1534,20 +1533,5 @@
-class ModuleTests(TestCase):
- """
- Tests for all objects in L{OpenSSL.crypto} module.
- """
-
- def test_type_module_name(self):
- """
- Test that all types have a sane C{__module__} attribute.
- """
- for name, obj in vars(crypto).items():
- if isinstance(obj, type):
- self.assertEqual(obj.__module__, "OpenSSL.crypto", name)
-
-
-
if __name__ == '__main__':
main()
diff --git a/test/test_ssl.py b/test/test_ssl.py
index 29c5c05..8a75ee0 100644
--- a/test/test_ssl.py
+++ b/test/test_ssl.py
@@ -10,7 +10,6 @@
from os.path import join
from unittest import main
-from OpenSSL import SSL
from OpenSSL.crypto import TYPE_RSA, FILETYPE_PEM, PKey, dump_privatekey, load_certificate, load_privatekey
from OpenSSL.SSL import WantReadError, Context, ContextType, Connection, ConnectionType, Error
from OpenSSL.SSL import SSLv2_METHOD, SSLv3_METHOD, SSLv23_METHOD, TLSv1_METHOD
@@ -703,20 +702,6 @@
self._check_client_CA_list(set_replaces_add_CA)
-class ModuleTests(TestCase):
- """
- Tests for all objects in L{OpenSSL.crypto} module.
- """
-
- def test_type_module_name(self):
- """
- Test that all types have a sane C{__module__} attribute.
- """
- for name, obj in vars(SSL).items():
- if isinstance(obj, type):
- self.assertEqual(obj.__module__, "OpenSSL.SSL", name)
-
-
if __name__ == '__main__':
main()