From 06f70d0a59cb99eeb6004670e42cc6ff87398544 Mon Sep 17 00:00:00 2001 From: d0k3 Date: Fri, 4 Aug 2017 02:06:42 +0200 Subject: [PATCH] Fix sizes of SHA hashes --- source/crypto/sha.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/crypto/sha.c b/source/crypto/sha.c index 7db1308..0d9f737 100644 --- a/source/crypto/sha.c +++ b/source/crypto/sha.c @@ -25,10 +25,12 @@ void sha_update(const void* src, u32 size) } void sha_get(void* res) { + u32 hash_size = (*REG_SHACNT&SHA224_MODE) ? (224/8) : + (*REG_SHACNT&SHA1_MODE) ? (160/8) : (256/8); *REG_SHACNT = (*REG_SHACNT & ~SHA_NORMAL_ROUND) | SHA_FINAL_ROUND; while(*REG_SHACNT & SHA_FINAL_ROUND); while(*REG_SHACNT & 1); - memcpy(res, (void*)REG_SHAHASH, (256 / 8)); + if (hash_size) memcpy(res, (void*)REG_SHAHASH, hash_size); } void sha_quick(void* res, const void* src, u32 size, u32 mode) {