]> code.ossystems Code Review - meta-freescale.git/blob
b31668e19490fb0a529f82bf17a19a5479a45bb7
[meta-freescale.git] /
1 From 084fa469a8fef530d71a0870364df1c7997f6465 Mon Sep 17 00:00:00 2001
2 From: Cristian Stoica <cristian.stoica@freescale.com>
3 Date: Thu, 31 Jul 2014 14:06:19 +0300
4 Subject: [PATCH 03/17] cryptodev: fix algorithm registration
5
6 Cryptodev specific algorithms must register only if available in kernel.
7
8 Change-Id: Iec5af8f4f3138357e4b96f2ec1627278134e4808
9 Signed-off-by: Cristian Stoica <cristian.stoica@freescale.com>
10 Reviewed-on: http://git.am.freescale.net:8181/15326
11 Reviewed-by: Horia Ioan Geanta Neag <horia.geanta@freescale.com>
12 Reviewed-on: http://git.am.freescale.net:8181/17224
13 ---
14  crypto/engine/eng_cryptodev.c | 20 +++++++++++++++++---
15  1 file changed, 17 insertions(+), 3 deletions(-)
16
17 diff --git a/crypto/engine/eng_cryptodev.c b/crypto/engine/eng_cryptodev.c
18 index 7588a28..e3eb98b 100644
19 --- a/crypto/engine/eng_cryptodev.c
20 +++ b/crypto/engine/eng_cryptodev.c
21 @@ -133,6 +133,8 @@ static int cryptodev_dh_compute_key(unsigned char *key,
22  static int cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p,
23      void (*f)(void));
24  void ENGINE_load_cryptodev(void);
25 +const EVP_CIPHER cryptodev_aes_128_cbc_hmac_sha1;
26 +const EVP_CIPHER cryptodev_aes_256_cbc_hmac_sha1;
27  
28  static const ENGINE_CMD_DEFN cryptodev_defns[] = {
29         { 0, NULL, NULL, 0 }
30 @@ -342,7 +344,21 @@ get_cryptodev_digests(const int **cnids)
31  static int
32  cryptodev_usable_ciphers(const int **nids)
33  {
34 -       return (get_cryptodev_ciphers(nids));
35 +       int i, count;
36 +
37 +       count = get_cryptodev_ciphers(nids);
38 +       /* add ciphers specific to cryptodev if found in kernel */
39 +       for(i = 0; i < count; i++) {
40 +               switch (*(*nids + i)) {
41 +               case NID_aes_128_cbc_hmac_sha1:
42 +                       EVP_add_cipher(&cryptodev_aes_128_cbc_hmac_sha1);
43 +                       break;
44 +               case NID_aes_256_cbc_hmac_sha1:
45 +                       EVP_add_cipher(&cryptodev_aes_256_cbc_hmac_sha1);
46 +                       break;
47 +               }
48 +       }
49 +       return count;
50  }
51  
52  static int
53 @@ -1582,8 +1598,6 @@ ENGINE_load_cryptodev(void)
54         }
55         put_dev_crypto(fd);
56  
57 -       EVP_add_cipher(&cryptodev_aes_128_cbc_hmac_sha1);
58 -       EVP_add_cipher(&cryptodev_aes_256_cbc_hmac_sha1);
59         if (!ENGINE_set_id(engine, "cryptodev") ||
60             !ENGINE_set_name(engine, "BSD cryptodev engine") ||
61             !ENGINE_set_ciphers(engine, cryptodev_engine_ciphers) ||
62 -- 
63 1.8.3.1
64