aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/crypt/auth.h2
-rw-r--r--src/gsm/a5.c4
-rw-r--r--src/gsm/auth_core.c4
3 files changed, 5 insertions, 5 deletions
diff --git a/include/osmocom/crypt/auth.h b/include/osmocom/crypt/auth.h
index bed48e78..37b8a8ad 100644
--- a/include/osmocom/crypt/auth.h
+++ b/include/osmocom/crypt/auth.h
@@ -91,7 +91,7 @@ int osmo_auth_register(struct osmo_auth_impl *impl);
int osmo_auth_load(const char *path);
int osmo_auth_supported(enum osmo_auth_algo algo);
-
+void osmo_c4(uint8_t *ck, const uint8_t *kc);
const char *osmo_auth_alg_name(enum osmo_auth_algo alg);
enum osmo_auth_algo osmo_auth_alg_parse(const char *name);
diff --git a/src/gsm/a5.c b/src/gsm/a5.c
index f1fd697e..dbba0f20 100644
--- a/src/gsm/a5.c
+++ b/src/gsm/a5.c
@@ -40,6 +40,7 @@
#include <osmocom/gsm/a5.h>
#include <osmocom/gsm/kasumi.h>
+#include <osmocom/crypt/auth.h>
/* Somme OS (like Nuttx) don't have ENOTSUP */
#ifndef ENOTSUP
@@ -95,8 +96,7 @@ void
_a5_3(const uint8_t *key, uint32_t fn, ubit_t *dl, ubit_t *ul, bool fn_correct)
{
uint8_t ck[16];
- memcpy(ck, key, 8);
- memcpy(ck + 8, key, 8);
+ osmo_c4(ck, key);
/* internal function require 128 bit key so we expand by concatenating supplied 64 bit key */
_a5_4(ck, fn, dl, ul, fn_correct);
}
diff --git a/src/gsm/auth_core.c b/src/gsm/auth_core.c
index f1ec2ed4..3aac0694 100644
--- a/src/gsm/auth_core.c
+++ b/src/gsm/auth_core.c
@@ -106,7 +106,7 @@ static inline void c5_function(uint8_t *ik, const uint8_t *kc)
}
/* C4 function to derive UMTS CK from GSM Kc */
-static inline void c4_function(uint8_t *ck, const uint8_t *kc)
+void osmo_c4(uint8_t *ck, const uint8_t *kc)
{
memcpy(ck, kc, 8);
memcpy(ck+8, kc, 8);
@@ -125,7 +125,7 @@ int osmo_auth_3g_from_2g(struct osmo_auth_vector *vec)
if ((vec->auth_types & OSMO_AUTH_TYPE_GSM) &&
!(vec->auth_types & OSMO_AUTH_TYPE_UMTS)) {
c5_function(vec->ik, vec->kc);
- c4_function(vec->ck, vec->kc);
+ osmo_c4(vec->ck, vec->kc);
/* We cannot actually set OSMO_AUTH_TYPE_UMTS as we have no
* AUTN and no RES, and thus can only perform GSM
* authentication with this tuple.