aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2015-05-27 04:03:44 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2015-05-27 23:23:19 -0400
commit165ecc6373c7bfcd63da6dc489980c892fac2db9 (patch)
treebdba73d286cbbe24ec9d2a395da12dc833459100
parent8a525fcd46751f8538c240baa4d37d55896c5a29 (diff)
xfrm: Add IV generator information to xfrm_algo_desc
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>
-rw-r--r--include/net/xfrm.h2
-rw-r--r--net/xfrm/xfrm_algo.c16
2 files changed, 18 insertions, 0 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h
index 36ac102c97c7..30bca865c9dc 100644
--- a/include/net/xfrm.h
+++ b/include/net/xfrm.h
@@ -1314,6 +1314,7 @@ static inline int xfrm_id_proto_match(u8 proto, u8 userproto)
1314 * xfrm algorithm information 1314 * xfrm algorithm information
1315 */ 1315 */
1316struct xfrm_algo_aead_info { 1316struct xfrm_algo_aead_info {
1317 char *geniv;
1317 u16 icv_truncbits; 1318 u16 icv_truncbits;
1318}; 1319};
1319 1320
@@ -1323,6 +1324,7 @@ struct xfrm_algo_auth_info {
1323}; 1324};
1324 1325
1325struct xfrm_algo_encr_info { 1326struct xfrm_algo_encr_info {
1327 char *geniv;
1326 u16 blockbits; 1328 u16 blockbits;
1327 u16 defkeybits; 1329 u16 defkeybits;
1328}; 1330};
diff --git a/net/xfrm/xfrm_algo.c b/net/xfrm/xfrm_algo.c
index 12e82a5e4ad5..67266b7501f1 100644
--- a/net/xfrm/xfrm_algo.c
+++ b/net/xfrm/xfrm_algo.c
@@ -31,6 +31,7 @@ static struct xfrm_algo_desc aead_list[] = {
31 31
32 .uinfo = { 32 .uinfo = {
33 .aead = { 33 .aead = {
34 .geniv = "seqniv",
34 .icv_truncbits = 64, 35 .icv_truncbits = 64,
35 } 36 }
36 }, 37 },
@@ -49,6 +50,7 @@ static struct xfrm_algo_desc aead_list[] = {
49 50
50 .uinfo = { 51 .uinfo = {
51 .aead = { 52 .aead = {
53 .geniv = "seqniv",
52 .icv_truncbits = 96, 54 .icv_truncbits = 96,
53 } 55 }
54 }, 56 },
@@ -67,6 +69,7 @@ static struct xfrm_algo_desc aead_list[] = {
67 69
68 .uinfo = { 70 .uinfo = {
69 .aead = { 71 .aead = {
72 .geniv = "seqniv",
70 .icv_truncbits = 128, 73 .icv_truncbits = 128,
71 } 74 }
72 }, 75 },
@@ -85,6 +88,7 @@ static struct xfrm_algo_desc aead_list[] = {
85 88
86 .uinfo = { 89 .uinfo = {
87 .aead = { 90 .aead = {
91 .geniv = "seqniv",
88 .icv_truncbits = 64, 92 .icv_truncbits = 64,
89 } 93 }
90 }, 94 },
@@ -103,6 +107,7 @@ static struct xfrm_algo_desc aead_list[] = {
103 107
104 .uinfo = { 108 .uinfo = {
105 .aead = { 109 .aead = {
110 .geniv = "seqniv",
106 .icv_truncbits = 96, 111 .icv_truncbits = 96,
107 } 112 }
108 }, 113 },
@@ -121,6 +126,7 @@ static struct xfrm_algo_desc aead_list[] = {
121 126
122 .uinfo = { 127 .uinfo = {
123 .aead = { 128 .aead = {
129 .geniv = "seqniv",
124 .icv_truncbits = 128, 130 .icv_truncbits = 128,
125 } 131 }
126 }, 132 },
@@ -139,6 +145,7 @@ static struct xfrm_algo_desc aead_list[] = {
139 145
140 .uinfo = { 146 .uinfo = {
141 .aead = { 147 .aead = {
148 .geniv = "seqiv",
142 .icv_truncbits = 128, 149 .icv_truncbits = 128,
143 } 150 }
144 }, 151 },
@@ -353,6 +360,7 @@ static struct xfrm_algo_desc ealg_list[] = {
353 360
354 .uinfo = { 361 .uinfo = {
355 .encr = { 362 .encr = {
363 .geniv = "echainiv",
356 .blockbits = 64, 364 .blockbits = 64,
357 .defkeybits = 64, 365 .defkeybits = 64,
358 } 366 }
@@ -373,6 +381,7 @@ static struct xfrm_algo_desc ealg_list[] = {
373 381
374 .uinfo = { 382 .uinfo = {
375 .encr = { 383 .encr = {
384 .geniv = "echainiv",
376 .blockbits = 64, 385 .blockbits = 64,
377 .defkeybits = 192, 386 .defkeybits = 192,
378 } 387 }
@@ -393,6 +402,7 @@ static struct xfrm_algo_desc ealg_list[] = {
393 402
394 .uinfo = { 403 .uinfo = {
395 .encr = { 404 .encr = {
405 .geniv = "echainiv",
396 .blockbits = 64, 406 .blockbits = 64,
397 .defkeybits = 128, 407 .defkeybits = 128,
398 } 408 }
@@ -413,6 +423,7 @@ static struct xfrm_algo_desc ealg_list[] = {
413 423
414 .uinfo = { 424 .uinfo = {
415 .encr = { 425 .encr = {
426 .geniv = "echainiv",
416 .blockbits = 64, 427 .blockbits = 64,
417 .defkeybits = 128, 428 .defkeybits = 128,
418 } 429 }
@@ -433,6 +444,7 @@ static struct xfrm_algo_desc ealg_list[] = {
433 444
434 .uinfo = { 445 .uinfo = {
435 .encr = { 446 .encr = {
447 .geniv = "echainiv",
436 .blockbits = 128, 448 .blockbits = 128,
437 .defkeybits = 128, 449 .defkeybits = 128,
438 } 450 }
@@ -453,6 +465,7 @@ static struct xfrm_algo_desc ealg_list[] = {
453 465
454 .uinfo = { 466 .uinfo = {
455 .encr = { 467 .encr = {
468 .geniv = "echainiv",
456 .blockbits = 128, 469 .blockbits = 128,
457 .defkeybits = 128, 470 .defkeybits = 128,
458 } 471 }
@@ -473,6 +486,7 @@ static struct xfrm_algo_desc ealg_list[] = {
473 486
474 .uinfo = { 487 .uinfo = {
475 .encr = { 488 .encr = {
489 .geniv = "echainiv",
476 .blockbits = 128, 490 .blockbits = 128,
477 .defkeybits = 128, 491 .defkeybits = 128,
478 } 492 }
@@ -493,6 +507,7 @@ static struct xfrm_algo_desc ealg_list[] = {
493 507
494 .uinfo = { 508 .uinfo = {
495 .encr = { 509 .encr = {
510 .geniv = "echainiv",
496 .blockbits = 128, 511 .blockbits = 128,
497 .defkeybits = 128, 512 .defkeybits = 128,
498 } 513 }
@@ -512,6 +527,7 @@ static struct xfrm_algo_desc ealg_list[] = {
512 527
513 .uinfo = { 528 .uinfo = {
514 .encr = { 529 .encr = {
530 .geniv = "seqiv",
515 .blockbits = 128, 531 .blockbits = 128,
516 .defkeybits = 160, /* 128-bit key + 32-bit nonce */ 532 .defkeybits = 160, /* 128-bit key + 32-bit nonce */
517 } 533 }