Port to new libosmogsm 'struct osmo_sub_auth_data2'

libosmogsm has recently introdcued a 'struct osmo_sub_auth_data2' as
successor to 'struct osmo_sub_auth_data', together with updated
osmo_auth_gen_vec2/osmo_auth_gen_vec_auts2 API.

The rationale of this new API is to enable
* support for AKA algorithms which use K and/or OP[c] values of 256bit
  (instead of the classic 128bit)
* support for RES length sizes of 4 and 16 bytes (instead of the classic
  8 bytes)

This commit just jumps over to the new API without adding any related
functionality to osmo-hlr.  The latter is left for subsequent commits.

Change-Id: I3207c7bfb73e9ff5471e5c26b66639549e4d48a2
Depends: libosmocore.git Ie775fedba4a3fa12314c0f7c8a369662ef6a40df
diff --git a/tests/db/db_test.c b/tests/db/db_test.c
index 6727812..bdf1393 100644
--- a/tests/db/db_test.c
+++ b/tests/db/db_test.c
@@ -122,16 +122,16 @@
 /* Not linking the real auc_compute_vectors(), just returning num_vec.
  * This gets called by db_get_auc(), but we're only interested in its rc. */
 int auc_compute_vectors(struct osmo_auth_vector *vec, unsigned int num_vec,
-			struct osmo_sub_auth_data *aud2g,
-			struct osmo_sub_auth_data *aud3g,
+			struct osmo_sub_auth_data2 *aud2g,
+			struct osmo_sub_auth_data2 *aud3g,
 			const uint8_t *rand_auts, const uint8_t *auts)
 { return num_vec; }
 
 static struct db_context *dbc = NULL;
 static void *ctx = NULL;
 static struct hlr_subscriber g_subscr;
-static struct osmo_sub_auth_data g_aud2g;
-static struct osmo_sub_auth_data g_aud3g;
+static struct osmo_sub_auth_data2 g_aud2g;
+static struct osmo_sub_auth_data2 g_aud3g;
 static int g_rc;
 static int64_t g_id;
 
@@ -180,18 +180,21 @@
 #undef Pb
 }
 
-void dump_aud(const char *label, struct osmo_sub_auth_data *aud)
+void dump_aud(const char *label, struct osmo_sub_auth_data2 *aud)
 {
 	if (aud->type == OSMO_AUTH_TYPE_NONE) {
 		fprintf(stderr, "%s: none\n", label);
 		return;
 	}
 
-	fprintf(stderr, "%s: struct osmo_sub_auth_data {\n", label);
+	fprintf(stderr, "%s: struct osmo_sub_auth_data2 {\n", label);
 #define Pf(name, fmt) \
 	Pfo(name, fmt, aud)
 #define Phex(name) \
 	Pfv(name, "'%s'", osmo_hexdump_nospc(aud->name, sizeof(aud->name)))
+#define Phexl(name, len) \
+	Pfv(name, "'%s'", osmo_hexdump_nospc(aud->name, aud->len))
+
 
 	Pfv(type, "%s", osmo_sub_auth_type_name(aud->type));
 	Pfv(algo, "%s", osmo_auth_alg_name(aud->algo));
@@ -200,9 +203,9 @@
 		Phex(u.gsm.ki);
 		break;
 	case OSMO_AUTH_TYPE_UMTS:
-		Phex(u.umts.opc);
+		Phexl(u.umts.opc, u.umts.opc_len);
 		Pf(u.umts.opc_is_op, "%u");
-		Phex(u.umts.k);
+		Phexl(u.umts.k, u.umts.k_len);
 		Phex(u.umts.amf);
 		if (aud->u.umts.sqn) {
 			Pf(u.umts.sqn, "%"PRIu64);
@@ -219,6 +222,7 @@
 
 #undef Pf
 #undef Phex
+#undef Phexl
 }
 
 void db_raw_sql(struct db_context *dbc, const char *sql)
diff --git a/tests/db/db_test.err b/tests/db/db_test.err
index 222d3a1..dee85e0 100644
--- a/tests/db/db_test.err
+++ b/tests/db/db_test.err
@@ -824,7 +824,7 @@
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 DAUC IMSI='123456789000000': No 3G Auth Data
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v1,
   .u.gsm.ki = '0123456789abcdef0123456789abcdef',
@@ -841,7 +841,7 @@
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 DAUC IMSI='123456789000000': No 3G Auth Data
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v1,
   .u.gsm.ki = '0123456789abcdef0123456789abcdef',
@@ -853,7 +853,7 @@
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 DAUC IMSI='123456789000000': No 3G Auth Data
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v2,
   .u.gsm.ki = 'beadedbeeaced1ebbeddefacedfacade',
@@ -865,7 +865,7 @@
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 DAUC IMSI='123456789000000': No 3G Auth Data
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'deafbeddedbabeacceededfadeddecaf',
@@ -877,7 +877,7 @@
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 DAUC IMSI='123456789000000': No 3G Auth Data
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = XOR-2G,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
@@ -905,7 +905,7 @@
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 DAUC IMSI='123456789000000': No 3G Auth Data
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = XOR-2G,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
@@ -932,7 +932,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -954,7 +954,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -970,7 +970,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'deaf0ff1ced0d0dabbedd1ced1cef00d',
@@ -985,7 +985,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1001,7 +1001,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
@@ -1033,7 +1033,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'cededeffacedacefacedbadfadedbeef',
@@ -1069,12 +1069,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1097,12 +1097,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1117,12 +1117,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1137,12 +1137,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1157,12 +1157,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1177,12 +1177,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1197,12 +1197,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1217,12 +1217,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1237,12 +1237,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1257,12 +1257,12 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> 0
 
-2G: struct osmo_sub_auth_data {
+2G: struct osmo_sub_auth_data2 {
   .type = GSM,
   .algo = COMP128v3,
   .u.gsm.ki = 'cededeffacedacefacedbadfadedbeef',
 }
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1338,7 +1338,7 @@
 sqlite3_step(stmt) --> SQLITE_DONE
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -ENOKEY
-DAUC IMSI='123456789000000': Error reading Ki, expected length 16 but has length 15
+DAUC IMSI='123456789000000': Error reading Ki, expected min length 16 but has length 15
 DAUC IMSI='123456789000000': No 3G Auth Data
 
 
@@ -1359,7 +1359,7 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -5
 DAUC IMSI='123456789000000': No 2G Auth Data
-DAUC IMSI='123456789000000': Error reading K, expected length 16 but has length 15
+DAUC IMSI='123456789000000': Error reading K, expected min length 16 but has length 15
 
 
 
@@ -1374,7 +1374,7 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -5
 DAUC IMSI='123456789000000': No 2G Auth Data
-DAUC IMSI='123456789000000': Error reading OP, expected length 16 but has length 15
+DAUC IMSI='123456789000000': Error reading OP, expected min length 16 but has length 15
 
 
 
@@ -1389,7 +1389,7 @@
 
 db_get_auth_data(dbc, imsi0, &g_aud2g, &g_aud3g, &g_id) --> -5
 DAUC IMSI='123456789000000': No 2G Auth Data
-DAUC IMSI='123456789000000': Error reading OPC, expected length 16 but has length 15
+DAUC IMSI='123456789000000': Error reading OPC, expected min length 16 but has length 15
 
 
 
@@ -1458,7 +1458,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1477,7 +1477,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1495,7 +1495,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1513,7 +1513,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1534,7 +1534,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1550,7 +1550,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1568,7 +1568,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',
@@ -1586,7 +1586,7 @@
 DAUC IMSI='123456789000000': No 2G Auth Data
 
 2G: none
-3G: struct osmo_sub_auth_data {
+3G: struct osmo_sub_auth_data2 {
   .type = UMTS,
   .algo = MILENAGE,
   .u.umts.opc = 'beefedcafefaceacedaddeddecadefee',