enb: Set cipher and integrity via scenario file

This patch enables setting cipher and integrity algorithms
in Amarisoft eNB and srsENB via scenario files. If no
settings are defined following defaults are applied:
- Cipher algorithm: EEA0, EEA2, EEA1
- Integrity algorithm: EIA2, EIA1, EIA0

Example of setting cipher algorithms:
- 4g:srsue-rftype@uhd+srsenb-rftype@uhd+mod-enb-cipher@eea1+mod-enb-cipher@eea0+mod-enb-nprb@6

Change-Id: I595206b7d49016fb6d0aec175c828d9537c53886
diff --git a/src/osmo_gsm_tester/core/schema.py b/src/osmo_gsm_tester/core/schema.py
index d4a460d..4064c20 100644
--- a/src/osmo_gsm_tester/core/schema.py
+++ b/src/osmo_gsm_tester/core/schema.py
@@ -105,11 +105,22 @@
         raise ValueError('Positive value >0 expected instead of %d' % n)
     return True
 
-def cipher(val):
+def cipher_2g(val):
     if val in ('a5_0', 'a5_1', 'a5_2', 'a5_3', 'a5_4', 'a5_5', 'a5_6', 'a5_7'):
         return True
     raise ValueError('Unknown Cipher value: %r' % val)
 
+def cipher_4g(val):
+    if val.lower() in ('eea0', 'eea1', 'eea2'):
+        return True
+    raise ValueError('Unknown 4G cipher value: %r' % val)
+
+def integrity_4g(val):
+    if val.lower() in ('eia0', 'eia1', 'eia2'):
+        # srsENB
+        return True
+    raise ValueError('Unknown 4G integrity value %r' % val)
+
 def modem_feature(val):
     if val in ('sms', 'gprs', 'voice', 'ussd', 'sim', '2g', '3g', '4g', 'dl_qam256', 'ul_qam64', 'qc_diag'):
         return True
@@ -165,7 +176,9 @@
 MSISDN = 'msisdn'
 AUTH_ALGO = 'auth_algo'
 TIMES='times'
-CIPHER = 'cipher'
+CIPHER_2G = 'cipher_2g'
+CIPHER_4G = 'cipher_4g'
+INTEGRITY_4G = 'integrity_4g'
 MODEM_FEATURE = 'modem_feature'
 PHY_CHAN = 'chan'
 CHAN_ALLOCATOR = 'chan_allocator'
@@ -189,7 +202,8 @@
         MSISDN: msisdn,
         AUTH_ALGO: auth_algo,
         TIMES: times,
-        CIPHER: cipher,
+        CIPHER_2G: cipher_2g,
+        CIPHER_4G: cipher_4g,
         MODEM_FEATURE: modem_feature,
         PHY_CHAN: phy_channel_config,
         CHAN_ALLOCATOR: channel_allocator,
@@ -198,6 +212,7 @@
         OSMO_TRX_CLOCK_REF: osmo_trx_clock_ref,
         LTE_TRANSMISSION_MODE: lte_transmission_mode,
         DURATION: duration,
+        INTEGRITY_4G: integrity_4g,
     }
 
 def add(dest, src):