saving user certificate
This commit is contained in:
parent
d799ff1e0c
commit
bd986f5327
@ -870,18 +870,17 @@ void *why2_authority_communicate_thread(void *arg)
|
|||||||
{
|
{
|
||||||
//VARIABLES
|
//VARIABLES
|
||||||
int connection = *(int*) arg;
|
int connection = *(int*) arg;
|
||||||
char *pubkey = why2_chat_ecc_serialize_public_key();
|
|
||||||
why2_bool exiting = 0;
|
why2_bool exiting = 0;
|
||||||
char *raw;
|
char *raw;
|
||||||
void *raw_ptr;
|
void *raw_ptr;
|
||||||
char *message;
|
char *message;
|
||||||
|
char *username;
|
||||||
char *code;
|
char *code;
|
||||||
|
|
||||||
printf("User connected.\t\t%d\n", connection);
|
printf("User connected.\t\t%d\n", connection);
|
||||||
|
|
||||||
//SEND USER CA PUBLIC KEY
|
//SEND USER KEY EXCHANGE CODE
|
||||||
why2_send_socket_code(NULL, NULL, connection, WHY2_CHAT_CODE_KEY_EXCHANGE);
|
why2_send_socket_code(NULL, NULL, connection, WHY2_CHAT_CODE_KEY_EXCHANGE);
|
||||||
why2_deallocate(pubkey);
|
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -890,17 +889,61 @@ void *why2_authority_communicate_thread(void *arg)
|
|||||||
|
|
||||||
//GET DATA
|
//GET DATA
|
||||||
message = get_string_from_json_string(raw, "message");
|
message = get_string_from_json_string(raw, "message");
|
||||||
|
username = get_string_from_json_string(raw, "username");
|
||||||
code = get_string_from_json_string(raw, "code");
|
code = get_string_from_json_string(raw, "code");
|
||||||
|
|
||||||
if (code != NULL)
|
if (code != NULL && message != NULL && username != NULL)
|
||||||
{
|
{
|
||||||
//do stuff
|
if (strcmp(code, WHY2_CHAT_CODE_CLIENT_KEY_EXCHANGE) == 0)
|
||||||
|
{
|
||||||
|
//GET PATH OF USER CERT
|
||||||
|
char *path = why2_get_authority_cert_path(username);
|
||||||
|
FILE *cert;
|
||||||
|
|
||||||
|
if (access(path, F_OK) == 0) //ALREADY EXISTS
|
||||||
|
{
|
||||||
|
//VARIABLES
|
||||||
|
char *buffer;
|
||||||
|
long buffer_size;
|
||||||
|
|
||||||
|
cert = why2_fopen(path, "r"); //OPEN FILE
|
||||||
|
|
||||||
|
//COUNT LENGTH OF buffer AND STORE IT IN buffer_size
|
||||||
|
fseek(cert, 0, SEEK_END);
|
||||||
|
buffer_size = ftell(cert);
|
||||||
|
rewind(cert); //REWIND file_buffer (NO SHIT)
|
||||||
|
|
||||||
|
//ALLOCATE
|
||||||
|
buffer = why2_calloc(buffer_size + 1, sizeof(char));
|
||||||
|
|
||||||
|
fread(buffer, buffer_size, 1, cert); //READ
|
||||||
|
|
||||||
|
//SEND STATUS
|
||||||
|
why2_send_socket_code(NULL, NULL, connection, strcmp(buffer, message) == 0 ? WHY2_CHAT_CODE_SUCCESS : WHY2_CHAT_CODE_FAILURE);
|
||||||
|
|
||||||
|
//DEALLOCATION
|
||||||
|
why2_deallocate(buffer);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
//CREATE CERT
|
||||||
|
cert = why2_fopen(path, "w+"); //CREATE FILE
|
||||||
|
fwrite(message, 1, strlen(message), cert); //WRITE PUBKEY
|
||||||
|
|
||||||
|
//CONFIRM SUCCESS
|
||||||
|
why2_send_socket_code(NULL, NULL, connection, WHY2_CHAT_CODE_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
//DEALLOCATION
|
||||||
|
why2_deallocate(path);
|
||||||
|
why2_deallocate(cert);
|
||||||
|
}
|
||||||
} else exiting = 1;
|
} else exiting = 1;
|
||||||
|
|
||||||
//DEALLOCATION
|
//DEALLOCATION
|
||||||
why2_deallocate(raw);
|
why2_deallocate(raw);
|
||||||
why2_deallocate(raw_ptr);
|
why2_deallocate(raw_ptr);
|
||||||
why2_deallocate(message);
|
why2_deallocate(message);
|
||||||
|
why2_deallocate(username);
|
||||||
why2_deallocate(code);
|
why2_deallocate(code);
|
||||||
} while (!exiting);
|
} while (!exiting);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user