libosmogsm: Support authentication with 256-bit K and/or OP/OPc

3GPP TS 33.102 Section 6.3.7 states that K can be 128 or 256 bits,
while our 'struct osmo_sub_auth_data' had a fixed-size 128bit field.

This means we cannot use our auth_core for algorithms with larger
key sizes, such as TUAK.  Let's introduce osmo_sub_auth_data2 for
larger (and variable) sized K and OP[c].

K and OP[c] can even have different sizes in TUAK, where OP[c] is
always 256bit, but K can be 128 or 256 bits.  So we need separate
length fields for K and OP[c].

I'm adding backwards-compatibility API wrappers, so old applications
just continue to work as they always did.

However, I'm not adding compatibility wrappers for the plug-in API
that can be used to register additional authentication implementations
at runtime.  We don't know of any user of that API outside of
libosmocore, so the function signatures of the 'struct osmo_auth_impl'
are modified in an incompatible way.

Change-Id: Ie775fedba4a3fa12314c0f7c8a369662ef6a40df
diff --git a/src/gsm/auth_comp128v23.c b/src/gsm/auth_comp128v23.c
index 91fb259..697858a 100644
--- a/src/gsm/auth_comp128v23.c
+++ b/src/gsm/auth_comp128v23.c
@@ -29,7 +29,7 @@
  */
 
 static int c128v2_gen_vec(struct osmo_auth_vector *vec,
-			  struct osmo_sub_auth_data *aud,
+			  struct osmo_sub_auth_data2 *aud,
 			  const uint8_t *_rand)
 {
 	comp128v2(aud->u.gsm.ki, _rand, vec->sres, vec->kc);
@@ -46,7 +46,7 @@
 };
 
 static int c128v3_gen_vec(struct osmo_auth_vector *vec,
-			  struct osmo_sub_auth_data *aud,
+			  struct osmo_sub_auth_data2 *aud,
 			  const uint8_t *_rand)
 {
 	comp128v3(aud->u.gsm.ki, _rand, vec->sres, vec->kc);