diff options
-rw-r--r-- | include/osmocom/gsm/a5.h | 2 | ||||
-rw-r--r-- | src/gsm/a5.c | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/include/osmocom/gsm/a5.h b/include/osmocom/gsm/a5.h index 649dbab1..2f78a92b 100644 --- a/include/osmocom/gsm/a5.h +++ b/include/osmocom/gsm/a5.h @@ -54,7 +54,7 @@ osmo_a5_fn_count(uint32_t fn) * - fn is the _real_ GSM frame number. * (converted internally to fn_count) */ -void osmo_a5(int n, const uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul); +int osmo_a5(int n, const uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul); void osmo_a5_1(const uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul); void osmo_a5_2(const uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul); diff --git a/src/gsm/a5.c b/src/gsm/a5.c index 356060ab..de821e89 100644 --- a/src/gsm/a5.c +++ b/src/gsm/a5.c @@ -34,6 +34,7 @@ * \brief Osmocom GSM A5 ciphering algorithm implementation */ +#include <errno.h> #include <string.h> #include <osmocom/gsm/a5.h> @@ -44,11 +45,12 @@ * \param[in] fn Frame number * \param[out] dl Pointer to array of ubits to return Downlink cipher stream * \param[out] ul Pointer to array of ubits to return Uplink cipher stream + * \returns 0 for success, -ENOTSUP for invalid cipher selection. * * Currently A5/[0-2] are supported. * Either (or both) of dl/ul can be NULL if not needed. */ -void +int osmo_a5(int n, const uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul) { switch (n) @@ -70,8 +72,10 @@ osmo_a5(int n, const uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul) default: /* a5/[3..7] not supported here/yet */ - break; + return -ENOTSUP; } + + return 0; } |