diff options
author | Christian Lamparter <chunkeey@googlemail.com> | 2017-08-25 09:47:21 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2017-09-22 05:43:18 -0400 |
commit | f2a13e7cba9e2b16f4888fbd9cf2bc25b95945be (patch) | |
tree | e9abdc7d67cbb2db42d2a73a7910102b51e0f5dc /drivers/crypto/amcc/crypto4xx_core.c | |
parent | 249c8d98ea339325dca481d5dae93686cd494059 (diff) |
crypto: crypto4xx - enable AES RFC3686, ECB, CFB and OFB offloads
The crypto engine supports more than just aes-cbc. This patch
enables the remaining AES block cipher modes that pass the
testmanager's test vectors.
Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/amcc/crypto4xx_core.c')
-rw-r--r-- | drivers/crypto/amcc/crypto4xx_core.c | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/drivers/crypto/amcc/crypto4xx_core.c b/drivers/crypto/amcc/crypto4xx_core.c index 9e96af725b31..3c086cf7b052 100644 --- a/drivers/crypto/amcc/crypto4xx_core.c +++ b/drivers/crypto/amcc/crypto4xx_core.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <asm/dcr-regs.h> | 36 | #include <asm/dcr-regs.h> |
37 | #include <asm/cacheflush.h> | 37 | #include <asm/cacheflush.h> |
38 | #include <crypto/aes.h> | 38 | #include <crypto/aes.h> |
39 | #include <crypto/ctr.h> | ||
39 | #include <crypto/sha.h> | 40 | #include <crypto/sha.h> |
40 | #include "crypto4xx_reg_def.h" | 41 | #include "crypto4xx_reg_def.h" |
41 | #include "crypto4xx_core.h" | 42 | #include "crypto4xx_core.h" |
@@ -1133,6 +1134,103 @@ struct crypto4xx_alg_common crypto4xx_alg[] = { | |||
1133 | } | 1134 | } |
1134 | } | 1135 | } |
1135 | }}, | 1136 | }}, |
1137 | { .type = CRYPTO_ALG_TYPE_ABLKCIPHER, .u.cipher = { | ||
1138 | .cra_name = "cfb(aes)", | ||
1139 | .cra_driver_name = "cfb-aes-ppc4xx", | ||
1140 | .cra_priority = CRYPTO4XX_CRYPTO_PRIORITY, | ||
1141 | .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | | ||
1142 | CRYPTO_ALG_ASYNC | | ||
1143 | CRYPTO_ALG_KERN_DRIVER_ONLY, | ||
1144 | .cra_blocksize = AES_BLOCK_SIZE, | ||
1145 | .cra_ctxsize = sizeof(struct crypto4xx_ctx), | ||
1146 | .cra_type = &crypto_ablkcipher_type, | ||
1147 | .cra_init = crypto4xx_alg_init, | ||
1148 | .cra_exit = crypto4xx_alg_exit, | ||
1149 | .cra_module = THIS_MODULE, | ||
1150 | .cra_u = { | ||
1151 | .ablkcipher = { | ||
1152 | .min_keysize = AES_MIN_KEY_SIZE, | ||
1153 | .max_keysize = AES_MAX_KEY_SIZE, | ||
1154 | .ivsize = AES_IV_SIZE, | ||
1155 | .setkey = crypto4xx_setkey_aes_cfb, | ||
1156 | .encrypt = crypto4xx_encrypt, | ||
1157 | .decrypt = crypto4xx_decrypt, | ||
1158 | } | ||
1159 | } | ||
1160 | } }, | ||
1161 | { .type = CRYPTO_ALG_TYPE_ABLKCIPHER, .u.cipher = { | ||
1162 | .cra_name = "rfc3686(ctr(aes))", | ||
1163 | .cra_driver_name = "rfc3686-ctr-aes-ppc4xx", | ||
1164 | .cra_priority = CRYPTO4XX_CRYPTO_PRIORITY, | ||
1165 | .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | | ||
1166 | CRYPTO_ALG_ASYNC | | ||
1167 | CRYPTO_ALG_KERN_DRIVER_ONLY, | ||
1168 | .cra_blocksize = AES_BLOCK_SIZE, | ||
1169 | .cra_ctxsize = sizeof(struct crypto4xx_ctx), | ||
1170 | .cra_type = &crypto_ablkcipher_type, | ||
1171 | .cra_init = crypto4xx_alg_init, | ||
1172 | .cra_exit = crypto4xx_alg_exit, | ||
1173 | .cra_module = THIS_MODULE, | ||
1174 | .cra_u = { | ||
1175 | .ablkcipher = { | ||
1176 | .min_keysize = AES_MIN_KEY_SIZE + | ||
1177 | CTR_RFC3686_NONCE_SIZE, | ||
1178 | .max_keysize = AES_MAX_KEY_SIZE + | ||
1179 | CTR_RFC3686_NONCE_SIZE, | ||
1180 | .ivsize = CTR_RFC3686_IV_SIZE, | ||
1181 | .setkey = crypto4xx_setkey_rfc3686, | ||
1182 | .encrypt = crypto4xx_rfc3686_encrypt, | ||
1183 | .decrypt = crypto4xx_rfc3686_decrypt, | ||
1184 | } | ||
1185 | } | ||
1186 | } }, | ||
1187 | { .type = CRYPTO_ALG_TYPE_ABLKCIPHER, .u.cipher = { | ||
1188 | .cra_name = "ecb(aes)", | ||
1189 | .cra_driver_name = "ecb-aes-ppc4xx", | ||
1190 | .cra_priority = CRYPTO4XX_CRYPTO_PRIORITY, | ||
1191 | .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | | ||
1192 | CRYPTO_ALG_ASYNC | | ||
1193 | CRYPTO_ALG_KERN_DRIVER_ONLY, | ||
1194 | .cra_blocksize = AES_BLOCK_SIZE, | ||
1195 | .cra_ctxsize = sizeof(struct crypto4xx_ctx), | ||
1196 | .cra_type = &crypto_ablkcipher_type, | ||
1197 | .cra_init = crypto4xx_alg_init, | ||
1198 | .cra_exit = crypto4xx_alg_exit, | ||
1199 | .cra_module = THIS_MODULE, | ||
1200 | .cra_u = { | ||
1201 | .ablkcipher = { | ||
1202 | .min_keysize = AES_MIN_KEY_SIZE, | ||
1203 | .max_keysize = AES_MAX_KEY_SIZE, | ||
1204 | .setkey = crypto4xx_setkey_aes_ecb, | ||
1205 | .encrypt = crypto4xx_encrypt, | ||
1206 | .decrypt = crypto4xx_decrypt, | ||
1207 | } | ||
1208 | } | ||
1209 | } }, | ||
1210 | { .type = CRYPTO_ALG_TYPE_ABLKCIPHER, .u.cipher = { | ||
1211 | .cra_name = "ofb(aes)", | ||
1212 | .cra_driver_name = "ofb-aes-ppc4xx", | ||
1213 | .cra_priority = CRYPTO4XX_CRYPTO_PRIORITY, | ||
1214 | .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER | | ||
1215 | CRYPTO_ALG_ASYNC | | ||
1216 | CRYPTO_ALG_KERN_DRIVER_ONLY, | ||
1217 | .cra_blocksize = AES_BLOCK_SIZE, | ||
1218 | .cra_ctxsize = sizeof(struct crypto4xx_ctx), | ||
1219 | .cra_type = &crypto_ablkcipher_type, | ||
1220 | .cra_init = crypto4xx_alg_init, | ||
1221 | .cra_exit = crypto4xx_alg_exit, | ||
1222 | .cra_module = THIS_MODULE, | ||
1223 | .cra_u = { | ||
1224 | .ablkcipher = { | ||
1225 | .min_keysize = AES_MIN_KEY_SIZE, | ||
1226 | .max_keysize = AES_MAX_KEY_SIZE, | ||
1227 | .ivsize = AES_IV_SIZE, | ||
1228 | .setkey = crypto4xx_setkey_aes_cbc, | ||
1229 | .encrypt = crypto4xx_encrypt, | ||
1230 | .decrypt = crypto4xx_decrypt, | ||
1231 | } | ||
1232 | } | ||
1233 | } }, | ||
1136 | }; | 1234 | }; |
1137 | 1235 | ||
1138 | /** | 1236 | /** |