diff options
Diffstat (limited to 'drivers/crypto')
-rw-r--r-- | drivers/crypto/talitos.c | 245 |
1 files changed, 129 insertions, 116 deletions
diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c index a3918c16b3db..9833961a247e 100644 --- a/drivers/crypto/talitos.c +++ b/drivers/crypto/talitos.c | |||
@@ -684,8 +684,8 @@ struct talitos_ctx { | |||
684 | unsigned int authsize; | 684 | unsigned int authsize; |
685 | }; | 685 | }; |
686 | 686 | ||
687 | static int aead_authenc_setauthsize(struct crypto_aead *authenc, | 687 | static int aead_setauthsize(struct crypto_aead *authenc, |
688 | unsigned int authsize) | 688 | unsigned int authsize) |
689 | { | 689 | { |
690 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); | 690 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); |
691 | 691 | ||
@@ -694,8 +694,8 @@ static int aead_authenc_setauthsize(struct crypto_aead *authenc, | |||
694 | return 0; | 694 | return 0; |
695 | } | 695 | } |
696 | 696 | ||
697 | static int aead_authenc_setkey(struct crypto_aead *authenc, | 697 | static int aead_setkey(struct crypto_aead *authenc, |
698 | const u8 *key, unsigned int keylen) | 698 | const u8 *key, unsigned int keylen) |
699 | { | 699 | { |
700 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); | 700 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); |
701 | struct rtattr *rta = (void *)key; | 701 | struct rtattr *rta = (void *)key; |
@@ -740,7 +740,7 @@ badkey: | |||
740 | } | 740 | } |
741 | 741 | ||
742 | /* | 742 | /* |
743 | * ipsec_esp_edesc - s/w-extended ipsec_esp descriptor | 743 | * talitos_edesc - s/w-extended descriptor |
744 | * @src_nents: number of segments in input scatterlist | 744 | * @src_nents: number of segments in input scatterlist |
745 | * @dst_nents: number of segments in output scatterlist | 745 | * @dst_nents: number of segments in output scatterlist |
746 | * @dma_len: length of dma mapped link_tbl space | 746 | * @dma_len: length of dma mapped link_tbl space |
@@ -752,7 +752,7 @@ badkey: | |||
752 | * is greater than 1, an integrity check value is concatenated to the end | 752 | * is greater than 1, an integrity check value is concatenated to the end |
753 | * of link_tbl data | 753 | * of link_tbl data |
754 | */ | 754 | */ |
755 | struct ipsec_esp_edesc { | 755 | struct talitos_edesc { |
756 | int src_nents; | 756 | int src_nents; |
757 | int dst_nents; | 757 | int dst_nents; |
758 | int dma_len; | 758 | int dma_len; |
@@ -762,7 +762,7 @@ struct ipsec_esp_edesc { | |||
762 | }; | 762 | }; |
763 | 763 | ||
764 | static void ipsec_esp_unmap(struct device *dev, | 764 | static void ipsec_esp_unmap(struct device *dev, |
765 | struct ipsec_esp_edesc *edesc, | 765 | struct talitos_edesc *edesc, |
766 | struct aead_request *areq) | 766 | struct aead_request *areq) |
767 | { | 767 | { |
768 | unmap_single_talitos_ptr(dev, &edesc->desc.ptr[6], DMA_FROM_DEVICE); | 768 | unmap_single_talitos_ptr(dev, &edesc->desc.ptr[6], DMA_FROM_DEVICE); |
@@ -795,8 +795,8 @@ static void ipsec_esp_encrypt_done(struct device *dev, | |||
795 | int err) | 795 | int err) |
796 | { | 796 | { |
797 | struct aead_request *areq = context; | 797 | struct aead_request *areq = context; |
798 | struct ipsec_esp_edesc *edesc = | 798 | struct talitos_edesc *edesc = |
799 | container_of(desc, struct ipsec_esp_edesc, desc); | 799 | container_of(desc, struct talitos_edesc, desc); |
800 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); | 800 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); |
801 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); | 801 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); |
802 | struct scatterlist *sg; | 802 | struct scatterlist *sg; |
@@ -823,8 +823,8 @@ static void ipsec_esp_decrypt_swauth_done(struct device *dev, | |||
823 | int err) | 823 | int err) |
824 | { | 824 | { |
825 | struct aead_request *req = context; | 825 | struct aead_request *req = context; |
826 | struct ipsec_esp_edesc *edesc = | 826 | struct talitos_edesc *edesc = |
827 | container_of(desc, struct ipsec_esp_edesc, desc); | 827 | container_of(desc, struct talitos_edesc, desc); |
828 | struct crypto_aead *authenc = crypto_aead_reqtfm(req); | 828 | struct crypto_aead *authenc = crypto_aead_reqtfm(req); |
829 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); | 829 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); |
830 | struct scatterlist *sg; | 830 | struct scatterlist *sg; |
@@ -855,8 +855,8 @@ static void ipsec_esp_decrypt_hwauth_done(struct device *dev, | |||
855 | int err) | 855 | int err) |
856 | { | 856 | { |
857 | struct aead_request *req = context; | 857 | struct aead_request *req = context; |
858 | struct ipsec_esp_edesc *edesc = | 858 | struct talitos_edesc *edesc = |
859 | container_of(desc, struct ipsec_esp_edesc, desc); | 859 | container_of(desc, struct talitos_edesc, desc); |
860 | 860 | ||
861 | ipsec_esp_unmap(dev, edesc, req); | 861 | ipsec_esp_unmap(dev, edesc, req); |
862 | 862 | ||
@@ -910,7 +910,7 @@ static int sg_to_link_tbl(struct scatterlist *sg, int sg_count, | |||
910 | /* | 910 | /* |
911 | * fill in and submit ipsec_esp descriptor | 911 | * fill in and submit ipsec_esp descriptor |
912 | */ | 912 | */ |
913 | static int ipsec_esp(struct ipsec_esp_edesc *edesc, struct aead_request *areq, | 913 | static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq, |
914 | u8 *giv, u64 seq, | 914 | u8 *giv, u64 seq, |
915 | void (*callback) (struct device *dev, | 915 | void (*callback) (struct device *dev, |
916 | struct talitos_desc *desc, | 916 | struct talitos_desc *desc, |
@@ -1052,14 +1052,14 @@ static int sg_count(struct scatterlist *sg_list, int nbytes) | |||
1052 | } | 1052 | } |
1053 | 1053 | ||
1054 | /* | 1054 | /* |
1055 | * allocate and map the ipsec_esp extended descriptor | 1055 | * allocate and map the extended descriptor |
1056 | */ | 1056 | */ |
1057 | static struct ipsec_esp_edesc *ipsec_esp_edesc_alloc(struct aead_request *areq, | 1057 | static struct talitos_edesc *ipsec_esp_edesc_alloc(struct aead_request *areq, |
1058 | int icv_stashing) | 1058 | int icv_stashing) |
1059 | { | 1059 | { |
1060 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); | 1060 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); |
1061 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); | 1061 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); |
1062 | struct ipsec_esp_edesc *edesc; | 1062 | struct talitos_edesc *edesc; |
1063 | int src_nents, dst_nents, alloc_len, dma_len; | 1063 | int src_nents, dst_nents, alloc_len, dma_len; |
1064 | gfp_t flags = areq->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP ? GFP_KERNEL : | 1064 | gfp_t flags = areq->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP ? GFP_KERNEL : |
1065 | GFP_ATOMIC; | 1065 | GFP_ATOMIC; |
@@ -1084,7 +1084,7 @@ static struct ipsec_esp_edesc *ipsec_esp_edesc_alloc(struct aead_request *areq, | |||
1084 | * allowing for two separate entries for ICV and generated ICV (+ 2), | 1084 | * allowing for two separate entries for ICV and generated ICV (+ 2), |
1085 | * and the ICV data itself | 1085 | * and the ICV data itself |
1086 | */ | 1086 | */ |
1087 | alloc_len = sizeof(struct ipsec_esp_edesc); | 1087 | alloc_len = sizeof(struct talitos_edesc); |
1088 | if (src_nents || dst_nents) { | 1088 | if (src_nents || dst_nents) { |
1089 | dma_len = (src_nents + dst_nents + 2) * | 1089 | dma_len = (src_nents + dst_nents + 2) * |
1090 | sizeof(struct talitos_ptr) + ctx->authsize; | 1090 | sizeof(struct talitos_ptr) + ctx->authsize; |
@@ -1109,11 +1109,11 @@ static struct ipsec_esp_edesc *ipsec_esp_edesc_alloc(struct aead_request *areq, | |||
1109 | return edesc; | 1109 | return edesc; |
1110 | } | 1110 | } |
1111 | 1111 | ||
1112 | static int aead_authenc_encrypt(struct aead_request *req) | 1112 | static int aead_encrypt(struct aead_request *req) |
1113 | { | 1113 | { |
1114 | struct crypto_aead *authenc = crypto_aead_reqtfm(req); | 1114 | struct crypto_aead *authenc = crypto_aead_reqtfm(req); |
1115 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); | 1115 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); |
1116 | struct ipsec_esp_edesc *edesc; | 1116 | struct talitos_edesc *edesc; |
1117 | 1117 | ||
1118 | /* allocate extended descriptor */ | 1118 | /* allocate extended descriptor */ |
1119 | edesc = ipsec_esp_edesc_alloc(req, 0); | 1119 | edesc = ipsec_esp_edesc_alloc(req, 0); |
@@ -1128,13 +1128,13 @@ static int aead_authenc_encrypt(struct aead_request *req) | |||
1128 | 1128 | ||
1129 | 1129 | ||
1130 | 1130 | ||
1131 | static int aead_authenc_decrypt(struct aead_request *req) | 1131 | static int aead_decrypt(struct aead_request *req) |
1132 | { | 1132 | { |
1133 | struct crypto_aead *authenc = crypto_aead_reqtfm(req); | 1133 | struct crypto_aead *authenc = crypto_aead_reqtfm(req); |
1134 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); | 1134 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); |
1135 | unsigned int authsize = ctx->authsize; | 1135 | unsigned int authsize = ctx->authsize; |
1136 | struct talitos_private *priv = dev_get_drvdata(ctx->dev); | 1136 | struct talitos_private *priv = dev_get_drvdata(ctx->dev); |
1137 | struct ipsec_esp_edesc *edesc; | 1137 | struct talitos_edesc *edesc; |
1138 | struct scatterlist *sg; | 1138 | struct scatterlist *sg; |
1139 | void *icvdata; | 1139 | void *icvdata; |
1140 | 1140 | ||
@@ -1180,13 +1180,12 @@ static int aead_authenc_decrypt(struct aead_request *req) | |||
1180 | } | 1180 | } |
1181 | } | 1181 | } |
1182 | 1182 | ||
1183 | static int aead_authenc_givencrypt( | 1183 | static int aead_givencrypt(struct aead_givcrypt_request *req) |
1184 | struct aead_givcrypt_request *req) | ||
1185 | { | 1184 | { |
1186 | struct aead_request *areq = &req->areq; | 1185 | struct aead_request *areq = &req->areq; |
1187 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); | 1186 | struct crypto_aead *authenc = crypto_aead_reqtfm(areq); |
1188 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); | 1187 | struct talitos_ctx *ctx = crypto_aead_ctx(authenc); |
1189 | struct ipsec_esp_edesc *edesc; | 1188 | struct talitos_edesc *edesc; |
1190 | 1189 | ||
1191 | /* allocate extended descriptor */ | 1190 | /* allocate extended descriptor */ |
1192 | edesc = ipsec_esp_edesc_alloc(areq, 0); | 1191 | edesc = ipsec_esp_edesc_alloc(areq, 0); |
@@ -1205,30 +1204,30 @@ static int aead_authenc_givencrypt( | |||
1205 | } | 1204 | } |
1206 | 1205 | ||
1207 | struct talitos_alg_template { | 1206 | struct talitos_alg_template { |
1208 | char name[CRYPTO_MAX_ALG_NAME]; | 1207 | struct crypto_alg alg; |
1209 | char driver_name[CRYPTO_MAX_ALG_NAME]; | ||
1210 | unsigned int blocksize; | ||
1211 | struct aead_alg aead; | ||
1212 | struct device *dev; | ||
1213 | __be32 desc_hdr_template; | 1208 | __be32 desc_hdr_template; |
1214 | }; | 1209 | }; |
1215 | 1210 | ||
1216 | static struct talitos_alg_template driver_algs[] = { | 1211 | static struct talitos_alg_template driver_algs[] = { |
1217 | /* single-pass ipsec_esp descriptor */ | 1212 | /* AEAD algorithms. These use a single-pass ipsec_esp descriptor */ |
1218 | { | 1213 | { |
1219 | .name = "authenc(hmac(sha1),cbc(aes))", | 1214 | .alg = { |
1220 | .driver_name = "authenc-hmac-sha1-cbc-aes-talitos", | 1215 | .cra_name = "authenc(hmac(sha1),cbc(aes))", |
1221 | .blocksize = AES_BLOCK_SIZE, | 1216 | .cra_driver_name = "authenc-hmac-sha1-cbc-aes-talitos", |
1222 | .aead = { | 1217 | .cra_blocksize = AES_BLOCK_SIZE, |
1223 | .setkey = aead_authenc_setkey, | 1218 | .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, |
1224 | .setauthsize = aead_authenc_setauthsize, | 1219 | .cra_type = &crypto_aead_type, |
1225 | .encrypt = aead_authenc_encrypt, | 1220 | .cra_aead = { |
1226 | .decrypt = aead_authenc_decrypt, | 1221 | .setkey = aead_setkey, |
1227 | .givencrypt = aead_authenc_givencrypt, | 1222 | .setauthsize = aead_setauthsize, |
1228 | .geniv = "<built-in>", | 1223 | .encrypt = aead_encrypt, |
1229 | .ivsize = AES_BLOCK_SIZE, | 1224 | .decrypt = aead_decrypt, |
1230 | .maxauthsize = SHA1_DIGEST_SIZE, | 1225 | .givencrypt = aead_givencrypt, |
1231 | }, | 1226 | .geniv = "<built-in>", |
1227 | .ivsize = AES_BLOCK_SIZE, | ||
1228 | .maxauthsize = SHA1_DIGEST_SIZE, | ||
1229 | } | ||
1230 | }, | ||
1232 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | | 1231 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | |
1233 | DESC_HDR_SEL0_AESU | | 1232 | DESC_HDR_SEL0_AESU | |
1234 | DESC_HDR_MODE0_AESU_CBC | | 1233 | DESC_HDR_MODE0_AESU_CBC | |
@@ -1238,19 +1237,23 @@ static struct talitos_alg_template driver_algs[] = { | |||
1238 | DESC_HDR_MODE1_MDEU_SHA1_HMAC, | 1237 | DESC_HDR_MODE1_MDEU_SHA1_HMAC, |
1239 | }, | 1238 | }, |
1240 | { | 1239 | { |
1241 | .name = "authenc(hmac(sha1),cbc(des3_ede))", | 1240 | .alg = { |
1242 | .driver_name = "authenc-hmac-sha1-cbc-3des-talitos", | 1241 | .cra_name = "authenc(hmac(sha1),cbc(des3_ede))", |
1243 | .blocksize = DES3_EDE_BLOCK_SIZE, | 1242 | .cra_driver_name = "authenc-hmac-sha1-cbc-3des-talitos", |
1244 | .aead = { | 1243 | .cra_blocksize = DES3_EDE_BLOCK_SIZE, |
1245 | .setkey = aead_authenc_setkey, | 1244 | .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, |
1246 | .setauthsize = aead_authenc_setauthsize, | 1245 | .cra_type = &crypto_aead_type, |
1247 | .encrypt = aead_authenc_encrypt, | 1246 | .cra_aead = { |
1248 | .decrypt = aead_authenc_decrypt, | 1247 | .setkey = aead_setkey, |
1249 | .givencrypt = aead_authenc_givencrypt, | 1248 | .setauthsize = aead_setauthsize, |
1250 | .geniv = "<built-in>", | 1249 | .encrypt = aead_encrypt, |
1251 | .ivsize = DES3_EDE_BLOCK_SIZE, | 1250 | .decrypt = aead_decrypt, |
1252 | .maxauthsize = SHA1_DIGEST_SIZE, | 1251 | .givencrypt = aead_givencrypt, |
1253 | }, | 1252 | .geniv = "<built-in>", |
1253 | .ivsize = DES3_EDE_BLOCK_SIZE, | ||
1254 | .maxauthsize = SHA1_DIGEST_SIZE, | ||
1255 | } | ||
1256 | }, | ||
1254 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | | 1257 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | |
1255 | DESC_HDR_SEL0_DEU | | 1258 | DESC_HDR_SEL0_DEU | |
1256 | DESC_HDR_MODE0_DEU_CBC | | 1259 | DESC_HDR_MODE0_DEU_CBC | |
@@ -1261,19 +1264,23 @@ static struct talitos_alg_template driver_algs[] = { | |||
1261 | DESC_HDR_MODE1_MDEU_SHA1_HMAC, | 1264 | DESC_HDR_MODE1_MDEU_SHA1_HMAC, |
1262 | }, | 1265 | }, |
1263 | { | 1266 | { |
1264 | .name = "authenc(hmac(sha256),cbc(aes))", | 1267 | .alg = { |
1265 | .driver_name = "authenc-hmac-sha256-cbc-aes-talitos", | 1268 | .cra_name = "authenc(hmac(sha256),cbc(aes))", |
1266 | .blocksize = AES_BLOCK_SIZE, | 1269 | .cra_driver_name = "authenc-hmac-sha256-cbc-aes-talitos", |
1267 | .aead = { | 1270 | .cra_blocksize = AES_BLOCK_SIZE, |
1268 | .setkey = aead_authenc_setkey, | 1271 | .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, |
1269 | .setauthsize = aead_authenc_setauthsize, | 1272 | .cra_type = &crypto_aead_type, |
1270 | .encrypt = aead_authenc_encrypt, | 1273 | .cra_aead = { |
1271 | .decrypt = aead_authenc_decrypt, | 1274 | .setkey = aead_setkey, |
1272 | .givencrypt = aead_authenc_givencrypt, | 1275 | .setauthsize = aead_setauthsize, |
1273 | .geniv = "<built-in>", | 1276 | .encrypt = aead_encrypt, |
1274 | .ivsize = AES_BLOCK_SIZE, | 1277 | .decrypt = aead_decrypt, |
1275 | .maxauthsize = SHA256_DIGEST_SIZE, | 1278 | .givencrypt = aead_givencrypt, |
1276 | }, | 1279 | .geniv = "<built-in>", |
1280 | .ivsize = AES_BLOCK_SIZE, | ||
1281 | .maxauthsize = SHA256_DIGEST_SIZE, | ||
1282 | } | ||
1283 | }, | ||
1277 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | | 1284 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | |
1278 | DESC_HDR_SEL0_AESU | | 1285 | DESC_HDR_SEL0_AESU | |
1279 | DESC_HDR_MODE0_AESU_CBC | | 1286 | DESC_HDR_MODE0_AESU_CBC | |
@@ -1283,19 +1290,23 @@ static struct talitos_alg_template driver_algs[] = { | |||
1283 | DESC_HDR_MODE1_MDEU_SHA256_HMAC, | 1290 | DESC_HDR_MODE1_MDEU_SHA256_HMAC, |
1284 | }, | 1291 | }, |
1285 | { | 1292 | { |
1286 | .name = "authenc(hmac(sha256),cbc(des3_ede))", | 1293 | .alg = { |
1287 | .driver_name = "authenc-hmac-sha256-cbc-3des-talitos", | 1294 | .cra_name = "authenc(hmac(sha256),cbc(des3_ede))", |
1288 | .blocksize = DES3_EDE_BLOCK_SIZE, | 1295 | .cra_driver_name = "authenc-hmac-sha256-cbc-3des-talitos", |
1289 | .aead = { | 1296 | .cra_blocksize = DES3_EDE_BLOCK_SIZE, |
1290 | .setkey = aead_authenc_setkey, | 1297 | .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, |
1291 | .setauthsize = aead_authenc_setauthsize, | 1298 | .cra_type = &crypto_aead_type, |
1292 | .encrypt = aead_authenc_encrypt, | 1299 | .cra_aead = { |
1293 | .decrypt = aead_authenc_decrypt, | 1300 | .setkey = aead_setkey, |
1294 | .givencrypt = aead_authenc_givencrypt, | 1301 | .setauthsize = aead_setauthsize, |
1295 | .geniv = "<built-in>", | 1302 | .encrypt = aead_encrypt, |
1296 | .ivsize = DES3_EDE_BLOCK_SIZE, | 1303 | .decrypt = aead_decrypt, |
1297 | .maxauthsize = SHA256_DIGEST_SIZE, | 1304 | .givencrypt = aead_givencrypt, |
1298 | }, | 1305 | .geniv = "<built-in>", |
1306 | .ivsize = DES3_EDE_BLOCK_SIZE, | ||
1307 | .maxauthsize = SHA256_DIGEST_SIZE, | ||
1308 | } | ||
1309 | }, | ||
1299 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | | 1310 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | |
1300 | DESC_HDR_SEL0_DEU | | 1311 | DESC_HDR_SEL0_DEU | |
1301 | DESC_HDR_MODE0_DEU_CBC | | 1312 | DESC_HDR_MODE0_DEU_CBC | |
@@ -1306,19 +1317,23 @@ static struct talitos_alg_template driver_algs[] = { | |||
1306 | DESC_HDR_MODE1_MDEU_SHA256_HMAC, | 1317 | DESC_HDR_MODE1_MDEU_SHA256_HMAC, |
1307 | }, | 1318 | }, |
1308 | { | 1319 | { |
1309 | .name = "authenc(hmac(md5),cbc(aes))", | 1320 | .alg = { |
1310 | .driver_name = "authenc-hmac-md5-cbc-aes-talitos", | 1321 | .cra_name = "authenc(hmac(md5),cbc(aes))", |
1311 | .blocksize = AES_BLOCK_SIZE, | 1322 | .cra_driver_name = "authenc-hmac-md5-cbc-aes-talitos", |
1312 | .aead = { | 1323 | .cra_blocksize = AES_BLOCK_SIZE, |
1313 | .setkey = aead_authenc_setkey, | 1324 | .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, |
1314 | .setauthsize = aead_authenc_setauthsize, | 1325 | .cra_type = &crypto_aead_type, |
1315 | .encrypt = aead_authenc_encrypt, | 1326 | .cra_aead = { |
1316 | .decrypt = aead_authenc_decrypt, | 1327 | .setkey = aead_setkey, |
1317 | .givencrypt = aead_authenc_givencrypt, | 1328 | .setauthsize = aead_setauthsize, |
1318 | .geniv = "<built-in>", | 1329 | .encrypt = aead_encrypt, |
1319 | .ivsize = AES_BLOCK_SIZE, | 1330 | .decrypt = aead_decrypt, |
1320 | .maxauthsize = MD5_DIGEST_SIZE, | 1331 | .givencrypt = aead_givencrypt, |
1321 | }, | 1332 | .geniv = "<built-in>", |
1333 | .ivsize = AES_BLOCK_SIZE, | ||
1334 | .maxauthsize = MD5_DIGEST_SIZE, | ||
1335 | } | ||
1336 | }, | ||
1322 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | | 1337 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | |
1323 | DESC_HDR_SEL0_AESU | | 1338 | DESC_HDR_SEL0_AESU | |
1324 | DESC_HDR_MODE0_AESU_CBC | | 1339 | DESC_HDR_MODE0_AESU_CBC | |
@@ -1328,19 +1343,23 @@ static struct talitos_alg_template driver_algs[] = { | |||
1328 | DESC_HDR_MODE1_MDEU_MD5_HMAC, | 1343 | DESC_HDR_MODE1_MDEU_MD5_HMAC, |
1329 | }, | 1344 | }, |
1330 | { | 1345 | { |
1331 | .name = "authenc(hmac(md5),cbc(des3_ede))", | 1346 | .alg = { |
1332 | .driver_name = "authenc-hmac-md5-cbc-3des-talitos", | 1347 | .cra_name = "authenc(hmac(md5),cbc(des3_ede))", |
1333 | .blocksize = DES3_EDE_BLOCK_SIZE, | 1348 | .cra_driver_name = "authenc-hmac-md5-cbc-3des-talitos", |
1334 | .aead = { | 1349 | .cra_blocksize = DES3_EDE_BLOCK_SIZE, |
1335 | .setkey = aead_authenc_setkey, | 1350 | .cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC, |
1336 | .setauthsize = aead_authenc_setauthsize, | 1351 | .cra_type = &crypto_aead_type, |
1337 | .encrypt = aead_authenc_encrypt, | 1352 | .cra_aead = { |
1338 | .decrypt = aead_authenc_decrypt, | 1353 | .setkey = aead_setkey, |
1339 | .givencrypt = aead_authenc_givencrypt, | 1354 | .setauthsize = aead_setauthsize, |
1340 | .geniv = "<built-in>", | 1355 | .encrypt = aead_encrypt, |
1341 | .ivsize = DES3_EDE_BLOCK_SIZE, | 1356 | .decrypt = aead_decrypt, |
1342 | .maxauthsize = MD5_DIGEST_SIZE, | 1357 | .givencrypt = aead_givencrypt, |
1343 | }, | 1358 | .geniv = "<built-in>", |
1359 | .ivsize = DES3_EDE_BLOCK_SIZE, | ||
1360 | .maxauthsize = MD5_DIGEST_SIZE, | ||
1361 | } | ||
1362 | }, | ||
1344 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | | 1363 | .desc_hdr_template = DESC_HDR_TYPE_IPSEC_ESP | |
1345 | DESC_HDR_SEL0_DEU | | 1364 | DESC_HDR_SEL0_DEU | |
1346 | DESC_HDR_MODE0_DEU_CBC | | 1365 | DESC_HDR_MODE0_DEU_CBC | |
@@ -1453,19 +1472,13 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev, | |||
1453 | return ERR_PTR(-ENOMEM); | 1472 | return ERR_PTR(-ENOMEM); |
1454 | 1473 | ||
1455 | alg = &t_alg->crypto_alg; | 1474 | alg = &t_alg->crypto_alg; |
1475 | *alg = template->alg; | ||
1456 | 1476 | ||
1457 | snprintf(alg->cra_name, CRYPTO_MAX_ALG_NAME, "%s", template->name); | ||
1458 | snprintf(alg->cra_driver_name, CRYPTO_MAX_ALG_NAME, "%s", | ||
1459 | template->driver_name); | ||
1460 | alg->cra_module = THIS_MODULE; | 1477 | alg->cra_module = THIS_MODULE; |
1461 | alg->cra_init = talitos_cra_init; | 1478 | alg->cra_init = talitos_cra_init; |
1462 | alg->cra_priority = TALITOS_CRA_PRIORITY; | 1479 | alg->cra_priority = TALITOS_CRA_PRIORITY; |
1463 | alg->cra_flags = CRYPTO_ALG_TYPE_AEAD | CRYPTO_ALG_ASYNC; | ||
1464 | alg->cra_blocksize = template->blocksize; | ||
1465 | alg->cra_alignmask = 0; | 1480 | alg->cra_alignmask = 0; |
1466 | alg->cra_type = &crypto_aead_type; | ||
1467 | alg->cra_ctxsize = sizeof(struct talitos_ctx); | 1481 | alg->cra_ctxsize = sizeof(struct talitos_ctx); |
1468 | alg->cra_u.aead = template->aead; | ||
1469 | 1482 | ||
1470 | t_alg->desc_hdr_template = template->desc_hdr_template; | 1483 | t_alg->desc_hdr_template = template->desc_hdr_template; |
1471 | t_alg->dev = dev; | 1484 | t_alg->dev = dev; |