[PATCH] osmo-hlr[master]: cosmetic: refactor auc_compute_vectors(), add debug log

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Wed Feb 22 02:26:28 UTC 2017


Review at  https://gerrit.osmocom.org/1869

cosmetic: refactor auc_compute_vectors(), add debug log

Make the generation logic easier to understand (hopefully).

Massively extend debug logging, which serves to illustrate the current AUTS
failure shown by auc_3g_test.

Since DAUC now logs the vectors, there is no need to print the vectors in
VEC_IS() in auc_3g_test and auc_ts_55_205_test_sets anymore. Adjust testlog
expectations accordingly.

Change-Id: Ifb36d010a4ac64c765517e15b9074424ec19cc60
---
M src/auc.c
M tests/auc/auc_3g_test.c
M tests/auc/auc_3g_test.err
M tests/auc/auc_ts_55_205_test_sets.err
M tests/auc/gen_ts_55_205_test_sets/main_template.c
5 files changed, 522 insertions(+), 393 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-hlr refs/changes/69/1869/1

diff --git a/src/auc.c b/src/auc.c
index a307931..f4d19a0 100644
--- a/src/auc.c
+++ b/src/auc.c
@@ -18,12 +18,16 @@
  */
 
 #include <string.h>
+#include <inttypes.h>
 
 #include <osmocom/core/utils.h>
 #include <osmocom/crypt/auth.h>
 
 #include "logging.h"
 #include "rand.h"
+
+#define hexb(buf) osmo_hexdump_nospc((void*)buf, sizeof(buf))
+#define hex(buf,sz) osmo_hexdump_nospc((void*)buf, sz)
 
 /* compute given number of vectors using either aud2g or aud2g or a combination
  * of both.  Handles re-synchronization if rand_auts and auts are set */
@@ -34,7 +38,16 @@
 {
 	unsigned int i;
 	uint8_t rand[16];
+	struct osmo_auth_vector vtmp;
 	int rc;
+
+	/* no need to iterate the log categories all the time */
+	int dbg = log_check_level(DAUC, LOGL_DEBUG);
+#define DBGP(args ...) if (dbg) DEBUGP(DAUC, ##args)
+#define DBGVB(member) DBGP("vector [%u]: " #member " = %s\n", \
+			   i, hexb(vec[i].member))
+#define DBGVV(fmt, member) DBGP("vector [%u]: " #member " = " fmt "\n", \
+			        i, vec[i].member)
 
 	if (aud2g && (aud2g->algo == OSMO_AUTH_ALG_NONE
 		      || aud2g->type == OSMO_AUTH_TYPE_NONE))
@@ -73,59 +86,100 @@
 		return -1;
 	}
 
-	/* compute quintuples */
+	DBGP("Computing %d auth vector%s: %s%s\n",
+	     num_vec, num_vec == 1 ? "" : "s",
+	     aud3g? (aud2g? "3G + separate 2G"
+		     : "3G only (2G derived from 3G keys)")
+	     : "2G only",
+	     auts? ", with AUTS resync" : "");
+	if (aud3g) {
+		DBGP("3G: k = %s\n", hexb(aud3g->u.umts.k));
+		DBGP("3G: %s = %s\n",
+		     aud3g->u.umts.opc_is_op? "OP" : "opc",
+		     hexb(aud3g->u.umts.opc));
+	}
+	if (aud2g)
+		DBGP("2G: ki = %s\n", hexb(aud2g->u.gsm.ki));
+
 	for (i = 0; i < num_vec; i++) {
 		rc = rand_get(rand, sizeof(rand));
-		DEBUGP(DAUC, "rand %s\n", osmo_hexdump_nospc(rand, sizeof(rand)));
 		if (rc != sizeof(rand)) {
 			LOGP(DAUC, LOGL_ERROR, "Unable to read %zu random "
 			     "bytes: rc=%d\n", sizeof(rand), rc);
 			goto out;
 		}
+		DBGP("vector [%u]: rand = %s\n", i, hexb(rand));
 
-		if (aud2g && !aud3g) {
-			/* 2G only case: output directly to vec */
-			DEBUGP(DAUC, "compute vector [%u]/%u: 2G only\n",
-			       i, num_vec);
-			rc = osmo_auth_gen_vec(vec+i, aud2g, rand);
-			if (rc < 0) {
-				LOGP(DAUC, LOGL_ERROR, "Error in 2G vector "
-				     "generation: %d\n", rc);
-				goto out;
-			}
-		} else if (aud3g) {
+		if (aud3g) {
 			/* 3G or 3G + 2G case */
-			if (!aud2g)
-				DEBUGP(DAUC, "compute vector [%u]/%u: 3G only\n",
-				       i, num_vec);
-			if (rand_auts && auts)
-				rc = osmo_auth_gen_vec_auts(vec+i, aud3g,
-							    auts, rand_auts,
-							    rand);
-			else
+
+			if (auts) {
+				DBGP("vector [%u]: resync: auts = %s\n",
+				     i, hex(auts, 14));
+				DBGP("vector [%u]: resync: rand_auts = %s\n",
+				     i, hex(rand_auts, 16));
+
+				rc = osmo_auth_gen_vec_auts(vec+i, aud3g, auts,
+							    rand_auts, rand);
+				/* The sqn used for the key is sqn - 1 because
+				 * vector generation has already inc'd it. The
+				 * USIM's sqn sent in AUTS is sqn - 2. */
+				DBGP("vector [%u]: resync: sqn = %"PRIu64 "\n",
+				     i, aud3g->u.umts.sqn - 1);
+			} else {
+				DBGP("vector [%u]: sqn = %" PRIu64 "\n",
+				     i, aud3g->u.umts.sqn);
 				rc = osmo_auth_gen_vec(vec+i, aud3g, rand);
+			}
 			if (rc < 0) {
 				LOGP(DAUC, LOGL_ERROR, "Error in 3G vector "
-				     "generation: %d\n", rc);
+				     "generation: [%u]: rc = %d\n", i, rc);
 				goto out;
 			}
-		}
-		if (aud2g && aud3g) {
-			/* separate 2G + 3G case: patch 2G into 3G */
-			struct osmo_auth_vector vtmp;
-			DEBUGP(DAUC, "compute vector [%u]/%u:"
-			       " separate 2G + 3G\n", i, num_vec);
+
+			DBGVB(autn);
+			DBGVB(ck);
+			DBGVB(ik);
+			DBGVB(res);
+			DBGVV("%u", res_len);
+
+			if (!aud2g) {
+				/* use the 2G tokens from 3G keys */
+				DBGVB(kc);
+				DBGVB(sres);
+				DBGVV("0x%x", auth_types);
+				continue;
+			}
+			/* calculate 2G separately */
+
+			DBGP("vector [%u]: deriving 2G from 3G\n", i);
+
 			rc = osmo_auth_gen_vec(&vtmp, aud2g, rand);
 			if (rc < 0) {
-				LOGP(DAUC, LOGL_ERROR, "Error in 2G vector "
-				     "generation: %d\n", rc);
+				LOGP(DAUC, LOGL_ERROR, "Error in 2G vector"
+				     "generation: [%u]: rc = %d\n", i, rc);
 				goto out;
 			}
 			memcpy(&vec[i].kc, vtmp.kc, sizeof(vec[i].kc));
 			memcpy(&vec[i].sres, vtmp.sres, sizeof(vec[i].sres));
 			vec[i].auth_types |= OSMO_AUTH_TYPE_GSM;
+		} else {
+			/* 2G only case */
+			rc = osmo_auth_gen_vec(vec+i, aud2g, rand);
+			if (rc < 0) {
+				LOGP(DAUC, LOGL_ERROR, "Error in 2G vector "
+				     "generation: [%u]: rc = %d\n", i, rc);
+				goto out;
+			}
 		}
+
+		DBGVB(kc);
+		DBGVB(sres);
+		DBGVV("0x%x", auth_types);
 	}
 out:
 	return i;
+#undef DBGVV
+#undef DBGVB
+#undef DBGP
 }
diff --git a/tests/auc/auc_3g_test.c b/tests/auc/auc_3g_test.c
index f8ff67a..51184c5 100644
--- a/tests/auc/auc_3g_test.c
+++ b/tests/auc/auc_3g_test.c
@@ -69,7 +69,6 @@
 
 #define VEC_IS(vec, expect) do { \
 		char *_is = vec_str(vec); \
-		fprintf(stderr, "auth vector ==\n%s\n", _is); \
 	        if (strcmp(_is, expect)) { \
 			fprintf(stderr, "MISMATCH! expected ==\n%s\n", \
 				expect); \
@@ -84,7 +83,8 @@
 				} \
 			} \
 			OSMO_ASSERT(false); \
-		} \
+		} else \
+			fprintf(stderr, "vector matches expectations\n"); \
 	} while (0)
 
 uint8_t fake_rand[16] = { 0 };
diff --git a/tests/auc/auc_3g_test.err b/tests/auc/auc_3g_test.err
index db076d7..e8e6f03 100644
--- a/tests/auc/auc_3g_test.err
+++ b/tests/auc/auc_3g_test.err
@@ -1,210 +1,209 @@
 
 ===== test_gen_vectors_2g_only
 aud3g.u.umts.sqn == 0
-DAUC rand 39fa2f4e3d523d8619a73b4f65c3e14d
-DAUC compute vector [0]/1: 2G only
+DAUC Computing 1 auth vector: 2G only
+DAUC 2G: ki = eb215756028d60e3275e613320aec880
+DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [0]: kc = 241a5b16aeb8e400
+DAUC vector [0]: sres = 429d5b27
+DAUC vector [0]: auth_types = 0x1
 rc == 1
-auth vector ==
-  rand: 39fa2f4e3d523d8619a73b4f65c3e14d
-  autn: 00000000000000000000000000000000
-  ck: 00000000000000000000000000000000
-  ik: 00000000000000000000000000000000
-  res: 00000000000000000000000000000000
-  res_len: 00
-  kc: 241a5b16aeb8e400
-  sres: 429d5b27
-  auth_types: 01000000
-
+vector matches expectations
 aud3g.u.umts.sqn == 0
-DAUC rand 39fa2f4e3d523d8619a73b4f65c3e14d
-DAUC compute vector [0]/1: 2G only
+DAUC Computing 1 auth vector: 2G only
+DAUC 2G: ki = eb215756028d60e3275e613320aec880
+DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [0]: kc = 241a5b16aeb8e400
+DAUC vector [0]: sres = 429d5b27
+DAUC vector [0]: auth_types = 0x1
 rc == 1
-auth vector ==
-  rand: 39fa2f4e3d523d8619a73b4f65c3e14d
-  autn: 00000000000000000000000000000000
-  ck: 00000000000000000000000000000000
-  ik: 00000000000000000000000000000000
-  res: 00000000000000000000000000000000
-  res_len: 00
-  kc: 241a5b16aeb8e400
-  sres: 429d5b27
-  auth_types: 01000000
-
+vector matches expectations
 ===== test_gen_vectors_2g_only: SUCCESS
 
 
 ===== test_gen_vectors_2g_plus_3g
 aud3g.u.umts.sqn == 0
-DAUC rand 39fa2f4e3d523d8619a73b4f65c3e14d
-DAUC compute vector [0]/1: separate 2G + 3G
+DAUC Computing 1 auth vector: 3G + separate 2G
+DAUC 3G: k = eb215756028d60e3275e613320aec880
+DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
+DAUC 2G: ki = eb215756028d60e3275e613320aec880
+DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 8704f5ba55f30000d2ee44b22c8ea919
+DAUC vector [0]: ck = f64735036e5871319c679f4742a75ea1
+DAUC vector [0]: ik = 27497388b6cb044648f396aa155b95ef
+DAUC vector [0]: res = e229c19e791f2e410000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: deriving 2G from 3G
+DAUC vector [0]: kc = 241a5b16aeb8e400
+DAUC vector [0]: sres = 429d5b27
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 39fa2f4e3d523d8619a73b4f65c3e14d
-  autn: 8704f5ba55f30000d2ee44b22c8ea919
-  ck: f64735036e5871319c679f4742a75ea1
-  ik: 27497388b6cb044648f396aa155b95ef
-  res: e229c19e791f2e410000000000000000
-  res_len: 08
-  kc: 241a5b16aeb8e400
-  sres: 429d5b27
-  auth_types: 03000000
-
+vector matches expectations
 aud3g.u.umts.sqn == 1
 aud3g.u.umts.sqn == 0
-DAUC rand 39fa2f4e3d523d8619a73b4f65c3e14d
-DAUC compute vector [0]/1: separate 2G + 3G
+DAUC Computing 1 auth vector: 3G + separate 2G
+DAUC 3G: k = eb215756028d60e3275e613320aec880
+DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
+DAUC 2G: ki = eb215756028d60e3275e613320aec880
+DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 8704f5ba55f30000d2ee44b22c8ea919
+DAUC vector [0]: ck = f64735036e5871319c679f4742a75ea1
+DAUC vector [0]: ik = 27497388b6cb044648f396aa155b95ef
+DAUC vector [0]: res = e229c19e791f2e410000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: deriving 2G from 3G
+DAUC vector [0]: kc = 241a5b16aeb8e400
+DAUC vector [0]: sres = 429d5b27
+DAUC vector [0]: auth_types = 0x3
 rc == 1
 aud3g.u.umts.sqn == 1
-auth vector ==
-  rand: 39fa2f4e3d523d8619a73b4f65c3e14d
-  autn: 8704f5ba55f30000d2ee44b22c8ea919
-  ck: f64735036e5871319c679f4742a75ea1
-  ik: 27497388b6cb044648f396aa155b95ef
-  res: e229c19e791f2e410000000000000000
-  res_len: 08
-  kc: 241a5b16aeb8e400
-  sres: 429d5b27
-  auth_types: 03000000
-
+vector matches expectations
 ===== test_gen_vectors_2g_plus_3g: SUCCESS
 
 
 ===== test_gen_vectors_3g_only
 aud3g.u.umts.sqn == 0
-DAUC rand 39fa2f4e3d523d8619a73b4f65c3e14d
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = eb215756028d60e3275e613320aec880
+DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
+DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 8704f5ba55f30000d2ee44b22c8ea919
+DAUC vector [0]: ck = f64735036e5871319c679f4742a75ea1
+DAUC vector [0]: ik = 27497388b6cb044648f396aa155b95ef
+DAUC vector [0]: res = e229c19e791f2e410000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 059a4f668f6fbe39
+DAUC vector [0]: sres = 9b36efdf
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 39fa2f4e3d523d8619a73b4f65c3e14d
-  autn: 8704f5ba55f30000d2ee44b22c8ea919
-  ck: f64735036e5871319c679f4742a75ea1
-  ik: 27497388b6cb044648f396aa155b95ef
-  res: e229c19e791f2e410000000000000000
-  res_len: 08
-  kc: 059a4f668f6fbe39
-  sres: 9b36efdf
-  auth_types: 03000000
-
+vector matches expectations
 aud3g.u.umts.sqn == 1
 aud3g.u.umts.sqn == 0
-DAUC rand 39fa2f4e3d523d8619a73b4f65c3e14d
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = eb215756028d60e3275e613320aec880
+DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
+DAUC vector [0]: rand = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 8704f5ba55f30000d2ee44b22c8ea919
+DAUC vector [0]: ck = f64735036e5871319c679f4742a75ea1
+DAUC vector [0]: ik = 27497388b6cb044648f396aa155b95ef
+DAUC vector [0]: res = e229c19e791f2e410000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 059a4f668f6fbe39
+DAUC vector [0]: sres = 9b36efdf
+DAUC vector [0]: auth_types = 0x3
 rc == 1
 aud3g.u.umts.sqn == 1
-auth vector ==
-  rand: 39fa2f4e3d523d8619a73b4f65c3e14d
-  autn: 8704f5ba55f30000d2ee44b22c8ea919
-  ck: f64735036e5871319c679f4742a75ea1
-  ik: 27497388b6cb044648f396aa155b95ef
-  res: e229c19e791f2e410000000000000000
-  res_len: 08
-  kc: 059a4f668f6fbe39
-  sres: 9b36efdf
-  auth_types: 03000000
-
+vector matches expectations
 - test AUTS resync
 aud3g.u.umts.sqn == 0
-DAUC rand 897210a0f7de278f0b8213098e098a3f
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys), with AUTS resync
+DAUC 3G: k = eb215756028d60e3275e613320aec880
+DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
+DAUC vector [0]: rand = 897210a0f7de278f0b8213098e098a3f
+DAUC vector [0]: resync: auts = 979498b1f72d3e28c59fa2e72f9c
+DAUC vector [0]: resync: rand_auts = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [0]: resync: sqn = 24
+DAUC vector [0]: autn = c6b9790dad4b00000cf322869ea6a481
+DAUC vector [0]: ck = e9922bd036718ed9e40bd1d02c3b81a5
+DAUC vector [0]: ik = f19c20ca863137f8892326d959ec5e01
+DAUC vector [0]: res = 9af5a557902d2db80000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 7526fc13c5976685
+DAUC vector [0]: sres = 0ad888ef
+DAUC vector [0]: auth_types = 0x3
 rc == 1
 aud3g.u.umts.sqn == 25
-auth vector ==
-  rand: 897210a0f7de278f0b8213098e098a3f
-  autn: c6b9790dad4b00000cf322869ea6a481
-  ck: e9922bd036718ed9e40bd1d02c3b81a5
-  ik: f19c20ca863137f8892326d959ec5e01
-  res: 9af5a557902d2db80000000000000000
-  res_len: 08
-  kc: 7526fc13c5976685
-  sres: 0ad888ef
-  auth_types: 03000000
-
+vector matches expectations
 - verify N vectors with AUTS resync == N vectors without AUTS
 First just set rand and sqn = 24, and compute 3 vectors
 aud3g.u.umts.sqn == 24
-DAUC rand 897210a0f7de278f0b8213098e098a3f
-DAUC compute vector [0]/3: 3G only
-DAUC rand 9a8321b108ef38a01c93241a9f1a9b50
-DAUC compute vector [1]/3: 3G only
-DAUC rand ab9432c2190049b12da4352bb02bac61
-DAUC compute vector [2]/3: 3G only
+DAUC Computing 3 auth vectors: 3G only (2G derived from 3G keys)
+DAUC 3G: k = eb215756028d60e3275e613320aec880
+DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
+DAUC vector [0]: rand = 897210a0f7de278f0b8213098e098a3f
+DAUC vector [0]: sqn = 24
+DAUC vector [0]: autn = c6b9790dad4b00000cf322869ea6a481
+DAUC vector [0]: ck = e9922bd036718ed9e40bd1d02c3b81a5
+DAUC vector [0]: ik = f19c20ca863137f8892326d959ec5e01
+DAUC vector [0]: res = 9af5a557902d2db80000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 7526fc13c5976685
+DAUC vector [0]: sres = 0ad888ef
+DAUC vector [0]: auth_types = 0x3
+DAUC vector [1]: rand = 9a8321b108ef38a01c93241a9f1a9b50
+DAUC vector [1]: sqn = 25
+DAUC vector [1]: autn = 79a5113eb0910000be6020540503ffc5
+DAUC vector [1]: ck = 3686f05df057d1899c66ae4eb18cf941
+DAUC vector [1]: ik = 79f21ed53bcb47787de57d136ff803a5
+DAUC vector [1]: res = 43023475cb29292c0000000000000000
+DAUC vector [1]: res_len = 8
+DAUC vector [1]: kc = aef73dd515e86c15
+DAUC vector [1]: sres = 882b1d59
+DAUC vector [1]: auth_types = 0x3
+DAUC vector [2]: rand = ab9432c2190049b12da4352bb02bac61
+DAUC vector [2]: sqn = 26
+DAUC vector [2]: autn = 24b018d46c3b00009c7e1b47f3a19b2b
+DAUC vector [2]: ck = d86c3191a36fc0602e48202ef2080964
+DAUC vector [2]: ik = 648dab72016181406243420649e63dc9
+DAUC vector [2]: res = 010cab11cc63a6e40000000000000000
+DAUC vector [2]: res_len = 8
+DAUC vector [2]: kc = f0eaf8cb19e0758d
+DAUC vector [2]: sres = cd6f0df5
+DAUC vector [2]: auth_types = 0x3
 rc == 3
 aud3g.u.umts.sqn == 27
-[0]: auth vector ==
-  rand: 897210a0f7de278f0b8213098e098a3f
-  autn: c6b9790dad4b00000cf322869ea6a481
-  ck: e9922bd036718ed9e40bd1d02c3b81a5
-  ik: f19c20ca863137f8892326d959ec5e01
-  res: 9af5a557902d2db80000000000000000
-  res_len: 08
-  kc: 7526fc13c5976685
-  sres: 0ad888ef
-  auth_types: 03000000
-
-[1]: auth vector ==
-  rand: 9a8321b108ef38a01c93241a9f1a9b50
-  autn: 79a5113eb0910000be6020540503ffc5
-  ck: 3686f05df057d1899c66ae4eb18cf941
-  ik: 79f21ed53bcb47787de57d136ff803a5
-  res: 43023475cb29292c0000000000000000
-  res_len: 08
-  kc: aef73dd515e86c15
-  sres: 882b1d59
-  auth_types: 03000000
-
-[2]: auth vector ==
-  rand: ab9432c2190049b12da4352bb02bac61
-  autn: 24b018d46c3b00009c7e1b47f3a19b2b
-  ck: d86c3191a36fc0602e48202ef2080964
-  ik: 648dab72016181406243420649e63dc9
-  res: 010cab11cc63a6e40000000000000000
-  res_len: 08
-  kc: f0eaf8cb19e0758d
-  sres: cd6f0df5
-  auth_types: 03000000
-
+[0]: vector matches expectations
+[1]: vector matches expectations
+[2]: vector matches expectations
 Now reach sqn = 24 with AUTS and expect the same
-DAUC rand 897210a0f7de278f0b8213098e098a3f
-DAUC compute vector [0]/3: 3G only
-DAUC rand 9a8321b108ef38a01c93241a9f1a9b50
-DAUC compute vector [1]/3: 3G only
-DAUC rand ab9432c2190049b12da4352bb02bac61
-DAUC compute vector [2]/3: 3G only
+DAUC Computing 3 auth vectors: 3G only (2G derived from 3G keys), with AUTS resync
+DAUC 3G: k = eb215756028d60e3275e613320aec880
+DAUC 3G: opc = fb2a3d1b360f599abab99db8669f8308
+DAUC vector [0]: rand = 897210a0f7de278f0b8213098e098a3f
+DAUC vector [0]: resync: auts = 979498b1f72d3e28c59fa2e72f9c
+DAUC vector [0]: resync: rand_auts = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [0]: resync: sqn = 24
+DAUC vector [0]: autn = c6b9790dad4b00000cf322869ea6a481
+DAUC vector [0]: ck = e9922bd036718ed9e40bd1d02c3b81a5
+DAUC vector [0]: ik = f19c20ca863137f8892326d959ec5e01
+DAUC vector [0]: res = 9af5a557902d2db80000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 7526fc13c5976685
+DAUC vector [0]: sres = 0ad888ef
+DAUC vector [0]: auth_types = 0x3
+DAUC vector [1]: rand = 9a8321b108ef38a01c93241a9f1a9b50
+DAUC vector [1]: resync: auts = 979498b1f72d3e28c59fa2e72f9c
+DAUC vector [1]: resync: rand_auts = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [1]: resync: sqn = 24
+DAUC vector [1]: autn = 79a5113eb0900000f7e138537aa0962b
+DAUC vector [1]: ck = 3686f05df057d1899c66ae4eb18cf941
+DAUC vector [1]: ik = 79f21ed53bcb47787de57d136ff803a5
+DAUC vector [1]: res = 43023475cb29292c0000000000000000
+DAUC vector [1]: res_len = 8
+DAUC vector [1]: kc = aef73dd515e86c15
+DAUC vector [1]: sres = 882b1d59
+DAUC vector [1]: auth_types = 0x3
+DAUC vector [2]: rand = ab9432c2190049b12da4352bb02bac61
+DAUC vector [2]: resync: auts = 979498b1f72d3e28c59fa2e72f9c
+DAUC vector [2]: resync: rand_auts = 39fa2f4e3d523d8619a73b4f65c3e14d
+DAUC vector [2]: resync: sqn = 24
+DAUC vector [2]: autn = 24b018d46c390000d88e11730d0367ac
+DAUC vector [2]: ck = d86c3191a36fc0602e48202ef2080964
+DAUC vector [2]: ik = 648dab72016181406243420649e63dc9
+DAUC vector [2]: res = 010cab11cc63a6e40000000000000000
+DAUC vector [2]: res_len = 8
+DAUC vector [2]: kc = f0eaf8cb19e0758d
+DAUC vector [2]: sres = cd6f0df5
+DAUC vector [2]: auth_types = 0x3
 THERE IS A BUG AND THE TEST PASSES THE WRONG VECTORS UNTIL THAT IS FIXED
 The SQN should increment with each new vector.
-[0]: auth vector ==
-  rand: 897210a0f7de278f0b8213098e098a3f
-  autn: c6b9790dad4b00000cf322869ea6a481
-  ck: e9922bd036718ed9e40bd1d02c3b81a5
-  ik: f19c20ca863137f8892326d959ec5e01
-  res: 9af5a557902d2db80000000000000000
-  res_len: 08
-  kc: 7526fc13c5976685
-  sres: 0ad888ef
-  auth_types: 03000000
-
-[1]: auth vector ==
-  rand: 9a8321b108ef38a01c93241a9f1a9b50
-  autn: 79a5113eb0900000f7e138537aa0962b
-  ck: 3686f05df057d1899c66ae4eb18cf941
-  ik: 79f21ed53bcb47787de57d136ff803a5
-  res: 43023475cb29292c0000000000000000
-  res_len: 08
-  kc: aef73dd515e86c15
-  sres: 882b1d59
-  auth_types: 03000000
-
-[2]: auth vector ==
-  rand: ab9432c2190049b12da4352bb02bac61
-  autn: 24b018d46c390000d88e11730d0367ac
-  ck: d86c3191a36fc0602e48202ef2080964
-  ik: 648dab72016181406243420649e63dc9
-  res: 010cab11cc63a6e40000000000000000
-  res_len: 08
-  kc: f0eaf8cb19e0758d
-  sres: cd6f0df5
-  auth_types: 03000000
-
+[0]: vector matches expectations
+[1]: vector matches expectations
+[2]: vector matches expectations
 ===== test_gen_vectors_3g_only: SUCCESS
 
 
diff --git a/tests/auc/auc_ts_55_205_test_sets.err b/tests/auc/auc_ts_55_205_test_sets.err
index 9a26922..8bedf46 100644
--- a/tests/auc/auc_ts_55_205_test_sets.err
+++ b/tests/auc/auc_ts_55_205_test_sets.err
@@ -1,304 +1,380 @@
 
 ===== test_set_1
 aud3g.u.umts.sqn == 0
-DAUC rand 23553cbe9637a89d218ae64dae47bf35
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 465b5ce8b199b49faa5f0a2ee238a6bc
+DAUC 3G: opc = cd63cb71954a9f4e48a5994e37a02baf
+DAUC vector [0]: rand = 23553cbe9637a89d218ae64dae47bf35
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = aa689c64837000000eed35e2ae9e21c0
+DAUC vector [0]: ck = b40ba9a3c58b2a05bbf0d987b21bf8cb
+DAUC vector [0]: ik = f769bcd751044604127672711c6d3441
+DAUC vector [0]: res = a54211d5e3ba50bf0000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = eae4be823af9a08b
+DAUC vector [0]: sres = 46f8416a
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 23553cbe9637a89d218ae64dae47bf35
-  ck: b40ba9a3c58b2a05bbf0d987b21bf8cb
-  ik: f769bcd751044604127672711c6d3441
-  res: a54211d5e3ba50bf0000000000000000
-  kc: eae4be823af9a08b
-  sres: 46f8416a
-
+vector matches expectations
 ===== test_set_1: SUCCESS
 
 
 ===== test_set_2
 aud3g.u.umts.sqn == 0
-DAUC rand 9f7c8d021accf4db213ccff0c7f71a6a
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = fec86ba6eb707ed08905757b1bb44b8f
+DAUC 3G: opc = 1006020f0a478bf6b699f15c062e42b3
+DAUC vector [0]: rand = 9f7c8d021accf4db213ccff0c7f71a6a
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 33484dc2136b00009abcd7740cfa799c
+DAUC vector [0]: ck = 5dbdbb2954e8f3cde665b046179a5098
+DAUC vector [0]: ik = 59a92d3b476a0443487055cf88b2307b
+DAUC vector [0]: res = 8011c48c0c214ed20000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = aa01739b8caa976d
+DAUC vector [0]: sres = 8c308a5e
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 9f7c8d021accf4db213ccff0c7f71a6a
-  ck: 5dbdbb2954e8f3cde665b046179a5098
-  ik: 59a92d3b476a0443487055cf88b2307b
-  res: 8011c48c0c214ed20000000000000000
-  kc: aa01739b8caa976d
-  sres: 8c308a5e
-
+vector matches expectations
 ===== test_set_2: SUCCESS
 
 
 ===== test_set_3
 aud3g.u.umts.sqn == 0
-DAUC rand ce83dbc54ac0274a157c17f80d017bd6
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 9e5944aea94b81165c82fbf9f32db751
+DAUC 3G: opc = a64a507ae1a2a98bb88eb4210135dc87
+DAUC vector [0]: rand = ce83dbc54ac0274a157c17f80d017bd6
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = f0b9c08ad02e00001b5ca3e1240212be
+DAUC vector [0]: ck = e203edb3971574f5a94b0d61b816345d
+DAUC vector [0]: ik = 0c4524adeac041c4dd830d20854fc46b
+DAUC vector [0]: res = f365cd683cd92e960000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 9a8ec95f408cc507
+DAUC vector [0]: sres = cfbce3fe
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: ce83dbc54ac0274a157c17f80d017bd6
-  ck: e203edb3971574f5a94b0d61b816345d
-  ik: 0c4524adeac041c4dd830d20854fc46b
-  res: f365cd683cd92e960000000000000000
-  kc: 9a8ec95f408cc507
-  sres: cfbce3fe
-
+vector matches expectations
 ===== test_set_3: SUCCESS
 
 
 ===== test_set_4
 aud3g.u.umts.sqn == 0
-DAUC rand 74b0cd6031a1c8339b2b6ce2b8c4a186
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 4ab1deb05ca6ceb051fc98e77d026a84
+DAUC 3G: opc = dcf07cbd51855290b92a07a9891e523e
+DAUC vector [0]: rand = 74b0cd6031a1c8339b2b6ce2b8c4a186
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 31e11a6091180000f55f5c8adb793014
+DAUC vector [0]: ck = 7657766b373d1c2138f307e3de9242f9
+DAUC vector [0]: ik = 1c42e960d89b8fa99f2744e0708ccb53
+DAUC vector [0]: res = 5860fc1bce351e7e0000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = cdc1dc0841b81a22
+DAUC vector [0]: sres = 9655e265
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 74b0cd6031a1c8339b2b6ce2b8c4a186
-  ck: 7657766b373d1c2138f307e3de9242f9
-  ik: 1c42e960d89b8fa99f2744e0708ccb53
-  res: 5860fc1bce351e7e0000000000000000
-  kc: cdc1dc0841b81a22
-  sres: 9655e265
-
+vector matches expectations
 ===== test_set_4: SUCCESS
 
 
 ===== test_set_5
 aud3g.u.umts.sqn == 0
-DAUC rand ee6466bc96202c5a557abbeff8babf63
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 6c38a116ac280c454f59332ee35c8c4f
+DAUC 3G: opc = 3803ef5363b947c6aaa225e58fae3934
+DAUC vector [0]: rand = ee6466bc96202c5a557abbeff8babf63
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 45b0f69ab06c0000a161b2de788f3b3f
+DAUC vector [0]: ck = 3f8c7587fe8e4b233af676aede30ba3b
+DAUC vector [0]: ik = a7466cc1e6b2a1337d49d3b66e95d7b4
+DAUC vector [0]: res = 16c8233f05a0ac280000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = df75bc5ea899879f
+DAUC vector [0]: sres = 13688f17
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: ee6466bc96202c5a557abbeff8babf63
-  ck: 3f8c7587fe8e4b233af676aede30ba3b
-  ik: a7466cc1e6b2a1337d49d3b66e95d7b4
-  res: 16c8233f05a0ac280000000000000000
-  kc: df75bc5ea899879f
-  sres: 13688f17
-
+vector matches expectations
 ===== test_set_5: SUCCESS
 
 
 ===== test_set_6
 aud3g.u.umts.sqn == 0
-DAUC rand 194aa756013896b74b4a2a3b0af4539e
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 2d609d4db0ac5bf0d2c0de267014de0d
+DAUC 3G: opc = c35a0ab0bcbfc9252caff15f24efbde0
+DAUC vector [0]: rand = 194aa756013896b74b4a2a3b0af4539e
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 7e6455f34cf3000040dc9568192ab1c0
+DAUC vector [0]: ck = 4cd0846020f8fa0731dd47cbdc6be411
+DAUC vector [0]: ik = 88ab80a415f15c73711254a1d388f696
+DAUC vector [0]: res = 8c25a16cd918a1df0000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 84b417ae3aeab4f3
+DAUC vector [0]: sres = 553d00b3
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 194aa756013896b74b4a2a3b0af4539e
-  ck: 4cd0846020f8fa0731dd47cbdc6be411
-  ik: 88ab80a415f15c73711254a1d388f696
-  res: 8c25a16cd918a1df0000000000000000
-  kc: 84b417ae3aeab4f3
-  sres: 553d00b3
-
+vector matches expectations
 ===== test_set_6: SUCCESS
 
 
 ===== test_set_7
 aud3g.u.umts.sqn == 0
-DAUC rand 3a4c2b3245c50eb5c71d08639395764d
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = a530a7fe428fad1082c45eddfce13884
+DAUC 3G: opc = 27953e49bc8af6dcc6e730eb80286be3
+DAUC vector [0]: rand = 3a4c2b3245c50eb5c71d08639395764d
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 88196c47986f000075c2ba7455852c2a
+DAUC vector [0]: ck = 10f05bab75a99a5fbb98a9c287679c3b
+DAUC vector [0]: ik = f9ec0865eb32f22369cade40c59c3a44
+DAUC vector [0]: res = a63241e1ffc3e5ab0000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 3b4e244cdc60ce03
+DAUC vector [0]: sres = 59f1a44a
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 3a4c2b3245c50eb5c71d08639395764d
-  ck: 10f05bab75a99a5fbb98a9c287679c3b
-  ik: f9ec0865eb32f22369cade40c59c3a44
-  res: a63241e1ffc3e5ab0000000000000000
-  kc: 3b4e244cdc60ce03
-  sres: 59f1a44a
-
+vector matches expectations
 ===== test_set_7: SUCCESS
 
 
 ===== test_set_8
 aud3g.u.umts.sqn == 0
-DAUC rand f761e5e93d603feb730e27556cb8a2ca
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = d9151cf04896e25830bf2e08267b8360
+DAUC 3G: opc = c4c93effe8a08138c203d4c27ce4e3d9
+DAUC vector [0]: rand = f761e5e93d603feb730e27556cb8a2ca
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 82a0f5287a71000023563512500d75d9
+DAUC vector [0]: ck = 71236b7129f9b22ab77ea7a54c96da22
+DAUC vector [0]: ik = 90527ebaa5588968db41727325a04d9e
+DAUC vector [0]: res = 4a90b2171ac83a760000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 8d4ec01de597acfe
+DAUC vector [0]: sres = 50588861
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: f761e5e93d603feb730e27556cb8a2ca
-  ck: 71236b7129f9b22ab77ea7a54c96da22
-  ik: 90527ebaa5588968db41727325a04d9e
-  res: 4a90b2171ac83a760000000000000000
-  kc: 8d4ec01de597acfe
-  sres: 50588861
-
+vector matches expectations
 ===== test_set_8: SUCCESS
 
 
 ===== test_set_9
 aud3g.u.umts.sqn == 0
-DAUC rand 08eff828b13fdb562722c65c7f30a9b2
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = a0e2971b6822e8d354a18cc235624ecb
+DAUC 3G: opc = 82a26f22bba9e9488f949a10d98e9cc4
+DAUC vector [0]: rand = 08eff828b13fdb562722c65c7f30a9b2
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = a2f858aa9e5d0000bdd79d9f7c269d1c
+DAUC vector [0]: ck = 08cef6d004ec61471a3c3cda048137fa
+DAUC vector [0]: ik = ed0318ca5deb9206272f6e8fa64ba411
+DAUC vector [0]: res = 4bc2212d8624910a0000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = d8debc4ffbcd60aa
+DAUC vector [0]: sres = cde6b027
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 08eff828b13fdb562722c65c7f30a9b2
-  ck: 08cef6d004ec61471a3c3cda048137fa
-  ik: ed0318ca5deb9206272f6e8fa64ba411
-  res: 4bc2212d8624910a0000000000000000
-  kc: d8debc4ffbcd60aa
-  sres: cde6b027
-
+vector matches expectations
 ===== test_set_9: SUCCESS
 
 
 ===== test_set_10
 aud3g.u.umts.sqn == 0
-DAUC rand 679ac4dbacd7d233ff9d6806f4149ce3
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 0da6f7ba86d5eac8a19cf563ac58642d
+DAUC 3G: opc = 0db1071f8767562ca43a0a64c41e8d08
+DAUC vector [0]: rand = 679ac4dbacd7d233ff9d6806f4149ce3
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 4c539a26e1fa000059e7ec99b51f33f3
+DAUC vector [0]: ck = 69b1cae7c7429d975e245cacb05a517c
+DAUC vector [0]: ik = 74f24e8c26df58e1b38d7dcd4f1b7fbd
+DAUC vector [0]: res = 6fc30fee6d1235230000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = f0eaa50a1edcebb7
+DAUC vector [0]: sres = 02d13acd
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 679ac4dbacd7d233ff9d6806f4149ce3
-  ck: 69b1cae7c7429d975e245cacb05a517c
-  ik: 74f24e8c26df58e1b38d7dcd4f1b7fbd
-  res: 6fc30fee6d1235230000000000000000
-  kc: f0eaa50a1edcebb7
-  sres: 02d13acd
-
+vector matches expectations
 ===== test_set_10: SUCCESS
 
 
 ===== test_set_11
 aud3g.u.umts.sqn == 0
-DAUC rand 4c47eb3076dc55fe5106cb2034b8cd78
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 77b45843c88e58c10d202684515ed430
+DAUC 3G: opc = d483afae562409a326b5bb0b20c4d762
+DAUC vector [0]: rand = 4c47eb3076dc55fe5106cb2034b8cd78
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 30ff25cdadf600003991f8e7e72a5948
+DAUC vector [0]: ck = 908c43f0569cb8f74bc971e706c36c5f
+DAUC vector [0]: ik = c251df0d888dd9329bcf46655b226e40
+DAUC vector [0]: res = aefa357beac2a87a0000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 82dbab7f83f063da
+DAUC vector [0]: sres = 44389d01
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 4c47eb3076dc55fe5106cb2034b8cd78
-  ck: 908c43f0569cb8f74bc971e706c36c5f
-  ik: c251df0d888dd9329bcf46655b226e40
-  res: aefa357beac2a87a0000000000000000
-  kc: 82dbab7f83f063da
-  sres: 44389d01
-
+vector matches expectations
 ===== test_set_11: SUCCESS
 
 
 ===== test_set_12
 aud3g.u.umts.sqn == 0
-DAUC rand 311c4c929744d675b720f3b7e9b1cbd0
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 729b17729270dd87ccdf1bfe29b4e9bb
+DAUC 3G: opc = 228c2f2f06ac3268a9e616ee16db4ba1
+DAUC vector [0]: rand = 311c4c929744d675b720f3b7e9b1cbd0
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 5380d158cfe30000fd10b1f261e825c3
+DAUC vector [0]: ck = 44c0f23c5493cfd241e48f197e1d1012
+DAUC vector [0]: ik = 0c9fb81613884c2535dd0eabf3b440d8
+DAUC vector [0]: res = 98dbbd099b3b408d0000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 3c66cb98cab2d33d
+DAUC vector [0]: sres = 03e0fd84
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 311c4c929744d675b720f3b7e9b1cbd0
-  ck: 44c0f23c5493cfd241e48f197e1d1012
-  ik: 0c9fb81613884c2535dd0eabf3b440d8
-  res: 98dbbd099b3b408d0000000000000000
-  kc: 3c66cb98cab2d33d
-  sres: 03e0fd84
-
+vector matches expectations
 ===== test_set_12: SUCCESS
 
 
 ===== test_set_13
 aud3g.u.umts.sqn == 0
-DAUC rand cf7d0ab1d94306950bf12018fbd46887
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = d32dd23e89dc662354ca12eb79dd32fa
+DAUC 3G: opc = d22a4b4180a5325708a5ff70d9f67ec7
+DAUC vector [0]: rand = cf7d0ab1d94306950bf12018fbd46887
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 217af49272ad0000cc1d4642c4476641
+DAUC vector [0]: ck = 5af86b80edb70df5292cc1121cbad50c
+DAUC vector [0]: ik = 7f4d6ae7440e18789a8b75ad3f42f03a
+DAUC vector [0]: res = af4a411e1139f2c20000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 9612b5d88a4130bb
+DAUC vector [0]: sres = be73b3dc
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: cf7d0ab1d94306950bf12018fbd46887
-  ck: 5af86b80edb70df5292cc1121cbad50c
-  ik: 7f4d6ae7440e18789a8b75ad3f42f03a
-  res: af4a411e1139f2c20000000000000000
-  kc: 9612b5d88a4130bb
-  sres: be73b3dc
-
+vector matches expectations
 ===== test_set_13: SUCCESS
 
 
 ===== test_set_14
 aud3g.u.umts.sqn == 0
-DAUC rand 1f0f8578464fd59b64bed2d09436b57a
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = af7c65e1927221de591187a2c5987a53
+DAUC 3G: opc = a4cf5c8155c08a7eff418e5443b98e55
+DAUC vector [0]: rand = 1f0f8578464fd59b64bed2d09436b57a
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 837fd7b744190000e4ae3648e1c7770b
+DAUC vector [0]: ck = 3f8c3f3ccf7625bf77fc94bcfd22fd26
+DAUC vector [0]: ik = abcbae8fd46115e9961a55d0da5f2078
+DAUC vector [0]: res = 7bffa5c2f41fbc050000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 75a150df3c6aed08
+DAUC vector [0]: sres = 8fe019c7
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 1f0f8578464fd59b64bed2d09436b57a
-  ck: 3f8c3f3ccf7625bf77fc94bcfd22fd26
-  ik: abcbae8fd46115e9961a55d0da5f2078
-  res: 7bffa5c2f41fbc050000000000000000
-  kc: 75a150df3c6aed08
-  sres: 8fe019c7
-
+vector matches expectations
 ===== test_set_14: SUCCESS
 
 
 ===== test_set_15
 aud3g.u.umts.sqn == 0
-DAUC rand 59b75f14251c75031d0bcbac1c2c04c7
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 5bd7ecd3d3127a41d12539bed4e7cf71
+DAUC 3G: opc = 76089d3c0ff3efdc6e36721d4fceb747
+DAUC vector [0]: rand = 59b75f14251c75031d0bcbac1c2c04c7
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 5be11495525d00008538a96619c04b01
+DAUC vector [0]: ck = d42b2d615e49a03ac275a5aef97af892
+DAUC vector [0]: ik = 0b3f8d024fe6bfafaa982b8f82e319c2
+DAUC vector [0]: res = 7e3f44c7591f6f450000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = b7f92e426a36fec5
+DAUC vector [0]: sres = 27202b82
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 59b75f14251c75031d0bcbac1c2c04c7
-  ck: d42b2d615e49a03ac275a5aef97af892
-  ik: 0b3f8d024fe6bfafaa982b8f82e319c2
-  res: 7e3f44c7591f6f450000000000000000
-  kc: b7f92e426a36fec5
-  sres: 27202b82
-
+vector matches expectations
 ===== test_set_15: SUCCESS
 
 
 ===== test_set_16
 aud3g.u.umts.sqn == 0
-DAUC rand f69b78f300a0568bce9f0cb93c4be4c9
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 6cd1c6ceb1e01e14f1b82316a90b7f3d
+DAUC 3G: opc = a219dc37f1dc7d66738b5843c799f206
+DAUC vector [0]: rand = f69b78f300a0568bce9f0cb93c4be4c9
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 1c408a858b3e0000956596c6cd632f0f
+DAUC vector [0]: ck = 6edaf99e5bd9f85d5f36d91c1272fb4b
+DAUC vector [0]: ik = d61c853c280dd9c46f297baec386de17
+DAUC vector [0]: res = 70f6bdb9ad21525f0000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 88d9de10a22004c5
+DAUC vector [0]: sres = ddd7efe6
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: f69b78f300a0568bce9f0cb93c4be4c9
-  ck: 6edaf99e5bd9f85d5f36d91c1272fb4b
-  ik: d61c853c280dd9c46f297baec386de17
-  res: 70f6bdb9ad21525f0000000000000000
-  kc: 88d9de10a22004c5
-  sres: ddd7efe6
-
+vector matches expectations
 ===== test_set_16: SUCCESS
 
 
 ===== test_set_17
 aud3g.u.umts.sqn == 0
-DAUC rand b120f1c1a0102a2f507dd543de68281f
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = b73a90cbcf3afb622dba83c58a8415df
+DAUC 3G: opc = df0c67868fa25f748b7044c6e7c245b8
+DAUC vector [0]: rand = b120f1c1a0102a2f507dd543de68281f
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = aefdaa5ddd9900003bf0fbdbbc9d8ecc
+DAUC vector [0]: ck = 66195dbed0313274c5ca7766615fa25e
+DAUC vector [0]: ik = 66bec707eb2afc476d7408a8f2927b36
+DAUC vector [0]: res = 479dd25c20792d630000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = a819e577a8d6175b
+DAUC vector [0]: sres = 67e4ff3f
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: b120f1c1a0102a2f507dd543de68281f
-  ck: 66195dbed0313274c5ca7766615fa25e
-  ik: 66bec707eb2afc476d7408a8f2927b36
-  res: 479dd25c20792d630000000000000000
-  kc: a819e577a8d6175b
-  sres: 67e4ff3f
-
+vector matches expectations
 ===== test_set_17: SUCCESS
 
 
 ===== test_set_18
 aud3g.u.umts.sqn == 0
-DAUC rand 81e92b6c0ee0e12ebceba8d92a99dfa5
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 5122250214c33e723a5dd523fc145fc0
+DAUC 3G: opc = 981d464c7c52eb6e5036234984ad0bcf
+DAUC vector [0]: rand = 81e92b6c0ee0e12ebceba8d92a99dfa5
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = ada15aeb7bb80000f141568691cccaec
+DAUC vector [0]: ck = 5349fbe098649f948f5d2e973a81c00f
+DAUC vector [0]: ik = 9744871ad32bf9bbd1dd5ce54e3e2e5a
+DAUC vector [0]: res = 28d7b0f2a2ec3de50000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = 9a8d0e883ff0887a
+DAUC vector [0]: sres = 8a3b8d17
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 81e92b6c0ee0e12ebceba8d92a99dfa5
-  ck: 5349fbe098649f948f5d2e973a81c00f
-  ik: 9744871ad32bf9bbd1dd5ce54e3e2e5a
-  res: 28d7b0f2a2ec3de50000000000000000
-  kc: 9a8d0e883ff0887a
-  sres: 8a3b8d17
-
+vector matches expectations
 ===== test_set_18: SUCCESS
 
 
 ===== test_set_19
 aud3g.u.umts.sqn == 0
-DAUC rand 9fddc72092c6ad036b6e464789315b78
-DAUC compute vector [0]/1: 3G only
+DAUC Computing 1 auth vector: 3G only (2G derived from 3G keys)
+DAUC 3G: k = 90dca4eda45b53cf0f12d7c9c3bc6a89
+DAUC 3G: opc = cb9cccc4b9258e6dca4760379fb82581
+DAUC vector [0]: rand = 9fddc72092c6ad036b6e464789315b78
+DAUC vector [0]: sqn = 0
+DAUC vector [0]: autn = 83cfd54db9130000eb5e0ab0a7c030e6
+DAUC vector [0]: ck = b5f2da03883b69f96bf52e029ed9ac45
+DAUC vector [0]: ik = b4721368bc16ea67875c5598688bb0ef
+DAUC vector [0]: res = a95100e2760952cd0000000000000000
+DAUC vector [0]: res_len = 8
+DAUC vector [0]: kc = ed29b2f1c27f9f34
+DAUC vector [0]: sres = df58522f
+DAUC vector [0]: auth_types = 0x3
 rc == 1
-auth vector ==
-  rand: 9fddc72092c6ad036b6e464789315b78
-  ck: b5f2da03883b69f96bf52e029ed9ac45
-  ik: b4721368bc16ea67875c5598688bb0ef
-  res: a95100e2760952cd0000000000000000
-  kc: ed29b2f1c27f9f34
-  sres: df58522f
-
+vector matches expectations
 ===== test_set_19: SUCCESS
 
diff --git a/tests/auc/gen_ts_55_205_test_sets/main_template.c b/tests/auc/gen_ts_55_205_test_sets/main_template.c
index c03b820..e917e71 100644
--- a/tests/auc/gen_ts_55_205_test_sets/main_template.c
+++ b/tests/auc/gen_ts_55_205_test_sets/main_template.c
@@ -70,7 +70,6 @@
 
 #define VEC_IS(vec, expect) do { \
 		char *_is = vec_str(vec); \
-		fprintf(stderr, "auth vector ==\n%s\n", _is); \
 	        if (strcmp(_is, expect)) { \
 			fprintf(stderr, "MISMATCH! expected ==\n%s\n", \
 				expect); \
@@ -85,7 +84,8 @@
 				} \
 			} \
 			OSMO_ASSERT(false); \
-		} \
+		} else \
+			fprintf(stderr, "vector matches expectations\n"); \
 	} while (0)
 
 uint8_t fake_rand[16] = { 0 };

-- 
To view, visit https://gerrit.osmocom.org/1869
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifb36d010a4ac64c765517e15b9074424ec19cc60
Gerrit-PatchSet: 1
Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>


More information about the gerrit-log mailing list