aboutsummaryrefslogtreecommitdiff
path: root/src/hash/md5.c
diff options
context:
space:
mode:
authorame <[email protected]>2024-04-05 22:15:55 -0500
committerame <[email protected]>2024-04-05 22:15:55 -0500
commit6dbb6dc2104237299cca414cd3a86256122e4abf (patch)
treeb91c803a9a3ed3b391166684f0ac940c44977f17 /src/hash/md5.c
parentf752ddb0353fb7b06bce742b64b6a72322b51827 (diff)
+ + final fixes
Diffstat (limited to 'src/hash/md5.c')
-rw-r--r--src/hash/md5.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/hash/md5.c b/src/hash/md5.c
index 5806b48..014eefa 100644
--- a/src/hash/md5.c
+++ b/src/hash/md5.c
@@ -104,6 +104,11 @@ void md5_update(uint8_t* input, size_t len, struct md5_hash* hash){
}
void md5_final(struct md5_hash* hash, char out_stream[64]){
+ uint8_t old[bs];
+ struct md5_hash old_hash;
+ memcpy(&old_hash, hash, sizeof * hash);
+ memcpy(old, hash->buffer, bs);
+
hash->buffer[hash->bufflen] = 0x80;
if(hash->bufflen > 55) {
@@ -122,6 +127,10 @@ void md5_final(struct md5_hash* hash, char out_stream[64]){
((uint8_t*)&hash->b0)[0], ((uint8_t*)&hash->b0)[1], ((uint8_t*)&hash->b0)[2], ((uint8_t*)&hash->b0)[3],
((uint8_t*)&hash->c0)[0], ((uint8_t*)&hash->c0)[1], ((uint8_t*)&hash->c0)[2], ((uint8_t*)&hash->c0)[3],
((uint8_t*)&hash->d0)[0], ((uint8_t*)&hash->d0)[1], ((uint8_t*)&hash->d0)[2], ((uint8_t*)&hash->d0)[3]);
+
+ memcpy(hash->buffer, old, bs);
+ memcpy(hash, &old_hash, sizeof * hash);
+
}
lua_common_hash_init_ni(md5, md5, md5_init_l(L));
@@ -129,10 +138,7 @@ lua_common_hash_update(md5, md5);
//common_hash_init_update(md5);
int l_md5_final(lua_State* L){
- lua_pushstring(L, "ud");
- lua_gettable(L, 1);
-
- struct md5_hash* a = (struct md5_hash*)lua_touserdata(L, -1);
+ struct md5_hash* a = (struct md5_hash*)lua_touserdata(L, 1);
char digest[128] = {0};
md5_final(a, digest);