From ff288fe3f58b7b9b25182cae3c02e1474eae4c7a Mon Sep 17 00:00:00 2001 From: mom040267 Date: Mon, 15 Sep 2014 21:06:00 +0000 Subject: [PATCH] mac os x compilation fixed --- src/client/ns_turn_msg.c | 66 +++++++++++++++++++++++++------ src/client/ns_turn_msg_defs_new.h | 6 +++ 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/src/client/ns_turn_msg.c b/src/client/ns_turn_msg.c index 6eb6b18d..9cd3fcbc 100644 --- a/src/client/ns_turn_msg.c +++ b/src/client/ns_turn_msg.c @@ -101,7 +101,7 @@ long turn_random(void) void turn_random32_size(u32bits *ar, size_t sz) { - if(!RAND_bytes((unsigned char *)ar, sz<<2)<0) { + if(!RAND_bytes((unsigned char *)ar, sz<<2)) { size_t i; for(i=0;ias_rs_alg = AES_128_CBC; } else if(!strcmp(oakd->as_rs_alg,"AES-256-CBC")) { key->as_rs_alg = AES_256_CBC; +#if !defined(TURN_NO_GCM_SUPPORT) } else if(!strcmp(oakd->as_rs_alg,"AEAD-AES-128-GCM")) { key->as_rs_alg = AEAD_AES_128_GCM; } else if(!strcmp(oakd->as_rs_alg,"AEAD-AES-256-GCM")) { key->as_rs_alg = AEAD_AES_256_GCM; +#endif } else if(oakd->as_rs_alg[0]) { if(err_msg) { snprintf(err_msg,err_msg_size,"Wrong oAuth token encryption algorithm: %s",oakd->as_rs_alg); @@ -1877,25 +1881,18 @@ static const EVP_CIPHER *get_cipher_type(ENC_ALG enc_alg) return EVP_aes_256_cbc(); case AES_128_CBC: return EVP_aes_128_cbc(); +#if !defined(TURN_NO_GCM_SUPPORT) case AEAD_AES_128_GCM: return EVP_aes_128_gcm(); case AEAD_AES_256_GCM: return EVP_aes_256_gcm(); +#endif default: ; } return NULL; } -static void generate_random_nonce(unsigned char *nonce, size_t sz) { - if(!RAND_bytes(nonce, sz)<0) { - size_t i; - for(i=0;i> 1; + break; default: ; }; @@ -1980,6 +1978,26 @@ static int encode_oauth_token_normal(u08bits *server_name, encoded_oauth_token * return -1; } +static int decode_oauth_token_normal(u08bits *server_name, encoded_oauth_token *etoken, oauth_key *key, oauth_token *dtoken) +{ + if(server_name && etoken && key && dtoken && (dtoken->enc_block.key_length<=128)) { + + //TODO + } + return -1; +} + +#if !defined(TURN_NO_GCM_SUPPORT) + +static void generate_random_nonce(unsigned char *nonce, size_t sz) { + if(!RAND_bytes(nonce, sz)) { + size_t i; + for(i=0;ienc_block.key_length<128)) { @@ -2051,6 +2069,17 @@ static int encode_oauth_token_aead(u08bits *server_name, encoded_oauth_token *et return -1; } +static int decode_oauth_token_aead(u08bits *server_name, encoded_oauth_token *etoken, oauth_key *key, oauth_token *dtoken) +{ + if(server_name && etoken && key && dtoken && (dtoken->enc_block.key_length<128)) { + + //TODO + } + return -1; +} + +#endif + int encode_oauth_token(u08bits *server_name, encoded_oauth_token *etoken, oauth_key *key, oauth_token *dtoken) { if(server_name && etoken && key && dtoken) { @@ -2058,9 +2087,11 @@ int encode_oauth_token(u08bits *server_name, encoded_oauth_token *etoken, oauth_ case AES_256_CBC: case AES_128_CBC: return encode_oauth_token_normal(server_name, etoken,key,dtoken); +#if !defined(TURN_NO_GCM_SUPPORT) case AEAD_AES_128_GCM: case AEAD_AES_256_GCM: return encode_oauth_token_aead(server_name, etoken,key,dtoken); +#endif default: fprintf(stderr,"Wrong AS_RS algorithm: %d\n",(int)key->as_rs_alg); }; @@ -2070,7 +2101,20 @@ int encode_oauth_token(u08bits *server_name, encoded_oauth_token *etoken, oauth_ int decode_oauth_token(u08bits *server_name, encoded_oauth_token *etoken, oauth_key *key, oauth_token *dtoken) { - //TODO + if(server_name && etoken && key && dtoken) { + switch(key->as_rs_alg) { + case AES_256_CBC: + case AES_128_CBC: + return decode_oauth_token_normal(server_name, etoken,key,dtoken); +#if !defined(TURN_NO_GCM_SUPPORT) + case AEAD_AES_128_GCM: + case AEAD_AES_256_GCM: + return decode_oauth_token_aead(server_name, etoken,key,dtoken); +#endif + default: + fprintf(stderr,"Wrong AS_RS algorithm: %d\n",(int)key->as_rs_alg); + }; + } return 0; } diff --git a/src/client/ns_turn_msg_defs_new.h b/src/client/ns_turn_msg_defs_new.h index 8de90b14..3016e17c 100644 --- a/src/client/ns_turn_msg_defs_new.h +++ b/src/client/ns_turn_msg_defs_new.h @@ -68,13 +68,19 @@ typedef enum _SHATYPE SHATYPE; /* OAUTH TOKEN ENC ALG ==> */ +#if !defined(EVP_CIPH_GCM_MODE) +#define TURN_NO_GCM_SUPPORT +#endif + enum _ENC_ALG { ENC_ALG_ERROR=-1, ENC_ALG_DEFAULT=0, AES_256_CBC=ENC_ALG_DEFAULT, AES_128_CBC, +#if !defined(TURN_NO_GCM_SUPPORT) AEAD_AES_128_GCM, AEAD_AES_256_GCM, +#endif ENG_ALG_NUM };