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

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

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.

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.

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.

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

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 }
}