aboutsummaryrefslogtreecommitdiff
path: root/src/hash
diff options
context:
space:
mode:
authorame <[email protected]>2024-09-30 02:17:37 -0500
committerame <[email protected]>2024-09-30 02:17:37 -0500
commitf648ac9db35f49f3dbd7373cc230f680c55cc04a (patch)
tree2a9fafd40359419d36504b55e6041a9fdda23bc6 /src/hash
parent1cc24fda87c3e8df90a5ea2d526ce39adf4a7648 (diff)
parentfe33c0e979ebfc41c3eb9f561589f0d5d8810aaf (diff)
what
Diffstat (limited to 'src/hash')
-rw-r--r--src/hash/blake.c12
-rw-r--r--src/hash/md5.c9
-rw-r--r--src/hash/sha01.c17
-rw-r--r--src/hash/sha2-256.c20
-rw-r--r--src/hash/sha2xx.c22
5 files changed, 67 insertions, 13 deletions
diff --git a/src/hash/blake.c b/src/hash/blake.c
index 7bf1481..cf948f1 100644
--- a/src/hash/blake.c
+++ b/src/hash/blake.c
@@ -498,7 +498,8 @@ int l_blake256_clone(lua_State* L){
return 1;
}
-common_hash_init_update(blake256);
+lua_common_hash_init_l(blake256, blake256);
+lua_common_hash_update(blake256, blake256);
int l_blake256_final(lua_State* L){
struct blake256_hash* a = (struct blake256_hash*)lua_touserdata(L, 1);
@@ -539,7 +540,8 @@ int l_blake224_clone(lua_State* L){
return 1;
}
-common_hash_init_update(blake224);
+lua_common_hash_init_l(blake224, blake224);
+lua_common_hash_update(blake224, blake224);
int l_blake224_final(lua_State* L){
struct blake224_hash* a = (struct blake224_hash*)lua_touserdata(L, 1);
@@ -580,7 +582,8 @@ int l_blake512_clone(lua_State* L){
return 1;
}
-common_hash_init_update(blake512);
+lua_common_hash_init_l(blake512, blake512);
+lua_common_hash_update(blake512, blake512);
int l_blake512_final(lua_State* L){
struct blake512_hash* a = (struct blake512_hash*)lua_touserdata(L, 1);
@@ -622,7 +625,8 @@ int l_blake384_clone(lua_State* L){
return 1;
}
-common_hash_init_update(blake384);
+lua_common_hash_init_l(blake384, blake384);
+lua_common_hash_update(blake384, blake384);
int l_blake384_final(lua_State* L){
struct blake384_hash* a = (struct blake384_hash*)lua_touserdata(L, 1);
diff --git a/src/hash/md5.c b/src/hash/md5.c
index 1b3f508..45844f2 100644
--- a/src/hash/md5.c
+++ b/src/hash/md5.c
@@ -134,7 +134,14 @@ void md5_final(struct md5_hash* hash, char out_stream[64]){
}
-common_hash_clone(md5);
+//common_hash_clone(md5);
+lua_common_hash_clone_oargs(md5, md5, l_md5_init(L), {
+ uint8_t* old = b->buffer;
+ *b = *a;
+ b->buffer = old;
+ memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
+});
+
lua_common_hash_init_ni(md5, md5, md5_init_l(L));
lua_common_hash_update(md5, md5);
//common_hash_init_update(md5);
diff --git a/src/hash/sha01.c b/src/hash/sha01.c
index 9ba3e6c..1711faa 100644
--- a/src/hash/sha01.c
+++ b/src/hash/sha01.c
@@ -174,11 +174,24 @@ void sha1(uint8_t* a, size_t len, char* out_stream){
free(aa.buffer);
}
-common_hash_clone(sha1);
+//common_hash_clone(sha1);
+lua_common_hash_clone_oargs(sha1, sha1, l_sha1_init(L), {
+ uint8_t* old = b->buffer;
+ *b = *a;
+ b->buffer = old;
+ memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
+});
+
lua_common_hash_init_ni(sha1, sha1, sha01_init_l(1, L));
lua_common_hash_update(sha1, sha1);
-common_hash_clone(sha0);
+//common_hash_clone(sha0);
+lua_common_hash_clone_oargs(sha0, sha0, l_sha0_init(L), {
+ uint8_t* old = b->buffer;
+ *b = *a;
+ b->buffer = old;
+ memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
+});
lua_common_hash_init_ni(sha0, sha0, sha01_init_l(0, L));
lua_common_hash_update(sha0, sha0);
diff --git a/src/hash/sha2-256.c b/src/hash/sha2-256.c
index 7e37d9d..42f6a81 100644
--- a/src/hash/sha2-256.c
+++ b/src/hash/sha2-256.c
@@ -245,7 +245,13 @@ struct iv sha_iv_gen(int i){
return (struct iv){.h0 = a.h0, .h1 = a.h1, .h2 = a.h2, .h3 = a.h3, .h4 = a.h4, .h5 = a.h5, .h6 = a.h6, .h7 = a.h7};
}
-common_hash_clone(sha512);
+//common_hash_clone(sha512);
+lua_common_hash_clone_oargs(sha512, sha512, l_sha512_init(L), {
+ uint8_t* old = b->buffer;
+ *b = *a;
+ b->buffer = old;
+ memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
+});
lua_common_hash_init_ni(sha512, sha512, sha512_t_init_l(sha512_iv, L));
lua_common_hash_update(sha512, sha512);
@@ -259,7 +265,13 @@ int l_sha512_final(lua_State* L){
return 1;
}
-common_hash_clone(sha384);
+//common_hash_clone(sha384);
+lua_common_hash_clone_oargs(sha384, sha384, l_sha384_init(L), {
+ uint8_t* old = b->buffer;
+ *b = *a;
+ b->buffer = old;
+ memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
+});
lua_common_hash_init_ni(sha384, sha384, sha512_t_init_l(sha384_iv, L));
lua_common_hash_update(sha384, sha384);
@@ -278,7 +290,11 @@ int l_sha512_t_clone(lua_State* L){
lua_pushinteger(L, a->t);
l_sha512_t_init(L);
struct sha512_hash* b = (struct sha512_hash*)lua_touserdata(L, -1);
+
+ uint8_t* old = b->buffer;
*b = *a;
+ b->buffer = old;
+ memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
return 1;
}
diff --git a/src/hash/sha2xx.c b/src/hash/sha2xx.c
index f3fbc5d..1ef3f6f 100644
--- a/src/hash/sha2xx.c
+++ b/src/hash/sha2xx.c
@@ -179,16 +179,24 @@ void sha256(uint8_t* in, size_t len, char* out){
struct sha256_hash a = sha256_init();
sha256_update(in, len, &a);
sha256_final(&a, out);
+ free(a.buffer);
}
void sha224(uint8_t* in, size_t len, char* out){
struct sha256_hash a = sha224_init();
sha224_update(in, len, &a);
sha224_final(&a, out);
+ free(a.buffer);
}
-common_hash_clone(sha256);
-lua_common_hash_init(sha256, sha256);
+//common_hash_clone(sha256);
+lua_common_hash_clone_oargs(sha256, sha256, l_sha256_init(L), {
+ uint8_t* old = b->buffer;
+ *b = *a;
+ b->buffer = old;
+ memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
+});
+lua_common_hash_init_l(sha256, sha256);
lua_common_hash_update(sha256, sha256);
int l_sha256_final(lua_State* L){
@@ -215,8 +223,14 @@ int l_sha256(lua_State* L){
};
#define sha224_hash sha256_hash
-common_hash_clone(sha224);
-lua_common_hash_init(sha224, sha224);
+//common_hash_clone(sha224);
+lua_common_hash_clone_oargs(sha224, sha224, l_sha224_init(L), {
+ uint8_t* old = b->buffer;
+ *b = *a;
+ b->buffer = old;
+ memcpy(b->buffer, a->buffer, bs * sizeof * b->buffer);
+});
+lua_common_hash_init_l(sha224, sha224);
lua_common_hash_update(sha224, sha224);
int l_sha224_final(lua_State* L){