nrUE: bugfix: derive and use correct security keys for DRBs
This commit is contained in:
@@ -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 kRRCenc[NR_K_KEY_SIZE] = {0};
|
||||||
uint8_t kRRCint[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 (ue_rrc->as_security_activated) {
|
||||||
if (radioBearerConfig->securityConfig != NULL) {
|
if (radioBearerConfig->securityConfig != NULL) {
|
||||||
// When the field is not included, continue to use the currently configured keyToUse
|
// 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_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(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) {
|
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],
|
radioBearerConfig->drb_ToAddModList->list.array[cnt],
|
||||||
ue_rrc->cipheringAlgorithm,
|
ue_rrc->cipheringAlgorithm,
|
||||||
ue_rrc->integrityProtAlgorithm,
|
ue_rrc->integrityProtAlgorithm,
|
||||||
kRRCenc,
|
kUPenc,
|
||||||
kRRCint);
|
kUPint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // drb_ToAddModList //
|
} // drb_ToAddModList //
|
||||||
|
|||||||
Reference in New Issue
Block a user