From 006fee0dadd184aab8a1a18d629674f8f06e9eda Mon Sep 17 00:00:00 2001 From: Daniel Kestrel Date: Sun, 20 Jun 2021 21:33:22 +0200 Subject: [PATCH] ltq-deu: update initialisations for hmac algorithms The processing in the hmac algorithms depends on the status fields: count, dbn and started. Not all were initialised in the init method and after finishing the final method. Added missing fields to init method and call init method after finishing final. The memsets have the wrong size in the original driver and did not clear everything and are not necessary. Since no memset is done in the kernels generic implementation, memsets were removed. Signed-off-by: Daniel Kestrel --- package/kernel/lantiq/ltq-deu/src/ifxmips_md5_hmac.c | 6 ++---- package/kernel/lantiq/ltq-deu/src/ifxmips_sha1_hmac.c | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/package/kernel/lantiq/ltq-deu/src/ifxmips_md5_hmac.c b/package/kernel/lantiq/ltq-deu/src/ifxmips_md5_hmac.c index fc3a5ea6680..109d27cbfbe 100644 --- a/package/kernel/lantiq/ltq-deu/src/ifxmips_md5_hmac.c +++ b/package/kernel/lantiq/ltq-deu/src/ifxmips_md5_hmac.c @@ -185,6 +185,7 @@ static int md5_hmac_init(struct shash_desc *desc) mctx->dbn = 0; //dbn workaround mctx->started = 0; + mctx->byte_count = 0; return 0; } @@ -338,10 +339,7 @@ static int md5_hmac_final_impl(struct shash_desc *desc, u8 *out, bool hash_final if (hash_final) { /* reset the context after we finish with the hash */ - mctx->byte_count = 0; - memset(&mctx->hash[0], 0, sizeof(MD5_HASH_WORDS)); - memset(&mctx->block[0], 0, sizeof(MD5_BLOCK_WORDS)); - memset(&mctx->temp[0], 0, MD5_HMAC_DBN_TEMP_SIZE); + md5_hmac_init(desc); } else { mctx->dbn = 0; } diff --git a/package/kernel/lantiq/ltq-deu/src/ifxmips_sha1_hmac.c b/package/kernel/lantiq/ltq-deu/src/ifxmips_sha1_hmac.c index 9adf4d47101..69504efe931 100644 --- a/package/kernel/lantiq/ltq-deu/src/ifxmips_sha1_hmac.c +++ b/package/kernel/lantiq/ltq-deu/src/ifxmips_sha1_hmac.c @@ -189,6 +189,7 @@ static int sha1_hmac_init(struct shash_desc *desc) //printk("debug ln: %d, fn: %s\n", __LINE__, __func__); sctx->dbn = 0; //dbn workaround sctx->started = 0; + sctx->count = 0; return 0; } @@ -351,8 +352,7 @@ static int sha1_hmac_final_impl(struct shash_desc *desc, u8 *out, bool hash_fina CRTCL_SECT_HASH_END; if (hash_final) { - memset(&sctx->buffer[0], 0, SHA1_HMAC_BLOCK_SIZE); - sctx->count = 0; + sha1_hmac_init(desc); } else { sctx->dbn = 0; }