From aa4ed671643c1d7bcd0ae05faa9aef236d9ad5ff Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Sun, 22 Apr 2018 19:29:41 +0200 Subject: GERAN: allow GSM SRES on UMTS AKA challenge Store the established security context type (GSM or UMTS) instead of the boolean flag is_authenticated. Provide the previous boolean query with thin sgsn_mm_ctx_is_authenticated() function. Knowing which security context was established will be necessary for OS#3224, i.e. using the proper ciphering key, which is not yet tested properly, and probably not correct at this stage. This change will make new SGSN_Tests.TC_attach_umts_aka_gsm_sres pass. Related: OS#3193 OS#3224 Change-Id: I36807bad3bc55c0030d4f09cb2c369714f24bec7 --- include/osmocom/sgsn/gprs_sgsn.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/osmocom/sgsn/gprs_sgsn.h b/include/osmocom/sgsn/gprs_sgsn.h index c47fb0905..64e5619d6 100644 --- a/include/osmocom/sgsn/gprs_sgsn.h +++ b/include/osmocom/sgsn/gprs_sgsn.h @@ -224,7 +224,7 @@ struct sgsn_mm_ctx { * whether one of them can be dropped. */ enum sgsn_auth_state auth_state; - int is_authenticated; + enum osmo_sub_auth_type sec_ctx; /* the string representation of the current hlr */ char hlr[GSM_EXTENSION_LENGTH]; @@ -235,6 +235,17 @@ struct sgsn_mm_ctx { struct gprs_subscr *subscr; }; +static inline bool sgsn_mm_ctx_is_authenticated(struct sgsn_mm_ctx *ctx) +{ + switch (ctx->sec_ctx) { + case OSMO_AUTH_TYPE_GSM: + case OSMO_AUTH_TYPE_UMTS: + return true; + default: + return false; + } +} + #define LOGMMCTXP(level, mm, fmt, args...) \ LOGP(DMM, level, "MM(%s/%08x) " fmt, (mm) ? (mm)->imsi : "---", \ (mm) ? (mm)->p_tmsi : GSM_RESERVED_TMSI, ## args) -- cgit v1.2.3