#ifndef STAGE2_HEADERS_SEEN //check header file for re-def conflicts #define STAGE2_HEADERS_SEEN #include #include #include #include #include "mbedtls/config.h" #include "mbedtls/aes.h" #include "mbedtls/bignum.h" #include "mbedtls/ctr_drbg.h" #include "mbedtls/entropy.h" #include "mbedtls/ecp.h" #include "mbedtls/ecdh.h" #include "mbedtls/ecdsa.h" #include "mbedtls/hmac_drbg.h" #include "mbedtls/hkdf.h" #include "mbedtls/md.h" #include "mbedtls/pk.h" #include "mbedtls/rsa.h" #include "mbedtls/sha1.h" #include "mbedtls/sha256.h" #include "mbedtls/net_sockets.h" #include "defines.h" #define SERVER_PORT "11999" #define PLAINTEXT "==Hello there!==" #define SERVER_ID "0001" #define CLIENT_ID "0002" ////////typedefs typedef struct { /* Use this struct to load, store and update client info on server side or both ways if mutual attestation is possible */ const char * cli_ID; const char * pub_file; mbedtls_ecp_point * pub_key; int Cli_STATUS; int Cli_CAP; const uint8_t * NONCE; mbedtls_net_context * cli_fd; } Client_info; typedef struct { /* Use this struct to load, store and update info about server on client */ const char * ser_ID; const char * pub_file; mbedtls_ecp_point * pub_key; mbedtls_net_context * ser_fd; } Server_info; typedef struct { //Use this struct to maintain uniformity between client and sever const char * cli_ID; const uint8_t * NONCE; const uint8_t * sign; const size_t sig_len; } Chall_context; typedef struct { //Use this struct to maintain uniformity between client and sever const char * cli_ID; const uint8_t * NONCE; const uint8_t * sign; const size_t sig_len; } Resp_context; ///////////functions DIMASTATUS load_nodes(Client_info * Cl_list); DIMASTATUS genNONCE( Client_info * Cl_ctx); DIMASTATUS challengeCl( mbedtls_pk_context * pk_ctx, Client_info * Cl_ctx, uint8_t *sign, size_t *signlen); //DIMASTATUS challengeCTX( mbedtls_pk_context * pk_ctx, Client_info * Cl_ctx, Chall_context * ch_ctx); DIMASTATUS verifyCl( mbedtls_pk_context * pk_ctx, Client_info * Cl_ctx, uint8_t *sign, size_t signlen); //DIMASTATUS responseCTX( mbedtls_pk_context * pk_ctx, Client_info * Cl_ctx, Resp_context * resp_ctx); DIMASTATUS responSer( mbedtls_pk_context * pk_ctx, Resp_context * Res_ctx, uint8_t *sign, size_t *signlen); DIMASTATUS IIStepSend(unsigned char * outBuff, mbedtls_net_context * net_fd); DIMASTATUS IIStepRecv(unsigned char * inBuff, mbedtls_net_context * net_fd); #endif