mirror of
				https://github.com/coturn/coturn.git
				synced 2025-11-04 00:41:02 +01:00 
			
		
		
		
	oauth stuff moved out of 'new' because it is more-or-less established now
This commit is contained in:
		
							parent
							
								
									b62ec2c49b
								
							
						
					
					
						commit
						8e3834ce1b
					
				@ -154,6 +154,119 @@
 | 
			
		||||
#define STUN_ATTRIBUTE_MOBILITY_SUPPORT (0x8000)
 | 
			
		||||
/* <<== Mobility */
 | 
			
		||||
 | 
			
		||||
/* SHA ==>> */
 | 
			
		||||
 | 
			
		||||
#define SHA1SIZEBYTES (20)
 | 
			
		||||
#define SHA256SIZEBYTES (32)
 | 
			
		||||
#define SHA384SIZEBYTES (48)
 | 
			
		||||
#define SHA512SIZEBYTES (64)
 | 
			
		||||
 | 
			
		||||
#define MAXSHASIZE (128)
 | 
			
		||||
 | 
			
		||||
enum _SHATYPE {
 | 
			
		||||
	SHATYPE_ERROR = -1,
 | 
			
		||||
	SHATYPE_DEFAULT=0,
 | 
			
		||||
	SHATYPE_SHA1=SHATYPE_DEFAULT,
 | 
			
		||||
	SHATYPE_SHA256,
 | 
			
		||||
	SHATYPE_SHA384,
 | 
			
		||||
	SHATYPE_SHA512
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef enum _SHATYPE SHATYPE;
 | 
			
		||||
 | 
			
		||||
#define shatype_name(sht) ((sht == SHATYPE_SHA1) ? "SHA1" : ((sht == SHATYPE_SHA256) ? "SHA256" : ((sht == SHATYPE_SHA384) ? "SHA384" : "SHA512")))
 | 
			
		||||
 | 
			
		||||
/* <<== SHA */
 | 
			
		||||
 | 
			
		||||
/* OAUTH TOKEN ENC ALG ==> */
 | 
			
		||||
 | 
			
		||||
enum _ENC_ALG {
 | 
			
		||||
	ENC_ALG_ERROR=-1,
 | 
			
		||||
#if !defined(TURN_NO_GCM)
 | 
			
		||||
	ENC_ALG_DEFAULT=0,
 | 
			
		||||
	A256GCM=ENC_ALG_DEFAULT,
 | 
			
		||||
	A128GCM,
 | 
			
		||||
#endif
 | 
			
		||||
	ENC_ALG_NUM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef enum _ENC_ALG ENC_ALG;
 | 
			
		||||
 | 
			
		||||
/* <<== OAUTH TOKEN ENC ALG */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * oAuth struct
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define STUN_ATTRIBUTE_THIRD_PARTY_AUTHORIZATION (0x802E)
 | 
			
		||||
#define STUN_ATTRIBUTE_OAUTH_ACCESS_TOKEN (0x001B)
 | 
			
		||||
 | 
			
		||||
#define OAUTH_KID_SIZE (128)
 | 
			
		||||
#define OAUTH_HASH_FUNC_SIZE (64)
 | 
			
		||||
#define OAUTH_ALG_SIZE (64)
 | 
			
		||||
#define OAUTH_KEY_SIZE (256)
 | 
			
		||||
#define OAUTH_GCM_NONCE_SIZE (12)
 | 
			
		||||
#define OAUTH_MAX_NONCE_SIZE (256)
 | 
			
		||||
#define OAUTH_GCM_TAG_SIZE (16)
 | 
			
		||||
#define OAUTH_ENC_ALG_BLOCK_SIZE (16)
 | 
			
		||||
 | 
			
		||||
#define OAUTH_DEFAULT_LIFETIME (0)
 | 
			
		||||
#define OAUTH_DEFAULT_TIMESTAMP (turn_time())
 | 
			
		||||
 | 
			
		||||
#define OAUTH_TIME_DELTA (5)
 | 
			
		||||
 | 
			
		||||
struct _oauth_key_data {
 | 
			
		||||
	char kid[OAUTH_KID_SIZE+1];
 | 
			
		||||
	char ikm_key[OAUTH_KEY_SIZE+1];
 | 
			
		||||
	size_t ikm_key_size;
 | 
			
		||||
	turn_time_t timestamp;
 | 
			
		||||
	turn_time_t lifetime;
 | 
			
		||||
	char as_rs_alg[OAUTH_ALG_SIZE+1];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _oauth_key_data oauth_key_data;
 | 
			
		||||
 | 
			
		||||
struct _oauth_key {
 | 
			
		||||
	char kid[OAUTH_KID_SIZE+1];
 | 
			
		||||
	char ikm_key[OAUTH_KEY_SIZE+1];
 | 
			
		||||
	size_t ikm_key_size;
 | 
			
		||||
	turn_time_t timestamp;
 | 
			
		||||
	turn_time_t lifetime;
 | 
			
		||||
	ENC_ALG as_rs_alg;
 | 
			
		||||
	char as_rs_key[OAUTH_KEY_SIZE+1];
 | 
			
		||||
	size_t as_rs_key_size;
 | 
			
		||||
	char auth_key[OAUTH_KEY_SIZE+1];
 | 
			
		||||
	size_t auth_key_size;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _oauth_key oauth_key;
 | 
			
		||||
 | 
			
		||||
struct _oauth_encrypted_block {
 | 
			
		||||
	uint16_t nonce_length;
 | 
			
		||||
	uint8_t nonce[OAUTH_MAX_NONCE_SIZE];
 | 
			
		||||
	uint16_t key_length;
 | 
			
		||||
	uint8_t mac_key[MAXSHASIZE];
 | 
			
		||||
	uint64_t timestamp;
 | 
			
		||||
	uint32_t lifetime;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _oauth_encrypted_block oauth_encrypted_block;
 | 
			
		||||
 | 
			
		||||
struct _oauth_token {
 | 
			
		||||
	oauth_encrypted_block enc_block;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _oauth_token oauth_token;
 | 
			
		||||
 | 
			
		||||
#define MAX_ENCODED_OAUTH_TOKEN_SIZE (1024)
 | 
			
		||||
 | 
			
		||||
struct _encoded_oauth_token {
 | 
			
		||||
	char token[MAX_ENCODED_OAUTH_TOKEN_SIZE];
 | 
			
		||||
	size_t size;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _encoded_oauth_token encoded_oauth_token;
 | 
			
		||||
 | 
			
		||||
////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#endif //__LIB_TURN_MSG_DEFS__
 | 
			
		||||
 | 
			
		||||
@ -44,119 +44,6 @@
 | 
			
		||||
 | 
			
		||||
/* <<== Bandwidth */
 | 
			
		||||
 | 
			
		||||
/* SHA ==>> */
 | 
			
		||||
 | 
			
		||||
#define SHA1SIZEBYTES (20)
 | 
			
		||||
#define SHA256SIZEBYTES (32)
 | 
			
		||||
#define SHA384SIZEBYTES (48)
 | 
			
		||||
#define SHA512SIZEBYTES (64)
 | 
			
		||||
 | 
			
		||||
#define MAXSHASIZE (128)
 | 
			
		||||
 | 
			
		||||
enum _SHATYPE {
 | 
			
		||||
	SHATYPE_ERROR = -1,
 | 
			
		||||
	SHATYPE_DEFAULT=0,
 | 
			
		||||
	SHATYPE_SHA1=SHATYPE_DEFAULT,
 | 
			
		||||
	SHATYPE_SHA256,
 | 
			
		||||
	SHATYPE_SHA384,
 | 
			
		||||
	SHATYPE_SHA512
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef enum _SHATYPE SHATYPE;
 | 
			
		||||
 | 
			
		||||
#define shatype_name(sht) ((sht == SHATYPE_SHA1) ? "SHA1" : ((sht == SHATYPE_SHA256) ? "SHA256" : ((sht == SHATYPE_SHA384) ? "SHA384" : "SHA512")))
 | 
			
		||||
 | 
			
		||||
/* <<== SHA */
 | 
			
		||||
 | 
			
		||||
/* OAUTH TOKEN ENC ALG ==> */
 | 
			
		||||
 | 
			
		||||
enum _ENC_ALG {
 | 
			
		||||
	ENC_ALG_ERROR=-1,
 | 
			
		||||
#if !defined(TURN_NO_GCM)
 | 
			
		||||
	ENC_ALG_DEFAULT=0,
 | 
			
		||||
	A256GCM=ENC_ALG_DEFAULT,
 | 
			
		||||
	A128GCM,
 | 
			
		||||
#endif
 | 
			
		||||
	ENC_ALG_NUM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef enum _ENC_ALG ENC_ALG;
 | 
			
		||||
 | 
			
		||||
/* <<== OAUTH TOKEN ENC ALG */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * oAuth struct
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define STUN_ATTRIBUTE_THIRD_PARTY_AUTHORIZATION (0x802E)
 | 
			
		||||
#define STUN_ATTRIBUTE_OAUTH_ACCESS_TOKEN (0x001B)
 | 
			
		||||
 | 
			
		||||
#define OAUTH_KID_SIZE (128)
 | 
			
		||||
#define OAUTH_HASH_FUNC_SIZE (64)
 | 
			
		||||
#define OAUTH_ALG_SIZE (64)
 | 
			
		||||
#define OAUTH_KEY_SIZE (256)
 | 
			
		||||
#define OAUTH_GCM_NONCE_SIZE (12)
 | 
			
		||||
#define OAUTH_MAX_NONCE_SIZE (256)
 | 
			
		||||
#define OAUTH_GCM_TAG_SIZE (16)
 | 
			
		||||
#define OAUTH_ENC_ALG_BLOCK_SIZE (16)
 | 
			
		||||
 | 
			
		||||
#define OAUTH_DEFAULT_LIFETIME (0)
 | 
			
		||||
#define OAUTH_DEFAULT_TIMESTAMP (turn_time())
 | 
			
		||||
 | 
			
		||||
#define OAUTH_TIME_DELTA (5)
 | 
			
		||||
 | 
			
		||||
struct _oauth_key_data {
 | 
			
		||||
	char kid[OAUTH_KID_SIZE+1];
 | 
			
		||||
	char ikm_key[OAUTH_KEY_SIZE+1];
 | 
			
		||||
	size_t ikm_key_size;
 | 
			
		||||
	turn_time_t timestamp;
 | 
			
		||||
	turn_time_t lifetime;
 | 
			
		||||
	char as_rs_alg[OAUTH_ALG_SIZE+1];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _oauth_key_data oauth_key_data;
 | 
			
		||||
 | 
			
		||||
struct _oauth_key {
 | 
			
		||||
	char kid[OAUTH_KID_SIZE+1];
 | 
			
		||||
	char ikm_key[OAUTH_KEY_SIZE+1];
 | 
			
		||||
	size_t ikm_key_size;
 | 
			
		||||
	turn_time_t timestamp;
 | 
			
		||||
	turn_time_t lifetime;
 | 
			
		||||
	ENC_ALG as_rs_alg;
 | 
			
		||||
	char as_rs_key[OAUTH_KEY_SIZE+1];
 | 
			
		||||
	size_t as_rs_key_size;
 | 
			
		||||
	char auth_key[OAUTH_KEY_SIZE+1];
 | 
			
		||||
	size_t auth_key_size;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _oauth_key oauth_key;
 | 
			
		||||
 | 
			
		||||
struct _oauth_encrypted_block {
 | 
			
		||||
	uint16_t nonce_length;
 | 
			
		||||
	uint8_t nonce[OAUTH_MAX_NONCE_SIZE];
 | 
			
		||||
	uint16_t key_length;
 | 
			
		||||
	uint8_t mac_key[MAXSHASIZE];
 | 
			
		||||
	uint64_t timestamp;
 | 
			
		||||
	uint32_t lifetime;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _oauth_encrypted_block oauth_encrypted_block;
 | 
			
		||||
 | 
			
		||||
struct _oauth_token {
 | 
			
		||||
	oauth_encrypted_block enc_block;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _oauth_token oauth_token;
 | 
			
		||||
 | 
			
		||||
#define MAX_ENCODED_OAUTH_TOKEN_SIZE (1024)
 | 
			
		||||
 | 
			
		||||
struct _encoded_oauth_token {
 | 
			
		||||
	char token[MAX_ENCODED_OAUTH_TOKEN_SIZE];
 | 
			
		||||
	size_t size;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct _encoded_oauth_token encoded_oauth_token;
 | 
			
		||||
 | 
			
		||||
////////////// SSODA ///////////////////
 | 
			
		||||
 | 
			
		||||
#define STUN_ATTRIBUTE_ADDITIONAL_ADDRESS_FAMILY (0x8032)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user