summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2017-08-28 14:21:15 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2017-09-14 15:56:46 +0200
commitb3466ad104c2fe0000e9aba43da500de979767b9 (patch)
treed9502ab118e44f2a2e1148b3c0c0290086b94593
parentcfa7d7cdda61640942af43a222a9cbf0cddaf00a (diff)
Add cipher cfg param for modem and bts
This parameter is contains a list of supported encryption ciphers by the modem or bts setting it. It is so far not directly/automatically used inside osmo-gsm-tester code, but can be useful to create scenarios for tests that require specific ciphering modes. For instance, aoip_encryption suite contains tests that require a BTS and a modem that supports a5 0 and a5 1, otherwise tests will fail. Change-Id: Ic0e368843a6e58bd3eeef36d2c0a7501296f0f3e
-rw-r--r--example/default-suites.conf2
-rw-r--r--example/resources.conf7
-rw-r--r--example/scenarios/cipher-a50.conf7
-rw-r--r--example/scenarios/cipher-a51.conf7
-rw-r--r--src/osmo_gsm_tester/resource.py2
-rw-r--r--src/osmo_gsm_tester/schema.py7
6 files changed, 31 insertions, 1 deletions
diff --git a/example/default-suites.conf b/example/default-suites.conf
index 0198486..1e8d47a 100644
--- a/example/default-suites.conf
+++ b/example/default-suites.conf
@@ -6,4 +6,4 @@
- aoip_sms:trx-sysmocell5000
- smpp
- aoip_smpp
-- aoip_encryption
+- aoip_encryption:cipher-a50+cipher-a51
diff --git a/example/resources.conf b/example/resources.conf
index f190c2f..95cb8cf 100644
--- a/example/resources.conf
+++ b/example/resources.conf
@@ -13,6 +13,7 @@ bts:
ipa_unit_id: 1
addr: 10.42.42.114
band: GSM-1800
+ ciphers: [a5_0, a5_1, a5_3]
- label: Ettus B200
type: osmo-bts-trx
@@ -20,6 +21,7 @@ bts:
addr: 10.42.42.50
band: GSM-1800
launch_trx: true
+ ciphers: [a5_0, a5_1]
- label: sysmoCell 5000
type: osmo-bts-trx
@@ -27,6 +29,7 @@ bts:
addr: 10.42.42.51
band: GSM-1800
trx_remote_ip: 10.42.42.112
+ ciphers: [a5_0, a5_1]
arfcn:
- arfcn: 512
@@ -56,21 +59,25 @@ modem:
imsi: '901700000009031'
ki: '80A37E6FDEA931EAC92FFA5F671EFEAD'
auth_algo: 'xor'
+ ciphers: [a5_0, a5_1]
- label: sierra_2
path: '/sierra_2'
imsi: '901700000009029'
ki: '00969E283349D354A8239E877F2E0866'
auth_algo: 'xor'
+ ciphers: [a5_0, a5_1]
- label: gobi_0
path: '/gobi_0'
imsi: '901700000009030'
ki: 'BB70807226393CDBAC8DD3439FF54252'
auth_algo: 'xor'
+ ciphers: [a5_0, a5_1]
- label: gobi_3
path: '/gobi_3'
imsi: '901700000009032'
ki: '2F70DCA43C45ACB97E947FDD0C7CA30A'
auth_algo: 'xor'
+ ciphers: [a5_0, a5_1]
diff --git a/example/scenarios/cipher-a50.conf b/example/scenarios/cipher-a50.conf
new file mode 100644
index 0000000..107172b
--- /dev/null
+++ b/example/scenarios/cipher-a50.conf
@@ -0,0 +1,7 @@
+resources:
+ bts:
+ - ciphers:
+ - a5_0
+ modem:
+ - ciphers:
+ - a5_0
diff --git a/example/scenarios/cipher-a51.conf b/example/scenarios/cipher-a51.conf
new file mode 100644
index 0000000..8539867
--- /dev/null
+++ b/example/scenarios/cipher-a51.conf
@@ -0,0 +1,7 @@
+resources:
+ bts:
+ - ciphers:
+ - a5_1
+ modem:
+ - ciphers:
+ - a5_1
diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index 1fcfea1..a70b366 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -56,6 +56,7 @@ RESOURCES_SCHEMA = {
'bts[].band': schema.BAND,
'bts[].trx_remote_ip': schema.IPV4,
'bts[].launch_trx': schema.BOOL_STR,
+ 'bts[].ciphers[]': schema.CIPHER,
'bts[].trx_list[].hw_addr': schema.HWADDR,
'bts[].trx_list[].net_device': schema.STR,
'bts[].trx_list[].nominal_power': schema.INT,
@@ -67,6 +68,7 @@ RESOURCES_SCHEMA = {
'modem[].imsi': schema.IMSI,
'modem[].ki': schema.KI,
'modem[].auth_algo': schema.AUTH_ALGO,
+ 'modem[].ciphers[]': schema.CIPHER,
}
WANT_SCHEMA = util.dict_add(
diff --git a/src/osmo_gsm_tester/schema.py b/src/osmo_gsm_tester/schema.py
index dcdfdb1..9a0906c 100644
--- a/src/osmo_gsm_tester/schema.py
+++ b/src/osmo_gsm_tester/schema.py
@@ -76,6 +76,11 @@ def times(val):
if n < 1:
raise ValueError('Positive value >0 expected instead of %d' % n)
+def cipher(val):
+ if val in ('a5_0', 'a5_1', 'a5_2', 'a5_3', 'a5_4', 'a5_5', 'a5_6', 'a5_7'):
+ return
+ raise ValueError('Unknown Cipher value: %r' % val)
+
INT = 'int'
STR = 'str'
UINT = 'uint'
@@ -88,6 +93,7 @@ KI = 'ki'
MSISDN = 'msisdn'
AUTH_ALGO = 'auth_algo'
TIMES='times'
+CIPHER = 'cipher'
SCHEMA_TYPES = {
INT: int,
STR: str,
@@ -101,6 +107,7 @@ SCHEMA_TYPES = {
MSISDN: msisdn,
AUTH_ALGO: auth_algo,
TIMES: times,
+ CIPHER: cipher,
}
def validate(config, schema):