This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Max gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/464 SGSN: use unique AUTH REQ reference The A&C reference number specified in 3GPP TS 24.008 § 10.5.5.19 identifies particular request sent by network with the related response sent by MS. The value transparently copied from request to response by MS: the spec do not specify what exactly should be in there - use rand() to decrease chance for collisions. Change-Id: I3638821a9b4a0532b28dbbb50faa30c4082579f6 Related: OS#1582 --- M openbsc/include/openbsc/gprs_sgsn.h M openbsc/src/gprs/gprs_gmm.c 2 files changed, 11 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/64/464/1 diff --git a/openbsc/include/openbsc/gprs_sgsn.h b/openbsc/include/openbsc/gprs_sgsn.h index 0e574d8..3f91fb6 100644 --- a/openbsc/include/openbsc/gprs_sgsn.h +++ b/openbsc/include/openbsc/gprs_sgsn.h @@ -158,6 +158,7 @@ /* Iu: CK, IK, KSI */ /* CKSN */ enum gprs_ciph_algo ciph_algo; + uint8_t auth_ref; struct { uint8_t len; diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c index 5db69dd..4899a42 100644 --- a/openbsc/src/gprs/gprs_gmm.c +++ b/openbsc/src/gprs/gprs_gmm.c @@ -438,7 +438,9 @@ acreq->ciph_alg = algo & 0xf; acreq->imeisv_req = 0x1; acreq->force_stby = 0x0; - acreq->ac_ref_nr = 0x0; /* FIXME: increment this? */ + /* 3GPP TS 24.008 § 10.5.5.19: */ + acreq->ac_ref_nr = rand(); + mm->auth_ref = acreq->ac_ref_nr; /* Only if authentication is requested we need to set RAND + CKSN */ if (rand) { @@ -490,13 +492,18 @@ return 0; } + if (acr->ac_ref_nr != ctx->auth_ref) { + LOGMMCTXP(LOGL_NOTICE, ctx, "Reference mismatch for Auth & Ciph" + " Response: %u received, %u expected\n", + acr->ac_ref_nr, ctx->auth_ref); + return 0; + } + /* Stop T3360 */ mmctx_timer_stop(ctx, 3360); tlv_parse(&tp, &gsm48_gmm_att_tlvdef, acr->data, (msg->data + msg->len) - acr->data, 0, 0); - - /* FIXME: compare ac_ref? */ if (!TLVP_PRESENT(&tp, GSM48_IE_GMM_AUTH_SRES) || !TLVP_PRESENT(&tp, GSM48_IE_GMM_IMEISV)) { -- To view, visit https://gerrit.osmocom.org/464 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3638821a9b4a0532b28dbbb50faa30c4082579f6 Gerrit-PatchSet: 1 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: Max <msuraev at sysmocom.de>