diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/hash/sha2-256.c | 23 | ||||
| -rw-r--r-- | src/net.c | 10 | ||||
| -rw-r--r-- | src/net.h | 2 | ||||
| -rw-r--r-- | src/net/lua.c | 3 | ||||
| -rw-r--r-- | src/net/util.c | 2 | ||||
| -rw-r--r-- | src/net/websocket.c | 2 | ||||
| -rw-r--r-- | src/thread.c | 3 |
7 files changed, 23 insertions, 22 deletions
diff --git a/src/hash/sha2-256.c b/src/hash/sha2-256.c index 06841c5..1b8acb3 100644 --- a/src/hash/sha2-256.c +++ b/src/hash/sha2-256.c @@ -22,15 +22,6 @@ const uint64_t k[80] = {0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b 0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc,
0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817};
-void endian_swap128(__uint128_t *x){
- uint8_t *y = (uint8_t*)x;
- for (size_t low = 0, high = sizeof(__uint128_t) - 1; high > low; low++, high--){
- y[low] ^= y[high];
- y[high] ^= y[low];
- y[low] ^= y[high];
- }
-}
-
void endian_swap64(uint64_t *x){
uint8_t *y = (uint8_t*)x;
for (size_t low = 0, high = sizeof(uint64_t) - 1; high > low; low++, high--){
@@ -168,9 +159,17 @@ void _sha512_t_final(struct sha512_hash* hash){ memset(hash->buffer, 0, bs);
}
- __uint128_t bigL = hash->total*8;
- endian_swap128(&bigL);
- memcpy(&hash->buffer[128 - sizeof(__uint128_t)], &bigL, sizeof(__uint128_t));
+ uint64_t total = hash->total;
+ uint64_t bit_len_high = total >> 61;
+ uint64_t bit_len_low = total << 3;
+
+ uint64_t be_high = bit_len_high;
+ uint64_t be_low = bit_len_low;
+ endian_swap64(&be_high);
+ endian_swap64(&be_low);
+
+ memcpy(&hash->buffer[128 - 16], &be_high, 8);
+ memcpy(&hash->buffer[128 - 8], &be_low, 8);
sha512_round(hash);
}
@@ -197,7 +197,7 @@ int i_ws_write(lua_State* L){ lua_gettable(L, 1);
struct net_data* data = lua_touserdata(L, -1);
- uint64_t clen;
+ size_t clen;
const char* content = luaL_tolstring(L, 2, &clen);
str* send_data = str_init("");
@@ -250,7 +250,7 @@ int i_ws_close(lua_State* L){ #define BUFFER_LEN 16384
int l_wss(lua_State* L){
- uint64_t len = 0;
+ size_t len;
char* request_url = (char*)lua_tolstring(L, 1, &len);
struct url awa = parse_url(request_url, len);
if(awa.proto != NULL && strcmp(awa.proto->c, "ws") == 0){
@@ -414,7 +414,7 @@ int l_request(lua_State* L){ ssize_t _request_read(struct request_state* state, void* buffer, size_t count){
if(state->secure){
- uint64_t len;
+ size_t len;
if(SSL_read_ex(state->ssl, buffer, count, &len) == 0)
return 0;
return len;
@@ -425,7 +425,7 @@ ssize_t _request_read(struct request_state* state, void* buffer, size_t count){ ssize_t _request_write(struct request_state* state, const void* buffer, size_t count){
if(state->secure){
- uint64_t len;
+ size_t len;
if(SSL_write_ex(state->ssl, buffer, count, &len) == 0)
return 0;
return len;
@@ -437,7 +437,7 @@ ssize_t _request_write(struct request_state* state, const void* buffer, size_t c int _request(lua_State* L, struct request_state* state){
int params = lua_gettop(L);
- uint64_t ilen = 0;
+ size_t ilen;
char* request_url = (char*)lua_tolstring(L, 1, &ilen);
struct url awa = parse_url(request_url, ilen);
if(awa.proto != NULL && strcmp(awa.proto->c, "http") == 0){
@@ -48,7 +48,7 @@ static const luaL_Reg net_function_list [] = { };
extern char* _mimetypes;
-extern uint64_t _mimetypes_len;
+extern size_t _mimetypes_len;
static struct config net_config[] = {
{.name = "mimetypes", .type = c_string, .value = {.c_string = &_mimetypes, .len = &_mimetypes_len}},
diff --git a/src/net/lua.c b/src/net/lua.c index 50d050a..ffa10c4 100644 --- a/src/net/lua.c +++ b/src/net/lua.c @@ -279,7 +279,8 @@ int l_connection_upgrade(lua_State* L){ int req_idx = 2; lua_getfield(L, req_idx, "upgrade"); - uint64_t hash, len; + uint64_t hash; + size_t len; uint8_t* s = (uint8_t*)luaL_checklstring(L, -1, &len); hash = fnv_1(s, len, v_1); diff --git a/src/net/util.c b/src/net/util.c index cc478e4..d770f5e 100644 --- a/src/net/util.c +++ b/src/net/util.c @@ -348,7 +348,7 @@ parray_t* route_match(parray_t* paths, char* request, larray_t** _params){ map_t* mime_type = NULL; char* _mimetypes = "/etc/mime.types"; -uint64_t _mimetypes_len = 15; +size_t _mimetypes_len = 15; void parse_mimetypes(){ if(_mimetypes == NULL || _mimetypes_len == 0) return; diff --git a/src/net/websocket.c b/src/net/websocket.c index af37f32..06283f6 100644 --- a/src/net/websocket.c +++ b/src/net/websocket.c @@ -158,7 +158,7 @@ int l_ws_write(lua_State* L){ frame.mask = 0; frame.opcode = 0b0001; - uint64_t len; + size_t len; const char* s = lua_tolstring(L, 2, &len); str* f = str_init(""); diff --git a/src/thread.c b/src/thread.c index 1e58aef..cd2eb5f 100644 --- a/src/thread.c +++ b/src/thread.c @@ -453,7 +453,8 @@ int _buffer_func_wrapper(lua_State* L){ }
int l_buffer_index(lua_State* L){
- uint64_t len, hash;
+ size_t len;
+ uint64_t hash;
struct thread_buffer *buffer = lua_touserdata(L, 1);
const char* str = luaL_tolstring(L, 2, &len);
|
