Commit Graph

20 Commits

Author SHA1 Message Date
Neels Hofmeyr 14477997c1 osmo-auc-gen: fix --sqn limit on 32bit systems, fixing build
osmo-auc-gen on 32bit systems allowed only --sqn up to 32bits width. However,
the recently added regression test for osmo-auc-gen includes an ivocation with
a 48bit wide --sqn, which now causes the builds to fail on 32bit systems.

Fix the --sqn argument parsing for larger integers by using strtoull(). Do away
with the intermediate variable 'ul' and place the value directly in the auth
data struct.

Change-Id: Ifb73b3b3de06576e36076ca573d52327f90a1f77
2017-03-20 00:21:42 +00:00
Neels Hofmeyr 82c9a0ec19 osmo_auth_gen_vec: UMTS auth: store last used SQN, not next
Prepare for the implementation of splitting SQN increments in SEQ and an IND
part; particularly to clearly show where the changes in auth/milenage_test's
expectations originate.

Rationale: the source of UMTS auth vectors, for us usually OsmoHLR, typically
stores the last used SQN, not the next one to be used. Particularly with the
upcoming fix of the SQN scheme, this change is important: the next SQN will
depend on which entity asks for it, because each auth consumer may have a
particular slot in the IND part of SQN. It does not make sense to store the
next SQN, because we will not know which consumer that will be for.

The milenage_test has always calculated a tuple for SQN == 34. To account for
the increment now happening before calculating a tuple, lower the test_aud->sqn
by one to 0x21 == 33, so that it is still calculating for SQN == 34.

Because we are no longer incrementing SQN after the tuple is generated,
milenage_test's expected output after doing an AUTS resync to 31 changes to the
next SQN = 32, the SQN used for the generated tuple.

(BTW, a subsequent patch will illustrate AUTS in detail.)

osmo-auc-gen now needs to pass the user requested SQN less one, because the SQN
will be incremented befor generating the auth vector. Also the SQN remains the
same after generating, so SQN output needs less decrementing. Note that the
expected output for osmo-auc-gen_test remains unchanged, hence the same input
arguments (particularly -s <sqn> and -A <auts>) still produce the same results.

Note: osmo-hlr regression tests will require adjustments when this patch is
merged, because it must now pass desired_sqn - 1 instead of just desired_sqn.
See osmo-hlr change-id I4ec5a578537acb1d9e1ebfe00a72417fc3ca5894 .

Related: OS#1968
Change-Id: Iadf43f21e0605e9e85f7e8026c40985f7ceff1a3
2017-03-15 12:46:08 +00:00
Neels Hofmeyr 5fe3d1b0f7 osmo-auc-gen: clarify SQN output, prepare for SQN changes
Upcoming patches will change the way SQN are incremented. Change the SQN
related output by osmo-auc-gen so that it also makes sense after these changes,
and so that its output is proven to remain unchanged for the same arguments:

Always show the SQN used for vector generation when a UMTS vector was generated.

Don't show the next SQN, it will not make sense anymore (see later patches).

The adjustments of expected output of osmo-auc-gen_test illustrates how the
output changes.

Related: OS#1968
Change-Id: I35d9c669002ff3e8570e07b444cca34ce57c3b0c
2017-03-15 12:46:08 +00:00
Neels Hofmeyr 18d65be080 osmo-auc-gen: cmdline help: list algorithms; error messages
In the -h help output, list the names of available algorithms.

In case of option parsing failure, also print help() (so that e.g. for a typo
in the algorithm, the list of algorithms is printed along with the error
message).

If there are -2/-3 or -a missing, show an error message that explains this.

Change-Id: I76732b28d7a553a6293d1707fe398d28b5ef4886
2017-02-06 13:47:17 +00:00
Neels Hofmeyr 94e04604fc osmo-auc-gen: cosmetic: clarify output upon AUTS
When calculating a re-sync vector using AUTS, osmo-gen-vec used to print
SQN.MS + 2, the new SQN after vector generation, labeled 'SEQ.MS'.

Firstly, s/SEQ/SQN.

Secondly, print SQN.MS as umts.sqn - 2, which is the actual SQN recovered from
the AUTS. As explained in the comment, SQN.MS + 1 is used to generate the
vector, and then umts.sqn is increased a second time to indicate the next SQN.

With AUTS calculated from SQN.MS == 23, the output was:

  AUTS success: SEQ.MS = 25

Output now:

  AUTS success: SQN.MS = 23, generated vector with SQN = 24, next SQN = 25

Change-Id: I881bbe8246a5e7d3a5065b4b5b533255723b1a9e
2017-02-04 14:46:19 +00:00
Neels Hofmeyr 8352d31a86 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
2017-02-02 20:34:16 +01:00
Harald Welte 4f511b67fd osmo-auc-gen: Print hex values without intermittent spaces
When generating some authentication vectors using the osmo-auc-gen
utility, it used to print values like this:

AUTN:   f7 55 bc 47 de d0 00 00 f9 ed 4b 3f 6c 2a 97 6f

which is quite difficult to copy+paste on the terminal.  Now it
generates the following format:

Change-Id: I2805615e0c2087ca632e0658b37a9e06929620b6
AUTN:   f755bc47ded00000f9ed4b3f6c2a976f
Reviewed-on: https://gerrit.osmocom.org/164
Reviewed-by: Harald Welte <laforge@gnumonks.org>
Tested-by: Jenkins Builder
2016-06-01 12:10:41 +00:00
Holger Hans Peter Freyther 91ff17c9ef osmo-auc-gen: '-a' is already the algorithm. Fix the help 2015-05-26 00:11:37 +08:00
Jan Engelhardt a6d83932ba utils: resolve compiler warnings on implicit declarations
CC       osmo-auc-gen.o
	osmo-auc-gen.c: In function 'main':
	osmo-auc-gen.c:216:3: warning: implicit declaration of function
	'time' [-Wimplicit-function-declaration]
2014-10-03 08:46:47 +02:00
Holger Hans Peter Freyther 17aa6b25cb osmo-auc-gen: Fix compiler warnings about aliasing
I ran "./utils/osmo-auc-gen -2 -a COMP128v1" and verified that
the RAND doen't look empty

Fixes:
osmo-auc-gen.c: In function ‘main’:
osmo-auc-gen.c:219:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *(uint32_t *)&_rand[0] = rand();
   ^
osmo-auc-gen.c:220:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *(uint32_t *)(&_rand[4]) = rand();
   ^
osmo-auc-gen.c:221:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *(uint32_t *)(&_rand[8]) = rand();
   ^
osmo-auc-gen.c:222:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   *(uint32_t *)(&_rand[12]) = rand();
2014-06-22 16:53:55 +02:00
Holger Hans Peter Freyther a652abc5bf utils: Fix compiler warnings n the osmo-auc-gen utility
osmo-auc-gen.c:217:3: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
osmo-auc-gen.c:249:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘uint64_t’ [-Wformat]

Fixes: Coverity CID 1040668
2013-07-14 09:14:37 +02:00
Harald Welte b53717f418 Add missing includes to timer_test.c and osmo-auc-gen.c
This fixes the build with -Werror-implicit-function-declaration.

taken from malformatted patch of Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
2012-08-02 08:42:59 +02:00
Harald Welte 57799ed87f osmo-auc-gen: Add "-I" mode for generating triplets.dat for strongswan
If you want to use eap-sim-file with strongswan, you need a triplets.dat
file in a specific format.  osmo-auc-gen can now generate the respective
format automatically.
2012-06-27 15:06:19 +02:00
Harald Welte cebf3f0d3c osmo-auc-gen: Add mode for verifying user-supplied AUTS
When -A is used on the command line, the respective AUTS value
will be validated and the SQN of the UICC printed.
2012-03-22 16:45:23 +01:00
Harald Welte bc6f56c221 update copyright notice 2012-03-21 23:15:32 +01:00
Holger Hans Peter Freyther 0f5f93d2db osmo-auc-gen: Add -O to the getop line to make it work 2012-03-21 21:38:42 +01:00
Harald Welte a72e47b8a0 auth_milenage/osmo-auc-gen: compute OPC in case only OP is known 2012-03-21 09:04:14 +01:00
Harald Welte 5fb795e972 osmo-auc-gen: Introduce a small cmdline help/reference 2012-03-21 08:51:48 +01:00
Harald Welte aae2362455 auth_core: don't use anonymous unions to make certain gcc versions happy 2011-12-07 11:35:02 +01:00
Harald Welte 915e0ef5e7 add 'osmo-auc-gen' tool that can be used to generate auth vectors
Thsi tool usses libosmocore in order to generate 2G and 3G
authentication vectors from private key material, exactly like an AuC
would produce them in a real network.
2011-12-07 02:38:42 +01:00