From d4d534f1ef531392fe43c571bfdb012a5abd3714 Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Fri, 9 Feb 2024 10:05:30 +0100 Subject: [PATCH] nrUE: bugfix: derive and use correct security keys for DRBs --- openair2/RRC/NR_UE/rrc_UE.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c index d508bdaa09..f428d4f6a6 100644 --- a/openair2/RRC/NR_UE/rrc_UE.c +++ b/openair2/RRC/NR_UE/rrc_UE.c @@ -1403,6 +1403,9 @@ static void nr_rrc_ue_process_RadioBearerConfig(NR_UE_RRC_INST_t *ue_rrc, uint8_t kRRCenc[NR_K_KEY_SIZE] = {0}; uint8_t kRRCint[NR_K_KEY_SIZE] = {0}; + uint8_t kUPenc[NR_K_KEY_SIZE] = {0}; + uint8_t kUPint[NR_K_KEY_SIZE] = {0}; + if (ue_rrc->as_security_activated) { if (radioBearerConfig->securityConfig != NULL) { // When the field is not included, continue to use the currently configured keyToUse @@ -1419,6 +1422,8 @@ static void nr_rrc_ue_process_RadioBearerConfig(NR_UE_RRC_INST_t *ue_rrc, } nr_derive_key(RRC_ENC_ALG, ue_rrc->cipheringAlgorithm, ue_rrc->kgnb, kRRCenc); nr_derive_key(RRC_INT_ALG, ue_rrc->integrityProtAlgorithm, ue_rrc->kgnb, kRRCint); + nr_derive_key(UP_ENC_ALG, ue_rrc->cipheringAlgorithm, ue_rrc->kgnb, kUPenc); + nr_derive_key(UP_INT_ALG, ue_rrc->integrityProtAlgorithm, ue_rrc->kgnb, kUPint); } if (radioBearerConfig->srb_ToAddModList != NULL) { @@ -1489,8 +1494,8 @@ static void nr_rrc_ue_process_RadioBearerConfig(NR_UE_RRC_INST_t *ue_rrc, radioBearerConfig->drb_ToAddModList->list.array[cnt], ue_rrc->cipheringAlgorithm, ue_rrc->integrityProtAlgorithm, - kRRCenc, - kRRCint); + kUPenc, + kUPint); } } } // drb_ToAddModList //