diff options
author | Harald Welte <laforge@osmocom.org> | 2021-02-06 16:47:39 +0100 |
---|---|---|
committer | Alexander Couzens <lynxis@fe80.eu> | 2021-11-05 01:29:05 +0100 |
commit | 274b70f1a8d477908f88c262dc67b065b6b6e4dc (patch) | |
tree | b0a62f95fdd7b9b8ccbc7b043d3bff8552284bcb | |
parent | efa6c5b7d688ceea902d3b02ba78b813185d3c40 (diff) |
Fix enabling of UMTS UEA encryption
The existing code allowed the user to configure UMTS encryption in the
vty, but we never actually passed this information down to RANAP. As a
result, the RAN had no chance of ever enabling encryption on the air
interface.
Change-Id: Ieaaa6b23b7337b7edb902fad8031e195e0c5e9d2
Related: OS#4144
-rw-r--r-- | include/osmocom/msc/ran_msg.h | 3 | ||||
-rw-r--r-- | src/libmsc/msc_a.c | 3 | ||||
-rw-r--r-- | src/libmsc/ran_msg_iu.c | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/include/osmocom/msc/ran_msg.h b/include/osmocom/msc/ran_msg.h index fd2439fef..816ef1f92 100644 --- a/include/osmocom/msc/ran_msg.h +++ b/include/osmocom/msc/ran_msg.h @@ -102,6 +102,9 @@ struct ran_cipher_mode_command { /* out-argument to return the key to the caller, pass NULL if not needed. */ struct geran_encr *chosen_key; } geran; + struct { + bool uea_encryption; + } utran; }; struct ran_handover_request { diff --git a/src/libmsc/msc_a.c b/src/libmsc/msc_a.c index 9b6b60223..fe3af14e4 100644 --- a/src/libmsc/msc_a.c +++ b/src/libmsc/msc_a.c @@ -348,6 +348,9 @@ static int msc_a_ran_enc_ciphering(struct msc_a *msc_a, bool umts_aka, bool retr /* for ran_a.c to store the GERAN key that is actually used */ .chosen_key = &msc_a->geran_encr, }, + .utran = { + .uea_encryption = net->uea_encryption + } }, }; diff --git a/src/libmsc/ran_msg_iu.c b/src/libmsc/ran_msg_iu.c index 5d134605e..6120918d9 100644 --- a/src/libmsc/ran_msg_iu.c +++ b/src/libmsc/ran_msg_iu.c @@ -369,7 +369,7 @@ static struct msgb *ran_iu_make_security_mode_command(struct osmo_fsm_inst *call LOG_RAN_IU_ENC(caller_fi, LOGL_DEBUG, "Tx RANAP SECURITY MODE COMMAND to RNC, ik %s\n", osmo_hexdump_nospc(cm->vec->ik, 16)); - return ranap_new_msg_sec_mod_cmd(cm->vec->ik, NULL, RANAP_KeyStatus_new); + return ranap_new_msg_sec_mod_cmd(cm->vec->ik, cm->utran.uea_encryption ? cm->vec->ck : NULL, RANAP_KeyStatus_new); } |