libosmogsm
1.5.1
Osmocom GSM library
|
GSM/GPRS/3G authentication core infrastructure. More...
Files | |
file | auth.h |
file | auth_core.c |
file | comp128.c |
COMP128 v1; common/old GSM Authentication Algorithm (A3/A8). | |
file | comp128v23.c |
COMP128 version 2 and 3 implementation, common algorithm used for GSM Authentication (A3/A8). | |
Data Structures | |
struct | osmo_sub_auth_data |
permanent (secret) subscriber auth data More... | |
struct | osmo_auth_vector |
struct | osmo_auth_impl |
Macros | |
#define | OSMO_A5_MAX_KEY_LEN_BYTES (128/8) |
#define | OSMO_MILENAGE_IND_BITLEN_MAX 28 |
Enumerations | |
enum | osmo_sub_auth_type { OSMO_AUTH_TYPE_NONE = 0x00 , OSMO_AUTH_TYPE_GSM = 0x01 , OSMO_AUTH_TYPE_UMTS = 0x02 } |
Authentication Type (GSM/UMTS) More... | |
enum | osmo_auth_algo { OSMO_AUTH_ALG_NONE , OSMO_AUTH_ALG_COMP128v1 , OSMO_AUTH_ALG_COMP128v2 , OSMO_AUTH_ALG_COMP128v3 , OSMO_AUTH_ALG_XOR , OSMO_AUTH_ALG_MILENAGE , _OSMO_AUTH_ALG_NUM } |
Authentication Algorithm. More... | |
Functions | |
static const char * | osmo_sub_auth_type_name (enum osmo_sub_auth_type val) |
int | osmo_auth_gen_vec (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) |
Generate authentication vector. More... | |
int | osmo_auth_gen_vec_auts (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *auts, const uint8_t *rand_auts, const uint8_t *_rand) |
Generate authentication vector and re-sync sequence. More... | |
int | osmo_auth_register (struct osmo_auth_impl *impl) |
Register an authentication algorithm implementation with the core. More... | |
int | osmo_auth_load (const char *path) |
Load all available authentication plugins from the given path. More... | |
int | osmo_auth_supported (enum osmo_auth_algo algo) |
Determine if a given authentication algorithm is supported. More... | |
void | osmo_c4 (uint8_t *ck, const uint8_t *kc) |
const char * | osmo_auth_alg_name (enum osmo_auth_algo alg) |
Get human-readable name of authentication algorithm. More... | |
enum osmo_auth_algo | osmo_auth_alg_parse (const char *name) |
Parse human-readable name of authentication algorithm. More... | |
void | osmo_auth_c3 (uint8_t kc[], const uint8_t ck[], const uint8_t ik[]) |
static int | c128v1_gen_vec (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) |
static | __attribute__ ((constructor)) |
static int | c128v2_gen_vec (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) |
static int | c128v3_gen_vec (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) |
static | LLIST_HEAD (osmo_auths) |
static void | c5_function (uint8_t *ik, const uint8_t *kc) |
int | osmo_auth_3g_from_2g (struct osmo_auth_vector *vec) |
Generate 3G CK + IK from 2G authentication vector. More... | |
static const uint8_t * | gen_opc_if_needed (const struct osmo_sub_auth_data *aud, uint8_t *gen_opc) |
static int | milenage_gen_vec (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) |
static int | milenage_gen_vec_auts (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *auts, const uint8_t *rand_auts, const uint8_t *_rand) |
static void | xor (uint8_t *out, const uint8_t *a, const uint8_t *b, size_t len) |
static int | xor_gen_vec (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) |
static int | xor_gen_vec_auts (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *auts, const uint8_t *rand_auts, const uint8_t *_rand) |
static void | _comp128_compression_round (uint8_t *x, int n, const uint8_t *tbl) |
static void | _comp128_compression (uint8_t *x) |
static void | _comp128_bitsfrombytes (uint8_t *x, uint8_t *bits) |
static void | _comp128_permutation (uint8_t *x, uint8_t *bits) |
void | comp128v1 (const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc) |
Perform COMP128v1 algorithm. More... | |
void | comp128 (const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc) |
Perform COMP128v1 algorithm. More... | |
static void | _comp128v23_internal (uint8_t *output, const uint8_t *kxor, const uint8_t *rand) |
int | comp128v3 (const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc) |
Perform COMP128v3 algorithm. More... | |
int | comp128v2 (const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc) |
Perform COMP128v2 algorithm. More... | |
Variables | |
const struct value_string | osmo_sub_auth_type_names [] |
enum osmo_sub_auth_type | osmo_sub_auth_data::type |
enum osmo_auth_algo | osmo_sub_auth_data::algo |
uint8_t osmo_sub_auth_data::opc [16] | |
operator invariant value More... | |
uint8_t osmo_sub_auth_data::k [OSMO_A5_MAX_KEY_LEN_BYTES] | |
secret key of the subscriber More... | |
uint8_t osmo_sub_auth_data::amf [2] | |
uint64_t osmo_sub_auth_data::sqn | |
sequence number (in: prev sqn; out: used sqn) More... | |
int osmo_sub_auth_data::opc_is_op | |
is the OPC field OPC (0) or OP (1) ? More... | |
unsigned int osmo_sub_auth_data::ind_bitlen | |
nr of bits not in SEQ, only SQN More... | |
unsigned int osmo_sub_auth_data::ind | |
which IND slot to use an SQN from More... | |
uint64_t osmo_sub_auth_data::sqn_ms | |
sqn from AUTS (output value only) More... | |
struct { | |
uint8_t osmo_sub_auth_data::opc [16] | |
operator invariant value More... | |
uint8_t osmo_sub_auth_data::k [OSMO_A5_MAX_KEY_LEN_BYTES] | |
secret key of the subscriber More... | |
uint8_t osmo_sub_auth_data::amf [2] | |
uint64_t osmo_sub_auth_data::sqn | |
sequence number (in: prev sqn; out: used sqn) More... | |
int osmo_sub_auth_data::opc_is_op | |
is the OPC field OPC (0) or OP (1) ? More... | |
unsigned int osmo_sub_auth_data::ind_bitlen | |
nr of bits not in SEQ, only SQN More... | |
unsigned int osmo_sub_auth_data::ind | |
which IND slot to use an SQN from More... | |
uint64_t osmo_sub_auth_data::sqn_ms | |
sqn from AUTS (output value only) More... | |
} osmo_sub_auth_data::umts | |
uint8_t osmo_sub_auth_data::ki [OSMO_A5_MAX_KEY_LEN_BYTES] | |
secret key More... | |
struct { | |
uint8_t osmo_sub_auth_data::ki [OSMO_A5_MAX_KEY_LEN_BYTES] | |
secret key More... | |
} osmo_sub_auth_data::gsm | |
union { | |
struct { | |
uint8_t osmo_sub_auth_data::opc [16] | |
operator invariant value More... | |
uint8_t osmo_sub_auth_data::k [OSMO_A5_MAX_KEY_LEN_BYTES] | |
secret key of the subscriber More... | |
uint8_t osmo_sub_auth_data::amf [2] | |
uint64_t osmo_sub_auth_data::sqn | |
sequence number (in: prev sqn; out: used sqn) More... | |
int osmo_sub_auth_data::opc_is_op | |
is the OPC field OPC (0) or OP (1) ? More... | |
unsigned int osmo_sub_auth_data::ind_bitlen | |
nr of bits not in SEQ, only SQN More... | |
unsigned int osmo_sub_auth_data::ind | |
which IND slot to use an SQN from More... | |
uint64_t osmo_sub_auth_data::sqn_ms | |
sqn from AUTS (output value only) More... | |
} osmo_sub_auth_data::umts | |
struct { | |
uint8_t osmo_sub_auth_data::ki [OSMO_A5_MAX_KEY_LEN_BYTES] | |
secret key More... | |
} osmo_sub_auth_data::gsm | |
} | osmo_sub_auth_data::u |
uint8_t | osmo_auth_vector::rand [16] |
random challenge More... | |
uint8_t | osmo_auth_vector::autn [16] |
authentication nonce More... | |
uint8_t | osmo_auth_vector::ck [OSMO_A5_MAX_KEY_LEN_BYTES] |
ciphering key More... | |
uint8_t | osmo_auth_vector::ik [OSMO_A5_MAX_KEY_LEN_BYTES] |
integrity key More... | |
uint8_t | osmo_auth_vector::res [16] |
authentication result More... | |
uint8_t | osmo_auth_vector::res_len |
length (in bytes) of res More... | |
uint8_t | osmo_auth_vector::kc [8] |
Kc for GSM encryption (A5) More... | |
uint8_t | osmo_auth_vector::sres [4] |
authentication result for GSM More... | |
uint32_t | osmo_auth_vector::auth_types |
bitmask of OSMO_AUTH_TYPE_* More... | |
struct llist_head | osmo_auth_impl::list |
enum osmo_auth_algo | osmo_auth_impl::algo |
algorithm we implement More... | |
const char * | osmo_auth_impl::name |
name of the implementation More... | |
unsigned int | osmo_auth_impl::priority |
priority value (resp. More... | |
int(* | osmo_auth_impl::gen_vec )(struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) |
callback for generate authentication vectors More... | |
int(* | osmo_auth_impl::gen_vec_auts )(struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *auts, const uint8_t *rand_auts, const uint8_t *_rand) |
static struct osmo_auth_impl | c128v1_alg |
static struct osmo_auth_impl | c128v2_alg |
static struct osmo_auth_impl | c128v3_alg |
static struct osmo_auth_impl * | selected_auths [_OSMO_AUTH_ALG_NUM] |
static const struct value_string | auth_alg_vals [] |
const struct value_string | osmo_sub_auth_type_names [] |
static struct osmo_auth_impl | milenage_alg |
static struct osmo_auth_impl | xor_alg |
static const uint8_t | table_0 [512] |
static const uint8_t | table_1 [256] |
static const uint8_t | table_2 [128] |
static const uint8_t | table_3 [64] |
static const uint8_t | table_4 [32] |
static const uint8_t * | _comp128_table [5] = { table_0, table_1, table_2, table_3, table_4 } |
static const uint8_t | table0 [256] |
static const uint8_t | table1 [256] |
GSM/GPRS/3G authentication core infrastructure.
#define OSMO_A5_MAX_KEY_LEN_BYTES (128/8) |
#define OSMO_MILENAGE_IND_BITLEN_MAX 28 |
enum osmo_auth_algo |
Authentication Algorithm.
See also osmo_auth_alg_name() and osmo_auth_alg_parse().
Enumerator | |
---|---|
OSMO_AUTH_ALG_NONE | |
OSMO_AUTH_ALG_COMP128v1 | |
OSMO_AUTH_ALG_COMP128v2 | |
OSMO_AUTH_ALG_COMP128v3 | |
OSMO_AUTH_ALG_XOR | |
OSMO_AUTH_ALG_MILENAGE | |
_OSMO_AUTH_ALG_NUM |
enum osmo_sub_auth_type |
|
static |
References c128v1_alg, and osmo_auth_register().
|
inlinestatic |
Referenced by comp128v1().
|
inlinestatic |
References _comp128_compression_round(), _comp128_table, and n.
Referenced by comp128v1().
|
inlinestatic |
References n.
Referenced by _comp128_compression().
|
inlinestatic |
Referenced by comp128v1().
|
static |
References table0, and table1.
Referenced by comp128v3().
|
static |
|
static |
|
static |
|
inlinestatic |
Referenced by osmo_auth_3g_from_2g().
void comp128 | ( | const uint8_t * | ki, |
const uint8_t * | rand, | ||
uint8_t * | sres, | ||
uint8_t * | kc | ||
) |
Perform COMP128v1 algorithm.
[in] | ki | Secret Key K(i) of subscriber |
[in] | rand | Random Challenge |
[out] | sres | user-supplied buffer for storing computed SRES value |
[out] | kc | user-supplied buffer for storing computed Kc value |
References comp128v1(), and sres.
void comp128v1 | ( | const uint8_t * | ki, |
const uint8_t * | rand, | ||
uint8_t * | sres, | ||
uint8_t * | kc | ||
) |
Perform COMP128v1 algorithm.
[in] | ki | Secret Key K(i) of subscriber |
[in] | rand | Random Challenge |
[out] | sres | user-supplied buffer for storing computed SRES value |
[out] | kc | user-supplied buffer for storing computed Kc value |
References _comp128_bitsfrombytes(), _comp128_compression(), _comp128_permutation(), and sres.
Referenced by comp128().
int comp128v2 | ( | const uint8_t * | ki, |
const uint8_t * | rand, | ||
uint8_t * | sres, | ||
uint8_t * | kc | ||
) |
Perform COMP128v2 algorithm.
[in] | ki | Secret Key K(i) of subscriber |
[in] | rand | Random Challenge |
[out] | sres | user-supplied buffer for storing computed SRES value |
[out] | kc | user-supplied buffer for storing computed Kc value |
References comp128v3(), and sres.
int comp128v3 | ( | const uint8_t * | ki, |
const uint8_t * | rand, | ||
uint8_t * | sres, | ||
uint8_t * | kc | ||
) |
Perform COMP128v3 algorithm.
[in] | ki | Secret Key K(i) of subscriber |
[in] | rand | Random Challenge |
[out] | sres | user-supplied buffer for storing computed SRES value |
[out] | kc | user-supplied buffer for storing computed Kc value |
References _comp128v23_internal(), and sres.
Referenced by comp128v2().
|
static |
References milenage_opc_gen(), OSMO_AUTH_TYPE_UMTS, osmo_sub_auth_data::type, osmo_sub_auth_data::u, and osmo_sub_auth_data::umts.
Referenced by milenage_gen_vec().
|
static |
|
static |
References osmo_auth_vector::auth_types, osmo_auth_vector::autn, osmo_auth_vector::ck, gen_opc_if_needed(), gsm_milenage(), osmo_auth_vector::ik, osmo_auth_vector::kc, milenage_generate(), OSMO_AUTH_TYPE_GSM, OSMO_AUTH_TYPE_UMTS, OSMO_MILENAGE_IND_BITLEN_MAX, osmo_auth_vector::res, osmo_auth_vector::res_len, osmo_auth_vector::sres, osmo_sub_auth_data::u, and osmo_sub_auth_data::umts.
|
static |
int osmo_auth_3g_from_2g | ( | struct osmo_auth_vector * | vec | ) |
Generate 3G CK + IK from 2G authentication vector.
vec | Authentication Vector to be modified |
This function performs the C5 and C4 functions to derive the UMTS key material from the GSM key material in the supplied vector, if the input vector doesn't yet have UMTS authentication capability.
References osmo_auth_vector::auth_types, c5_function(), osmo_auth_vector::ck, osmo_auth_vector::ik, osmo_auth_vector::kc, OSMO_AUTH_TYPE_GSM, OSMO_AUTH_TYPE_UMTS, and osmo_c4().
const char * osmo_auth_alg_name | ( | enum osmo_auth_algo | alg | ) |
Get human-readable name of authentication algorithm.
References auth_alg_vals, and get_value_string().
enum osmo_auth_algo osmo_auth_alg_parse | ( | const char * | name | ) |
Parse human-readable name of authentication algorithm.
void osmo_auth_c3 | ( | uint8_t | kc[], |
const uint8_t | ck[], | ||
const uint8_t | ik[] | ||
) |
Referenced by gsm_milenage(), and xor_gen_vec().
int osmo_auth_gen_vec | ( | struct osmo_auth_vector * | vec, |
struct osmo_sub_auth_data * | aud, | ||
const uint8_t * | _rand | ||
) |
Generate authentication vector.
[out] | vec | Generated authentication vector |
[in] | aud | Subscriber-specific key material |
[in] | _rand | Random challenge to be used |
This function performs the core cryptographic function of the AUC, computing authentication triples/quintuples based on the permanent subscriber data and a random value. The result is what is forwarded by the AUC via HLR and VLR to the MSC which will then be able to invoke authentication with the MS
References osmo_sub_auth_data::algo, osmo_auth_impl::gen_vec, osmo_auth_vector::rand, and selected_auths.
Referenced by oap_evaluate_challenge().
int osmo_auth_gen_vec_auts | ( | struct osmo_auth_vector * | vec, |
struct osmo_sub_auth_data * | aud, | ||
const uint8_t * | auts, | ||
const uint8_t * | rand_auts, | ||
const uint8_t * | _rand | ||
) |
Generate authentication vector and re-sync sequence.
[out] | vec | Generated authentication vector |
[in] | aud | Subscriber-specific key material |
[in] | auts | AUTS value sent by the SIM/MS |
[in] | rand_auts | RAND value sent by the SIM/MS |
[in] | _rand | Random challenge to be used to generate vector |
This function performs a special variant of the core cryptographic function of the AUC: computing authentication triples/quintuples based on the permanent subscriber data, a random value as well as the AUTS and RAND values returned by the SIM/MS. This special variant is needed if the sequence numbers between MS and AUC have for some reason become different.
int osmo_auth_load | ( | const char * | path | ) |
Load all available authentication plugins from the given path.
[in] | path | Path name of the directory containing the plugins |
This function will load all plugins contained in the specified path.
References osmo_plugin_load_all().
int osmo_auth_register | ( | struct osmo_auth_impl * | impl | ) |
Register an authentication algorithm implementation with the core.
[in] | impl | Structure describing implementation and it's callbacks |
This function is called by an authentication implementation plugin to register itself with the authentication core.
References osmo_auth_impl::algo, ARRAY_SIZE, osmo_auth_impl::list, llist_add_tail(), osmo_auth_impl::priority, and selected_auths.
Referenced by __attribute__().
int osmo_auth_supported | ( | enum osmo_auth_algo | algo | ) |
Determine if a given authentication algorithm is supported.
[in] | algo | Algorithm which should be checked |
This function is used by an application to determine at runtime if a given authentication algorithm is supported or not.
References osmo_auth_impl::algo, ARRAY_SIZE, and selected_auths.
void osmo_c4 | ( | uint8_t * | ck, |
const uint8_t * | kc | ||
) |
Referenced by _a5_3(), gea3(), and osmo_auth_3g_from_2g().
|
inlinestatic |
References get_value_string(), and osmo_sub_auth_type_names.
|
static |
References len.
Referenced by xor_gen_vec().
|
static |
Step 2: res = xdout
Suggested length for res is 128 bits, i.e. 16 bytes, but also can be in range: 30 < n < 128 bits.
3GPP TS 33.102, clause 6.8.1.2, b sres = c2(res) = res[0-3] ^ res[4-7] ^ res[8-11] ^ res[12-15]
3GPP TS 33.102, clause 6.8.1.2, c kc = c3(ck, ik) = ck[0-7] ^ ck[8-15] ^ ik[0-7] ^ ik[8-15] FIXME: do we really have CK/IK for GSM?
Step 3: cdout = sqn[0-5] || amf[0-1] NOTE (for USIM): sqn[0-5] = autn[0-5] ^ ak[0-5]
Step 5: autn = sqn ^ ak || amf || mac NOTE: cdout still contains SQN from step 3
References osmo_auth_vector::auth_types, osmo_auth_vector::autn, osmo_auth_vector::ck, ENOTSUP, osmo_sub_auth_data::gsm, osmo_auth_vector::ik, osmo_auth_vector::kc, osmo_auth_c3(), OSMO_AUTH_TYPE_GSM, OSMO_AUTH_TYPE_UMTS, osmo_auth_vector::res, osmo_auth_vector::res_len, osmo_auth_vector::sres, osmo_sub_auth_data::type, osmo_sub_auth_data::u, osmo_sub_auth_data::umts, and xor().
|
static |
Referenced by _comp128_compression().
enum osmo_auth_algo osmo_auth_impl::algo |
algorithm we implement
Referenced by osmo_auth_register(), and osmo_auth_supported().
enum osmo_auth_algo osmo_sub_auth_data::algo |
Referenced by osmo_auth_gen_vec().
uint8_t osmo_sub_auth_data::amf[2] |
uint8_t { ... } ::amf[2] |
|
static |
Referenced by osmo_auth_alg_name().
uint32_t osmo_auth_vector::auth_types |
bitmask of OSMO_AUTH_TYPE_*
Referenced by decode_auth_info(), encode_auth_info(), milenage_gen_vec(), osmo_auth_3g_from_2g(), and xor_gen_vec().
uint8_t osmo_auth_vector::autn[16] |
authentication nonce
Referenced by decode_auth_info(), encode_auth_info(), milenage_gen_vec(), oap_evaluate_challenge(), and xor_gen_vec().
|
static |
Referenced by __attribute__().
|
static |
Referenced by __attribute__().
|
static |
Referenced by __attribute__().
uint8_t osmo_auth_vector::ck[OSMO_A5_MAX_KEY_LEN_BYTES] |
ciphering key
Referenced by decode_auth_info(), encode_auth_info(), milenage_gen_vec(), osmo_auth_3g_from_2g(), and xor_gen_vec().
int(* osmo_auth_impl::gen_vec) (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *_rand) |
callback for generate authentication vectors
Referenced by osmo_auth_gen_vec().
int(* osmo_auth_impl::gen_vec_auts) (struct osmo_auth_vector *vec, struct osmo_sub_auth_data *aud, const uint8_t *auts, const uint8_t *rand_auts, const uint8_t *_rand) |
struct { ... } ::gsm |
struct { ... } osmo_sub_auth_data::gsm |
Referenced by xor_gen_vec().
uint8_t osmo_auth_vector::ik[OSMO_A5_MAX_KEY_LEN_BYTES] |
integrity key
Referenced by decode_auth_info(), encode_auth_info(), milenage_gen_vec(), osmo_auth_3g_from_2g(), and xor_gen_vec().
unsigned int osmo_sub_auth_data::ind |
which IND slot to use an SQN from
unsigned { ... } ::ind |
which IND slot to use an SQN from
unsigned int osmo_sub_auth_data::ind_bitlen |
nr of bits not in SEQ, only SQN
unsigned { ... } ::ind_bitlen |
nr of bits not in SEQ, only SQN
uint8_t { ... } ::k[OSMO_A5_MAX_KEY_LEN_BYTES] |
secret key of the subscriber
uint8_t osmo_sub_auth_data::k[OSMO_A5_MAX_KEY_LEN_BYTES] |
secret key of the subscriber
uint8_t osmo_auth_vector::kc[8] |
Kc for GSM encryption (A5)
Referenced by decode_auth_info(), encode_auth_info(), milenage_gen_vec(), osmo_auth_3g_from_2g(), and xor_gen_vec().
uint8_t osmo_sub_auth_data::ki[OSMO_A5_MAX_KEY_LEN_BYTES] |
secret key
uint8_t { ... } ::ki[OSMO_A5_MAX_KEY_LEN_BYTES] |
secret key
struct llist_head osmo_auth_impl::list |
Referenced by osmo_auth_register().
|
static |
Referenced by __attribute__().
const char* osmo_auth_impl::name |
name of the implementation
uint8_t osmo_sub_auth_data::opc[16] |
operator invariant value
uint8_t { ... } ::opc[16] |
operator invariant value
int osmo_sub_auth_data::opc_is_op |
is the OPC field OPC (0) or OP (1) ?
int { ... } ::opc_is_op |
is the OPC field OPC (0) or OP (1) ?
|
extern |
Referenced by osmo_sub_auth_type_name().
const struct value_string osmo_sub_auth_type_names[] |
Referenced by osmo_sub_auth_type_name().
unsigned int osmo_auth_impl::priority |
uint8_t osmo_auth_vector::rand[16] |
random challenge
Referenced by decode_auth_info(), encode_auth_info(), and osmo_auth_gen_vec().
uint8_t osmo_auth_vector::res[16] |
authentication result
Referenced by decode_auth_info(), encode_auth_info(), milenage_gen_vec(), oap_evaluate_challenge(), and xor_gen_vec().
uint8_t osmo_auth_vector::res_len |
length (in bytes) of res
Referenced by decode_auth_info(), encode_auth_info(), milenage_gen_vec(), oap_evaluate_challenge(), and xor_gen_vec().
|
static |
Referenced by osmo_auth_gen_vec(), osmo_auth_register(), and osmo_auth_supported().
uint64_t osmo_sub_auth_data::sqn |
sequence number (in: prev sqn; out: used sqn)
uint64_t { ... } ::sqn |
sequence number (in: prev sqn; out: used sqn)
uint64_t osmo_sub_auth_data::sqn_ms |
sqn from AUTS (output value only)
uint64_t { ... } ::sqn_ms |
sqn from AUTS (output value only)
uint8_t osmo_auth_vector::sres[4] |
authentication result for GSM
Referenced by decode_auth_info(), encode_auth_info(), milenage_gen_vec(), and xor_gen_vec().
|
static |
Referenced by _comp128v23_internal().
|
static |
Referenced by _comp128v23_internal().
|
static |
|
static |
|
static |
|
static |
|
static |
enum osmo_sub_auth_type osmo_sub_auth_data::type |
Referenced by gen_opc_if_needed(), oap_evaluate_challenge(), and xor_gen_vec().
union { ... } osmo_sub_auth_data::u |
Referenced by gen_opc_if_needed(), milenage_gen_vec(), oap_evaluate_challenge(), and xor_gen_vec().
struct { ... } ::umts |
struct { ... } osmo_sub_auth_data::umts |
Referenced by gen_opc_if_needed(), milenage_gen_vec(), oap_evaluate_challenge(), and xor_gen_vec().
|
static |
Referenced by __attribute__().