From 10be401a33e6ebcc325d6747914c70595cd53d0a Mon Sep 17 00:00:00 2001 From: Yashpal Dutta Date: Thu, 24 Apr 2014 00:35:34 +0545 Subject: [PATCH 15/26] 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 6d69336..dab8fea 100644 --- a/crypto/engine/eng_cryptodev.c +++ b/crypto/engine/eng_cryptodev.c @@ -2069,8 +2069,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; } @@ -2124,11 +2126,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.3.5