diff options
author | Max <msuraev@sysmocom.de> | 2017-07-10 14:32:48 +0200 |
---|---|---|
committer | Max <msuraev@sysmocom.de> | 2017-10-09 10:18:07 +0000 |
commit | 4b2b0cc15d51d7916a939de06a7e83d8042211dc (patch) | |
tree | 46f9a1c95554b341dc94fc303b70ae3a93e7cfa0 /include | |
parent | 81dc67d03f9e1881a6115be51cd92956f5932e43 (diff) |
Add function to generate random identifier
The function is a wrapper on top of getrandom() (if available via glibc) or
corresponding syscall. If neither is available than failure is always
returned.
It's intended to generate small random data good enough for session
identifiers and keys. To generate long-term cryptographic keys it's
better to use special crypto libraries (like GnuTLS for example)
instead.
As an example it's used to replace old insecure random number generator
in osmo-auc-gen utility.
Change-Id: I0241b814ea4c4ce1458f7ad76e31d390383c2048
Related: OS#1694
Diffstat (limited to 'include')
-rw-r--r-- | include/osmocom/gsm/gsm_utils.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/osmocom/gsm/gsm_utils.h b/include/osmocom/gsm/gsm_utils.h index bfcef08b..83e29cac 100644 --- a/include/osmocom/gsm/gsm_utils.h +++ b/include/osmocom/gsm/gsm_utils.h @@ -38,6 +38,9 @@ #define GSM_MAX_FN (26*51*2048) +/* Max length of random identifier which can be requested via osmo_get_rand_id() */ +#define OSMO_MAX_RAND_ID_LEN 16 + struct gsm_time { uint32_t fn; /* FN count */ uint16_t t1; /* FN div (26*51) */ @@ -60,6 +63,8 @@ enum gsm_band { const char *gsm_band_name(enum gsm_band band); enum gsm_band gsm_band_parse(const char *mhz); +int osmo_get_rand_id(uint8_t *out, size_t len); + /*! * Decode a sequence of GSM 03.38 encoded 7 bit characters. * |