Auth

## Functions

static | LLIST_HEAD (osmo_auths)
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...
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 *rand_auts, const uint8_t *auts, const uint8_t *_rand)
| Generate authentication vector and re-sync sequence. More...
const char * | osmo_auth_alg_name (enum osmo_auth_algo alg)
| Get human-readable name of authentication algorithm.
enum osmo_auth_algo | osmo_auth_alg_parse (const char *name)
| Parse human-readable name of authentication algorithm.

## Variables

static struct osmo_auth_impl * | selected_auths [_OSMO_AUTH_ALG_NUM]
static const struct value_string | auth_alg_vals []

## Detailed Description

## Function Documentation

## osmo_auth_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.

Parameters

  [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

## osmo_auth_gen_vec_auts()

int osmo_auth_gen_vec_auts | ( | struct osmo_auth_vector * | vec,
|  | struct osmo_sub_auth_data * | aud,
|  | const uint8_t * | rand_auts,
|  | const uint8_t * | auts,
|  | const uint8_t * | _rand
| ) |  |

Generate authentication vector and re-sync sequence.

Parameters

  [out] | vec | Generated authentication vector
  [in] | aud | Subscriber-specific key material
  [in] | rand_auts | RAND value sent by the SIM/MS
  [in] | auts | AUTS 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 diffrent.

## osmo_auth_load()

int osmo_auth_load | ( | const char * | path | ) |

Load all available authentication plugins from the given path.

Parameters

  [in] | path | Path name of the directory containing the plugins

This function will load all plugins contained in the specified path.

## osmo_auth_register()

int osmo_auth_register | ( | struct osmo_auth_impl * | impl | ) |

Register an authentication algorithm implementation with the core.

Parameters

  [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.

## osmo_auth_supported()

int osmo_auth_supported | ( | enum osmo_auth_algo | algo | ) |

Determine if a given authentication algorithm is supported.

Parameters

  [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.

## Variable Documentation

## auth_alg_vals

const struct value_string auth_alg_vals[]

static

Initial value:
= {
{ OSMO_AUTH_ALG_NONE, "None" },
{ OSMO_AUTH_ALG_COMP128v1, "COMP128v1" },
{ OSMO_AUTH_ALG_COMP128v2, "COMP128v2" },
{ OSMO_AUTH_ALG_COMP128v3, "COMP128v3" },
{ OSMO_AUTH_ALG_XOR, "XOR" },
{ OSMO_AUTH_ALG_MILENAGE, "MILENAGE" },
{ 0, NULL }
}