From 18f4dbbba2c0142792b394bec35531cefe277712 Mon Sep 17 00:00:00 2001 From: Yashpal Dutta Date: Thu, 24 Apr 2014 00:35:34 +0545 Subject: [PATCH 12/48] SW Backoff mechanism for dsa keygen Upstream-status: Pending DSA Keygen is not handled in default openssl dsa method. Due to same null function pointer in SW DSA method, the backoff for dsa keygen gives segmentation fault. Signed-off-by: Yashpal Dutta Tested-by: Cristian Stoica --- crypto/engine/eng_cryptodev.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/crypto/engine/eng_cryptodev.c b/crypto/engine/eng_cryptodev.c index 1f1f307..db8e02d 100644 --- a/crypto/engine/eng_cryptodev.c +++ b/crypto/engine/eng_cryptodev.c @@ -2175,8 +2175,10 @@ static int cryptodev_dsa_keygen(DSA *dsa) return ret; sw_try: { - const DSA_METHOD *meth = DSA_OpenSSL(); - ret = (meth->dsa_keygen) (dsa); + const DSA_METHOD *meth = dsa->meth; + dsa->meth = DSA_OpenSSL(); + ret = DSA_generate_key(dsa); + dsa->meth = meth; } return ret; } @@ -2230,11 +2232,13 @@ static int cryptodev_dsa_keygen_async(DSA *dsa, struct pkc_cookie_s *cookie) return ret; sw_try: { - const DSA_METHOD *meth = DSA_OpenSSL(); + const DSA_METHOD *meth = dsa->meth; + dsa->meth = DSA_OpenSSL(); if (kop) free(kop); - ret = (meth->dsa_keygen) (dsa); + ret = DSA_generate_key(dsa); + dsa->meth = meth; cookie->pkc_callback(cookie, 0); } return ret; -- 2.7.0