add 'encryption uea 1 2' cfg / fix ttcn3 iu tests
Recently, the ability to run UTRAN without encryption was added, but the config
for it was tied to the A5 GERAN encryption configuration. This affected
osmo-msc's default behavior of Iu, breaking osmo-msc ttcn3 Iu tests: the ttcn3
test suite sets A5 to 0 (no encryption) but still expects Iu to enable air
encryption. Fix this "regression".
Add a separate vty config option for UEA encryption, even if it does not
provide full granularity to select individual UEA algorithms yet.
As a result, Iu default behavior remains to enable encryption regardless of the
A5 config. UTRAN encryption can be disabled by the new cfg option
"encryption uea 0" alone.
Even though the new vty command already allows passing various combinations of
the UEA algorithm numbers, only '0' and '1 2' are accepted as valid
combinations, to reflect current osmo-msc capabilities.
Revert most changes to the msc_vlr test suite in commit "do not force
encryption on UTRAN" (I04ecd7a3b1cc603b2e3feb630e8c7c93fc36ccd7): use new
net->iu_encryption instead of net->a5_encryption_mask.
Adjust/add to test_nodes.vty transcript tests.
Related: OS#4144
Change-Id: Ie138f2fcb105533f7bc06a6d2e6deccf6faccc5b
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) \