Files
osmo-hlr/tests/auc/auc_test.err
Harald Welte 6e237d3a90 support the XOR algorithm for UMTS AKA
Test USIMs as specified by 3GPP use the XOR algorithm not only for 2G
but also for 3G.  libosmocore includes the XOR-3G support since v1.3.0,
but osmo-hlr somehow never made use of it.

Change-Id: I3a452af9c18cd90d00ab4766d6bd1679456bc1a2
Closes: OS#4924
2020-12-28 22:40:09 +01:00

386 lines
13 KiB
Plaintext

===== test_gen_vectors_2g_only
aud3g.u.umts.sqn == 0
DAUC Computing 1 auth vector: 2G only
DAUC 2G: ki = eb215756028d60e3275e613320aec880
DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
DAUC vector [0]: kc = 241a5b16aeb8e400
DAUC vector [0]: sres = 429d5b27
DAUC vector [0]: auth_types = 0x1
rc == 1
vector matches expectations
aud3g.u.umts.sqn == 0
DAUC Computing 1 auth vector: 2G only
DAUC 2G: ki = eb215756028d60e3275e613320aec880
DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
DAUC vector [0]: kc = 241a5b16aeb8e400
DAUC vector [0]: sres = 429d5b27
DAUC vector [0]: auth_types = 0x1
rc == 1
vector matches expectations
===== test_gen_vectors_2g_only: SUCCESS
===== test_gen_vectors_2g_plus_3g
aud3g.u.umts.sqn == 31
DAUC Computing 1 auth vector: 3G + separate 2G
DAUC 3G: k = eb215756028d60e3275e613320aec880
DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
DAUC 3G: for sqn ind 0, previous sqn was 31
DAUC 2G: ki = eb215756028d60e3275e613320aec880
DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
DAUC vector [0]: sqn = 32
DAUC vector [0]: autn = 8704f5ba55d30000541dde77ea5b1d8c
DAUC vector [0]: ck = f64735036e5871319c679f4742a75ea1
DAUC vector [0]: ik = 27497388b6cb044648f396aa155b95ef
DAUC vector [0]: res = e229c19e791f2e410000000000000000
DAUC vector [0]: res_len = 8
DAUC vector [0]: calculating 2G separately
DAUC vector [0]: kc = 241a5b16aeb8e400
DAUC vector [0]: sres = 429d5b27
DAUC vector [0]: auth_types = 0x3
rc == 1
aud3g.u.umts.sqn == 32
vector matches expectations
aud3g.u.umts.sqn == 31
DAUC Computing 1 auth vector: 3G + separate 2G
DAUC 3G: k = eb215756028d60e3275e613320aec880
DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
DAUC 3G: for sqn ind 0, previous sqn was 31
DAUC 2G: ki = eb215756028d60e3275e613320aec880
DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
DAUC vector [0]: sqn = 32
DAUC vector [0]: autn = 8704f5ba55d30000541dde77ea5b1d8c
DAUC vector [0]: ck = f64735036e5871319c679f4742a75ea1
DAUC vector [0]: ik = 27497388b6cb044648f396aa155b95ef
DAUC vector [0]: res = e229c19e791f2e410000000000000000
DAUC vector [0]: res_len = 8
DAUC vector [0]: calculating 2G separately
DAUC vector [0]: kc = 241a5b16aeb8e400
DAUC vector [0]: sres = 429d5b27
DAUC vector [0]: auth_types = 0x3
rc == 1
aud3g.u.umts.sqn == 32
vector matches expectations
===== test_gen_vectors_2g_plus_3g: SUCCESS
===== test_gen_vectors_3g_only
aud3g.u.umts.sqn == 31
DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
DAUC 3G: k = eb215756028d60e3275e613320aec880
DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
DAUC 3G: for sqn ind 0, previous sqn was 31
DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
DAUC vector [0]: sqn = 32
DAUC vector [0]: autn = 8704f5ba55d30000541dde77ea5b1d8c
DAUC vector [0]: ck = f64735036e5871319c679f4742a75ea1
DAUC vector [0]: ik = 27497388b6cb044648f396aa155b95ef
DAUC vector [0]: res = e229c19e791f2e410000000000000000
DAUC vector [0]: res_len = 8
DAUC vector [0]: deriving 2G from 3G
DAUC vector [0]: kc = 059a4f668f6fbe39
DAUC vector [0]: sres = 9b36efdf
DAUC vector [0]: auth_types = 0x3
rc == 1
aud3g.u.umts.sqn == 32
vector matches expectations
aud3g.u.umts.sqn == 31
DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
DAUC 3G: k = eb215756028d60e3275e613320aec880
DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
DAUC 3G: for sqn ind 0, previous sqn was 31
DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
DAUC vector [0]: sqn = 32
DAUC vector [0]: autn = 8704f5ba55d30000541dde77ea5b1d8c
DAUC vector [0]: ck = f64735036e5871319c679f4742a75ea1
DAUC vector [0]: ik = 27497388b6cb044648f396aa155b95ef
DAUC vector [0]: res = e229c19e791f2e410000000000000000
DAUC vector [0]: res_len = 8
DAUC vector [0]: deriving 2G from 3G
DAUC vector [0]: kc = 059a4f668f6fbe39
DAUC vector [0]: sres = 9b36efdf
DAUC vector [0]: auth_types = 0x3
rc == 1
aud3g.u.umts.sqn == 32
vector matches expectations
- test AUTS resync
aud3g.u.umts.sqn == 31
DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys), with AUTS resync
DAUC 3G: k = eb215756028d60e3275e613320aec880
DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
DAUC 3G: for sqn ind 0, previous sqn was 31
DAUC vector [0]: rand = 897210a0f7de278f0b8213098e098a3f
DAUC vector [0]: resync: auts = 979498b1f72d3e28c59fa2e72f9c
DAUC vector [0]: resync: rand_auts = 39fa2f4e3d523d8619a73b4f65c3e14d
DAUC vector [0]: sqn = 24
DAUC vector [0]: autn = c6b9790dad4b00000cf322869ea6a481
DAUC vector [0]: ck = e9922bd036718ed9e40bd1d02c3b81a5
DAUC vector [0]: ik = f19c20ca863137f8892326d959ec5e01
DAUC vector [0]: res = 9af5a557902d2db80000000000000000
DAUC vector [0]: res_len = 8
DAUC vector [0]: deriving 2G from 3G
DAUC vector [0]: kc = 7526fc13c5976685
DAUC vector [0]: sres = 0ad888ef
DAUC vector [0]: auth_types = 0x3
rc == 1
aud3g.u.umts.sqn == 24
vector matches expectations
- verify N vectors with AUTS resync == N vectors without AUTS
First just set rand and sqn = 23, and compute 3 vectors
aud3g.u.umts.sqn == 23
DAUC Computing 3 auth vectors: 3G only (2G derived from 3G keys)
DAUC 3G: k = eb215756028d60e3275e613320aec880
DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
DAUC 3G: for sqn ind 0, previous sqn was 23
DAUC vector [0]: rand = 897210a0f7de278f0b8213098e098a3f
DAUC vector [0]: sqn = 24
DAUC vector [0]: autn = c6b9790dad4b00000cf322869ea6a481
DAUC vector [0]: ck = e9922bd036718ed9e40bd1d02c3b81a5
DAUC vector [0]: ik = f19c20ca863137f8892326d959ec5e01
DAUC vector [0]: res = 9af5a557902d2db80000000000000000
DAUC vector [0]: res_len = 8
DAUC vector [0]: deriving 2G from 3G
DAUC vector [0]: kc = 7526fc13c5976685
DAUC vector [0]: sres = 0ad888ef
DAUC vector [0]: auth_types = 0x3
DAUC vector [1]: rand = 9a8321b108ef38a01c93241a9f1a9b50
DAUC vector [1]: sqn = 25
DAUC vector [1]: autn = 79a5113eb0910000be6020540503ffc5
DAUC vector [1]: ck = 3686f05df057d1899c66ae4eb18cf941
DAUC vector [1]: ik = 79f21ed53bcb47787de57d136ff803a5
DAUC vector [1]: res = 43023475cb29292c0000000000000000
DAUC vector [1]: res_len = 8
DAUC vector [1]: deriving 2G from 3G
DAUC vector [1]: kc = aef73dd515e86c15
DAUC vector [1]: sres = 882b1d59
DAUC vector [1]: auth_types = 0x3
DAUC vector [2]: rand = ab9432c2190049b12da4352bb02bac61
DAUC vector [2]: sqn = 26
DAUC vector [2]: autn = 24b018d46c3b00009c7e1b47f3a19b2b
DAUC vector [2]: ck = d86c3191a36fc0602e48202ef2080964
DAUC vector [2]: ik = 648dab72016181406243420649e63dc9
DAUC vector [2]: res = 010cab11cc63a6e40000000000000000
DAUC vector [2]: res_len = 8
DAUC vector [2]: deriving 2G from 3G
DAUC vector [2]: kc = f0eaf8cb19e0758d
DAUC vector [2]: sres = cd6f0df5
DAUC vector [2]: auth_types = 0x3
rc == 3
aud3g.u.umts.sqn == 26
[0]: vector matches expectations
[1]: vector matches expectations
[2]: vector matches expectations
Now reach sqn = 23 with AUTS and expect the same
DAUC Computing 3 auth vectors: 3G only (2G derived from 3G keys), with AUTS resync
DAUC 3G: k = eb215756028d60e3275e613320aec880
DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
DAUC 3G: for sqn ind 0, previous sqn was 26
DAUC vector [0]: rand = 897210a0f7de278f0b8213098e098a3f
DAUC vector [0]: resync: auts = 979498b1f72d3e28c59fa2e72f9c
DAUC vector [0]: resync: rand_auts = 39fa2f4e3d523d8619a73b4f65c3e14d
DAUC vector [0]: sqn = 24
DAUC vector [0]: autn = c6b9790dad4b00000cf322869ea6a481
DAUC vector [0]: ck = e9922bd036718ed9e40bd1d02c3b81a5
DAUC vector [0]: ik = f19c20ca863137f8892326d959ec5e01
DAUC vector [0]: res = 9af5a557902d2db80000000000000000
DAUC vector [0]: res_len = 8
DAUC vector [0]: deriving 2G from 3G
DAUC vector [0]: kc = 7526fc13c5976685
DAUC vector [0]: sres = 0ad888ef
DAUC vector [0]: auth_types = 0x3
DAUC vector [1]: rand = 9a8321b108ef38a01c93241a9f1a9b50
DAUC vector [1]: sqn = 25
DAUC vector [1]: autn = 79a5113eb0910000be6020540503ffc5
DAUC vector [1]: ck = 3686f05df057d1899c66ae4eb18cf941
DAUC vector [1]: ik = 79f21ed53bcb47787de57d136ff803a5
DAUC vector [1]: res = 43023475cb29292c0000000000000000
DAUC vector [1]: res_len = 8
DAUC vector [1]: deriving 2G from 3G
DAUC vector [1]: kc = aef73dd515e86c15
DAUC vector [1]: sres = 882b1d59
DAUC vector [1]: auth_types = 0x3
DAUC vector [2]: rand = ab9432c2190049b12da4352bb02bac61
DAUC vector [2]: sqn = 26
DAUC vector [2]: autn = 24b018d46c3b00009c7e1b47f3a19b2b
DAUC vector [2]: ck = d86c3191a36fc0602e48202ef2080964
DAUC vector [2]: ik = 648dab72016181406243420649e63dc9
DAUC vector [2]: res = 010cab11cc63a6e40000000000000000
DAUC vector [2]: res_len = 8
DAUC vector [2]: deriving 2G from 3G
DAUC vector [2]: kc = f0eaf8cb19e0758d
DAUC vector [2]: sres = cd6f0df5
DAUC vector [2]: auth_types = 0x3
[0]: vector matches expectations
[1]: vector matches expectations
[2]: vector matches expectations
===== test_gen_vectors_3g_only: SUCCESS
===== test_gen_vectors_3g_xor
aud3g.u.umts.sqn == 0
DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
DAUC 3G: k = 000102030405060708090a0b0c0d0e0f
DAUC 3G: opc = 00000000000000000000000000000000
DAUC 3G: for sqn ind 0, previous sqn was 0
DAUC vector [0]: rand = b5039c57e4a75051551d1a390a71ce48
DAUC vector [0]: sqn = 0
DAUC vector [0]: autn = 54e0a256565d0000b5029e54e0a25656
DAUC vector [0]: ck = 029e54e0a256565d141032067cc047b5
DAUC vector [0]: ik = 9e54e0a256565d141032067cc047b502
DAUC vector [0]: res = b5029e54e0a256565d141032067cc047
DAUC vector [0]: res_len = 16
DAUC vector [0]: deriving 2G from 3G
DAUC vector [0]: kc = 98e880384887f9fe
DAUC vector [0]: sres = 0ec81877
DAUC vector [0]: auth_types = 0x3
rc == 1
aud3g.u.umts.sqn == 0
vector matches expectations
===== test_gen_vectors_3g_xor: SUCCESS
===== test_gen_vectors_bad_args
- no auth data (a)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (b)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (c)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (d)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (e)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (f)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (g)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (h)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (i)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (j)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (k)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (l)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (m)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (n)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (o)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- no auth data (p)
DAUC auc_compute_vectors() called with neither 2G nor 3G auth data available
rc == -1
- wrong auth data type (a)
DAUC auc_compute_vectors() called with non-2G auth data passed for aud2g arg
rc == -1
- wrong auth data type (b)
DAUC auc_compute_vectors() called with non-2G auth data passed for aud2g arg
rc == -1
- wrong auth data type (c)
DAUC auc_compute_vectors() called with non-2G auth data passed for aud2g arg
rc == -1
- wrong auth data type (d)
DAUC auc_compute_vectors() called with non-2G auth data passed for aud2g arg
rc == -1
- wrong auth data type (e)
DAUC auc_compute_vectors() called with non-3G auth data passed for aud3g arg
rc == -1
- wrong auth data type (f)
DAUC auc_compute_vectors() called with non-3G auth data passed for aud3g arg
rc == -1
- wrong auth data type (g)
DAUC auc_compute_vectors() called with non-3G auth data passed for aud3g arg
rc == -1
- wrong auth data type (h)
DAUC auc_compute_vectors() called with non-3G auth data passed for aud3g arg
rc == -1
- wrong auth data type (i)
DAUC auc_compute_vectors() called with non-2G auth data passed for aud2g arg
rc == -1
- wrong auth data type (j)
DAUC auc_compute_vectors() called with non-2G auth data passed for aud2g arg
rc == -1
- wrong auth data type (k)
DAUC auc_compute_vectors() called with non-3G auth data passed for aud3g arg
rc == -1
- AUTS for 2G-only (a)
DAUC auc_compute_vectors() with AUTS called but no 3G auth data passed
rc == -1
- AUTS for 2G-only (b)
DAUC auc_compute_vectors() with AUTS called but no 3G auth data passed
rc == -1
- AUTS for 2G-only (c)
DAUC auc_compute_vectors() with AUTS called but no 3G auth data passed
rc == -1
- AUTS for 2G-only (d)
DAUC auc_compute_vectors() with AUTS called but no 3G auth data passed
rc == -1
- incomplete AUTS (a)
DAUC auc_compute_vectors() with only one of AUTS and AUTS_RAND given, need both or neither
rc == -1
- incomplete AUTS (b)
DAUC auc_compute_vectors() with only one of AUTS and AUTS_RAND given, need both or neither
rc == -1
- incomplete AUTS (c)
DAUC auc_compute_vectors() with only one of AUTS and AUTS_RAND given, need both or neither
rc == -1
- incomplete AUTS (d)
DAUC auc_compute_vectors() with only one of AUTS and AUTS_RAND given, need both or neither
rc == -1
===== test_gen_vectors_bad_args: SUCCESS