aboutsummaryrefslogtreecommitdiff
path: root/src/hash/sha01.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/sha01.c
parentf752ddb0353fb7b06bce742b64b6a72322b51827 (diff)
+ + final fixes
Diffstat (limited to 'src/hash/sha01.c')
-rw-r--r--src/hash/sha01.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/hash/sha01.c b/src/hash/sha01.c
index 243dd4f..3605dcd 100644
--- a/src/hash/sha01.c
+++ b/src/hash/sha01.c
@@ -111,6 +111,11 @@ void sha01_update(uint8_t* input, size_t len, struct sha01_hash* hash){
}
void sha01_final(struct sha01_hash* hash, char* out_stream){
+ uint8_t old[bs];
+ struct sha01_hash old_hash;
+ memcpy(&old_hash, hash, sizeof * hash);
+ memcpy(old, hash->buffer, bs);
+
hash->buffer[hash->bufflen] = 0x80;
if(hash->bufflen > 55) {
@@ -126,6 +131,9 @@ void sha01_final(struct sha01_hash* hash, char* out_stream){
sha01_round(hash);
sprintf(out_stream,"%02x%02x%02x%02x%02x",hash->h0,hash->h1,hash->h2,hash->h3,hash->h4);
+
+ memcpy(hash, &old_hash, sizeof * hash);
+ memcpy(hash->buffer, old, bs);
}
struct sha01_hash sha0_init(){
@@ -171,10 +179,7 @@ lua_common_hash_init_ni(sha0, sha0, sha01_init_l(0, L));
lua_common_hash_update(sha0, sha0);
int l_sha1_final(lua_State* L){
- lua_pushstring(L, "ud");
- lua_gettable(L, 1);
-
- struct sha01_hash* a = (struct sha01_hash*)lua_touserdata(L, -1);
+ struct sha01_hash* a = (struct sha01_hash*)lua_touserdata(L, 1);
char digest[160];
sha1_final(a, digest);