Browse Source

[IPSEC]: Add support for aes-ctr.

The below patch allows IPsec to use CTR mode with AES encryption
algorithm. Tested this using setkey in ipsec-tools.

Signed-off-by: Joy Latten <latten@austin.ibm.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Joy Latten 17 years ago
parent
commit
405137d16f
2 changed files with 18 additions and 0 deletions
  1. 1 0
      include/linux/pfkeyv2.h
  2. 17 0
      net/xfrm/xfrm_algo.c

+ 1 - 0
include/linux/pfkeyv2.h

@@ -298,6 +298,7 @@ struct sadb_x_sec_ctx {
 #define SADB_X_EALG_BLOWFISHCBC		7
 #define SADB_X_EALG_BLOWFISHCBC		7
 #define SADB_EALG_NULL			11
 #define SADB_EALG_NULL			11
 #define SADB_X_EALG_AESCBC		12
 #define SADB_X_EALG_AESCBC		12
+#define SADB_X_EALG_AESCTR		13
 #define SADB_X_EALG_AES_CCM_ICV8	14
 #define SADB_X_EALG_AES_CCM_ICV8	14
 #define SADB_X_EALG_AES_CCM_ICV12	15
 #define SADB_X_EALG_AES_CCM_ICV12	15
 #define SADB_X_EALG_AES_CCM_ICV16	16
 #define SADB_X_EALG_AES_CCM_ICV16	16

+ 17 - 0
net/xfrm/xfrm_algo.c

@@ -399,6 +399,23 @@ static struct xfrm_algo_desc ealg_list[] = {
 		.sadb_alg_maxbits = 256
 		.sadb_alg_maxbits = 256
 	}
 	}
 },
 },
+{
+	.name = "rfc3686(ctr(aes))",
+
+	.uinfo = {
+		.encr = {
+			.blockbits = 128,
+			.defkeybits = 160, /* 128-bit key + 32-bit nonce */
+		}
+	},
+
+	.desc = {
+		.sadb_alg_id = SADB_X_EALG_AESCTR,
+		.sadb_alg_ivlen	= 8,
+		.sadb_alg_minbits = 128,
+		.sadb_alg_maxbits = 256
+	}
+},
 };
 };
 
 
 static struct xfrm_algo_desc calg_list[] = {
 static struct xfrm_algo_desc calg_list[] = {