libosmogsm  0.11.0-dirty
Osmocom GSM library
Crypto

Functions

static LLIST_HEAD (gprs_ciphers)
int gprs_cipher_register (struct gprs_cipher_impl *ciph)
int gprs_cipher_load (const char *path)
int gprs_cipher_run (uint8_t *out, uint16_t len, enum gprs_ciph_algo algo, uint8_t *kc, uint32_t iv, enum gprs_cipher_direction dir)
unsigned gprs_cipher_key_length (enum gprs_ciph_algo algo)
 Obtain key lenght for given GPRS cipher.
int gprs_cipher_supported (enum gprs_ciph_algo algo)
uint32_t gprs_cipher_gen_input_ui (uint32_t iov_ui, uint8_t sapi, uint32_t lfn, uint32_t oc)
uint32_t gprs_cipher_gen_input_i (uint32_t iov_i, uint32_t lfn, uint32_t oc)
static __attribute__ ((constructor))

Variables

static struct gprs_cipher_implselected_ciphers [_GPRS_ALGO_NUM]
struct value_string gprs_cipher_names []
static struct gprs_cipher_impl gea3_impl
static struct gprs_cipher_impl gea4_impl

Function Documentation

static __attribute__ ( (constructor)  ) [static]
uint32_t gprs_cipher_gen_input_i ( uint32_t  iov_i,
uint32_t  lfn,
uint32_t  oc 
)
uint32_t gprs_cipher_gen_input_ui ( uint32_t  iov_ui,
uint8_t  sapi,
uint32_t  lfn,
uint32_t  oc 
)
unsigned gprs_cipher_key_length ( enum gprs_ciph_algo  algo)

Obtain key lenght for given GPRS cipher.

Parameters:
[in]algoEnum representive GPRS cipher
Returns:
unsigned integer key length for supported algorithms, for GEA0 and unknown ciphers will return 0

References GPRS_ALGO_GEA0, GPRS_ALGO_GEA1, GPRS_ALGO_GEA2, GPRS_ALGO_GEA3, and GPRS_ALGO_GEA4.

Referenced by gea3().

int gprs_cipher_load ( const char *  path)
int gprs_cipher_run ( uint8_t *  out,
uint16_t  len,
enum gprs_ciph_algo  algo,
uint8_t *  kc,
uint32_t  iv,
enum gprs_cipher_direction  dir 
)

References ARRAY_SIZE.

static LLIST_HEAD ( gprs_ciphers  ) [static]

Variable Documentation

struct gprs_cipher_impl gea3_impl [static]
Initial value:
 {
        .algo = GPRS_ALGO_GEA3,
        .name = "GEA3 (libosmogsm built-in)",
        .priority = 100,
        .run = &gea3,
}
struct gprs_cipher_impl gea4_impl [static]
Initial value:
 {
        .algo = GPRS_ALGO_GEA4,
        .name = "GEA4 (libosmogsm built-in)",
        .priority = 100,
        .run = &gea4,
}
Initial value:
 {
        { GPRS_ALGO_GEA0, "GEA0" },
        { GPRS_ALGO_GEA1, "GEA1" },
        { GPRS_ALGO_GEA2, "GEA2" },
        { GPRS_ALGO_GEA3, "GEA3" },
        { GPRS_ALGO_GEA4, "GEA4" },
        { 0, NULL },
}
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines