ubifs: use crypto_shash_tfm_digest() in ubifs_hmac_wkm()
Subsystems (3)
PATCH 1/1 ubifs: use crypto_shash_tfm_digest() in ubifs_hmac_wkm()
From: Eric Biggers <[email protected]>
Simplify ubifs_hmac_wkm() by using crypto_shash_tfm_digest() instead of an alloc+init+update+final sequence. This should also improve performance.
Signed-off-by Eric Biggers <[email protected]>
--- fs/ubifs/auth.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-)
fs/ubifs/auth.c +2 -17
@@ -501,42 +501,27 @@ int __ubifs_shash_copy_state(const struct ubifs_info *c, struct shash_desc *src,* * This function creates a HMAC of a well known message. This is used * to check if the provided key is suitable to authenticate a UBIFS * image. This is only a convenience to the user to provide a better * error message when the wrong key is provided. * * This function returns 0 for success or a negative error code otherwise. */ int ubifs_hmac_wkm (struct ubifs_info *c,u8 *hmac) { -SHASH_DESC_ON_STACK (shash, c->hmac_tfm); -int err;const char well_known_message[] ="UBIFS" ;if (!ubifs_authenticated (c))return 0 ; - shash->tfm = c->hmac_tfm; - - err =crypto_shash_init (shash); -if (err) -return err; - - err =crypto_shash_update (shash, well_known_message, -sizeof (well_known_message) -1 ); -if (err <0 ) -return err; - - err =crypto_shash_final (shash, hmac); -if (err) -return err; -return 0 ; +return crypto_shash_tfm_digest (c->hmac_tfm, well_known_message, +sizeof (well_known_message) -1 , hmac); }/* * ubifs_hmac_zero - test if a HMAC is zero * @c: UBIFS file-system description object * @hmac: the HMAC to test * * This function tests if a HMAC is zero and returns true if it is * and false otherwise. */
base-commit: 2af9b20dbb39f6ebf9b9b6c090271594627d818e
Signature · 1 line
2.42.0
Quoted 10 lines · Eric Biggers
From: Eric Biggers <[email protected]>
Simplify
ubifs_hmac_wkm()by usingcrypto_shash_tfm_digest()instead of an alloc+init+update+final sequence. This should also improve performance.Signed-off-by Eric Biggers <[email protected]>--- fs/ubifs/auth.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-)
Tested-by Zhihao Cheng <[email protected]>
Time cost of ubifs_hmac_wkm(unit: us):
Before: 381~1634
After:278~1539
Quoted 52 lines
fs/ubifs/auth.c +2
-17@@ -501,42 +501,27 @@ int __ubifs_shash_copy_state(const struct ubifs_info *c, struct shash_desc *src,* * This function creates a HMAC of a well known message. This is used * to check if the provided key is suitable to authenticate a UBIFS * image. This is only a convenience to the user to provide a better * error message when the wrong key is provided. * * This function returns 0 for success or a negative error code otherwise. */ int ubifs_hmac_wkm (struct ubifs_info *c,u8 *hmac) { -SHASH_DESC_ON_STACK (shash, c->hmac_tfm); -int err;const char well_known_message[] ="UBIFS" ;if (!ubifs_authenticated (c))return 0 ; - shash->tfm = c->hmac_tfm; - - err =crypto_shash_init (shash); -if (err) -return err; - - err =crypto_shash_update (shash, well_known_message, -sizeof (well_known_message) -1 ); -if (err <0 ) -return err; - - err =crypto_shash_final (shash, hmac); -if (err) -return err; -return 0 ; +return crypto_shash_tfm_digest (c->hmac_tfm, well_known_message, +sizeof (well_known_message) -1 , hmac); }/* * ubifs_hmac_zero - test if a HMAC is zero * @c: UBIFS file-system description object * @hmac: the HMAC to test * * This function tests if a HMAC is zero and returns true if it is * and false otherwise. */ base-commit:
2af9b20dbb39f6ebf9b9b6c090271594627d818e