summaryrefslogtreecommitdiffstats
path: root/utils/osmo-auc-gen.c
Commit message (Collapse)AuthorAgeFilesLines
* doxygen: unify use of \file across the boardNeels Hofmeyr2017-06-231-3/+4
| | | | | | | | | | | | | | | | | Considering the various styles and implications found in the sources, edit scores of files to follow the same API doc guidelines around the doxygen grouping and the \file tag. Many files now show a short description in the generated API doc that was so far only available as C comment. The guidelines and reasoning behind it is documented at https://osmocom.org/projects/cellular-infrastructure/wiki/Guidelines_for_API_documentation In some instances, remove file comments and add to the corresponding group instead, to be shared among several files (e.g. bitvec). Change-Id: Ifa70e77e90462b5eb2b0457c70fd25275910c72b
* osmo-auc-gen: fix --sqn limit on 32bit systems, fixing buildNeels Hofmeyr2017-03-201-3/+1
| | | | | | | | | | | | 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
* osmo_auth_gen_vec: UMTS auth: store last used SQN, not nextNeels Hofmeyr2017-03-151-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* osmo-auc-gen: clarify SQN output, prepare for SQN changesNeels Hofmeyr2017-03-151-15/+10
| | | | | | | | | | | | | | | | 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
* osmo-auc-gen: cmdline help: list algorithms; error messagesNeels Hofmeyr2017-02-061-1/+10
| | | | | | | | | | | | 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
* osmo-auc-gen: cosmetic: clarify output upon AUTSNeels Hofmeyr2017-02-041-1/+14
| | | | | | | | | | | | | | | | | | | | | 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
* GSUP, OAP, osmo-gen-vec: fix AUTS length to 14, not 16Neels Hofmeyr2017-02-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* osmo-auc-gen: Print hex values without intermittent spacesHarald Welte2016-06-011-7/+7
| | | | | | | | | | | | | | | | 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
* osmo-auc-gen: '-a' is already the algorithm. Fix the helpHolger Hans Peter Freyther2015-05-261-1/+1
|
* utils: resolve compiler warnings on implicit declarationsJan Engelhardt2014-10-031-0/+1
| | | | | | | 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]
* osmo-auc-gen: Fix compiler warnings about aliasingHolger Hans Peter Freyther2014-06-221-4/+7
| | | | | | | | | | | | | | | | | | | 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();
* utils: Fix compiler warnings n the osmo-auc-gen utilityHolger Hans Peter Freyther2013-07-141-1/+3
| | | | | | | 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
* Add missing includes to timer_test.c and osmo-auc-gen.cHarald Welte2012-08-021-0/+1
| | | | | | This fixes the build with -Werror-implicit-function-declaration. taken from malformatted patch of Chí-Thanh Christopher Nguyễn <chithanh@gentoo.org>
* osmo-auc-gen: Add "-I" mode for generating triplets.dat for strongswanHarald Welte2012-06-271-3/+23
| | | | | | 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.
* osmo-auc-gen: Add mode for verifying user-supplied AUTSHarald Welte2012-03-221-14/+25
| | | | | When -A is used on the command line, the respective AUTS value will be validated and the SQN of the UICC printed.
* update copyright noticeHarald Welte2012-03-211-2/+2
|
* osmo-auc-gen: Add -O to the getop line to make it workHolger Hans Peter Freyther2012-03-211-1/+1
|
* auth_milenage/osmo-auc-gen: compute OPC in case only OP is knownHarald Welte2012-03-211-0/+12
|
* osmo-auc-gen: Introduce a small cmdline help/referenceHarald Welte2012-03-211-1/+26
|
* auth_core: don't use anonymous unions to make certain gcc versions happyHarald Welte2011-12-071-10/+10
|
* add 'osmo-auc-gen' tool that can be used to generate auth vectorsHarald Welte2011-12-071-0/+183
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.