aboutsummaryrefslogtreecommitdiff
path: root/src/hash
diff options
context:
space:
mode:
Diffstat (limited to 'src/hash')
-rw-r--r--src/hash/blake.c20
-rw-r--r--src/hash/blake2.c9
-rw-r--r--src/hash/md5.c1
3 files changed, 23 insertions, 7 deletions
diff --git a/src/hash/blake.c b/src/hash/blake.c
index 76b6680..4c6d284 100644
--- a/src/hash/blake.c
+++ b/src/hash/blake.c
@@ -206,8 +206,11 @@ void _blake256_final(struct blake256_hash* hash, char* out_stream){
void blake256_final(struct blake256_hash* hash, char* out_stream){
uint8_t old[bs];
struct blake256_hash old_hash;
+ uint32_t hhash[8];
+
memcpy(&old_hash, hash, sizeof * hash);
- memcpy(old, hash->buffer, bs);
+ memcpy(old, hash->buffer, bs * sizeof * old);
+ memcpy(hhash, hash->hash, sizeof * hhash * 8);
if(hash->bufflen == 55) hash->buffer[hash->bufflen] = 0x81;
else hash->buffer[bs - 9] = 0x01;
@@ -219,14 +222,18 @@ void blake256_final(struct blake256_hash* hash, char* out_stream){
}
memcpy(hash, &old_hash, sizeof * hash);
- memcpy(hash->buffer, old, bs);
+ memcpy(hash->buffer, old, bs * sizeof * old);
+ memcpy(hash->hash, hhash, sizeof * hhash * 8);
}
void blake224_final(struct blake256_hash* hash, char* out_stream){
uint8_t old[bs];
struct blake256_hash old_hash;
+ uint32_t hhash[8];
+
memcpy(&old_hash, hash, sizeof * hash);
memcpy(old, hash->buffer, bs);
+ memcpy(hhash, hash->hash, sizeof * hhash * 8);
if(hash->bufflen == 55) hash->buffer[hash->bufflen] = 0x80;
else hash->buffer[bs - 9] = 0x00;
@@ -239,6 +246,7 @@ void blake224_final(struct blake256_hash* hash, char* out_stream){
memcpy(hash, &old_hash, sizeof * hash);
memcpy(hash->buffer, old, bs);
+ memcpy(hash->hash, hhash, sizeof * hhash * 8);
}
void blake256(char *out, char *in, uint64_t inlen){
@@ -418,8 +426,11 @@ void _blake512_final(struct blake512_hash* hash, char* out_stream){
void blake512_final(struct blake512_hash* hash, char* out_stream){
uint8_t old[bs_2];
struct blake512_hash old_hash;
+ uint64_t hhash[8];
+
memcpy(&old_hash, hash, sizeof * hash);
memcpy(old, hash->buffer, bs_2);
+ memcpy(hhash, hash->hash, sizeof * hhash * 8);
if(hash->bufflen == 111) hash->buffer[hash->bufflen] = 0x81;
else hash->buffer[bs_2 - 17] = 0x01;
@@ -432,6 +443,7 @@ void blake512_final(struct blake512_hash* hash, char* out_stream){
memcpy(hash, &old_hash, sizeof * hash);
memcpy(hash->buffer, old, bs_2);
+ memcpy(hash->hash, hhash, sizeof * hhash * 8);
}
void blake512(uint8_t* in, size_t len, char* out){
@@ -445,8 +457,11 @@ void blake512(uint8_t* in, size_t len, char* out){
void blake384_final(struct blake384_hash* hash, char* out_stream){
uint8_t old[bs_2];
struct blake384_hash old_hash;
+ uint64_t hhash[8];
+
memcpy(&old_hash, hash, sizeof * hash);
memcpy(old, hash->buffer, bs_2);
+ memcpy(hhash, hash->hash, sizeof * hhash * 8);
if(hash->bufflen == 111) hash->buffer[hash->bufflen] = 0x80;
else hash->buffer[bs_2 - 17] = 0x00;
@@ -459,6 +474,7 @@ void blake384_final(struct blake384_hash* hash, char* out_stream){
memcpy(hash, &old_hash, sizeof * hash);
memcpy(hash->buffer, old, bs_2);
+ memcpy(hash->hash, hhash, sizeof * hhash * 8);
}
void blake384(uint8_t* in, size_t len, char* out){
diff --git a/src/hash/blake2.c b/src/hash/blake2.c
index 9507c96..95d878f 100644
--- a/src/hash/blake2.c
+++ b/src/hash/blake2.c
@@ -221,10 +221,11 @@ void blake2b_update(uint8_t* input, size_t len, struct blake2b_hash* hash){
void blake2b_final(struct blake2b_hash* hash, char* out_stream){
uint8_t old[bs_2];
- uint32_t hashh[8];
+ uint64_t hashh[8];
struct blake2b_hash old_hash;
+
memcpy(&old_hash, hash, sizeof * hash);
- memcpy(old, hash->buffer, bs_2);
+ memcpy(old, hash->buffer, bs_2 * sizeof * old);
memcpy(hashh, hash->hash, 8 * sizeof * hashh);
hash->compressed += hash->bufflen;
@@ -234,7 +235,7 @@ void blake2b_final(struct blake2b_hash* hash, char* out_stream){
for(int i = 0; i != hash->digest_len; i++)sprintf(out_stream + i * 2, "%02x", (((uint8_t*)hash->hash)[i]));
memcpy(hash, &old_hash, sizeof * hash);
- memcpy(hash->buffer, old, bs_2);
+ memcpy(hash->buffer, old, bs_2 * sizeof * old);
memcpy(hash->hash, hashh, 8 * sizeof * hashh);
}
@@ -531,4 +532,4 @@ int l_blake2s(lua_State* L){
lua_pushstring(L, digest);
return 1;
-} \ No newline at end of file
+}
diff --git a/src/hash/md5.c b/src/hash/md5.c
index 78211cd..1b3f508 100644
--- a/src/hash/md5.c
+++ b/src/hash/md5.c
@@ -37,7 +37,6 @@ struct md5_hash md5_init_l(lua_State* L){
void md5_round(struct md5_hash* hash){
uint32_t* M = (uint32_t *)(hash->buffer);
-
uint32_t A = hash->a0;
uint32_t B = hash->b0;
uint32_t C = hash->c0;