Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

crypto: talitos - add sha224, sha384 and sha512 to existing AEAD algorithms

With this, now all combinations of
CBC: AES, 3DES-EDE
with
HMAC: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
are supported.

Signed-off-by: Horia Geanta <horia.geanta@freescale.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Horia Geanta and committed by
Herbert Xu
357fb605 865d5061

+166 -1
+160 -1
drivers/crypto/talitos.c
··· 623 623 * crypto alg 624 624 */ 625 625 #define TALITOS_CRA_PRIORITY 3000 626 - #define TALITOS_MAX_KEY_SIZE 64 626 + #define TALITOS_MAX_KEY_SIZE 96 627 627 #define TALITOS_MAX_IV_LENGTH 16 /* max of AES_BLOCK_SIZE, DES3_EDE_BLOCK_SIZE */ 628 628 629 629 #define MD5_BLOCK_SIZE 64 ··· 1956 1956 DESC_HDR_MODE1_MDEU_PAD | 1957 1957 DESC_HDR_MODE1_MDEU_SHA1_HMAC, 1958 1958 }, 1959 + { .type = CRYPTO_ALG_TYPE_AEAD, 1960 + .alg.crypto = { 1961 + .cra_name = "authenc(hmac(sha224),cbc(aes))", 1962 + .cra_driver_name = "authenc-hmac-sha224-cbc-aes-talitos", 1963 + .cra_blocksize = AES_BLOCK_SIZE, 1964 + .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, 1965 + .cra_type = &crypto_aead_type, 1966 + .cra_aead = { 1967 + .setkey = aead_setkey, 1968 + .setauthsize = aead_setauthsize, 1969 + .encrypt = aead_encrypt, 1970 + .decrypt = aead_decrypt, 1971 + .givencrypt = aead_givencrypt, 1972 + .geniv = "<built-in>", 1973 + .ivsize = AES_BLOCK_SIZE, 1974 + .maxauthsize = SHA224_DIGEST_SIZE, 1975 + } 1976 + }, 1977 + .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | 1978 + DESC_HDR_SEL0_AESU | 1979 + DESC_HDR_MODE0_AESU_CBC | 1980 + DESC_HDR_SEL1_MDEUA | 1981 + DESC_HDR_MODE1_MDEU_INIT | 1982 + DESC_HDR_MODE1_MDEU_PAD | 1983 + DESC_HDR_MODE1_MDEU_SHA224_HMAC, 1984 + }, 1985 + { .type = CRYPTO_ALG_TYPE_AEAD, 1986 + .alg.crypto = { 1987 + .cra_name = "authenc(hmac(sha224),cbc(des3_ede))", 1988 + .cra_driver_name = "authenc-hmac-sha224-cbc-3des-talitos", 1989 + .cra_blocksize = DES3_EDE_BLOCK_SIZE, 1990 + .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, 1991 + .cra_type = &crypto_aead_type, 1992 + .cra_aead = { 1993 + .setkey = aead_setkey, 1994 + .setauthsize = aead_setauthsize, 1995 + .encrypt = aead_encrypt, 1996 + .decrypt = aead_decrypt, 1997 + .givencrypt = aead_givencrypt, 1998 + .geniv = "<built-in>", 1999 + .ivsize = DES3_EDE_BLOCK_SIZE, 2000 + .maxauthsize = SHA224_DIGEST_SIZE, 2001 + } 2002 + }, 2003 + .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | 2004 + DESC_HDR_SEL0_DEU | 2005 + DESC_HDR_MODE0_DEU_CBC | 2006 + DESC_HDR_MODE0_DEU_3DES | 2007 + DESC_HDR_SEL1_MDEUA | 2008 + DESC_HDR_MODE1_MDEU_INIT | 2009 + DESC_HDR_MODE1_MDEU_PAD | 2010 + DESC_HDR_MODE1_MDEU_SHA224_HMAC, 2011 + }, 1959 2012 { .type = CRYPTO_ALG_TYPE_AEAD, 1960 2013 .alg.crypto = { 1961 2014 .cra_name = "authenc(hmac(sha256),cbc(aes))", ··· 2061 2008 DESC_HDR_MODE1_MDEU_INIT | 2062 2009 DESC_HDR_MODE1_MDEU_PAD | 2063 2010 DESC_HDR_MODE1_MDEU_SHA256_HMAC, 2011 + }, 2012 + { .type = CRYPTO_ALG_TYPE_AEAD, 2013 + .alg.crypto = { 2014 + .cra_name = "authenc(hmac(sha384),cbc(aes))", 2015 + .cra_driver_name = "authenc-hmac-sha384-cbc-aes-talitos", 2016 + .cra_blocksize = AES_BLOCK_SIZE, 2017 + .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, 2018 + .cra_type = &crypto_aead_type, 2019 + .cra_aead = { 2020 + .setkey = aead_setkey, 2021 + .setauthsize = aead_setauthsize, 2022 + .encrypt = aead_encrypt, 2023 + .decrypt = aead_decrypt, 2024 + .givencrypt = aead_givencrypt, 2025 + .geniv = "<built-in>", 2026 + .ivsize = AES_BLOCK_SIZE, 2027 + .maxauthsize = SHA384_DIGEST_SIZE, 2028 + } 2029 + }, 2030 + .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | 2031 + DESC_HDR_SEL0_AESU | 2032 + DESC_HDR_MODE0_AESU_CBC | 2033 + DESC_HDR_SEL1_MDEUB | 2034 + DESC_HDR_MODE1_MDEU_INIT | 2035 + DESC_HDR_MODE1_MDEU_PAD | 2036 + DESC_HDR_MODE1_MDEUB_SHA384_HMAC, 2037 + }, 2038 + { .type = CRYPTO_ALG_TYPE_AEAD, 2039 + .alg.crypto = { 2040 + .cra_name = "authenc(hmac(sha384),cbc(des3_ede))", 2041 + .cra_driver_name = "authenc-hmac-sha384-cbc-3des-talitos", 2042 + .cra_blocksize = DES3_EDE_BLOCK_SIZE, 2043 + .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, 2044 + .cra_type = &crypto_aead_type, 2045 + .cra_aead = { 2046 + .setkey = aead_setkey, 2047 + .setauthsize = aead_setauthsize, 2048 + .encrypt = aead_encrypt, 2049 + .decrypt = aead_decrypt, 2050 + .givencrypt = aead_givencrypt, 2051 + .geniv = "<built-in>", 2052 + .ivsize = DES3_EDE_BLOCK_SIZE, 2053 + .maxauthsize = SHA384_DIGEST_SIZE, 2054 + } 2055 + }, 2056 + .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | 2057 + DESC_HDR_SEL0_DEU | 2058 + DESC_HDR_MODE0_DEU_CBC | 2059 + DESC_HDR_MODE0_DEU_3DES | 2060 + DESC_HDR_SEL1_MDEUB | 2061 + DESC_HDR_MODE1_MDEU_INIT | 2062 + DESC_HDR_MODE1_MDEU_PAD | 2063 + DESC_HDR_MODE1_MDEUB_SHA384_HMAC, 2064 + }, 2065 + { .type = CRYPTO_ALG_TYPE_AEAD, 2066 + .alg.crypto = { 2067 + .cra_name = "authenc(hmac(sha512),cbc(aes))", 2068 + .cra_driver_name = "authenc-hmac-sha512-cbc-aes-talitos", 2069 + .cra_blocksize = AES_BLOCK_SIZE, 2070 + .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, 2071 + .cra_type = &crypto_aead_type, 2072 + .cra_aead = { 2073 + .setkey = aead_setkey, 2074 + .setauthsize = aead_setauthsize, 2075 + .encrypt = aead_encrypt, 2076 + .decrypt = aead_decrypt, 2077 + .givencrypt = aead_givencrypt, 2078 + .geniv = "<built-in>", 2079 + .ivsize = AES_BLOCK_SIZE, 2080 + .maxauthsize = SHA512_DIGEST_SIZE, 2081 + } 2082 + }, 2083 + .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | 2084 + DESC_HDR_SEL0_AESU | 2085 + DESC_HDR_MODE0_AESU_CBC | 2086 + DESC_HDR_SEL1_MDEUB | 2087 + DESC_HDR_MODE1_MDEU_INIT | 2088 + DESC_HDR_MODE1_MDEU_PAD | 2089 + DESC_HDR_MODE1_MDEUB_SHA512_HMAC, 2090 + }, 2091 + { .type = CRYPTO_ALG_TYPE_AEAD, 2092 + .alg.crypto = { 2093 + .cra_name = "authenc(hmac(sha512),cbc(des3_ede))", 2094 + .cra_driver_name = "authenc-hmac-sha512-cbc-3des-talitos", 2095 + .cra_blocksize = DES3_EDE_BLOCK_SIZE, 2096 + .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, 2097 + .cra_type = &crypto_aead_type, 2098 + .cra_aead = { 2099 + .setkey = aead_setkey, 2100 + .setauthsize = aead_setauthsize, 2101 + .encrypt = aead_encrypt, 2102 + .decrypt = aead_decrypt, 2103 + .givencrypt = aead_givencrypt, 2104 + .geniv = "<built-in>", 2105 + .ivsize = DES3_EDE_BLOCK_SIZE, 2106 + .maxauthsize = SHA512_DIGEST_SIZE, 2107 + } 2108 + }, 2109 + .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | 2110 + DESC_HDR_SEL0_DEU | 2111 + DESC_HDR_MODE0_DEU_CBC | 2112 + DESC_HDR_MODE0_DEU_3DES | 2113 + DESC_HDR_SEL1_MDEUB | 2114 + DESC_HDR_MODE1_MDEU_INIT | 2115 + DESC_HDR_MODE1_MDEU_PAD | 2116 + DESC_HDR_MODE1_MDEUB_SHA512_HMAC, 2064 2117 }, 2065 2118 { .type = CRYPTO_ALG_TYPE_AEAD, 2066 2119 .alg.crypto = {
+6
drivers/crypto/talitos.h
··· 326 326 DESC_HDR_MODE1_MDEU_HMAC) 327 327 #define DESC_HDR_MODE1_MDEU_SHA1_HMAC (DESC_HDR_MODE1_MDEU_SHA1 | \ 328 328 DESC_HDR_MODE1_MDEU_HMAC) 329 + #define DESC_HDR_MODE1_MDEU_SHA224_HMAC (DESC_HDR_MODE1_MDEU_SHA224 | \ 330 + DESC_HDR_MODE1_MDEU_HMAC) 331 + #define DESC_HDR_MODE1_MDEUB_SHA384_HMAC (DESC_HDR_MODE1_MDEUB_SHA384 | \ 332 + DESC_HDR_MODE1_MDEU_HMAC) 333 + #define DESC_HDR_MODE1_MDEUB_SHA512_HMAC (DESC_HDR_MODE1_MDEUB_SHA512 | \ 334 + DESC_HDR_MODE1_MDEU_HMAC) 329 335 330 336 /* direction of overall data flow (DIR) */ 331 337 #define DESC_HDR_DIR_INBOUND cpu_to_be32(0x00000002)