aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2016-06-30 10:39:00 +0200
committerHarald Welte <laforge@gnumonks.org>2016-07-11 19:15:24 +0000
commit4f169500df996d0a7a804da77bae07b2ecd0d813 (patch)
treea7904447e291f1782837d03e4702543541d10b30 /include
parent02a66728856d6a111ef61eca2cc052df052579a9 (diff)
Add GEA3 & GEA4 ciphers
Corresponding test code include both official test vectors from the specs and data from over-the-air tests. This obsoletes libosmo-crypt-a53 as it was last missing piece unimplemented in libosmogsm. Change-Id: I939e4f6b91b4a7c591ef3761fe2d46ed1c2fb2d3 Related: OS#1582
Diffstat (limited to 'include')
-rw-r--r--include/Makefile.am2
-rw-r--r--include/osmocom/crypt/gprs_cipher.h2
-rw-r--r--include/osmocom/gsm/gea.h17
3 files changed, 20 insertions, 1 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index 7aa9c273..479e665d 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -131,7 +131,7 @@ endif
noinst_HEADERS = \
osmocom/core/timer_compat.h \
- osmocom/gsm/kasumi.h
+ osmocom/gsm/kasumi.h osmocom/gsm/gea.h
osmocom/core/bit%gen.h: osmocom/core/bitXXgen.h.tpl
$(AM_V_GEN)$(MKDIR_P) $(dir $@)
diff --git a/include/osmocom/crypt/gprs_cipher.h b/include/osmocom/crypt/gprs_cipher.h
index d2425955..c302f10b 100644
--- a/include/osmocom/crypt/gprs_cipher.h
+++ b/include/osmocom/crypt/gprs_cipher.h
@@ -3,6 +3,8 @@
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/utils.h>
+#include <stdint.h>
+
#define GSM0464_CIPH_MAX_BLOCK 1523
/* 3GPP TS 24.008 ยง 10.5.5.3 */
diff --git a/include/osmocom/gsm/gea.h b/include/osmocom/gsm/gea.h
new file mode 100644
index 00000000..3051101d
--- /dev/null
+++ b/include/osmocom/gsm/gea.h
@@ -0,0 +1,17 @@
+/*
+ * GEA3 header
+ *
+ * See gea.c for details
+ */
+
+#pragma once
+
+#include <osmocom/crypt/gprs_cipher.h>
+
+#include <stdint.h>
+
+int gea3(uint8_t *out, uint16_t len, uint8_t *kc, uint32_t iv,
+ enum gprs_cipher_direction direct);
+
+int gea4(uint8_t *out, uint16_t len, uint8_t *kc, uint32_t iv,
+ enum gprs_cipher_direction direct);