diff options
author | INADA Naoki <songofacandy@gmail.com> | 2011-08-21 20:32:42 +0900 |
---|---|---|
committer | INADA Naoki <songofacandy@gmail.com> | 2011-08-21 20:32:42 +0900 |
commit | 43e6654784f092370247e6d0510c5b5d71fecf41 (patch) | |
tree | f3944710e3679fc2f03f76502653d64a5fd51e95 /OpenSSL/crypto | |
parent | 042b66d4834b493ff82c9f2dc16aca09f39c9d8a (diff) | |
download | pyopenssl-43e6654784f092370247e6d0510c5b5d71fecf41.tar.gz |
Allow thread while generating key.
Diffstat (limited to 'OpenSSL/crypto')
-rw-r--r-- | OpenSSL/crypto/pkey.c | 10 |
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(); |