working on oauth
This commit is contained in:
parent
18180cafdc
commit
5892275627
@ -30,6 +30,9 @@
|
||||
*/
|
||||
|
||||
#include "../mainrelay.h"
|
||||
|
||||
#include "apputils.h"
|
||||
|
||||
#include "dbdriver.h"
|
||||
#include "dbd_pgsql.h"
|
||||
#include "dbd_mysql.h"
|
||||
@ -86,5 +89,52 @@ turn_dbdriver_t * get_dbdriver() {
|
||||
return _driver;
|
||||
}
|
||||
|
||||
/////////// OAUTH /////////////////
|
||||
|
||||
void convert_oauth_key_data_raw(const oauth_key_data_raw *raw, oauth_key_data *oakd)
|
||||
{
|
||||
if(raw && oakd) {
|
||||
|
||||
ns_bzero(oakd,sizeof(oauth_key_data));
|
||||
|
||||
oakd->timestamp = (turn_time_t)raw->timestamp;
|
||||
oakd->lifetime = raw->lifetime;
|
||||
|
||||
ns_bcopy(raw->as_rs_alg,oakd->as_rs_alg,sizeof(oakd->as_rs_alg));
|
||||
ns_bcopy(raw->auth_alg,oakd->auth_alg,sizeof(oakd->auth_alg));
|
||||
ns_bcopy(raw->hkdf_hash_func,oakd->hkdf_hash_func,sizeof(oakd->hkdf_hash_func));
|
||||
ns_bcopy(raw->kid,oakd->kid,sizeof(oakd->kid));
|
||||
|
||||
{
|
||||
size_t ikm_key_size = 0;
|
||||
char *ikm_key = base64_encode((const unsigned char *)(raw->ikm_key),strlen(raw->ikm_key),&ikm_key_size);
|
||||
if(ikm_key) {
|
||||
ns_bcopy(ikm_key,oakd->ikm_key,ikm_key_size);
|
||||
oakd->ikm_key_size = ikm_key_size;
|
||||
turn_free(ikm_key,ikm_key_size);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
size_t as_rs_key_size = 0;
|
||||
char *as_rs_key = base64_encode((const unsigned char *)(raw->as_rs_key),strlen(raw->as_rs_key),&as_rs_key_size);
|
||||
if(as_rs_key) {
|
||||
ns_bcopy(as_rs_key,oakd->as_rs_key,as_rs_key_size);
|
||||
oakd->as_rs_key_size = as_rs_key_size;
|
||||
turn_free(as_rs_key,as_rs_key_size);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
size_t as_rs_key_size = 0;
|
||||
char *as_rs_key = base64_encode((const unsigned char *)(raw->as_rs_key),strlen(raw->as_rs_key),&as_rs_key_size);
|
||||
if(as_rs_key) {
|
||||
ns_bcopy(as_rs_key,oakd->as_rs_key,as_rs_key_size);
|
||||
oakd->as_rs_key_size = as_rs_key_size;
|
||||
turn_free(as_rs_key,as_rs_key_size);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -34,6 +34,8 @@
|
||||
|
||||
#include "../userdb.h"
|
||||
|
||||
#include "ns_turn_msg_defs_new.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@ -67,6 +69,24 @@ int convert_string_key_to_binary(char* keysource, hmackey_t key, size_t sz);
|
||||
persistent_users_db_t * get_persistent_users_db(void);
|
||||
turn_dbdriver_t * get_dbdriver(void);
|
||||
|
||||
////////////// OAUTH UTILS ////////////////
|
||||
|
||||
struct _oauth_key_data_raw {
|
||||
char kid[OAUTH_KID_SIZE+1];
|
||||
char ikm_key[OAUTH_KEY_SIZE+1];
|
||||
u64bits timestamp;
|
||||
u32bits lifetime;
|
||||
char hkdf_hash_func[OAUTH_HASH_FUNC_SIZE+1];
|
||||
char as_rs_alg[OAUTH_ALG_SIZE+1];
|
||||
char as_rs_key[OAUTH_KEY_SIZE+1];
|
||||
char auth_alg[OAUTH_ALG_SIZE+1];
|
||||
char auth_key[OAUTH_KEY_SIZE+1];
|
||||
};
|
||||
|
||||
typedef struct _oauth_key_data_raw oauth_key_data_raw;
|
||||
|
||||
void convert_oauth_key_data_raw(const oauth_key_data_raw *raw, oauth_key_data *oakd);
|
||||
|
||||
////////////////////////////////////////////
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@ -1789,6 +1789,9 @@ int convert_oauth_key_data(oauth_key_data *oakd, oauth_key *key, char *err_msg,
|
||||
key->timestamp = oakd->timestamp;
|
||||
key->lifetime = oakd->lifetime;
|
||||
|
||||
if(!(key->timestamp)) key->timestamp = OAUTH_DEFAULT_TIMESTAMP;
|
||||
if(!(key->lifetime)) key->lifetime = OAUTH_DEFAULT_LIFETIME;
|
||||
|
||||
key->hkdf_hash_func = SHATYPE_SHA256;
|
||||
if(!strcmp(oakd->hkdf_hash_func,"SHA1") || !strcmp(oakd->hkdf_hash_func,"SHA-1")) {
|
||||
key->hkdf_hash_func = SHATYPE_SHA1;
|
||||
|
||||
@ -103,11 +103,14 @@ typedef enum _AUTH_ALG AUTH_ALG;
|
||||
#define OAUTH_ALG_SIZE (64)
|
||||
#define OAUTH_KEY_SIZE (256)
|
||||
|
||||
#define OAUTH_DEFAULT_LIFETIME (0)
|
||||
#define OAUTH_DEFAULT_TIMESTAMP (turn_time())
|
||||
|
||||
struct _oauth_key_data {
|
||||
char kid[OAUTH_KID_SIZE+1];
|
||||
char ikm_key[OAUTH_KEY_SIZE+1];
|
||||
size_t ikm_key_size;
|
||||
u64bits timestamp;
|
||||
turn_time_t timestamp;
|
||||
turn_time_t lifetime;
|
||||
char hkdf_hash_func[OAUTH_HASH_FUNC_SIZE+1];
|
||||
char as_rs_alg[OAUTH_ALG_SIZE+1];
|
||||
@ -124,7 +127,7 @@ struct _oauth_key {
|
||||
char kid[OAUTH_KID_SIZE+1];
|
||||
char ikm_key[OAUTH_KEY_SIZE+1];
|
||||
size_t ikm_key_size;
|
||||
u64bits timestamp;
|
||||
turn_time_t timestamp;
|
||||
turn_time_t lifetime;
|
||||
SHATYPE hkdf_hash_func;
|
||||
ENC_ALG as_rs_alg;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user