crypto: Drop unused cipher_null crypto_alg
PATCH 1/1 crypto: Drop unused cipher_null crypto_alg
The cipher_null crypto_alg cipher is never used in a meaningful way, given that it is always wrapped in ecb(), which has its own dedicated implementation. IOW, the cipher_null crypto_alg should never be used to implement the ecb(cipher_null) skcipher, and using it for other things is bogus.
However, it is accessible from user space, and due to the nature of the AF_ALG interface, it may be wrapped in arbitrary ways, exposing issues in template code that wasn't written with block ciphers with a block size of '1' in mind.
So drop this code.
--- crypto/crypto_null.c | 35 ++------------------ 1 file changed, 2 insertions(+), 33 deletions(-)
crypto/crypto_null.c +2 -33
@@ -50,15 +50,6 @@ static int null_skcipher_setkey(struct crypto_skcipher *tfm, const u8 *key, unsigned int keylen) {return 0 ; } -static int null_setkey (struct crypto_tfm *tfm,const u8 *key, -unsigned int keylen) -{return 0 ; } - -static void null_crypt (struct crypto_tfm *tfm,u8 *dst,const u8 *src) -{ -memcpy (dst, src,NULL_BLOCK_SIZE ); -} -static int null_skcipher_crypt (struct skcipher_request *req) {if (req->src != req->dst)
@@ -97,35 +88,16 @@ static struct skcipher_alg skcipher_null = { .decrypt = null_skcipher_crypt, }; -static struct crypto_alg cipher_null = { - .cra_name ="cipher_null" , - .cra_driver_name ="cipher_null-generic" , - .cra_flags =CRYPTO_ALG_TYPE_CIPHER , - .cra_blocksize =NULL_BLOCK_SIZE , - .cra_ctxsize =0 , - .cra_module =THIS_MODULE , - .cra_u = { .cipher = { - .cia_min_keysize =NULL_KEY_SIZE , - .cia_max_keysize =NULL_KEY_SIZE , - .cia_setkey = null_setkey, - .cia_encrypt = null_crypt, - .cia_decrypt = null_crypt } } -}; -MODULE_ALIAS_CRYPTO ("digest_null" ); -MODULE_ALIAS_CRYPTO ("cipher_null" ); +MODULE_ALIAS_CRYPTO ("ecb(cipher_null)" );static int __init crypto_null_mod_init (void ) {int ret =0 ; - ret =crypto_register_alg (&cipher_null); -if (ret <0 ) - goto out; - ret =crypto_register_shash (&digest_null);if (ret <0 ) - goto out_unregister_algs; + goto out; ret =crypto_register_skcipher (&skcipher_null);if (ret <0 )
@@ -135,15 +107,12 @@ static int __init crypto_null_mod_init(void) out_unregister_shash:crypto_unregister_shash (&digest_null); -out_unregister_algs: -crypto_unregister_alg (&cipher_null); out:return ret; } static void __exit crypto_null_mod_fini(void) { -crypto_unregister_alg (&cipher_null);crypto_unregister_shash (&digest_null);crypto_unregister_skcipher (&skcipher_null); }
Signature · 1 line
2.54.0.rc1.555.g9c883467ad-goog
Quoted 11 lines · Ard Biesheuvel
The
cipher_nullcrypto_algcipher is never used in a meaningful way, given that it is always wrapped inecb(), which has its own dedicated implementation. IOW, thecipher_nullcrypto_algshould never be used to implement theecb(cipher_null)skcipher, and using it for other things is bogus.However, it is accessible from user space, and due to the nature of the
AF_ALGinterface, it may be wrapped in arbitrary ways, exposing issues in template code that wasn't written with block ciphers with a block size of '1' in mind.
Quoted 6 lines
So drop this code.
Signed-off-by Ard Biesheuvel <[email protected]>--- crypto/crypto_null.c | 35 ++------------------ 1 file changed, 2 insertions(+), 33 deletions(-)
- Eric
Herbert Xu
maintainerQuoted 11 lines · Ard Biesheuvel
The
cipher_nullcrypto_algcipher is never used in a meaningful way, given that it is always wrapped inecb(), which has its own dedicated implementation. IOW, thecipher_nullcrypto_algshould never be used to implement theecb(cipher_null)skcipher, and using it for other things is bogus.However, it is accessible from user space, and due to the nature of the
AF_ALGinterface, it may be wrapped in arbitrary ways, exposing issues in template code that wasn't written with block ciphers with a block size of '1' in mind.
Quoted 6 lines
So drop this code.
Signed-off-by Ard Biesheuvel <[email protected]>--- crypto/crypto_null.c | 35 ++------------------ 1 file changed, 2 insertions(+), 33 deletions(-)
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt