xfrm: Add IV generator information to xfrm_algo_desc
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 27 May 2015 08:03:44 +0000 (16:03 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 28 May 2015 03:23:19 +0000 (11:23 +0800)
This patch adds IV generator information for each AEAD and block
cipher to xfrm_algo_desc.  This will be used to access the new
AEAD interface.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
include/net/xfrm.h
net/xfrm/xfrm_algo.c

index 36ac102c97c72b1b5d62f99e28bf285fbad9f8bb..30bca865c9dc92936e5492c29bdb04969b2d90df 100644 (file)
@@ -1314,6 +1314,7 @@ static inline int xfrm_id_proto_match(u8 proto, u8 userproto)
  * xfrm algorithm information
  */
 struct xfrm_algo_aead_info {
+       char *geniv;
        u16 icv_truncbits;
 };
 
@@ -1323,6 +1324,7 @@ struct xfrm_algo_auth_info {
 };
 
 struct xfrm_algo_encr_info {
+       char *geniv;
        u16 blockbits;
        u16 defkeybits;
 };
index 12e82a5e4ad5873e716014e421be8e329587e00c..67266b7501f13a02184306f5e6dd01924b99bbaf 100644 (file)
@@ -31,6 +31,7 @@ static struct xfrm_algo_desc aead_list[] = {
 
        .uinfo = {
                .aead = {
+                       .geniv = "seqniv",
                        .icv_truncbits = 64,
                }
        },
@@ -49,6 +50,7 @@ static struct xfrm_algo_desc aead_list[] = {
 
        .uinfo = {
                .aead = {
+                       .geniv = "seqniv",
                        .icv_truncbits = 96,
                }
        },
@@ -67,6 +69,7 @@ static struct xfrm_algo_desc aead_list[] = {
 
        .uinfo = {
                .aead = {
+                       .geniv = "seqniv",
                        .icv_truncbits = 128,
                }
        },
@@ -85,6 +88,7 @@ static struct xfrm_algo_desc aead_list[] = {
 
        .uinfo = {
                .aead = {
+                       .geniv = "seqniv",
                        .icv_truncbits = 64,
                }
        },
@@ -103,6 +107,7 @@ static struct xfrm_algo_desc aead_list[] = {
 
        .uinfo = {
                .aead = {
+                       .geniv = "seqniv",
                        .icv_truncbits = 96,
                }
        },
@@ -121,6 +126,7 @@ static struct xfrm_algo_desc aead_list[] = {
 
        .uinfo = {
                .aead = {
+                       .geniv = "seqniv",
                        .icv_truncbits = 128,
                }
        },
@@ -139,6 +145,7 @@ static struct xfrm_algo_desc aead_list[] = {
 
        .uinfo = {
                .aead = {
+                       .geniv = "seqiv",
                        .icv_truncbits = 128,
                }
        },
@@ -353,6 +360,7 @@ static struct xfrm_algo_desc ealg_list[] = {
 
        .uinfo = {
                .encr = {
+                       .geniv = "echainiv",
                        .blockbits = 64,
                        .defkeybits = 64,
                }
@@ -373,6 +381,7 @@ static struct xfrm_algo_desc ealg_list[] = {
 
        .uinfo = {
                .encr = {
+                       .geniv = "echainiv",
                        .blockbits = 64,
                        .defkeybits = 192,
                }
@@ -393,6 +402,7 @@ static struct xfrm_algo_desc ealg_list[] = {
 
        .uinfo = {
                .encr = {
+                       .geniv = "echainiv",
                        .blockbits = 64,
                        .defkeybits = 128,
                }
@@ -413,6 +423,7 @@ static struct xfrm_algo_desc ealg_list[] = {
 
        .uinfo = {
                .encr = {
+                       .geniv = "echainiv",
                        .blockbits = 64,
                        .defkeybits = 128,
                }
@@ -433,6 +444,7 @@ static struct xfrm_algo_desc ealg_list[] = {
 
        .uinfo = {
                .encr = {
+                       .geniv = "echainiv",
                        .blockbits = 128,
                        .defkeybits = 128,
                }
@@ -453,6 +465,7 @@ static struct xfrm_algo_desc ealg_list[] = {
 
        .uinfo = {
                .encr = {
+                       .geniv = "echainiv",
                        .blockbits = 128,
                        .defkeybits = 128,
                }
@@ -473,6 +486,7 @@ static struct xfrm_algo_desc ealg_list[] = {
 
        .uinfo = {
                .encr = {
+                       .geniv = "echainiv",
                        .blockbits = 128,
                        .defkeybits = 128,
                }
@@ -493,6 +507,7 @@ static struct xfrm_algo_desc ealg_list[] = {
 
        .uinfo = {
                .encr = {
+                       .geniv = "echainiv",
                        .blockbits = 128,
                        .defkeybits = 128,
                }
@@ -512,6 +527,7 @@ static struct xfrm_algo_desc ealg_list[] = {
 
        .uinfo = {
                .encr = {
+                       .geniv = "seqiv",
                        .blockbits = 128,
                        .defkeybits = 160, /* 128-bit key + 32-bit nonce */
                }