diff -ur M2Crypto/SWIG/_dsa.i M2Crypto-0.20.2/SWIG/_dsa.i
--- M2Crypto/SWIG/_dsa.i 2009-10-07 06:25:44.000000000 +0200
+++ M2Crypto-0.20.2/SWIG/_dsa.i 2010-02-10 16:46:18.386538508 +0100
@@ -155,13 +155,14 @@
}
%}
-%threadallow dsa_read_params;
%inline %{
DSA *dsa_read_params(BIO *f, PyObject *pyfunc) {
DSA *ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_read_bio_DSAparams(f, NULL, passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
@@ -174,27 +175,29 @@
}
%}
-%threadallow dsa_write_key_bio;
%inline %{
int dsa_write_key_bio(DSA* dsa, BIO* f, EVP_CIPHER *cipher, PyObject *pyfunc) {
int ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_write_bio_DSAPrivateKey(f, dsa, cipher, NULL, 0,
passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
%}
-%threadallow dsa_write_key_bio_no_cipher;
%inline %{
int dsa_write_key_bio_no_cipher(DSA* dsa, BIO* f, PyObject *pyfunc) {
int ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_write_bio_DSAPrivateKey(f, dsa, NULL, NULL, 0,
passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
@@ -207,25 +210,27 @@
}
%}
-%threadallow dsa_read_key;
%inline %{
DSA *dsa_read_key(BIO *f, PyObject *pyfunc) {
DSA *ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_read_bio_DSAPrivateKey(f, NULL, passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
%}
-%threadallow dsa_read_pub_key;
%inline %{
DSA *dsa_read_pub_key(BIO *f, PyObject *pyfunc) {
DSA *ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_read_bio_DSA_PUBKEY(f, NULL, passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
diff -ur M2Crypto/SWIG/_ec.i M2Crypto-0.20.2/SWIG/_ec.i
--- M2Crypto/SWIG/_ec.i 2010-02-09 17:21:02.434816299 +0100
+++ M2Crypto-0.20.2/SWIG/_ec.i 2010-02-10 16:47:59.284538639 +0100
@@ -205,39 +205,42 @@
}
%}
-%threadallow ec_key_read_bio;
%inline %{
EC_KEY *ec_key_read_bio(BIO *f, PyObject *pyfunc) {
EC_KEY *ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_read_bio_ECPrivateKey(f, NULL, passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
%}
-%threadallow ec_key_write_bio;
%inline %{
int ec_key_write_bio(EC_KEY *key, BIO *f, EVP_CIPHER *cipher, PyObject *pyfunc) {
int ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_write_bio_ECPrivateKey(f, key, cipher, NULL, 0,
passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
%}
-%threadallow ec_key_write_bio_no_cipher;
%inline %{
int ec_key_write_bio_no_cipher(EC_KEY *key, BIO *f, PyObject *pyfunc) {
int ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_write_bio_ECPrivateKey(f, key, NULL, NULL, 0,
passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
diff -ur M2Crypto/SWIG/_evp.i M2Crypto-0.20.2/SWIG/_evp.i
--- M2Crypto/SWIG/_evp.i 2010-02-09 17:21:02.439565411 +0100
+++ M2Crypto-0.20.2/SWIG/_evp.i 2010-02-10 16:53:08.174537783 +0100
@@ -463,39 +463,42 @@
}
%}
-%threadallow pkey_write_pem_no_cipher;
%inline %{
int pkey_write_pem_no_cipher(EVP_PKEY *pkey, BIO *f, PyObject *pyfunc) {
int ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_write_bio_PKCS8PrivateKey(f, pkey, NULL, NULL, 0,
passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
%}
-%threadallow pkey_write_pem;
%inline %{
int pkey_write_pem(EVP_PKEY *pkey, BIO *f, EVP_CIPHER *cipher, PyObject *pyfunc) {
int ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_write_bio_PKCS8PrivateKey(f, pkey, cipher, NULL, 0,
passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
%}
-%threadallow pkey_read_pem;
%inline %{
EVP_PKEY *pkey_read_pem(BIO *f, PyObject *pyfunc) {
EVP_PKEY *pk;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
pk = PEM_read_bio_PrivateKey(f, NULL, passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return pk;
}
diff -ur M2Crypto/SWIG/_pkcs7.i M2Crypto-0.20.2/SWIG/_pkcs7.i
--- M2Crypto/SWIG/_pkcs7.i 2010-02-09 17:21:02.431815471 +0100
+++ M2Crypto-0.20.2/SWIG/_pkcs7.i 2010-02-10 16:55:43.516592774 +0100
@@ -101,10 +101,9 @@
}
%}
-%threadallow pkcs7_verify1;
%inline %{
PyObject *pkcs7_verify1(PKCS7 *pkcs7, STACK_OF(X509) *stack, X509_STORE *store, BIO *data, int flags) {
- int outlen;
+ int res, outlen;
char *outbuf;
BIO *bio;
PyObject *ret;
@@ -113,7 +112,10 @@
PyErr_SetString(PyExc_MemoryError, "pkcs7_verify1");
return NULL;
}
- if (!PKCS7_verify(pkcs7, stack, store, data, bio, flags)) {
+ Py_BEGIN_ALLOW_THREADS
+ res = PKCS7_verify(pkcs7, stack, store, data, bio, flags);
+ Py_END_ALLOW_THREADS
+ if (!res) {
PyErr_SetString(_pkcs7_err, ERR_reason_error_string(ERR_get_error()));
BIO_free(bio);
return NULL;
diff -ur M2Crypto/SWIG/_rsa.i M2Crypto-0.20.2/SWIG/_rsa.i
--- M2Crypto/SWIG/_rsa.i 2009-10-07 06:28:50.000000000 +0200
+++ M2Crypto-0.20.2/SWIG/_rsa.i 2010-02-10 16:50:40.029788004 +0100
@@ -48,39 +48,42 @@
}
%}
-%threadallow rsa_read_key;
%inline %{
RSA *rsa_read_key(BIO *f, PyObject *pyfunc) {
RSA *rsa;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
rsa = PEM_read_bio_RSAPrivateKey(f, NULL, passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return rsa;
}
%}
-%threadallow rsa_write_key;
%inline %{
int rsa_write_key(RSA *rsa, BIO *f, EVP_CIPHER *cipher, PyObject *pyfunc) {
int ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_write_bio_RSAPrivateKey(f, rsa, cipher, NULL, 0,
passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}
%}
-%threadallow rsa_write_key_no_cipher;
%inline %{
int rsa_write_key_no_cipher(RSA *rsa, BIO *f, PyObject *pyfunc) {
int ret;
Py_INCREF(pyfunc);
+ Py_BEGIN_ALLOW_THREADS
ret = PEM_write_bio_RSAPrivateKey(f, rsa, NULL, NULL, 0,
passphrase_callback, (void *)pyfunc);
+ Py_END_ALLOW_THREADS
Py_DECREF(pyfunc);
return ret;
}