Commit 8b32e95d authored by Guido Casati's avatar Guido Casati

Define security header and security state enums and strings with available macros

* also, add security type NAS_SECURITY_NEW_SECURITY_CONTEXT
parent 384659ed
...@@ -100,13 +100,16 @@ typedef enum { ...@@ -100,13 +100,16 @@ typedef enum {
} fgs_nas_msg_t; } fgs_nas_msg_t;
// TS 24.501 // TS 24.501
typedef enum { #define FOREACH_HEADER(TYPE_DEF) \
PLAIN_5GS_MSG = 0, TYPE_DEF(PLAIN_5GS_MSG, 0) \
INTEGRITY_PROTECTED = 1, TYPE_DEF(INTEGRITY_PROTECTED, 1) \
INTEGRITY_PROTECTED_AND_CIPHERED = 2, TYPE_DEF(INTEGRITY_PROTECTED_AND_CIPHERED, 2) \
INTEGRITY_PROTECTED_WITH_NEW_SECU_CTX = 3, TYPE_DEF(INTEGRITY_PROTECTED_WITH_NEW_SECU_CTX, 3) \
INTEGRITY_PROTECTED_AND_CIPHERED_WITH_NEW_SECU_CTX = 4, TYPE_DEF(INTEGRITY_PROTECTED_AND_CIPHERED_WITH_NEW_SECU_CTX, 4)
} Security_header_t;
typedef enum { FOREACH_HEADER(TO_ENUM) } Security_header_t;
static const text_info_t security_header_type_s[] = {FOREACH_HEADER(TO_TEXT)};
// table 9.11.3.2.1 // table 9.11.3.2.1
#define FOREACH_CAUSE(CAUSE_DEF) \ #define FOREACH_CAUSE(CAUSE_DEF) \
......
...@@ -71,13 +71,17 @@ extern uint16_t NB_UE_INST; ...@@ -71,13 +71,17 @@ extern uint16_t NB_UE_INST;
static nr_ue_nas_t nr_ue_nas[MAX_NAS_UE] = {0}; static nr_ue_nas_t nr_ue_nas[MAX_NAS_UE] = {0};
static nr_nas_msg_snssai_t nas_allowed_nssai[8]; static nr_nas_msg_snssai_t nas_allowed_nssai[8];
typedef enum { #define FOREACH_STATE(TYPE_DEF) \
NAS_SECURITY_NO_SECURITY_CONTEXT, TYPE_DEF(NAS_SECURITY_NO_SECURITY_CONTEXT, 0) \
NAS_SECURITY_UNPROTECTED, TYPE_DEF(NAS_SECURITY_NEW_SECURITY_CONTEXT, 1) \
NAS_SECURITY_INTEGRITY_FAILED, TYPE_DEF(NAS_SECURITY_UNPROTECTED, 2) \
NAS_SECURITY_INTEGRITY_PASSED, TYPE_DEF(NAS_SECURITY_INTEGRITY_FAILED, 3) \
NAS_SECURITY_BAD_INPUT TYPE_DEF(NAS_SECURITY_INTEGRITY_PASSED, 4) \
} security_state_t; TYPE_DEF(NAS_SECURITY_BAD_INPUT, 5)
typedef enum { FOREACH_STATE(TO_ENUM) } security_state_t;
static const text_info_t security_state_info[] = {FOREACH_STATE(TO_TEXT)};
static fgmm_msg_header_t set_mm_header(fgs_nas_msg_t type, Security_header_t security) static fgmm_msg_header_t set_mm_header(fgs_nas_msg_t type, Security_header_t security)
{ {
...@@ -1389,7 +1393,7 @@ void *nas_nrue(void *args_p) ...@@ -1389,7 +1393,7 @@ void *nas_nrue(void *args_p)
security_state_t security_state = nas_security_rx_process(nas, pdu_buffer, pdu_length); security_state_t security_state = nas_security_rx_process(nas, pdu_buffer, pdu_length);
if (security_state != NAS_SECURITY_INTEGRITY_PASSED && security_state != NAS_SECURITY_NO_SECURITY_CONTEXT) { if (security_state != NAS_SECURITY_INTEGRITY_PASSED && security_state != NAS_SECURITY_NO_SECURITY_CONTEXT) {
LOG_E(NAS, "NAS integrity failed, discard incoming message\n"); LOG_E(NAS, "NAS integrity failed, discard incoming message: security state is %s\n", security_state_info[security_state].text);
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment