]> code.ossystems Code Review - meta-freescale.git/blob
59330a1e0aa0f631b4ea64879c3af0ef3abd0ca4
[meta-freescale.git] /
1 From 10be401a33e6ebcc325d6747914c70595cd53d0a Mon Sep 17 00:00:00 2001
2 From: Yashpal Dutta <yashpal.dutta@freescale.com>
3 Date: Thu, 24 Apr 2014 00:35:34 +0545
4 Subject: [PATCH 15/26] SW Backoff mechanism for dsa keygen
5
6 Upstream-status: Pending
7
8 DSA Keygen is not handled in default openssl dsa method. Due to
9 same null function pointer in SW DSA method, the backoff for dsa
10 keygen gives segmentation fault.
11
12 Signed-off-by: Yashpal Dutta <yashpal.dutta@freescale.com>
13 Tested-by: Cristian Stoica <cristian.stoica@freescale.com>
14 ---
15  crypto/engine/eng_cryptodev.c | 12 ++++++++----
16  1 file changed, 8 insertions(+), 4 deletions(-)
17
18 diff --git a/crypto/engine/eng_cryptodev.c b/crypto/engine/eng_cryptodev.c
19 index 6d69336..dab8fea 100644
20 --- a/crypto/engine/eng_cryptodev.c
21 +++ b/crypto/engine/eng_cryptodev.c
22 @@ -2069,8 +2069,10 @@ static int cryptodev_dsa_keygen(DSA *dsa)
23         return ret;
24  sw_try:
25         {
26 -               const DSA_METHOD *meth = DSA_OpenSSL();
27 -               ret = (meth->dsa_keygen)(dsa);
28 +               const DSA_METHOD *meth = dsa->meth;
29 +               dsa->meth = DSA_OpenSSL();
30 +               ret = DSA_generate_key(dsa);
31 +               dsa->meth = meth;
32         }
33         return ret;
34  }
35 @@ -2124,11 +2126,13 @@ static int cryptodev_dsa_keygen_async(DSA *dsa,  struct pkc_cookie_s *cookie)
36         return ret;
37  sw_try:
38         {
39 -               const DSA_METHOD *meth = DSA_OpenSSL();
40 +               const DSA_METHOD *meth = dsa->meth;
41  
42 +               dsa->meth = DSA_OpenSSL();
43                 if (kop)
44                         free(kop);
45 -               ret = (meth->dsa_keygen)(dsa);
46 +               ret = DSA_generate_key(dsa);
47 +               dsa->meth = meth;
48                 cookie->pkc_callback(cookie, 0);
49         }
50         return ret;
51 -- 
52 2.3.5
53