summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorINADA Naoki <songofacandy@gmail.com>2011-08-21 20:32:42 +0900
committerINADA Naoki <songofacandy@gmail.com>2011-08-21 20:32:42 +0900
commit43e6654784f092370247e6d0510c5b5d71fecf41 (patch)
treef3944710e3679fc2f03f76502653d64a5fd51e95
parent042b66d4834b493ff82c9f2dc16aca09f39c9d8a (diff)
downloadpyopenssl-43e6654784f092370247e6d0510c5b5d71fecf41.tar.gz
Allow thread while generating key.
-rw-r--r--OpenSSL/crypto/pkey.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/OpenSSL/crypto/pkey.c b/OpenSSL/crypto/pkey.c
index 1f78682..debc043 100644
--- a/OpenSSL/crypto/pkey.c
+++ b/OpenSSL/crypto/pkey.c
@@ -52,14 +52,20 @@ crypto_PKey_generate_key(crypto_PKeyObj *self, PyObject *args)
PyErr_SetString(PyExc_ValueError, "Invalid number of bits");
return NULL;
}
- if ((rsa = RSA_generate_key(bits, 0x10001, NULL, NULL)) == NULL)
+ Py_BEGIN_ALLOW_THREADS;
+ rsa = RSA_generate_key(bits, 0x10001, NULL, NULL);
+ Py_END_ALLOW_THREADS;
+ if (rsa == NULL)
FAIL();
if (!EVP_PKEY_assign_RSA(self->pkey, rsa))
FAIL();
break;
case crypto_TYPE_DSA:
- if ((dsa = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, NULL, NULL)) == NULL)
+ Py_BEGIN_ALLOW_THREADS;
+ dsa = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, NULL, NULL);
+ Py_END_ALLOW_THREADS;
+ if (dsa == NULL)
FAIL();
if (!DSA_generate_key(dsa))
FAIL();