mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-07-16 10:03:35 -07:00
Add Lib Init
This commit is contained in:
parent
4c216db5d2
commit
0a3378bba9
7 changed files with 47 additions and 6 deletions
|
@ -24,6 +24,13 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
qRegisterMetaType<ChiakiQuitReason>();
|
||||
|
||||
ChiakiErrorCode err = chiaki_lib_init();
|
||||
if(err != CHIAKI_ERR_SUCCESS)
|
||||
{
|
||||
fprintf(stderr, "Chiaki lib init failed: %s\n", chiaki_error_string(err));
|
||||
return 1;
|
||||
}
|
||||
|
||||
QApplication app(argc, argv);
|
||||
QApplication::setApplicationName("Chiaki");
|
||||
|
||||
|
|
|
@ -51,7 +51,12 @@ typedef enum
|
|||
|
||||
CHIAKI_EXPORT const char *chiaki_error_string(ChiakiErrorCode code);
|
||||
|
||||
void *chiaki_aligned_alloc(size_t alignment, size_t size);
|
||||
CHIAKI_EXPORT void *chiaki_aligned_alloc(size_t alignment, size_t size);
|
||||
|
||||
/**
|
||||
* Perform initialization of global state needed for using the Chiaki lib
|
||||
*/
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_lib_init();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -27,7 +27,12 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_random_bytes(uint8_t *buf, size_t buf_size);
|
||||
/**
|
||||
* Random for cryptography
|
||||
*/
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_random_bytes_crypt(uint8_t *buf, size_t buf_size);
|
||||
|
||||
CHIAKI_EXPORT uint32_t chiaki_random_32();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -16,9 +16,14 @@
|
|||
*/
|
||||
|
||||
#include <chiaki/common.h>
|
||||
#include <chiaki/random.h>
|
||||
#include <chiaki/fec.h>
|
||||
|
||||
#include <galois.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
|
||||
CHIAKI_EXPORT const char *chiaki_error_string(ChiakiErrorCode code)
|
||||
{
|
||||
|
@ -63,3 +68,16 @@ void *chiaki_aligned_alloc(size_t alignment, size_t size)
|
|||
{
|
||||
return aligned_alloc(alignment, size);
|
||||
}
|
||||
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_lib_init()
|
||||
{
|
||||
unsigned int seed;
|
||||
chiaki_random_bytes_crypt((uint8_t *)&seed, sizeof(seed));
|
||||
srand(seed); // doesn't necessarily need to be secure for crypto
|
||||
|
||||
int galois_r = galois_init_default_field(CHIAKI_FEC_WORDSIZE);
|
||||
if(galois_r != 0)
|
||||
return galois_r == ENOMEM ? CHIAKI_ERR_MEMORY : CHIAKI_ERR_UNKNOWN;
|
||||
|
||||
return CHIAKI_ERR_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -19,10 +19,15 @@
|
|||
|
||||
#include <openssl/rand.h>
|
||||
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_random_bytes(uint8_t *buf, size_t buf_size)
|
||||
CHIAKI_EXPORT ChiakiErrorCode chiaki_random_bytes_crypt(uint8_t *buf, size_t buf_size)
|
||||
{
|
||||
int r = RAND_bytes(buf, (int)buf_size);
|
||||
if(!r)
|
||||
return CHIAKI_ERR_UNKNOWN;
|
||||
return CHIAKI_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
CHIAKI_EXPORT uint32_t chiaki_random_32()
|
||||
{
|
||||
return rand() % UINT32_MAX;
|
||||
}
|
|
@ -333,7 +333,7 @@ static void *session_thread_func(void *arg)
|
|||
session->mtu = 1454;
|
||||
session->rtt = 12;
|
||||
|
||||
err = chiaki_random_bytes(session->handshake_key, sizeof(session->handshake_key));
|
||||
err = chiaki_random_bytes_crypt(session->handshake_key, sizeof(session->handshake_key));
|
||||
if(err != CHIAKI_ERR_SUCCESS)
|
||||
{
|
||||
CHIAKI_LOGE(session->log, "Session failed to generate handshake key");
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
#include <chiaki/takion.h>
|
||||
#include <chiaki/congestioncontrol.h>
|
||||
#include <chiaki/random.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
@ -186,7 +187,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_connect(ChiakiTakion *takion, Chiaki
|
|||
takion->cb_user = info->cb_user;
|
||||
takion->a_rwnd = TAKION_A_RWND;
|
||||
|
||||
takion->tag_local = 0x4823; // "random" tag TODO: use actual random tag
|
||||
takion->tag_local = chiaki_random_32(); // 0x4823
|
||||
takion->seq_num_local = takion->tag_local;
|
||||
ret = chiaki_mutex_init(&takion->seq_num_local_mutex, false);
|
||||
if(ret != CHIAKI_ERR_SUCCESS)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue