tcp-chat/src/client/client.h

34 lines
961 B
C

#pragma once
#include "network/socket.h"
#include "cryptography/cryptography.h"
Result(void) client_run();
typedef struct ClientCredential {
str username;
Array(u8) aes_key;
Array(u8) token;
br_rsa_private_key sk;
br_rsa_public_key pk;
EncryptorRSA rsa_enc;
DecryptorRSA rsa_dec;
EncryptorAES user_data_aes_enc;
DecryptorAES user_data_aes_dec;
} ClientCredential;
Result(ClientCredential*) ClientCredential_create(str username, str password);
void ClientCredential_free(ClientCredential* cred);
typedef struct ServerConnection {
EndpointIPv4 server_end;
Socket system_socket;
Socket content_socket;
br_rsa_public_key server_pk;
EncryptorRSA rsa_enc;
EncryptorAES session_aes_enc;
DecryptorAES session_aes_dec;
} ServerConnection;
Result(ServerConnection*) ServerConnection_open(ClientCredential* client_credential, cstr server_link_cstr);
void ServerConnection_close(ServerConnection* conn);