summaryrefslogtreecommitdiffstats
path: root/tests/oap
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-02-02 20:05:14 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-02-02 20:34:16 +0100
commit8352d31a8666e328e399ba1d2ae581c8f0021e48 (patch)
tree8a3599765d6481fdbfeeb481d221bfcd97712b7e /tests/oap
parent4a7f87cdc848891f7306109a009e51684b6c5c0e (diff)
GSUP, OAP, osmo-gen-vec: fix AUTS length to 14, not 16
GSUP transmits AUTS for UMTS authentication procedures, and OAP uses the same procedures to authenticate. osmo-gen-vec is a utility program that passes AUTS to our osmo_auth_gen_vec_auts() API. According to 3GPP 33.102 6.3.3, AUTS = SQN^AK || MAC-S, which are 6 || 8 == 14 bytes. This is confirmed by 24.008 9.2.3a where the TLV has 16 bytes, TL = 2 and AUTS being the V = 14. It is not harmful for milenage_gen_vec_auts() to pass two more AUTS bytes. But writing 16 bytes to a GSUP struct is a potential problem when passing in a 14 byte long AUTS buffer to the GSUP API, which then reads past the AUTS buffer. The API implies the length, so far to be 16, so passing in a 14 byte buffer to GSUP would require copying to a larger buffer first. Fix this by using a length of 14 for AUTS everywhere instead. This constitues an ABI breakage, we may handle it as a "fix before an official release", otherwise we need a version bump. The OAP protocol document has also been updated, needs an update in the osmo-gsm-manuals as well. Change-Id: If25b173d9ec57ea4c504d860954912b7d82af455
Diffstat (limited to 'tests/oap')
-rw-r--r--tests/oap/oap_test.c4
-rw-r--r--tests/oap/oap_test.ok2
2 files changed, 3 insertions, 3 deletions
diff --git a/tests/oap/oap_test.c b/tests/oap/oap_test.c
index ccf49069..0c4c16ea 100644
--- a/tests/oap/oap_test.c
+++ b/tests/oap/oap_test.c
@@ -155,8 +155,8 @@ static void test_oap_messages_dec_enc(void)
printf("- Sync Request\n");
CLEAR();
oap_msg.message_type = OAP_MSGT_SYNC_REQUEST;
- osmo_hexparse("102030405060708090a0b0c0d0e0f001",
- oap_msg.auts, 16);
+ osmo_hexparse("102030405060708090a0b0c0d0e0",
+ oap_msg.auts, 14);
oap_msg.auts_present = 1;
CHECK();
diff --git a/tests/oap/oap_test.ok b/tests/oap/oap_test.ok
index 9260d442..4c099290 100644
--- a/tests/oap/oap_test.ok
+++ b/tests/oap/oap_test.ok
@@ -37,6 +37,6 @@ encoded message:
ok
- Sync Request
encoded message:
-0c 25 10 10 20 30 40 50 60 70 80 90 a0 b0 c0 d0 e0 f0 01
+0c 25 0e 10 20 30 40 50 60 70 80 90 a0 b0 c0 d0 e0
ok
Done.