[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2] pki_crypto: Replace deprecated RSA_generate_key() with RSA_generate_key_ex()
  [Thread Prev] | [Thread Next]
 
 
- Subject: [PATCH v2] pki_crypto: Replace deprecated RSA_generate_key() with RSA_generate_key_ex()
- From: Petar Koretic <petar.koretic@xxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Sun, 16 Mar 2014 10:20:44 +0000
- To: libssh@xxxxxxxxxx
On Mar 16, 09:41, Aris Adamantiadis wrote:
> Hi Petar,
> I agree with the principle, but I don't think this code can work...
> RSA_generate_key takes an RSA* as parameter and in our code we probably
> have key->rsa==NULL. (if we don't then the old code had a memory leak).
>
> Does the test case work ?
>
> Aris
>
Yes, you are right. This works, tested with tests/unittests/torture_pki
Signed-off-by: Petar Koretic <petar.koretic@xxxxxxxxxx>
---
 src/pki_crypto.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/pki_crypto.c b/src/pki_crypto.c
index 89bb538..ccf05f4 100644
--- a/src/pki_crypto.c
+++ b/src/pki_crypto.c
@@ -383,10 +383,20 @@ fail:
 }
 
 int pki_key_generate_rsa(ssh_key key, int parameter){
-    key->rsa = RSA_generate_key(parameter, 65537, NULL, NULL);
-    if(key->rsa == NULL)
-        return SSH_ERROR;
-    return SSH_OK;
+	BIGNUM *e;
+	int rc;
+
+	e = BN_new();
+	key->rsa = RSA_new();
+
+	BN_set_word(e, 65537);
+	rc = RSA_generate_key_ex(key->rsa, parameter, e, NULL);
+
+	BN_free(e);
+
+	if (rc == -1 || key->rsa == NULL)
+		return SSH_ERROR;
+	return SSH_OK;
 }
 
 int pki_key_generate_dss(ssh_key key, int parameter){
-- 
1.9.0
Archive administrator: postmaster@lists.cynapses.org

