[dm-devel] [PATCH v11 1/4] crypto: essiv - create wrapper template for ESSIV generation

Herbert Xu herbert at gondor.apana.org.au
Thu Aug 15 02:37:34 UTC 2019


On Wed, Aug 14, 2019 at 07:37:43PM +0300, Ard Biesheuvel wrote:
>
> +	/* Block cipher, e.g., "aes" */
> +	crypto_set_spawn(&ictx->essiv_cipher_spawn, inst);
> +	err = crypto_grab_spawn(&ictx->essiv_cipher_spawn, essiv_cipher_name,
> +				CRYPTO_ALG_TYPE_CIPHER, CRYPTO_ALG_TYPE_MASK);
> +	if (err)
> +		goto out_drop_skcipher;
> +	essiv_cipher_alg = ictx->essiv_cipher_spawn.alg;
> +
> +	/* Synchronous hash, e.g., "sha256" */
> +	_hash_alg = crypto_alg_mod_lookup(shash_name,
> +					  CRYPTO_ALG_TYPE_SHASH,
> +					  CRYPTO_ALG_TYPE_MASK);
> +	if (IS_ERR(_hash_alg)) {
> +		err = PTR_ERR(_hash_alg);
> +		goto out_drop_essiv_cipher;
> +	}
> +	hash_alg = __crypto_shash_alg(_hash_alg);
> +	err = crypto_init_shash_spawn(&ictx->hash_spawn, hash_alg, inst);
> +	if (err)
> +		goto out_put_hash;

I wouldn't use spawns for these two algorithms.  The point of
spawns is mainly to serve as a notification channel so we can
tear down the top-level instance when a better underlying spawn
implementation is added to the system.

For these two algorithms, we don't really care about their performance
to do such a tear-down since they only operate on small pieces of
data.

Therefore just keep things simple and allocate them in the tfm
init function.

Thanks,
-- 
Email: Herbert Xu <herbert at gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt




More information about the dm-devel mailing list