diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index cf25b426094a914ef48aa087cbf50f63028d29b5..b349940d3bb2fcdd5c6a083bf6fce24a160ddca7 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -1,17 +1,26 @@ cmake_minimum_required(VERSION 2.8) project (dap_client) - -set(CLIENT_SRCS dap_client.c dap_client_internal.c dap_client_remote.c) + +set(CMAKE_VERBOSE_MAKEFILE ON) +set(CMAKE_COLOR_MAKEFILE ON) +set (CMAKE_CXX_STANDARD 11) + +set(CLIENT_SRCS dap_client.c dap_client_internal.c dap_client_remote.c sxmlc/sxmlc.c sxmlc/sxmlsearch.c) add_library(${PROJECT_NAME} STATIC ${CLIENT_SRCS}) include_directories("${dap_core_INCLUDE_DIRS}") include_directories("${dap_crypto_INCLUDE_DIRS}") -#include_directories("${dap_http_INCLUDE_DIRS}") +include_directories("${dap_http_INCLUDE_DIRS}") +include_directories("${dap_core_server_INCLUDE_DIRS}") add_definitions ("${dap_core_DEFINITIONS}") add_definitions ("${dap_crypto_DEFINITIONS}") add_definitions ("${dap_http_DEFINITIONS}") +add_definitions ("${dap_core_server_DEFINITIONS}") set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE) set(${PROJECT_NAME}_INCLUDE_DIRS ${PROJECT_SOURCE_DIR} CACHE INTERNAL "${PROJECT_NAME}: Include Directories" FORCE) + + + diff --git a/client/dap_client.c b/client/dap_client.c index b3190b68c88dadb12e9242ca2fa5a5e60e9ccdb9..ae2ed40b2bb82069d52a72095ac95109c98a550e 100644 --- a/client/dap_client.c +++ b/client/dap_client.c @@ -1,12 +1,12 @@ #include <string.h> -#include "core/dap_common.h" +#include "dap_common.h" -#include "../http/dap_http_client.h" +#include "dap_http_client.h" #include "dap_client.h" #include "dap_client_internal.h" -#include "crypto/dap_enc_key.h" +#include "dap_enc_key.h" #define LOG_TAG "dap_client" diff --git a/client/dap_client.h b/client/dap_client.h index eb2c6fbb0635bdd2cf6e37cb11212c97acc627f3..d83a88741a35100aa95bcb705e220029ea797431 100644 --- a/client/dap_client.h +++ b/client/dap_client.h @@ -12,11 +12,11 @@ typedef struct dap_enc_key dap_enc_key_t; typedef enum dap_client_stage { DAP_CLIENT_STAGE_BEGIN=0, DAP_CLIENT_STAGE_ENC=1, - DAP_CLIENT_STAGE_AUTH=2, - DAP_CLIENT_STAGE_STREAM_CTL=3, - DAP_CLIENT_STAGE_STREAM=4, - DAP_CLIENT_STAGE_NETCONF=5, - DAP_CLIENT_STAGE_TUNNEL=6, + DAP_CLIENT_STAGE_STREAM_CTL=2, + DAP_CLIENT_STAGE_STREAM=3, + DAP_CLIENT_STAGE_NETCONF=4, + DAP_CLIENT_STAGE_TUNNEL=5, + DAP_CLIENT_STAGE_AUTH=6 } dap_client_stage_t; typedef enum dap_client_stage_status { diff --git a/client/dap_client_internal.c b/client/dap_client_internal.c index ea5902827aed7baf118770151efdb310858fc38f..a4edd1a3bf7d9a18f2aa3468f84a89d471de0fa2 100644 --- a/client/dap_client_internal.c +++ b/client/dap_client_internal.c @@ -13,7 +13,7 @@ #include "liboqs/kex/kex.h" #include "dap_enc_msrln16.h" -#include "../http/dap_http_client_simple.h" +#include "dap_http_client_simple.h" #include "dap_client_internal.h" #define LOG_TAG "dap_client_internal" @@ -176,11 +176,29 @@ static void s_stage_status_after(dap_client_internal_t * a_client_internal) a_client_internal->uplink_password, DAP_CLIENT_PROTOCOL_VERSION); log_it(L_DEBUG,"STREAM_CTL request size %u",strlen(l_request)); + a_client_internal->uplink_protocol_version = DAP_PROTOCOL_VERSION; + dap_client_internal_request_enc(a_client_internal, DAP_UPLINK_PATH_STREAM_CTL, "socket_forward","sf=1",l_request,l_request_size, m_stream_ctl_response, m_stream_ctl_error); }break; + case DAP_CLIENT_STAGE_STREAM:{ + log_it(L_INFO,"Go to stage STREAM: prepare the request"); + + size_t l_request_size = strlen( a_client_internal->uplink_user) + + strlen( a_client_internal->uplink_password)+2+10; + char *l_request = DAP_NEW_Z_SIZE (char,l_request_size) ; + + snprintf(l_request, l_request_size,"%s %s %d",a_client_internal->uplink_user, + a_client_internal->uplink_password, DAP_CLIENT_PROTOCOL_VERSION); + log_it(L_DEBUG,"STREAM request size %u",strlen(l_request)); + + dap_client_internal_request_enc(a_client_internal, + DAP_UPLINK_PATH_STREAM, + "socket_forward","sf=1",l_request,l_request_size, + m_stream_ctl_response, m_stream_ctl_error); + }break; default:{ log_it(L_ERROR,"Undefined proccessing actions for stage status %s", dap_client_stage_status_str(a_client_internal->stage_status)); @@ -296,10 +314,10 @@ void dap_client_internal_request_enc(dap_client_internal_t * a_client_internal, snprintf(l_url,1024,"http://%s:%u",a_client_internal->uplink_addr, a_client_internal->uplink_port ); l_url_size = strlen(l_url); - char *l_sub_url_enc = l_sub_url_size ? (char*) calloc(1,2*l_sub_url_size+16 ): NULL; - char *l_query_enc = l_query_size ? (char*) calloc(1,l_query_size*2+16 ):NULL; + char *l_sub_url_enc = l_sub_url_size ? (char*) calloc(1,2*(l_sub_url_size+16) ): NULL; + char *l_query_enc = l_query_size ? (char*) calloc(1,(l_query_size+16)*2):NULL; - size_t l_url_full_size_max = 2*l_sub_url_size + 2*l_query_size + 5 + l_url_size; + size_t l_url_full_size_max = 2*l_sub_url_size + 2*(l_query_size+16) + 5 + l_url_size; char * l_url_full = (char*) calloc(1, l_url_full_size_max); size_t l_request_enc_size_max = a_request_size ?a_request_size*2+16 : 0; @@ -430,6 +448,10 @@ void m_enc_init_response(dap_client_t * a_client, void * a_response,size_t a_res dap_enc_msrln16_key_t* msrln16_key = DAP_ENC_KEY_TYPE_RLWE_MSRLN16(s_key_domain); OQS_KEX_rlwe_msrln16_alice_1(msrln16_key->kex, msrln16_key->private_key, encoded_msg, 2048,&msrln16_key->public_key,&msrln16_key->public_length); aes_key_from_msrln_pub(s_key_domain); + l_client_internal->session_key_id = (char*)malloc(33); + memcpy(l_client_internal->session_key_id,encoded_key,33); + l_client_internal->session_key_id[32] = 0; + l_client_internal->session_key = s_key_domain; free(encoded_key); free(encoded_msg); l_client_internal->stage_status = DAP_CLIENT_STAGE_STATUS_DONE; diff --git a/core/dap_common.c b/core/dap_common.c index 21e3bb90fb18aa8b7840a6d8144feeb2b638943f..bab79dff197d794f2bc4a8eb158080ea34efd785 100644 --- a/core/dap_common.c +++ b/core/dap_common.c @@ -74,7 +74,7 @@ int dap_common_init( const char * a_log_file ) return 0; } -void common_deinit() +void dap_common_deinit() { if(s_log_file) fclose(s_log_file); } diff --git a/crypto/dap_enc_aes.c b/crypto/dap_enc_aes.c index 892168243860c36e5ce34de87eb7e46429846c8b..4131396238c04ac6ff22ffef2f296315187b2acc 100755 --- a/crypto/dap_enc_aes.c +++ b/crypto/dap_enc_aes.c @@ -5,12 +5,10 @@ #include "dap_enc_aes.h" #include "dap_enc_key.h" +uint8_t tail_block[] = {21,27,20,36,16,20,27,31,22,41,27,33,30,21,32,28}; -#define AES_BLOCKSIZE 16 #define AES_KEYSIZE 16 -uint8_t tail_block[] = {21,27,20,36,16,20,27,31,22,41,27,33,30,21,32,28}; - #define DAP_ENC_AES_KEY(a) ((dap_enc_aes_key_t *)((a)->_inheritor) ) static void print_bytes(uint8_t *bytes, size_t num_bytes) { @@ -103,15 +101,15 @@ void dap_enc_aes_key_new_from_data(struct dap_enc_key * a_key, const void * a_in * @return */ size_t dap_enc_aes_decode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out) -{ - if(a_in_size % 16 != 0) - return 0; +{ + if(a_in_size % 16 != 0) + return 0; OQS_AES128_ECB_dec(a_in,a_in_size,a_key->data,a_out); int tail = 0; - for(int i =a_in_size-1; i > a_in_size-15; i--) - if(*(char*)(a_out + i) == (char)tail_block[i%16]) - tail++; - return a_in_size - tail; + for(int i =a_in_size-1; i > a_in_size-15; i--) + if(*(char*)(a_out + i) == (char)tail_block[i%16]) + tail++; + return a_in_size - tail; } /** diff --git a/crypto/dap_enc_aes.h b/crypto/dap_enc_aes.h index fe269cb6d843505de890b6be88a664702df9f5e6..611b4cc89595d2d7232be1dd43417231a3929cb5 100755 --- a/crypto/dap_enc_aes.h +++ b/crypto/dap_enc_aes.h @@ -4,9 +4,7 @@ #include <stddef.h> #include <stdint.h> -#ifdef __cplusplus -extern "C" { -#endif +#define AES_BLOCK_SIZE 16 struct dap_enc_key; @@ -18,8 +16,4 @@ int test_key_aes(); size_t dap_enc_aes_decode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out); size_t dap_enc_aes_encode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out); -#ifdef __cplusplus -} -#endif - #endif diff --git a/crypto/dap_enc_key.h b/crypto/dap_enc_key.h index 20bd576e6d5719fdd60f64667017a7c47aa51d77..2266fb49e3291f8a0c9a0528408078fd153e6879 100644 --- a/crypto/dap_enc_key.h +++ b/crypto/dap_enc_key.h @@ -23,11 +23,6 @@ #include <stddef.h> #include <time.h> - -#ifdef __cplusplus -extern "C" { -#endif - typedef enum dap_enc_data_type{DAP_ENC_DATA_TYPE_RAW, DAP_ENC_DATA_TYPE_B64, @@ -131,8 +126,4 @@ dap_enc_key_t *dap_enc_key_new_from_data(dap_enc_key_type_t a_key_type, void * a dap_enc_key_t *dap_enc_key_new_from_str(dap_enc_key_type_t a_key_type, const char *a_key_str); void dap_enc_key_delete(dap_enc_key_t * a_key); -#ifdef __cplusplus -} -#endif - #endif diff --git a/crypto/dap_enc_msrln16.c b/crypto/dap_enc_msrln16.c index 72100428677894907008f5e1e2347a78884d9f81..afbb586ddf1a519c568bd05475ad4c97e3a69171 100644 --- a/crypto/dap_enc_msrln16.c +++ b/crypto/dap_enc_msrln16.c @@ -1,5 +1,6 @@ -#include "core/dap_common.h" +#include "dap_common.h" #include "dap_enc_msrln16.h" +#include "dap_enc_aes.h" #include "liboqs/crypto/rand/rand.h" #include "liboqs/kex_rlwe_msrln16/kex_rlwe_msrln16.h" @@ -7,6 +8,7 @@ #define LOG_TAG "dap_enc_msrln16" + OQS_KEX *kex = NULL; void *alignce_priv = NULL; @@ -20,14 +22,6 @@ size_t bob_msg_len; uint8_t *bob_key = NULL; size_t bob_key_len; -/*struct dap_enc_param{ - enum OQS_KEX_alg_name alg_name; - char *named_parameters; - char *id; -}; - -typedef struct dap_enc_sidh16_key{ -} dap_enc_sidh16_key_t;*/ #define PRINT_HEX_STRING(label, str, len) \ { size_t i; \ @@ -41,8 +35,9 @@ typedef struct dap_enc_sidh16_key{ /** * @brief dap_enc_msrln16_key_new_generate - * @param rand - * @return + * @param a_key Struct for new key + * @param a_size Not used + * @return Size of a new key */ size_t dap_enc_msrln16_key_new_generate(struct dap_enc_key* a_key, size_t a_size)//(OQS_RAND* rand) @@ -55,6 +50,8 @@ size_t dap_enc_msrln16_key_new_generate(struct dap_enc_key* a_key, size_t a_size a_key->type = DAP_ENC_KEY_TYPE_RLWE_MSRLN16; a_key->last_used_timestamp; + a_key->dec=dap_enc_aes_decode; + a_key->enc=dap_enc_aes_encode; dap_enc_msrln16_key_t *msrln16_a_key = DAP_ENC_KEY_TYPE_RLWE_MSRLN16(a_key); msrln16_a_key->private_key = NULL; @@ -73,31 +70,7 @@ size_t dap_enc_msrln16_key_new_generate(struct dap_enc_key* a_key, size_t a_size void dap_enc_msrln16_key_new_from_data(OQS_KEX *k, const void * alice_priv, const uint8_t *bob_msg, const size_t bob_msg_len, uint8_t **key, size_t *key_len) { - /*gen = OQS_KEX_rlwe_msrln16_alice_1(k, alice_priv, bob_msg, bob_msg_len, &alice_key, &alice_key_len); - if(gen != 1) { - printf("OQS_KEX_rlwe_msrln16_alice_1 lose..\n"); - gen = 0; - } - PRINT_HEX_STRING("Alice session key", alice_key, alice_key_len); - - if(alice_key_len != bob_key_len) { - printf("ERROR: Alice's session key and Bob's session key are different lengths (%zu vs %zu)\n", alice_key_len, bob_key_len); - gen = 0; - } - gen = memcmp(alice_key, bob_key, alice_key_len); - if(gen != 0){ - printf("ERROR: Alice's session key and Bob's session key are not equal\n"); - PRINT_HEX_STRING("Alice session key", alice_key, alice_key_len); - PRINT_HEX_STRING("Bob session key", bob_key, bob_key_len); - // здеÑÑŒ Ñделать запиÑÑŒ ключа в файл???? - - gen = 0; - } - printf("Alice and Bob's session keys match.\n"); - printf("\n\n"); - - gen = 1;*/ } @@ -112,17 +85,34 @@ void dap_enc_msrln16_key_new_from_data_public(dap_enc_key_t * a_key, const void } +/** + * @brief dap_kex_rlwe_msrln16_new + * @param a_key + * @param a_in + * @param a_in_size + */ OQS_KEX *dap_kex_rlwe_msrln16_new(OQS_RAND *rand){ return OQS_KEX_rlwe_msrln16_new(rand); } +/** + * @brief dap_rlwe_msrln16_alice_0 + * @param a_key + * @param a_in + * @param a_in_size + */ int dap_rlwe_msrln16_alice_0(OQS_KEX *k, void **alice_priv, uint8_t **alice_msg, size_t *alice_msg_len){ return OQS_KEX_rlwe_msrln16_alice_0(k, alice_priv, alice_msg, alice_msg_len); } +/** + * @brief dap_rlwe_msrln16_alice_1 + * @param a_key + * @param a_in + * @param a_in_size + */ int dap_rlwe_msrln16_alice_1(OQS_KEX *k, const void *alice_priv, const uint8_t *bob_msg, const size_t bob_msg_len, uint8_t **key, size_t *key_len){ return OQS_KEX_rlwe_msrln16_alice_1(k,alice_priv,bob_msg,bob_msg_len,key,key_len); - } /** @@ -131,32 +121,12 @@ int dap_rlwe_msrln16_alice_1(OQS_KEX *k, const void *alice_priv, const uint8_t * */ void dap_enc_msrln16_key_delete(struct dap_enc_key* a_key) { - //dap_enc_sidh16_key_t *sidh_a_key = DAP_ENC_SIDH16_KEY(a_key); dap_enc_msrln16_key_t* msrln_a_key = DAP_ENC_KEY_TYPE_RLWE_MSRLN16(a_key); - (void) a_key; - if(!a_key){ - return; - } - /* oqs_sidh_cln16_curve_free((PCurveIsogenyStruct)sidh_a_key->user_curveIsogeny); - sidh_a_key->user_curveIsogeny = NULL;*/ - DAP_DELETE(a_key); - // free(); - /*free(alice_msg); - free(alice_key); - free(bob_msg); - free(bob_key);*/ - /*if (alice_priv) {*/ - //free(alice_priv); - /*}*/ - //OQS_KEX k = a_key-> -// if (!k) { -// return; -// } -// free(k->method_name); -// k->method_name = NULL; -// free(k); -// /*OQS_KEX_rlwe_msrln16_alice_priv_free(kex, alignce_priv); - /* OQS_KEX_rlwe_msrln16_free(kex);*/ + (void) a_key; + if(!a_key){ + return; + } + DAP_DELETE(a_key); } /** @@ -191,18 +161,9 @@ size_t dap_enc_msrln16_key_public_raw(dap_enc_key_t *a_key, void ** a_key_public * @param key_len * @return */ -//Боб отвечает на приветÑтвие -size_t dap_enc_msrln16_decode(OQS_KEX *k, const uint8_t *alice_msg, const size_t alice_msg_len, uint8_t **bob_msg, size_t *bob_msg_len, uint8_t **key, size_t *key_len) +size_t dap_enc_msrln16_decode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out) { - /*gen=OQS_KEX_rlwe_msrln16_bob(k, alice_msg, alice_msg_len, &bob_msg, &bob_msg_len, &bob_key, &bob_key_len); - if (gen!=1){ - //потерÑли от боба - } - - - PRINT_HEX_STRING("Bob message", bob_msg, bob_msg_len); - PRINT_HEX_STRING("Bob session key", bob_key, bob_key_len);*/ - + return dap_enc_aes_decode(a_key,a_in,a_in_size,a_out); } /** @@ -213,22 +174,20 @@ size_t dap_enc_msrln16_decode(OQS_KEX *k, const uint8_t *alice_msg, const size_t * @param alice_msg_len * @return */ - - -//ÐлиÑа приветÑтвует -size_t dap_enc_msrln16_encode(OQS_KEX *k, void **alice_priv, uint8_t **alice_msg, size_t *alice_msg_len) +size_t dap_enc_msrln16_encode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out) { - /*gen=OQS_KEX_rlwe_msrln16_alice_0(k ,alice_priv, alice_msg, alice_msg_len); - if (gen!=1){ - //потерÑли от алиÑÑ‹ - } - PRINT_HEX_STRING("Alice message", alice_msg, alice_msg_len);*/ + return dap_enc_aes_encode(a_key,a_in,a_in_size,a_out); } - +/** + * @brief aes_key_from_msrln_pub + * @param key Key for conversion + */ void aes_key_from_msrln_pub(dap_enc_key_t* key){ - //TODO: More difflicult aes generation dap_enc_msrln16_key_t* msrln_key = DAP_ENC_KEY_TYPE_RLWE_MSRLN16(key); key->data = (unsigned char *)malloc(16); memcpy(key->data,msrln_key->public_key,16); + key->data_size = 16; } + + diff --git a/crypto/dap_enc_msrln16.h b/crypto/dap_enc_msrln16.h index 583ef4ee57b2eac7cd3be926e889a4997b84555c..11b39d2bc2c084bacf9189b1ba3a1b6a3877a22b 100644 --- a/crypto/dap_enc_msrln16.h +++ b/crypto/dap_enc_msrln16.h @@ -43,8 +43,8 @@ void dap_enc_msrln16_key_delete(struct dap_enc_key* a_key); /*?*/size_t dap_enc_msrln16_key_public_raw(dap_enc_key_t *a_key, void ** a_key_public); //size_t dap_enc_msrln16_decode(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size,void * a_out); -size_t dap_enc_msrln16_decode(OQS_KEX *k, const uint8_t *alice_msg, const size_t alice_msg_len, uint8_t **bob_msg, size_t *bob_msg_len, uint8_t **key, size_t *key_len); -size_t dap_enc_msrln16_encode(OQS_KEX *k, void **alice_priv, uint8_t **alice_msg, size_t *alice_msg_len); +size_t dap_enc_msrln16_decode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out); +size_t dap_enc_msrln16_encode(struct dap_enc_key* a_key, const void * a_in, size_t a_in_size,void * a_out); //size_t dap_enc_msrln16_encode(dap_enc_key_t* a_key, const void * a_in, size_t a_in_size,void * a_out); void aes_key_from_msrln_pub(dap_enc_key_t* key); diff --git a/crypto/liboqs/crypto/aes/aes.c b/crypto/liboqs/crypto/aes/aes.c index 78854711441fececa3ad630c88e7da6501504618..c77a799ddc178c944eb79e060a5f175c31fec774 100644 --- a/crypto/liboqs/crypto/aes/aes.c +++ b/crypto/liboqs/crypto/aes/aes.c @@ -3,10 +3,6 @@ #include "aes.h" #include "aes_local.h" -#ifdef __cplusplus -extern "C" { -#endif - void OQS_AES128_load_schedule(const uint8_t *key, void **schedule, int for_encryption) { #ifdef USE_OPENSSL oqs_aes128_load_schedule_ossl(key, schedule, for_encryption); @@ -195,10 +191,4 @@ inline void oqs_aes128_ecb_dec_sch_ossl(const uint8_t *ciphertext, const size_t assert(1 == EVP_DecryptFinal_ex((EVP_CIPHER_CTX *) schedule, plaintext, &outlen)); } - - -#endif - -#ifdef __cplusplus -} #endif diff --git a/crypto/liboqs/kex_sidh_cln16/kex_sidh_cln16.c b/crypto/liboqs/kex_sidh_cln16/kex_sidh_cln16.c index 178f9830bce38ee9e187ca1191efea93ea10346d..5151901a9778abf8a81a23cc53e40ccd5648a4e1 100644 --- a/crypto/liboqs/kex_sidh_cln16/kex_sidh_cln16.c +++ b/crypto/liboqs/kex_sidh_cln16/kex_sidh_cln16.c @@ -241,7 +241,66 @@ cleanup: return ret; } +int OQS_KEX_sidh_cln16_alice_1(OQS_KEX *k, const void *alice_priv, const uint8_t *bob_msg, const size_t bob_msg_len, uint8_t **key, size_t *key_len) { + int ret; + // decompression values + unsigned char *R = NULL, *A = NULL; + + if (!k || !alice_priv || !bob_msg || !key || !key_len) { + return 0; + } + + *key = NULL; + + int compressed = isCompressed(k->named_parameters); + + *key = malloc(SIDH_SHAREDKEY_LEN); + if (*key == NULL) { + goto err; + } + *key_len = SIDH_SHAREDKEY_LEN; + + if (compressed) { + if (bob_msg_len != SIDH_COMPRESSED_PUBKEY_LEN) { + goto err; + } + A = malloc(SIDH_COMPRESSED_A_LEN); + if (A == NULL) { + goto err; + } + R = malloc(SIDH_COMPRESSED_R_LEN); + if (R == NULL) { + goto err; + } + // compute Alice's shared secret + oqs_sidh_cln16_PublicKeyBDecompression_A((unsigned char *) alice_priv, (unsigned char *) bob_msg, R, A, k->ctx); + if (oqs_sidh_cln16_EphemeralSecretAgreement_Compression_A((unsigned char *) alice_priv, R, A, (unsigned char *) *key, k->ctx) != SIDH_CRYPTO_SUCCESS) { + goto err; + } + } else { + if (bob_msg_len != SIDH_PUBKEY_LEN) { + goto err; + } + if (oqs_sidh_cln16_EphemeralSecretAgreement_A((unsigned char *) alice_priv, (unsigned char *) bob_msg, (unsigned char *) *key, k->ctx) != SIDH_CRYPTO_SUCCESS) { + goto err; + } + } + + ret = 1; + goto cleanup; + +err: + ret = 0; + free(*key); + *key = NULL; + +cleanup: + free(A); + free(R); + + return ret; +} void OQS_KEX_sidh_cln16_alice_priv_free(UNUSED OQS_KEX *k, void *alice_priv) { if (alice_priv) { diff --git a/http/CMakeLists.txt b/http/CMakeLists.txt index 247ce38b74a0bf8894fbbc8d74ce6d8099d2e2bc..7a3ac86a0625037a40c1b35a7ee95ad8ff48dd96 100644 --- a/http/CMakeLists.txt +++ b/http/CMakeLists.txt @@ -8,8 +8,10 @@ target_link_libraries(${PROJECT_NAME} curl) include_directories("${dap_core_INCLUDE_DIRS}") include_directories("${dap_client_INCLUDE_DIRS}") +include_directories("${dap_http_server_INCLUDE_DIRS}") add_definitions ("${dap_core_DEFINITIONS}") add_definitions ("${dap_client_DEFINITIONS}") +add_definitions ("${dap_http_server_DEFINITIONS}") set(${PROJECT_NAME}_DEFINITIONS CACHE INTERNAL "${PROJECT_NAME}: Definitions" FORCE) diff --git a/http/dap_http_client.c b/http/dap_http_client.c index 96da5a673874605a67daab713e5defbbf0ac8bc0..77396057fec4f7a57dcd606d4e91fe061c5f8213 100644 --- a/http/dap_http_client.c +++ b/http/dap_http_client.c @@ -25,10 +25,10 @@ #include <libgen.h> #include "dap_common.h" #include "dap_client_remote.h" +#include "dap_http.h" #ifdef DAP_SERVER -#include "dap_server.h" -#include "dap_http.h" +#include "../../libdap-server/core_server/dap_server.h" #endif #include "dap_http_header.h" #include "dap_http_client.h" @@ -223,7 +223,7 @@ cnt:switch(cl_ht->state_read){ cl_ht->state_read=DAP_HTTP_CLIENT_STATE_HEADERS; } else{ - log_it(L_WARNINGNG, "Input: unprocessed URL request %s is rejected", d_name); + log_it(L_WARNING, "Input: unprocessed URL request %s is rejected", d_name); cl_ht->state_read=DAP_HTTP_CLIENT_STATE_NONE; dap_client_ready_to_read(cl_ht->client,true); dap_client_ready_to_write(cl_ht->client,true);