updated tlibc

This commit is contained in:
Timerix 2025-07-24 18:31:42 +03:00
parent 664ff91e63
commit eb1daa721a
6 changed files with 22 additions and 22 deletions

2
dependencies/tlibc vendored

@ -1 +1 @@
Subproject commit a9fa42c23f8419ef80f7b74074030d54388cf410 Subproject commit 0e80a568922ae579213d5a99329fa32420f0bcb0

View File

@ -2,7 +2,7 @@
#include <assert.h> #include <assert.h>
#include "tlibc/time.h" #include "tlibc/time.h"
void EncryptorAES_create(EncryptorAES* ptr, Array key){ void EncryptorAES_create(EncryptorAES* ptr, Array(u8) key){
assert(key.size == 16 || key.size == 24 || key.size == 32); assert(key.size == 16 || key.size == 24 || key.size == 32);
br_aes_ct64_cbcenc_init(&ptr->enc_ctx, key.data, key.size); br_aes_ct64_cbcenc_init(&ptr->enc_ctx, key.data, key.size);
@ -15,7 +15,7 @@ void EncryptorAES_create(EncryptorAES* ptr, Array key){
memset(ptr->iv, 0, sizeof(ptr->iv)); memset(ptr->iv, 0, sizeof(ptr->iv));
} }
void EncryptorAES_encrypt(EncryptorAES* ptr, Array src, Array dst){ void EncryptorAES_encrypt(EncryptorAES* ptr, Array(u8) src, Array(u8) dst){
assert(dst.size >= EncryptorAES_calcDstSize(src.size)); assert(dst.size >= EncryptorAES_calcDstSize(src.size));
// write random bytes to the beginning of the buffer // write random bytes to the beginning of the buffer
@ -51,7 +51,7 @@ void EncryptorAES_encrypt(EncryptorAES* ptr, Array src, Array dst){
} }
void DecryptorAES_create(DecryptorAES* ptr, Array key){ void DecryptorAES_create(DecryptorAES* ptr, Array(u8) key){
assert(key.size == 16 || key.size == 24 || key.size == 32); assert(key.size == 16 || key.size == 24 || key.size == 32);
br_aes_ct64_cbcdec_init(&ptr->dec_ctx, key.data, key.size); br_aes_ct64_cbcdec_init(&ptr->dec_ctx, key.data, key.size);
@ -60,7 +60,7 @@ void DecryptorAES_create(DecryptorAES* ptr, Array key){
memset(ptr->iv, 0, sizeof(ptr->iv)); memset(ptr->iv, 0, sizeof(ptr->iv));
} }
void DecryptorAES_decrypt(DecryptorAES* ptr, Array src, Array dst, u32* decrypted_size){ void DecryptorAES_decrypt(DecryptorAES* ptr, Array(u8) src, Array(u8) dst, u32* decrypted_size){
assert(dst.size >= src.size); assert(dst.size >= src.size);
// copy encrypted header from src to buffer // copy encrypted header from src to buffer

View File

@ -32,12 +32,12 @@ typedef struct EncryptorAES {
} EncryptorAES; } EncryptorAES;
/// @param key Array<u8, 16 | 24 | 32> /// @param key Array<u8, 16 | 24 | 32>
void EncryptorAES_create(EncryptorAES* ptr, Array key); void EncryptorAES_create(EncryptorAES* ptr, Array(u8) key);
/// @brief Encrypts `src` and writes output to `dst`. /// @brief Encrypts `src` and writes output to `dst`.
/// @param src array of any size /// @param src array of any size
/// @param dst array of size >= EncryptorAES_calcDstSize(src.size) /// @param dst array of size >= EncryptorAES_calcDstSize(src.size)
void EncryptorAES_encrypt(EncryptorAES* ptr, Array src, Array dst); void EncryptorAES_encrypt(EncryptorAES* ptr, Array(u8) src, Array(u8) dst);
#define EncryptorAES_calcDstSize(SRC_SIZE) (ALIGN_TO(SRC_SIZE, 16) + __AES_RANDOM_BYTES_N + sizeof(EncryptedBlockInfo)) #define EncryptorAES_calcDstSize(SRC_SIZE) (ALIGN_TO(SRC_SIZE, 16) + __AES_RANDOM_BYTES_N + sizeof(EncryptedBlockInfo))
@ -49,13 +49,13 @@ typedef struct DecryptorAES {
} DecryptorAES; } DecryptorAES;
/// @param key Array<u8, 16 | 24 | 32> /// @param key Array<u8, 16 | 24 | 32>
void DecryptorAES_create(DecryptorAES* ptr, Array key); void DecryptorAES_create(DecryptorAES* ptr, Array(u8) key);
/// @brief Decrypts `src` and writes output to `dst`. /// @brief Decrypts `src` and writes output to `dst`.
/// @param src array of any size /// @param src array of any size
/// @param dst array of size >= src.size /// @param dst array of size >= src.size
/// @param decrypted_size size of original data without padding added by EncryptorAES_encrypt /// @param decrypted_size size of original data without padding added by EncryptorAES_encrypt
void DecryptorAES_decrypt(DecryptorAES* ptr, Array src, Array dst, u32* decrypted_size); void DecryptorAES_decrypt(DecryptorAES* ptr, Array(u8) src, Array(u8) dst, u32* decrypted_size);

View File

@ -8,13 +8,13 @@
Result(void) test_aes(){ Result(void) test_aes(){
const str password = STR("abobus"); const str password = STR("abobus");
const Array data = str_castTo_Array(STR("0123456789_hii_")); const Array(const char) data = str_castTo_Array(STR("0123456789_hii_"));
u8 hash_buffer[hash_password_out_size]; u8 hash_buffer[hash_password_out_size];
// SHA256 accepts keys with size 16, 24 or 32 // SHA256 accepts keys with size 16, 24 or 32
const u32 key_size = 32; const u32 key_size = 32;
assert(key_size <= hash_password_out_size); assert(key_size <= hash_password_out_size);
const Array key = Array_construct_size(hash_buffer, key_size); const Array(u8) key = Array_construct_size(hash_buffer, key_size);
hash_password(password, hash_buffer, 1e5); hash_password(password, hash_buffer, 1e5);
str hash_str = hex_to_str(key, true); str hash_str = hex_to_str(key, true);
printf("key [%i] %s\n", key.size, hash_str.data); printf("key [%i] %s\n", key.size, hash_str.data);
@ -22,7 +22,7 @@ Result(void) test_aes(){
EncryptorAES encr; EncryptorAES encr;
EncryptorAES_create(&encr, key); EncryptorAES_create(&encr, key);
Array buffer = Array_alloc_size(EncryptorAES_calcDstSize(data.size)); Array(u8) buffer = Array_alloc_size(EncryptorAES_calcDstSize(data.size));
EncryptorAES_encrypt(&encr, data, buffer); EncryptorAES_encrypt(&encr, data, buffer);
str encrypted_str = hex_to_str(buffer, true); str encrypted_str = hex_to_str(buffer, true);
@ -85,7 +85,7 @@ void* test_server(void* data){
try_fatal(client_conn, socket_accept(main_socket.i, NULL), socket_close(main_socket.i)); try_fatal(client_conn, socket_accept(main_socket.i, NULL), socket_close(main_socket.i));
// last byte is reserved for '\0' // last byte is reserved for '\0'
Array buf = Array_construct(malloc(1024), u8, 1023); Array(u8) buf = Array_construct(malloc(1024), u8, 1023);
printf_safe("[server]: receiving data from client\n"); printf_safe("[server]: receiving data from client\n");
while(true){ while(true){
try_fatal(read_n, try_fatal(read_n,
@ -117,7 +117,7 @@ void* test_client(void* data){
try_fatal(_20, try_fatal(_20,
socket_connect(client_socket.i, server_end), socket_connect(client_socket.i, server_end),
socket_close(client_socket.i)); socket_close(client_socket.i));
Array buf = Array_alloc(u8, 1024); Array(u8) buf = Array_alloc(u8, 1024);
printf_safe("[client]: reading stdin\n"); printf_safe("[client]: reading stdin\n");
while(fgets(buf.data, buf.size, stdin) != NULL){ while(fgets(buf.data, buf.size, stdin) != NULL){
str line = str_construct(buf.data, strlen(buf.data), true); str line = str_construct(buf.data, strlen(buf.data), true);

View File

@ -60,14 +60,14 @@ Result(void) socket_connect(Socket s, EndpointIPv4 remote_end){
return RESULT_VOID; return RESULT_VOID;
} }
Result(void) socket_send(Socket s, Array buffer){ Result(void) socket_send(Socket s, Array(u8) buffer){
i32 r = send(s, buffer.data, buffer.size, 0); i32 r = send(s, buffer.data, buffer.size, 0);
if(r < 0) if(r < 0)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR(strerror(errno), false);
return RESULT_VOID; return RESULT_VOID;
} }
Result(void) socket_sendto(Socket s, Array buffer, EndpointIPv4 dst){ Result(void) socket_sendto(Socket s, Array(u8) buffer, EndpointIPv4 dst){
struct sockaddr_in sockaddr = EndpointIPv4_toSockaddr(dst); struct sockaddr_in sockaddr = EndpointIPv4_toSockaddr(dst);
i32 r = sendto(s, buffer.data, buffer.size, 0, (void*)&sockaddr, sizeof(sockaddr)); i32 r = sendto(s, buffer.data, buffer.size, 0, (void*)&sockaddr, sizeof(sockaddr));
if(r < 0) if(r < 0)
@ -75,7 +75,7 @@ Result(void) socket_sendto(Socket s, Array buffer, EndpointIPv4 dst){
return RESULT_VOID; return RESULT_VOID;
} }
Result(i32) socket_recv(Socket s, Array buffer){ Result(i32) socket_recv(Socket s, Array(u8) buffer){
i32 r = recv(s, buffer.data, buffer.size, 0); i32 r = recv(s, buffer.data, buffer.size, 0);
if(r < 0) if(r < 0)
return RESULT_ERROR(strerror(errno), false); return RESULT_ERROR(strerror(errno), false);
@ -83,7 +83,7 @@ Result(i32) socket_recv(Socket s, Array buffer){
} }
Result(i32) socket_recvfrom(Socket s, Array buffer, NULLABLE(EndpointIPv4*) remote_end){ Result(i32) socket_recvfrom(Socket s, Array(u8) buffer, NULLABLE(EndpointIPv4*) remote_end){
struct sockaddr_in remote_addr = {0}; struct sockaddr_in remote_addr = {0};
i32 sockaddr_size = sizeof(remote_addr); i32 sockaddr_size = sizeof(remote_addr);
i32 r = recvfrom(s, buffer.data, buffer.size, 0, i32 r = recvfrom(s, buffer.data, buffer.size, 0,

View File

@ -18,7 +18,7 @@ Result(void) socket_bind(Socket s, EndpointIPv4 local_end);
Result(void) socket_listen(Socket s, i32 backlog); Result(void) socket_listen(Socket s, i32 backlog);
Result(Socket) socket_accept(Socket s, NULLABLE(EndpointIPv4*) remote_end); Result(Socket) socket_accept(Socket s, NULLABLE(EndpointIPv4*) remote_end);
Result(void) socket_connect(Socket s, EndpointIPv4 remote_end); Result(void) socket_connect(Socket s, EndpointIPv4 remote_end);
Result(void) socket_send(Socket s, Array buffer); Result(void) socket_send(Socket s, Array(u8) buffer);
Result(void) socket_sendto(Socket s, Array buffer, EndpointIPv4 dst); Result(void) socket_sendto(Socket s, Array(u8) buffer, EndpointIPv4 dst);
Result(i32) socket_recv(Socket s, Array buffer); Result(i32) socket_recv(Socket s, Array(u8) buffer);
Result(i32) socket_recvfrom(Socket s, Array buffer, NULLABLE(EndpointIPv4*) remote_end); Result(i32) socket_recvfrom(Socket s, Array(u8) buffer, NULLABLE(EndpointIPv4*) remote_end);