Making sure that the security algorithms are kept when the NAS context is reset. Attach request after a service reject seems to work now (with COTS UE).

master
Pedro Alvarez 6 years ago committed by Andre Puschmann
parent 50506ffa26
commit 36bd20d308

@ -56,7 +56,12 @@ void nas::reset()
for (int i = 0; i < MAX_ERABS_PER_UE; ++i) { for (int i = 0; i < MAX_ERABS_PER_UE; ++i) {
m_esm_ctx[i] = {}; m_esm_ctx[i] = {};
} }
srslte::INTEGRITY_ALGORITHM_ID_ENUM integ_algo = m_sec_ctx.integ_algo;
srslte::CIPHERING_ALGORITHM_ID_ENUM cipher_algo = m_sec_ctx.cipher_algo;
m_sec_ctx = {}; m_sec_ctx = {};
m_sec_ctx.integ_algo = integ_algo;
m_sec_ctx.cipher_algo = cipher_algo;
} }
/********************************** /**********************************
@ -659,6 +664,7 @@ bool nas::handle_service_request(uint32_t m_tmsi,
// Reset and store context with new mme s1ap id // Reset and store context with new mme s1ap id
nas_ctx->reset(); nas_ctx->reset();
memcpy(&ecm_ctx->enb_sri, enb_sri, sizeof(struct sctp_sndrcvinfo));
ecm_ctx->enb_ue_s1ap_id = enb_ue_s1ap_id; ecm_ctx->enb_ue_s1ap_id = enb_ue_s1ap_id;
ecm_ctx->mme_ue_s1ap_id = s1ap->get_next_mme_ue_s1ap_id(); ecm_ctx->mme_ue_s1ap_id = s1ap->get_next_mme_ue_s1ap_id();
s1ap->add_nas_ctx_to_mme_ue_s1ap_id_map(nas_ctx); s1ap->add_nas_ctx_to_mme_ue_s1ap_id_map(nas_ctx);
@ -1645,6 +1651,9 @@ void nas::integrity_generate(srslte::byte_buffer_t* pdu, uint8_t* mac)
default: default:
break; break;
} }
m_nas_log->debug("Generating MAC with inputs: Algorithm %s, DL COUNT %d\n",
srslte::integrity_algorithm_id_text[m_sec_ctx.integ_algo],
m_sec_ctx.dl_nas_count);
} }
void nas::cipher_decrypt(srslte::byte_buffer_t* pdu) void nas::cipher_decrypt(srslte::byte_buffer_t* pdu)

Loading…
Cancel
Save