diff --git a/tests/msc_vlr/msc_vlr_test_authen_reuse.c b/tests/msc_vlr/msc_vlr_test_authen_reuse.c
index 62ea6c7..d73a5f8 100644
--- a/tests/msc_vlr/msc_vlr_test_authen_reuse.c
+++ b/tests/msc_vlr/msc_vlr_test_authen_reuse.c
@@ -266,8 +266,6 @@
 static void test_auth_use_twice_geran()
 {
 	comment_start();
-	/* A5/0 = no encryption */
-	net->a5_encryption_mask = A5_0;
 	_test_auth_reuse(OSMO_RAT_GERAN_A, 1, 1, true);
 	comment_end();
 }
@@ -275,8 +273,6 @@
 static void test_auth_use_twice_utran()
 {
 	comment_start();
-	/* A5/0 + A5/3 = encryption enabled; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0_3;
 	_test_auth_reuse(OSMO_RAT_UTRAN_IU, 1, 1, true);
 	comment_end();
 }
@@ -284,8 +280,6 @@
 static void test_auth_use_infinitely_geran()
 {
 	comment_start();
-	/* A5/0 = no encryption */
-	net->a5_encryption_mask = A5_0;
 	_test_auth_reuse(OSMO_RAT_GERAN_A, -1, 3, false);
 	comment_end();
 }
@@ -293,8 +287,6 @@
 static void test_auth_use_infinitely_utran()
 {
 	comment_start();
-	/* A5/0 + A5/3 = encryption enabled; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0_3;
 	_test_auth_reuse(OSMO_RAT_UTRAN_IU, -1, 3, false);
 	comment_end();
 }
@@ -302,8 +294,6 @@
 static void test_no_auth_reuse_geran()
 {
 	comment_start();
-	/* A5/0 = no encryption */
-	net->a5_encryption_mask = A5_0;
 	_test_auth_reuse(OSMO_RAT_GERAN_A, 0, 0, true);
 	comment_end();
 }
@@ -311,8 +301,6 @@
 static void test_no_auth_reuse_utran()
 {
 	comment_start();
-	/* A5/0 + A5/3 = encryption enabled; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0_3;
 	_test_auth_reuse(OSMO_RAT_UTRAN_IU, 0, 0, true);
 	comment_end();
 }
diff --git a/tests/msc_vlr/msc_vlr_test_call.c b/tests/msc_vlr/msc_vlr_test_call.c
index cec2f8d..065af25 100644
--- a/tests/msc_vlr/msc_vlr_test_call.c
+++ b/tests/msc_vlr/msc_vlr_test_call.c
@@ -46,7 +46,6 @@
 	struct vlr_subscr *vsub;
 
 	net->authentication_required = true;
-	net->a5_encryption_mask = A5_0_3;
 	net->vlr->cfg.assign_tmsi = true;
 	rx_from_ran = OSMO_RAT_UTRAN_IU;
 
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c
index 1bf6cd2..761db55 100644
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.c
+++ b/tests/msc_vlr/msc_vlr_test_umts_authen.c
@@ -49,6 +49,8 @@
 		"5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
 		"d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
 		"0c7ac3e9e9b7db05";
+	bool encryption = (via_ran == OSMO_RAT_GERAN_A && net->a5_encryption_mask > 0x1)
+		|| (via_ran == OSMO_RAT_UTRAN_IU && net->uea_encryption);
 
 	net->authentication_required = true;
 	net->vlr->cfg.assign_tmsi = true;
@@ -122,8 +124,7 @@
 	VERBOSE_ASSERT(auth_request_sent, == true, "%d");
 	VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
 
-	if (net->a5_encryption_mask > 0x1) {
-		/* Encryption enabled */
+	if (encryption) {
 		if (via_ran == OSMO_RAT_GERAN_A) {
 			btw("Test code not implemented");
 			OSMO_ASSERT(false);
@@ -197,8 +198,7 @@
 	EXPECT_ACCEPTED(false);
 	thwart_rx_non_initial_requests();
 
-	if (net->a5_encryption_mask > 0x1) {
-		/* Encryption enabled */
+	if (encryption) {
 		if (via_ran == OSMO_RAT_GERAN_A) {
 			btw("Test code not implemented");
 			OSMO_ASSERT(false);
@@ -265,8 +265,7 @@
 	EXPECT_ACCEPTED(false);
 	thwart_rx_non_initial_requests();
 
-	if (net->a5_encryption_mask > 0x1) {
-		/* Encryption enabled */
+	if (encryption) {
 		if (via_ran == OSMO_RAT_GERAN_A) {
 			btw("Test code not implemented");
 			OSMO_ASSERT(false);
@@ -327,8 +326,6 @@
 static void test_umts_authen_geran()
 {
 	comment_start();
-	/* A5/0 = no encryption */
-	net->a5_encryption_mask = A5_0;
 	_test_umts_authen(OSMO_RAT_GERAN_A);
 	comment_end();
 }
@@ -336,8 +333,7 @@
 static void test_umts_authen_utran()
 {
 	comment_start();
-	/* A5/0 = no encryption; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0;
+	net->uea_encryption = false;
 	_test_umts_authen(OSMO_RAT_UTRAN_IU);
 	comment_end();
 }
@@ -345,8 +341,7 @@
 static void test_umts_auth_ciph_utran()
 {
 	comment_start();
-	/* A5/0 + A5/3 = encryption enabled; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0_3;
+	net->uea_encryption = true;
 	_test_umts_authen(OSMO_RAT_UTRAN_IU);
 	comment_end();
 }
@@ -365,6 +360,8 @@
 {
 	struct vlr_subscr *vsub;
 	const char *imsi = "901700000010650";
+	bool encryption = (via_ran == OSMO_RAT_GERAN_A && net->a5_encryption_mask > 0x1)
+		|| (via_ran == OSMO_RAT_UTRAN_IU && net->uea_encryption);
 
 	net->authentication_required = true;
 	net->vlr->cfg.assign_tmsi = true;
@@ -519,8 +516,7 @@
 	VERBOSE_ASSERT(auth_request_sent, == true, "%d");
 	VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
 
-	if (net->a5_encryption_mask > 0x1) {
-		/* Encryption enabled */
+	if (encryption) {
 		if (via_ran == OSMO_RAT_GERAN_A) {
 			btw("Test code not implemented");
 			OSMO_ASSERT(false);
@@ -585,8 +581,6 @@
 static void test_umts_authen_resync_geran()
 {
 	comment_start();
-	/* A5/0 = no encryption */
-	net->a5_encryption_mask = A5_0;
 	_test_umts_authen_resync(OSMO_RAT_GERAN_A);
 	comment_end();
 }
@@ -594,8 +588,7 @@
 static void test_umts_authen_resync_utran()
 {
 	comment_start();
-	/* A5/0 = no encryption; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0;
+	net->uea_encryption = false;
 	_test_umts_authen_resync(OSMO_RAT_UTRAN_IU);
 	comment_end();
 }
@@ -603,8 +596,7 @@
 static void test_umts_auth_ciph_resync_utran()
 {
 	comment_start();
-	/* A5/0 + A5/3 = encryption enabled; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0_3;
+	net->uea_encryption = true;
 	_test_umts_authen_resync(OSMO_RAT_UTRAN_IU);
 	comment_end();
 }
@@ -698,8 +690,6 @@
 static void test_umts_authen_too_short_res_geran()
 {
 	comment_start();
-	/* A5/0 = no encryption */
-	net->a5_encryption_mask = A5_0;
 	_test_umts_authen_too_short_res(OSMO_RAT_GERAN_A);
 	comment_end();
 }
@@ -707,8 +697,6 @@
 static void test_umts_authen_too_short_res_utran()
 {
 	comment_start();
-	/* A5/0 + A5/3 = encryption enabled; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0_3;
 	_test_umts_authen_too_short_res(OSMO_RAT_UTRAN_IU);
 	comment_end();
 }
@@ -802,8 +790,6 @@
 static void test_umts_authen_too_long_res_geran()
 {
 	comment_start();
-	/* A5/0 = no encryption */
-	net->a5_encryption_mask = A5_0;
 	_test_umts_authen_too_long_res(OSMO_RAT_GERAN_A);
 	comment_end();
 }
@@ -811,8 +797,6 @@
 static void test_umts_authen_too_long_res_utran()
 {
 	comment_start();
-	/* A5/0 + A5/3 = encryption enabled; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0_3;
 	_test_umts_authen_too_long_res(OSMO_RAT_UTRAN_IU);
 	comment_end();
 }
@@ -911,8 +895,6 @@
 static void test_umts_authen_only_sres_geran()
 {
 	comment_start();
-	/* A5/0 = no encryption */
-	net->a5_encryption_mask = A5_0;
 	_test_umts_authen_only_sres(OSMO_RAT_GERAN_A);
 	comment_end();
 }
@@ -920,8 +902,6 @@
 static void test_umts_authen_only_sres_utran()
 {
 	comment_start();
-	/* A5/0 + A5/3 = encryption enabled; so far the A5 setting also triggers UTRAN encryption */
-	net->a5_encryption_mask = A5_0_3;
 	_test_umts_authen_only_sres(OSMO_RAT_UTRAN_IU);
 	comment_end();
 }
diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h
index 4330ea8..9df9cf0 100644
--- a/tests/msc_vlr/msc_vlr_tests.h
+++ b/tests/msc_vlr/msc_vlr_tests.h
@@ -32,9 +32,6 @@
 #include <osmocom/msc/msc_a.h>
 #include <osmocom/msc/mncc.h>
 
-#define A5_0 (1 << 0)
-#define A5_0_3 ((1 << 0) | (1 << 3))
-
 extern bool _log_lines;
 #define _log(fmt, args...) do { \
 		if (_log_lines) \
