summaryrefslogtreecommitdiffstats
path: root/include/osmocom/crypt
Commit message (Collapse)AuthorAgeFilesLines
* osmo_auth_gen_vec: UMTS auth: fix SQN as SEQ || INDNeels Hofmeyr2017-03-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | So far we incremented SQN by 1, which doesn't match the procedures described in 3GPP TS 33.102. An IND (index) denotes a non-significant part of SQN, and the significant SEQ part needs to be incremented. In OsmoHLR we furthermore want to use the "exception" suggested in annex C.3.4, so that each HLR's client has a fixed IND index. In other words, we will not assign IND cyclically, but keep IND unchanged per auth vector consumer. Add 'ind_bitlen' and 'ind' to the osmo_sub_auth_data.u.umts structure and increment SQN accordingly. Add a comment explaining the details. Because 'ind_bitlen' is still passed as zero, the milenage_test does not change its behavior, which is a feature I want to clearly show in this patch. The test will be expanded for the newly implemented SQN scheme in a subsequent patch. Adjust osmo-auc-gen.c to still show the right SQN and SQN.MS -- because it is passing ind_bitlen == 0, osmo-auc-gen can rely on single increments and know SQN.MS is sqn - 1. Note that osmo-auc-gen_test output remains unchanged. Related: OS#1968 Change-Id: Ibc97e1736a797ffcbf8c1f7d41c5c4518f4e41bf
* osmo_auth*: fix ordering of function argsNeels Hofmeyr2017-02-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | milenage_gen_vec() has parameter ordering of (..., auts, rand_auts, rand). osmo_auth_gen_vec_auts() has (..., rand_auts, auts, rand), but actually feeds args in the same order, so that its rand_auts becomes auts, and its auts becomes rand_auts. Interestingly enough, API user osmo-gen-vec.c also adheres to this misordering and in turn passes auts for osmo_auth_gen_vec_auts()'s rand_auts and vice versa, so that it matches milenage_gen_vec(). So both the implementation (milenage_*) and the API user use the same ordering, just osmo_auth_gen_vec_auts() and osmo_auth_impl{ .gen_vec_auts() } in-between have the argument names swapped. Any current user of this API would need to adhere to this swapping or will not get successful AUTS resolution to a SQN. So the least impact fix is to rename the args without any actual functional change. So swap the names rand_auts and auts for osmo_auth_gen_vec_auts() and osmo_auth_impl{ .gen_vec_auts() }. (Also adjust API doc ordering) Change-Id: I0dcbd49759fc32d3b8974102dbd1d6703364ebf4
* Add GEA3 & GEA4 ciphersMax2016-07-111-0/+2
| | | | | | | | | | | Corresponding test code include both official test vectors from the specs and data from over-the-air tests. This obsoletes libosmo-crypt-a53 as it was last missing piece unimplemented in libosmogsm. Change-Id: I939e4f6b91b4a7c591ef3761fe2d46ed1c2fb2d3 Related: OS#1582
* Clarify GPRS algorithmMax2016-06-291-5/+6
| | | | | | | | Add spec reference and set explicit values for enum representing ciphering algorithm for GPRS encryption. Change-Id: Ia9ee429b73a37d52599fce70778cfe87b767411c Related: OS#1582
* Clarify GPRS ciphering directionMax2016-06-291-2/+3
| | | | | | | | Add spec reference and set explicit values for enum representing direction parameter for GPRS encryption. Change-Id: Iaf1b13da2e889d55cc9dd7516710104dba48c992 Related: OS#1582
* Make C4 function globally availableMax2016-06-291-1/+1
| | | | | | | | | This function perform 64 -> 128 bit key expansion which useful for converting between UMTS CK and GSM Kc, A5/3 and A5/4, GEA3 and GEA4 keys. Change-Id: I5a6c6deef6027cd6af144c9062d4c9166be26904 Related: OS#1582
* Add strings for GPRS ciphersMax2016-06-291-0/+3
| | | | | Change-Id: I050bda5fb50aad42fe2d72de39f8256b4fb12fb2 Related: OS#1582
* Update internal GPRS cipher APIMax2016-04-221-2/+6
| | | | | Update internal API (for GPRS cipher implementors): make it compliant with ETSI TS 155.22. External API left untouched.
* include: Switch to #pragma once patternSylvain Munaut2014-06-162-8/+2
| | | | Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* authentication: More documentationHarald Welte2012-07-181-17/+27
|
* build: simplify headers management and remove recursionDiego Elio Pettenò2012-06-301-3/+0
| | | | | | | | | | | | There is no real reason to keep the include directory a multi-level recursion, so instead declare everything within include (so that we can use proper nobase_ declarations) and be it. Please note that since we removed the sub-Makefile.am, ./configure will not create the directory structure for us on out-of-tree builds, so we have to make sure the directory we're generating to exists first. Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.eu>
* auth_milenage/osmo-auc-gen: compute OPC in case only OP is knownHarald Welte2012-03-211-0/+1
|
* auth_core: don't use anonymous unions to make certain gcc versions happyHarald Welte2011-12-071-1/+1
|
* auth_core: add functions for parsing algorithm namesHarald Welte2011-12-071-0/+3
|
* Add a generic abstraction for GSM/3G authentication algorithmsHarald Welte2011-12-062-1/+88
| | | | | Indiidual algorithms can be implemented as plugins. libosmogsm itself only provides COMP128v1 via this generic interface.
* include: reorganize headers file to include/osmocom/[gsm|core]Pablo Neira Ayuso2011-03-231-1/+1
| | | | | | | | | | | | This patch moves all GSM-specific definitions to include/osmocom/gsm. Moreover, the headers in include/osmocore/ have been moved to include/osmocom/core. This has been proposed by Harald Welte and Sylvain Munaunt. Tested with `make distcheck'. Signed-off-by: Pablo Neira Ayuso <pablo@gnumonks.org>
* GPRS: Add 'input' generator functions for GPRS cipher algorithmHarald Welte2010-06-301-0/+6
|
* Add support for plugins (and specifically GPRS encryption plugins)Harald Welte2010-06-302-0/+51