ECB AES also is added here, its ivsize is zero and name is different compared with CBC AES algo. Signed-off-by: Bibo Mao --- .../virtio/virtio_crypto_skcipher_algs.c | 74 +++++++++++++------ 1 file changed, 50 insertions(+), 24 deletions(-) diff --git a/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c b/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c index a5e6993da2ef..193042e8e6ac 100644 --- a/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c +++ b/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c @@ -561,31 +561,57 @@ static void virtio_crypto_skcipher_finalize_req( req, err); } -static struct virtio_crypto_algo virtio_crypto_algs[] = { { - .algonum = VIRTIO_CRYPTO_CIPHER_AES_CBC, - .service = VIRTIO_CRYPTO_SERVICE_CIPHER, - .algo.base = { - .base.cra_name = "cbc(aes)", - .base.cra_driver_name = "virtio_crypto_aes_cbc", - .base.cra_priority = 150, - .base.cra_flags = CRYPTO_ALG_ASYNC | - CRYPTO_ALG_ALLOCATES_MEMORY, - .base.cra_blocksize = AES_BLOCK_SIZE, - .base.cra_ctxsize = sizeof(struct virtio_crypto_skcipher_ctx), - .base.cra_module = THIS_MODULE, - .init = virtio_crypto_skcipher_init, - .exit = virtio_crypto_skcipher_exit, - .setkey = virtio_crypto_skcipher_setkey, - .decrypt = virtio_crypto_skcipher_decrypt, - .encrypt = virtio_crypto_skcipher_encrypt, - .min_keysize = AES_MIN_KEY_SIZE, - .max_keysize = AES_MAX_KEY_SIZE, - .ivsize = AES_BLOCK_SIZE, +static struct virtio_crypto_algo virtio_crypto_algs[] = { + { + .algonum = VIRTIO_CRYPTO_CIPHER_AES_CBC, + .service = VIRTIO_CRYPTO_SERVICE_CIPHER, + .algo.base = { + .base.cra_name = "cbc(aes)", + .base.cra_driver_name = "virtio_crypto_aes_cbc", + .base.cra_priority = 150, + .base.cra_flags = CRYPTO_ALG_ASYNC | + CRYPTO_ALG_ALLOCATES_MEMORY, + .base.cra_blocksize = AES_BLOCK_SIZE, + .base.cra_ctxsize = sizeof(struct virtio_crypto_skcipher_ctx), + .base.cra_module = THIS_MODULE, + .init = virtio_crypto_skcipher_init, + .exit = virtio_crypto_skcipher_exit, + .setkey = virtio_crypto_skcipher_setkey, + .decrypt = virtio_crypto_skcipher_decrypt, + .encrypt = virtio_crypto_skcipher_encrypt, + .min_keysize = AES_MIN_KEY_SIZE, + .max_keysize = AES_MAX_KEY_SIZE, + .ivsize = AES_BLOCK_SIZE, + }, + .algo.op = { + .do_one_request = virtio_crypto_skcipher_crypt_req, + }, }, - .algo.op = { - .do_one_request = virtio_crypto_skcipher_crypt_req, - }, -} }; + { + .algonum = VIRTIO_CRYPTO_CIPHER_AES_ECB, + .service = VIRTIO_CRYPTO_SERVICE_CIPHER, + .algo.base = { + .base.cra_name = "ecb(aes)", + .base.cra_driver_name = "virtio_crypto_aes_ecb", + .base.cra_priority = 150, + .base.cra_flags = CRYPTO_ALG_ASYNC | + CRYPTO_ALG_ALLOCATES_MEMORY, + .base.cra_blocksize = AES_BLOCK_SIZE, + .base.cra_ctxsize = sizeof(struct virtio_crypto_skcipher_ctx), + .base.cra_module = THIS_MODULE, + .init = virtio_crypto_skcipher_init, + .exit = virtio_crypto_skcipher_exit, + .setkey = virtio_crypto_skcipher_setkey, + .decrypt = virtio_crypto_skcipher_decrypt, + .encrypt = virtio_crypto_skcipher_encrypt, + .min_keysize = AES_MIN_KEY_SIZE, + .max_keysize = AES_MAX_KEY_SIZE, + }, + .algo.op = { + .do_one_request = virtio_crypto_skcipher_crypt_req, + }, + } +}; int virtio_crypto_skcipher_algs_register(struct virtio_crypto *vcrypto) { -- 2.39.3