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
diff --git a/include/osmocom/crypt/gprs_cipher.h b/include/osmocom/crypt/gprs_cipher.h
index d242595..c302f10 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 0000000..3051101
--- /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);