3333#include <linux/platform_device.h>
3434#include <linux/pm_runtime.h>
3535#include <linux/scatterlist.h>
36+ #include <linux/string.h>
3637
3738#include "omap-crypto.h"
3839#include "omap-aes.h"
@@ -638,8 +639,6 @@ static int omap_aes_init_tfm(struct crypto_skcipher *tfm)
638639 crypto_skcipher_set_reqsize (tfm , sizeof (struct omap_aes_reqctx ) +
639640 crypto_skcipher_reqsize (blk ));
640641
641- ctx -> enginectx .op .do_one_request = omap_aes_crypt_req ;
642-
643642 return 0 ;
644643}
645644
@@ -655,68 +654,77 @@ static void omap_aes_exit_tfm(struct crypto_skcipher *tfm)
655654
656655/* ********************** ALGS ************************************ */
657656
658- static struct skcipher_alg algs_ecb_cbc [] = {
657+ static struct skcipher_engine_alg algs_ecb_cbc [] = {
659658{
660- .base .cra_name = "ecb(aes)" ,
661- .base .cra_driver_name = "ecb-aes-omap" ,
662- .base .cra_priority = 300 ,
663- .base .cra_flags = CRYPTO_ALG_KERN_DRIVER_ONLY |
664- CRYPTO_ALG_ASYNC |
665- CRYPTO_ALG_NEED_FALLBACK ,
666- .base .cra_blocksize = AES_BLOCK_SIZE ,
667- .base .cra_ctxsize = sizeof (struct omap_aes_ctx ),
668- .base .cra_module = THIS_MODULE ,
669-
670- .min_keysize = AES_MIN_KEY_SIZE ,
671- .max_keysize = AES_MAX_KEY_SIZE ,
672- .setkey = omap_aes_setkey ,
673- .encrypt = omap_aes_ecb_encrypt ,
674- .decrypt = omap_aes_ecb_decrypt ,
675- .init = omap_aes_init_tfm ,
676- .exit = omap_aes_exit_tfm ,
659+ .base = {
660+ .base .cra_name = "ecb(aes)" ,
661+ .base .cra_driver_name = "ecb-aes-omap" ,
662+ .base .cra_priority = 300 ,
663+ .base .cra_flags = CRYPTO_ALG_KERN_DRIVER_ONLY |
664+ CRYPTO_ALG_ASYNC |
665+ CRYPTO_ALG_NEED_FALLBACK ,
666+ .base .cra_blocksize = AES_BLOCK_SIZE ,
667+ .base .cra_ctxsize = sizeof (struct omap_aes_ctx ),
668+ .base .cra_module = THIS_MODULE ,
669+
670+ .min_keysize = AES_MIN_KEY_SIZE ,
671+ .max_keysize = AES_MAX_KEY_SIZE ,
672+ .setkey = omap_aes_setkey ,
673+ .encrypt = omap_aes_ecb_encrypt ,
674+ .decrypt = omap_aes_ecb_decrypt ,
675+ .init = omap_aes_init_tfm ,
676+ .exit = omap_aes_exit_tfm ,
677+ },
678+ .op .do_one_request = omap_aes_crypt_req ,
677679},
678680{
679- .base .cra_name = "cbc(aes)" ,
680- .base .cra_driver_name = "cbc-aes-omap" ,
681- .base .cra_priority = 300 ,
682- .base .cra_flags = CRYPTO_ALG_KERN_DRIVER_ONLY |
683- CRYPTO_ALG_ASYNC |
684- CRYPTO_ALG_NEED_FALLBACK ,
685- .base .cra_blocksize = AES_BLOCK_SIZE ,
686- .base .cra_ctxsize = sizeof (struct omap_aes_ctx ),
687- .base .cra_module = THIS_MODULE ,
688-
689- .min_keysize = AES_MIN_KEY_SIZE ,
690- .max_keysize = AES_MAX_KEY_SIZE ,
691- .ivsize = AES_BLOCK_SIZE ,
692- .setkey = omap_aes_setkey ,
693- .encrypt = omap_aes_cbc_encrypt ,
694- .decrypt = omap_aes_cbc_decrypt ,
695- .init = omap_aes_init_tfm ,
696- .exit = omap_aes_exit_tfm ,
681+ .base = {
682+ .base .cra_name = "cbc(aes)" ,
683+ .base .cra_driver_name = "cbc-aes-omap" ,
684+ .base .cra_priority = 300 ,
685+ .base .cra_flags = CRYPTO_ALG_KERN_DRIVER_ONLY |
686+ CRYPTO_ALG_ASYNC |
687+ CRYPTO_ALG_NEED_FALLBACK ,
688+ .base .cra_blocksize = AES_BLOCK_SIZE ,
689+ .base .cra_ctxsize = sizeof (struct omap_aes_ctx ),
690+ .base .cra_module = THIS_MODULE ,
691+
692+ .min_keysize = AES_MIN_KEY_SIZE ,
693+ .max_keysize = AES_MAX_KEY_SIZE ,
694+ .ivsize = AES_BLOCK_SIZE ,
695+ .setkey = omap_aes_setkey ,
696+ .encrypt = omap_aes_cbc_encrypt ,
697+ .decrypt = omap_aes_cbc_decrypt ,
698+ .init = omap_aes_init_tfm ,
699+ .exit = omap_aes_exit_tfm ,
700+ },
701+ .op .do_one_request = omap_aes_crypt_req ,
697702}
698703};
699704
700- static struct skcipher_alg algs_ctr [] = {
705+ static struct skcipher_engine_alg algs_ctr [] = {
701706{
702- .base .cra_name = "ctr(aes)" ,
703- .base .cra_driver_name = "ctr-aes-omap" ,
704- .base .cra_priority = 300 ,
705- .base .cra_flags = CRYPTO_ALG_KERN_DRIVER_ONLY |
706- CRYPTO_ALG_ASYNC |
707- CRYPTO_ALG_NEED_FALLBACK ,
708- .base .cra_blocksize = 1 ,
709- .base .cra_ctxsize = sizeof (struct omap_aes_ctx ),
710- .base .cra_module = THIS_MODULE ,
711-
712- .min_keysize = AES_MIN_KEY_SIZE ,
713- .max_keysize = AES_MAX_KEY_SIZE ,
714- .ivsize = AES_BLOCK_SIZE ,
715- .setkey = omap_aes_setkey ,
716- .encrypt = omap_aes_ctr_encrypt ,
717- .decrypt = omap_aes_ctr_decrypt ,
718- .init = omap_aes_init_tfm ,
719- .exit = omap_aes_exit_tfm ,
707+ .base = {
708+ .base .cra_name = "ctr(aes)" ,
709+ .base .cra_driver_name = "ctr-aes-omap" ,
710+ .base .cra_priority = 300 ,
711+ .base .cra_flags = CRYPTO_ALG_KERN_DRIVER_ONLY |
712+ CRYPTO_ALG_ASYNC |
713+ CRYPTO_ALG_NEED_FALLBACK ,
714+ .base .cra_blocksize = 1 ,
715+ .base .cra_ctxsize = sizeof (struct omap_aes_ctx ),
716+ .base .cra_module = THIS_MODULE ,
717+
718+ .min_keysize = AES_MIN_KEY_SIZE ,
719+ .max_keysize = AES_MAX_KEY_SIZE ,
720+ .ivsize = AES_BLOCK_SIZE ,
721+ .setkey = omap_aes_setkey ,
722+ .encrypt = omap_aes_ctr_encrypt ,
723+ .decrypt = omap_aes_ctr_decrypt ,
724+ .init = omap_aes_init_tfm ,
725+ .exit = omap_aes_exit_tfm ,
726+ },
727+ .op .do_one_request = omap_aes_crypt_req ,
720728}
721729};
722730
@@ -727,46 +735,52 @@ static struct omap_aes_algs_info omap_aes_algs_info_ecb_cbc[] = {
727735 },
728736};
729737
730- static struct aead_alg algs_aead_gcm [] = {
738+ static struct aead_engine_alg algs_aead_gcm [] = {
731739{
732740 .base = {
733- .cra_name = "gcm(aes)" ,
734- .cra_driver_name = "gcm-aes-omap" ,
735- .cra_priority = 300 ,
736- .cra_flags = CRYPTO_ALG_ASYNC |
737- CRYPTO_ALG_KERN_DRIVER_ONLY ,
738- .cra_blocksize = 1 ,
739- .cra_ctxsize = sizeof (struct omap_aes_gcm_ctx ),
740- .cra_alignmask = 0xf ,
741- .cra_module = THIS_MODULE ,
741+ .base = {
742+ .cra_name = "gcm(aes)" ,
743+ .cra_driver_name = "gcm-aes-omap" ,
744+ .cra_priority = 300 ,
745+ .cra_flags = CRYPTO_ALG_ASYNC |
746+ CRYPTO_ALG_KERN_DRIVER_ONLY ,
747+ .cra_blocksize = 1 ,
748+ .cra_ctxsize = sizeof (struct omap_aes_gcm_ctx ),
749+ .cra_alignmask = 0xf ,
750+ .cra_module = THIS_MODULE ,
751+ },
752+ .init = omap_aes_gcm_cra_init ,
753+ .ivsize = GCM_AES_IV_SIZE ,
754+ .maxauthsize = AES_BLOCK_SIZE ,
755+ .setkey = omap_aes_gcm_setkey ,
756+ .setauthsize = omap_aes_gcm_setauthsize ,
757+ .encrypt = omap_aes_gcm_encrypt ,
758+ .decrypt = omap_aes_gcm_decrypt ,
742759 },
743- .init = omap_aes_gcm_cra_init ,
744- .ivsize = GCM_AES_IV_SIZE ,
745- .maxauthsize = AES_BLOCK_SIZE ,
746- .setkey = omap_aes_gcm_setkey ,
747- .setauthsize = omap_aes_gcm_setauthsize ,
748- .encrypt = omap_aes_gcm_encrypt ,
749- .decrypt = omap_aes_gcm_decrypt ,
760+ .op .do_one_request = omap_aes_gcm_crypt_req ,
750761},
751762{
752763 .base = {
753- .cra_name = "rfc4106(gcm(aes))" ,
754- .cra_driver_name = "rfc4106-gcm-aes-omap" ,
755- .cra_priority = 300 ,
756- .cra_flags = CRYPTO_ALG_ASYNC |
757- CRYPTO_ALG_KERN_DRIVER_ONLY ,
758- .cra_blocksize = 1 ,
759- .cra_ctxsize = sizeof (struct omap_aes_gcm_ctx ),
760- .cra_alignmask = 0xf ,
761- .cra_module = THIS_MODULE ,
764+ .base = {
765+ .cra_name = "rfc4106(gcm(aes))" ,
766+ .cra_driver_name = "rfc4106-gcm-aes-omap" ,
767+ .cra_priority = 300 ,
768+ .cra_flags = CRYPTO_ALG_ASYNC |
769+ CRYPTO_ALG_KERN_DRIVER_ONLY ,
770+ .cra_blocksize = 1 ,
771+ .cra_ctxsize = sizeof (struct omap_aes_gcm_ctx ),
772+ .cra_alignmask = 0xf ,
773+ .cra_module = THIS_MODULE ,
774+ },
775+ .init = omap_aes_gcm_cra_init ,
776+ .maxauthsize = AES_BLOCK_SIZE ,
777+ .ivsize = GCM_RFC4106_IV_SIZE ,
778+ .setkey = omap_aes_4106gcm_setkey ,
779+ .setauthsize = omap_aes_4106gcm_setauthsize ,
780+ .encrypt = omap_aes_4106gcm_encrypt ,
781+ .decrypt = omap_aes_4106gcm_decrypt ,
762782 },
763- .init = omap_aes_gcm_cra_init ,
764- .maxauthsize = AES_BLOCK_SIZE ,
765- .ivsize = GCM_RFC4106_IV_SIZE ,
766- .setkey = omap_aes_4106gcm_setkey ,
767- .setauthsize = omap_aes_4106gcm_setauthsize ,
768- .encrypt = omap_aes_4106gcm_encrypt ,
769- .decrypt = omap_aes_4106gcm_decrypt ,
783+ .op .do_one_request = omap_aes_gcm_crypt_req ,
770784},
771785};
772786
@@ -1088,8 +1102,8 @@ static int omap_aes_probe(struct platform_device *pdev)
10881102{
10891103 struct device * dev = & pdev -> dev ;
10901104 struct omap_aes_dev * dd ;
1091- struct skcipher_alg * algp ;
1092- struct aead_alg * aalg ;
1105+ struct skcipher_engine_alg * algp ;
1106+ struct aead_engine_alg * aalg ;
10931107 struct resource res ;
10941108 int err = - ENOMEM , i , j , irq = -1 ;
10951109 u32 reg ;
@@ -1182,9 +1196,9 @@ static int omap_aes_probe(struct platform_device *pdev)
11821196 for (j = 0 ; j < dd -> pdata -> algs_info [i ].size ; j ++ ) {
11831197 algp = & dd -> pdata -> algs_info [i ].algs_list [j ];
11841198
1185- pr_debug ("reg alg: %s\n" , algp -> base .cra_name );
1199+ pr_debug ("reg alg: %s\n" , algp -> base .base . cra_name );
11861200
1187- err = crypto_register_skcipher (algp );
1201+ err = crypto_engine_register_skcipher (algp );
11881202 if (err )
11891203 goto err_algs ;
11901204
@@ -1198,9 +1212,9 @@ static int omap_aes_probe(struct platform_device *pdev)
11981212 for (i = 0 ; i < dd -> pdata -> aead_algs_info -> size ; i ++ ) {
11991213 aalg = & dd -> pdata -> aead_algs_info -> algs_list [i ];
12001214
1201- pr_debug ("reg alg: %s\n" , aalg -> base .cra_name );
1215+ pr_debug ("reg alg: %s\n" , aalg -> base .base . cra_name );
12021216
1203- err = crypto_register_aead (aalg );
1217+ err = crypto_engine_register_aead (aalg );
12041218 if (err )
12051219 goto err_aead_algs ;
12061220
@@ -1218,12 +1232,12 @@ static int omap_aes_probe(struct platform_device *pdev)
12181232err_aead_algs :
12191233 for (i = dd -> pdata -> aead_algs_info -> registered - 1 ; i >= 0 ; i -- ) {
12201234 aalg = & dd -> pdata -> aead_algs_info -> algs_list [i ];
1221- crypto_unregister_aead (aalg );
1235+ crypto_engine_unregister_aead (aalg );
12221236 }
12231237err_algs :
12241238 for (i = dd -> pdata -> algs_info_size - 1 ; i >= 0 ; i -- )
12251239 for (j = dd -> pdata -> algs_info [i ].registered - 1 ; j >= 0 ; j -- )
1226- crypto_unregister_skcipher (
1240+ crypto_engine_unregister_skcipher (
12271241 & dd -> pdata -> algs_info [i ].algs_list [j ]);
12281242
12291243err_engine :
@@ -1245,7 +1259,7 @@ static int omap_aes_probe(struct platform_device *pdev)
12451259static int omap_aes_remove (struct platform_device * pdev )
12461260{
12471261 struct omap_aes_dev * dd = platform_get_drvdata (pdev );
1248- struct aead_alg * aalg ;
1262+ struct aead_engine_alg * aalg ;
12491263 int i , j ;
12501264
12511265 spin_lock_bh (& list_lock );
@@ -1254,14 +1268,14 @@ static int omap_aes_remove(struct platform_device *pdev)
12541268
12551269 for (i = dd -> pdata -> algs_info_size - 1 ; i >= 0 ; i -- )
12561270 for (j = dd -> pdata -> algs_info [i ].registered - 1 ; j >= 0 ; j -- ) {
1257- crypto_unregister_skcipher (
1271+ crypto_engine_unregister_skcipher (
12581272 & dd -> pdata -> algs_info [i ].algs_list [j ]);
12591273 dd -> pdata -> algs_info [i ].registered -- ;
12601274 }
12611275
12621276 for (i = dd -> pdata -> aead_algs_info -> registered - 1 ; i >= 0 ; i -- ) {
12631277 aalg = & dd -> pdata -> aead_algs_info -> algs_list [i ];
1264- crypto_unregister_aead (aalg );
1278+ crypto_engine_unregister_aead (aalg );
12651279 dd -> pdata -> aead_algs_info -> registered -- ;
12661280 }
12671281
0 commit comments