Files
tcp-chat/src/client/client.h

30 lines
880 B
C

#pragma once
#include "cryptography/AES.h"
#include "cryptography/RSA.h"
#include "network/encrypted_sockets.h"
Result(void) client_run();
typedef struct ClientCredential {
str username;
Array(u8) aes_key;
AESBlockEncryptor user_data_aes_enc;
AESBlockDecryptor user_data_aes_dec;
} ClientCredential;
Result(ClientCredential*) ClientCredential_create(str username, str password);
void ClientCredential_free(ClientCredential* cred);
typedef struct ServerConnection {
u64 session_id;
EndpointIPv4 server_end;
br_rsa_public_key server_pk;
RSAEncryptor rsa_enc;
Array(u8) session_key;
EncryptedSocketTCP system_socket;
EncryptedSocketTCP content_socket;
} ServerConnection;
Result(ServerConnection*) ServerConnection_open(ClientCredential* client_credential, cstr server_link_cstr);
void ServerConnection_close(ServerConnection* conn);