libosmogsm: Add support for TUAK authentication algorithm

The TUAK algorithm is specified in 3GPP TS 35.231, 232 and 233 and
intended as an alternative to MILENAGE.  It's based around the
cryptographic function of KeccakP1600, which is part of SHA-3.

This patch adds support for TUAK to the libosmogsm authentication
core API via 'struct osmo_auth_impl'.

Unit tests covering the test cases from the 3GPP specification are added
(and are all passing).

Change-Id: Ib905b8d8bdf248e8299bf50666ee1bca8298433d
diff --git a/tests/Makefile.am b/tests/Makefile.am
index c6027a9..8df9d56 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -10,7 +10,8 @@
 
 check_PROGRAMS = timer/timer_test sms/sms_test ussd/ussd_test		\
                  bits/bitrev_test a5/a5_test		                \
-                 conv/conv_test auth/milenage_test lapd/lapd_test	\
+                 conv/conv_test auth/milenage_test auth/tuak_test	\
+		 lapd/lapd_test						\
                  gsm0808/gsm0808_test gsm0408/gsm0408_test		\
 		 gprs/gprs_test	kasumi/kasumi_test gea/gea_test		\
 		 logging/logging_test codec/codec_test			\
@@ -115,6 +116,10 @@
 auth_milenage_test_SOURCES = auth/milenage_test.c
 auth_milenage_test_LDADD = $(top_builddir)/src/gsm/libosmogsm.la $(LDADD)
 
+auth_tuak_test_SOURCES = auth/tuak_test.c
+auth_tuak_test_LDADD = $(top_builddir)/src/gsm/libgsmint.la $(LDADD)
+auth_tuak_test_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_srcdir)/src
+
 auth_xor2g_test_SOURCES = auth/xor2g_test.c
 auth_xor2g_test_LDADD = $(top_builddir)/src/gsm/libosmogsm.la $(LDADD)
 
@@ -393,6 +398,7 @@
              timer/timer_test.ok sms/sms_test.ok ussd/ussd_test.ok	\
              bits/bitrev_test.ok a5/a5_test.ok				\
              conv/conv_test.ok auth/milenage_test.ok ctrl/ctrl_test.ok	\
+	     auth/tuak_test.ok					\
              auth/xor2g_test.ok						\
              lapd/lapd_test.ok						\
              gsm0408/gsm0408_test.ok gsm0408/gsm0408_test.err		\
@@ -535,6 +541,8 @@
 		>$(srcdir)/ussd/ussd_test.ok
 	auth/milenage_test \
 		>$(srcdir)/auth/milenage_test.ok
+	auth/tuak_test \
+		>$(srcdir)/auth/tuak_test.ok
 	comp128/comp128_test \
 		>$(srcdir)/comp128/comp128_test.ok
 	lapd/lapd_test \