From b1af6ef1646c54f429f7b87778d92d139c0e3336 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Sat, 26 Aug 2017 21:38:51 +0200 Subject: osmo-auc-gen: umts: add --ind-len arg osmo-auc-gen so far does not allow indicating the IND bit length of SQN. A default of 5 serves most practical cases, nevertheless we should allow passing arbitrary IND lengths. Enhance the test suite to test --ind-len. Related: OS#2465 Change-Id: Ia1d8b6a823ffc92290b3e39e4e4665aeff80ccc0 --- tests/osmo-auc-gen/osmo-auc-gen_test.err | 3 ++ tests/osmo-auc-gen/osmo-auc-gen_test.ok | 77 ++++++++++++++++++++++++++++++++ tests/osmo-auc-gen/osmo-auc-gen_test.sh | 8 ++++ utils/osmo-auc-gen.c | 11 ++++- 4 files changed, 98 insertions(+), 1 deletion(-) diff --git a/tests/osmo-auc-gen/osmo-auc-gen_test.err b/tests/osmo-auc-gen/osmo-auc-gen_test.err index 46ecf2ef..d9b54850 100644 --- a/tests/osmo-auc-gen/osmo-auc-gen_test.err +++ b/tests/osmo-auc-gen/osmo-auc-gen_test.err @@ -7,3 +7,6 @@ Requested --ind 32 is too large for IND bitlen of 5 expecting error: > osmo-auc-gen -3 -a milenage -r 39fa2f4e3d523d8619a73b4f65c3e14d -k EB215756028D60E3275E613320AEC880 -o FB2A3D1B360F599ABAB99DB8669F8308 -A 979498b1f72d3e28c59fa2e72f9c --ind 42 Requested --ind 42 is too large for IND bitlen of 5 +expecting error: +> osmo-auc-gen -3 -a milenage -r 39fa2f4e3d523d8619a73b4f65c3e14d -k EB215756028D60E3275E613320AEC880 -o FB2A3D1B360F599ABAB99DB8669F8308 -A 979498b1f72d3e28c59fa2e72f9c --ind-len 0 --ind 1 +Requested --ind 1 is too large for IND bitlen of 0 diff --git a/tests/osmo-auc-gen/osmo-auc-gen_test.ok b/tests/osmo-auc-gen/osmo-auc-gen_test.ok index 278c88f4..f833760d 100644 --- a/tests/osmo-auc-gen/osmo-auc-gen_test.ok +++ b/tests/osmo-auc-gen/osmo-auc-gen_test.ok @@ -140,6 +140,76 @@ Kc: 059a4f668f6fbe39 SQN: 63 +> osmo-auc-gen -3 -a milenage -r 39fa2f4e3d523d8619a73b4f65c3e14d -k EB215756028D60E3275E613320AEC880 -o FB2A3D1B360F599ABAB99DB8669F8308 -A 979498b1f72d3e28c59fa2e72f9c --ind-len 0 +osmo-auc-gen (C) 2011-2012 by Harald Welte +This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY + +RAND: 39fa2f4e3d523d8619a73b4f65c3e14d +AUTN: 8704f5ba55eb0000d7fc4f7f19cfc180 +IK: 27497388b6cb044648f396aa155b95ef +CK: f64735036e5871319c679f4742a75ea1 +RES: e229c19e791f2e41 +SRES: 9b36efdf +Kc: 059a4f668f6fbe39 +SQN: 24 + + +> osmo-auc-gen -3 -a milenage -r 39fa2f4e3d523d8619a73b4f65c3e14d -k EB215756028D60E3275E613320AEC880 -o FB2A3D1B360F599ABAB99DB8669F8308 -A 979498b1f72d3e28c59fa2e72f9c --ind-len 1 +osmo-auc-gen (C) 2011-2012 by Harald Welte +This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY + +RAND: 39fa2f4e3d523d8619a73b4f65c3e14d +AUTN: 8704f5ba55eb0000d7fc4f7f19cfc180 +IK: 27497388b6cb044648f396aa155b95ef +CK: f64735036e5871319c679f4742a75ea1 +RES: e229c19e791f2e41 +SRES: 9b36efdf +Kc: 059a4f668f6fbe39 +SQN: 24 + + +> osmo-auc-gen -3 -a milenage -r 39fa2f4e3d523d8619a73b4f65c3e14d -k EB215756028D60E3275E613320AEC880 -o FB2A3D1B360F599ABAB99DB8669F8308 -A 979498b1f72d3e28c59fa2e72f9c --ind-len 1 --ind 1 +osmo-auc-gen (C) 2011-2012 by Harald Welte +This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY + +RAND: 39fa2f4e3d523d8619a73b4f65c3e14d +AUTN: 8704f5ba55ea0000aab06de3fd6c01af +IK: 27497388b6cb044648f396aa155b95ef +CK: f64735036e5871319c679f4742a75ea1 +RES: e229c19e791f2e41 +SRES: 9b36efdf +Kc: 059a4f668f6fbe39 +SQN: 25 + + +> osmo-auc-gen -3 -a milenage -r 39fa2f4e3d523d8619a73b4f65c3e14d -k EB215756028D60E3275E613320AEC880 -o FB2A3D1B360F599ABAB99DB8669F8308 -A 979498b1f72d3e28c59fa2e72f9c --ind-len 8 +osmo-auc-gen (C) 2011-2012 by Harald Welte +This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY + +RAND: 39fa2f4e3d523d8619a73b4f65c3e14d +AUTN: 8704f5ba54f30000cbba2fbba3c5e242 +IK: 27497388b6cb044648f396aa155b95ef +CK: f64735036e5871319c679f4742a75ea1 +RES: e229c19e791f2e41 +SRES: 9b36efdf +Kc: 059a4f668f6fbe39 +SQN: 256 + + +> osmo-auc-gen -3 -a milenage -r 39fa2f4e3d523d8619a73b4f65c3e14d -k EB215756028D60E3275E613320AEC880 -o FB2A3D1B360F599ABAB99DB8669F8308 -A 979498b1f72d3e28c59fa2e72f9c --ind-len 8 --ind 1 +osmo-auc-gen (C) 2011-2012 by Harald Welte +This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY + +RAND: 39fa2f4e3d523d8619a73b4f65c3e14d +AUTN: 8704f5ba54f200008f8e14579da5ecbb +IK: 27497388b6cb044648f396aa155b95ef +CK: f64735036e5871319c679f4742a75ea1 +RES: e229c19e791f2e41 +SRES: 9b36efdf +Kc: 059a4f668f6fbe39 +SQN: 257 + + expecting error: > osmo-auc-gen -3 -a milenage -r 39fa2f4e3d523d8619a73b4f65c3e14d -k EB215756028D60E3275E613320AEC880 -o FB2A3D1B360F599ABAB99DB8669F8308 -A 979498b1f72d3e28c59fa2e72f9c --ind -1 osmo-auc-gen (C) 2011-2012 by Harald Welte @@ -159,3 +229,10 @@ expecting error: osmo-auc-gen (C) 2011-2012 by Harald Welte This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY + + +expecting error: +> osmo-auc-gen -3 -a milenage -r 39fa2f4e3d523d8619a73b4f65c3e14d -k EB215756028D60E3275E613320AEC880 -o FB2A3D1B360F599ABAB99DB8669F8308 -A 979498b1f72d3e28c59fa2e72f9c --ind-len 0 --ind 1 +osmo-auc-gen (C) 2011-2012 by Harald Welte +This is FREE SOFTWARE with ABSOLUTELY NO WARRANTY + diff --git a/tests/osmo-auc-gen/osmo-auc-gen_test.sh b/tests/osmo-auc-gen/osmo-auc-gen_test.sh index f7fc87da..55b0757a 100755 --- a/tests/osmo-auc-gen/osmo-auc-gen_test.sh +++ b/tests/osmo-auc-gen/osmo-auc-gen_test.sh @@ -48,7 +48,15 @@ invoke -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind 5 invoke -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind 23 invoke -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind 31 +invoke -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind-len 0 +invoke -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind-len 1 +invoke -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind-len 1 --ind 1 +invoke -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind-len 8 +invoke -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind-len 8 --ind 1 + # expect error: IND is too large for IND-bitlen of 5 (max 31) invoke_err -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind -1 invoke_err -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind 32 invoke_err -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind 42 + +invoke_err -3 -a milenage -r $rand -k $k -o $opc -A $auts --ind-len 0 --ind 1 diff --git a/utils/osmo-auc-gen.c b/utils/osmo-auc-gen.c index 4f36dee5..6e38b520 100644 --- a/utils/osmo-auc-gen.c +++ b/utils/osmo-auc-gen.c @@ -81,6 +81,7 @@ static void help() "-f --amf\tSpecify AMF (only for 3G)\n" "-s --sqn\tSpecify SQN (only for 3G)\n" "-i --ind\tSpecify IND slot for new SQN after AUTS (only for 3G)\n" + "-l --ind-len\tSpecify IND bit length (default=5) (only for 3G)\n" "-A --auts\tSpecify AUTS (only for 3G)\n" "-r --rand\tSpecify random value\n" "-I --ipsec\tOutput in triplets.dat format for strongswan\n"); @@ -122,6 +123,7 @@ int main(int argc, char **argv) { "amf", 1, 0, 'f' }, { "sqn", 1, 0, 's' }, { "ind", 1, 0, 'i' }, + { "ind-len", 1, 0, 'l' }, { "rand", 1, 0, 'r' }, { "auts", 1, 0, 'A' }, { "help", 0, 0, 'h' }, @@ -130,7 +132,7 @@ int main(int argc, char **argv) rc = 0; - c = getopt_long(argc, argv, "23a:k:o:f:s:i:r:hO:A:I", long_options, + c = getopt_long(argc, argv, "23a:k:o:f:s:i:l:r:hO:A:I", long_options, &option_index); if (c == -1) @@ -214,6 +216,13 @@ int main(int argc, char **argv) ind = atoi(optarg); ind_is_set = 1; break; + case 'l': + if (test_aud.type != OSMO_AUTH_TYPE_UMTS) { + fprintf(stderr, "Only UMTS has IND bitlen\n"); + exit(2); + } + test_aud.u.umts.ind_bitlen = atoi(optarg); + break; case 'r': rc = osmo_hexparse(optarg, _rand, sizeof(_rand)); rand_is_set = 1; -- cgit v1.2.3