crypto: talitos - add support for sha256 and md5 variants
PATCH 1/1 crypto: talitos - add support for sha256 and md5 variants
This patch adds support for:
authenc(hmac(sha256),cbc(aes)), authenc(hmac(sha256),cbc(des3_ede)), authenc(hmac(md5),cbc(aes)), authenc(hmac(md5),cbc(des3_ede)).
Some constant usage was changed to use aes, des, and sha include files.
Signed-off-by Lee Nipper <[email protected]>
---
This patch applies against the kernel.org crypto tree atgit://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git.
drivers/crypto/talitos.c | 111 +++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 99 insertions(+), 12 deletions(-)
drivers/crypto/talitos.c +99 -12
@@ -40,6 +40,7 @@#include <crypto/algapi.h> #include <crypto/aes.h> +#include <crypto/des.h> #include <crypto/sha.h> #include <crypto/aead.h> #include <crypto/authenc.h>
@@ -640,13 +641,9 @@ static void talitos_unregister_rng(struct device *dev)*/ #define TALITOS_CRA_PRIORITY 3000#define TALITOS_MAX_KEY_SIZE 64 -#define TALITOS_MAX_AUTH_SIZE 20 -#define TALITOS_AES_MIN_BLOCK_SIZE 16 -#define TALITOS_3DES_MIN_BLOCK_SIZE 24 +#define TALITOS_MAX_IV_LENGTH 16/* max of AES_BLOCK_SIZE, DES3_EDE_BLOCK_SIZE */ -#define TALITOS_AES_IV_LENGTH 16 -#define TALITOS_3DES_IV_LENGTH 8 -#define TALITOS_MAX_IV_LENGTH 16 +#define MD5_DIGEST_SIZE 16struct talitos_ctx {struct device *dev;
@@ -1145,7 +1142,7 @@ static struct talitos_alg_template driver_algs[] = { { .name = "authenc(hmac(sha1),cbc(aes))", .driver_name = "authenc-hmac-sha1-cbc-aes-talitos", - .blocksize = TALITOS_AES_MIN_BLOCK_SIZE, + .blocksize = AES_BLOCK_SIZE, .aead = { .setkey = aead_authenc_setkey, .setauthsize = aead_authenc_setauthsize,
@@ -1153,8 +1150,8 @@ static struct talitos_alg_template driver_algs[] = { .decrypt = aead_authenc_decrypt, .givencrypt = aead_authenc_givencrypt, .geniv = "<built-in>", - .ivsize = TALITOS_AES_IV_LENGTH, - .maxauthsize =TALITOS_MAX_AUTH_SIZE , + .ivsize = AES_BLOCK_SIZE, + .maxauthsize =SHA1_DIGEST_SIZE , }, .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | DESC_HDR_SEL0_AESU |
@@ -1167,7 +1164,7 @@ static struct talitos_alg_template driver_algs[] = { { .name = "authenc(hmac(sha1),cbc(des3_ede))", .driver_name = "authenc-hmac-sha1-cbc-3des-talitos", - .blocksize = TALITOS_3DES_MIN_BLOCK_SIZE, + .blocksize = DES3_EDE_BLOCK_SIZE, .aead = { .setkey = aead_authenc_setkey, .setauthsize = aead_authenc_setauthsize,
@@ -1175,8 +1172,8 @@ static struct talitos_alg_template driver_algs[] = { .decrypt = aead_authenc_decrypt, .givencrypt = aead_authenc_givencrypt, .geniv = "<built-in>", - .ivsize = TALITOS_3DES_IV_LENGTH, - .maxauthsize =TALITOS_MAX_AUTH_SIZE , + .ivsize = DES3_EDE_BLOCK_SIZE, + .maxauthsize =SHA1_DIGEST_SIZE , }, .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | DESC_HDR_SEL0_DEU |
@@ -1186,6 +1183,96 @@ static struct talitos_alg_template driver_algs[] = {DESC_HDR_MODE1_MDEU_INIT |DESC_HDR_MODE1_MDEU_PAD | DESC_HDR_MODE1_MDEU_SHA1_HMAC, + }, + { + .name = "authenc(hmac(sha256),cbc(aes))", + .driver_name = "authenc-hmac-sha256-cbc-aes-talitos", + .blocksize = AES_BLOCK_SIZE, + .aead = { + .setkey = aead_authenc_setkey, + .setauthsize = aead_authenc_setauthsize, + .encrypt = aead_authenc_encrypt, + .decrypt = aead_authenc_decrypt, + .givencrypt = aead_authenc_givencrypt, + .geniv = "<built-in>", + .ivsize = AES_BLOCK_SIZE, + .maxauthsize = SHA256_DIGEST_SIZE, + }, + .desc_hdr_template =DESC_HDR_TYPE_IPSEC_ESP | +DESC_HDR_SEL0_AESU | +DESC_HDR_MODE0_AESU_CBC | +DESC_HDR_SEL1_MDEUA | +DESC_HDR_MODE1_MDEU_INIT | +DESC_HDR_MODE1_MDEU_PAD | + DESC_HDR_MODE1_MDEU_SHA256_HMAC, + }, + { + .name = "authenc(hmac(sha256),cbc(des3_ede))", + .driver_name = "authenc-hmac-sha256-cbc-3des-talitos", + .blocksize = DES3_EDE_BLOCK_SIZE, + .aead = { + .setkey = aead_authenc_setkey, + .setauthsize = aead_authenc_setauthsize, + .encrypt = aead_authenc_encrypt, + .decrypt = aead_authenc_decrypt, + .givencrypt = aead_authenc_givencrypt, + .geniv = "<built-in>", + .ivsize = DES3_EDE_BLOCK_SIZE, + .maxauthsize = SHA256_DIGEST_SIZE, + }, + .desc_hdr_template =DESC_HDR_TYPE_IPSEC_ESP | +DESC_HDR_SEL0_DEU | +DESC_HDR_MODE0_DEU_CBC | +DESC_HDR_MODE0_DEU_3DES | +DESC_HDR_SEL1_MDEUA | +DESC_HDR_MODE1_MDEU_INIT | +DESC_HDR_MODE1_MDEU_PAD | + DESC_HDR_MODE1_MDEU_SHA256_HMAC, + }, + { + .name = "authenc(hmac(md5),cbc(aes))", + .driver_name = "authenc-hmac-md5-cbc-aes-talitos", + .blocksize = AES_BLOCK_SIZE, + .aead = { + .setkey = aead_authenc_setkey, + .setauthsize = aead_authenc_setauthsize, + .encrypt = aead_authenc_encrypt, + .decrypt = aead_authenc_decrypt, + .givencrypt = aead_authenc_givencrypt, + .geniv = "<built-in>", + .ivsize = AES_BLOCK_SIZE, + .maxauthsize = MD5_DIGEST_SIZE, + }, + .desc_hdr_template =DESC_HDR_TYPE_IPSEC_ESP | +DESC_HDR_SEL0_AESU | +DESC_HDR_MODE0_AESU_CBC | +DESC_HDR_SEL1_MDEUA | +DESC_HDR_MODE1_MDEU_INIT | +DESC_HDR_MODE1_MDEU_PAD | + DESC_HDR_MODE1_MDEU_MD5_HMAC, + }, + { + .name = "authenc(hmac(md5),cbc(des3_ede))", + .driver_name = "authenc-hmac-md5-cbc-3des-talitos", + .blocksize = DES3_EDE_BLOCK_SIZE, + .aead = { + .setkey = aead_authenc_setkey, + .setauthsize = aead_authenc_setauthsize, + .encrypt = aead_authenc_encrypt, + .decrypt = aead_authenc_decrypt, + .givencrypt = aead_authenc_givencrypt, + .geniv = "<built-in>", + .ivsize = DES3_EDE_BLOCK_SIZE, + .maxauthsize = MD5_DIGEST_SIZE, + }, + .desc_hdr_template =DESC_HDR_TYPE_IPSEC_ESP | +DESC_HDR_SEL0_DEU | +DESC_HDR_MODE0_DEU_CBC | +DESC_HDR_MODE0_DEU_3DES | +DESC_HDR_SEL1_MDEUA | +DESC_HDR_MODE1_MDEU_INIT | +DESC_HDR_MODE1_MDEU_PAD | + DESC_HDR_MODE1_MDEU_MD5_HMAC, } };
Signature · 1 line
1.5.6.1
Herbert Xu
maintainerQuoted 8 lines · Lee Nipper
This patch adds support for:
authenc(hmac(sha256),cbc(aes)), authenc(hmac(sha256),cbc(des3_ede)), authenc(hmac(md5),cbc(aes)), authenc(hmac(md5),cbc(des3_ede)).
Some constant usage was changed to use aes, des, and sha include files.Signed-off-by Lee Nipper <[email protected]>
Patch applied. Thanks a lot!
Signature · 4 lines
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt