tcp-chat/src/main.c

50 lines
1.7 KiB
C
Executable File

#include "cryptography/cryptography.h"
#include "network/network.h"
#include "network/socket.h"
void test_aes(){
const str password = STR("abobus");
const Array data = str_castTo_Array(STR("0123456789_hii_"));
const Array key_hash = hash_password(password, 1e5);
str hash_str = hex_to_str(key_hash, true);
printf("password hash [%i] %s\n", key_hash.size, hash_str.data);
free(hash_str.data);
// SHA256 accepts keys with size 16, 24 or 32
const u32 key_size = 32;
const Array key = Array_construct_size(key_hash.data, key_size);
EncryptorAES* encr = EncryptorAES_create(key);
Array buffer = Array_alloc_size(EncryptorAES_calcDstSize(data.size));
EncryptorAES_encrypt(encr, data, buffer);
EncryptorAES_destroy(encr);
str encrypted_str = hex_to_str(buffer, true);
printf("data encrypted (hex): %s\n", encrypted_str.data);
free(encrypted_str.data);
DecryptorAES* decr = DecryptorAES_create(key);
u32 decrypted_size = 0;
DecryptorAES_decrypt(decr, buffer, buffer, &decrypted_size);
DecryptorAES_destroy(decr);
str decrypted_str = str_copy(str_construct(buffer.data, decrypted_size, false));
printf("data decrypted (utf8): %s\n", decrypted_str.data);
free(decrypted_str.data);
}
void test_server(){
try_fatal(_10, network_init(), );
try_fatal(main_socket, socket_open_TCP(), );
EndpointIPv4 server_end = EndpointIPv4_create(AddressIPv4_LOOPBACK, 24500);
try_fatal(_20, socket_bind(main_socket.v_i64, server_end), );
try_fatal(_30, socket_listen(main_socket.v_i64, 64), );
try_fatal(_100, network_deinit(), );
}
int main(){
test_server();
return 0;
}