blob: e85e1c978d18b761755524401db12cd1f7508d51 [file] [log] [blame]
Pau Espin Pedrol7a333b02018-09-18 12:39:14 +02001#!/usr/bin/env python3
2from osmo_gsm_tester.testenv import *
3
4def encryption_test_setup_run(enable_auth, algo):
Pau Espin Pedrol40c7bc72020-05-05 13:41:42 +02005 hlr = tenv.hlr()
6 bts = tenv.bts()
7 mgw_msc = tenv.mgw()
8 mgw_bsc = tenv.mgw()
9 stp = tenv.stp()
10 msc = tenv.msc(hlr, mgw_msc, stp)
11 bsc = tenv.bsc(msc, mgw_bsc, stp)
12 ms = tenv.modem()
Pau Espin Pedrol7a333b02018-09-18 12:39:14 +020013
14 print('start network...')
15 msc.set_authentication(enable_auth)
16 msc.set_encryption(algo)
17 bsc.set_encryption(algo)
18 hlr.start()
19 stp.start()
20 msc.start()
21 mgw_msc.start()
22 mgw_bsc.start()
23 bsc.bts_add(bts)
24 bsc.start()
25 bts.start()
26 wait(bsc.bts_is_connected, bts)
27
28 ms.log_info()
29 good_ki = ms.ki()
30 bad_ki = ("%1X" % (int(good_ki[0], 16) ^ 0x01)) + good_ki[1:]
31
32 print('KI changed: ' + good_ki + " => " + bad_ki)
33 ms.set_ki(bad_ki)
34 hlr.subscriber_add(ms)
35 if enable_auth:
36 print('Attempt connection with wrong KI...')
37 ms.connect(msc.mcc_mnc())
38
39 sleep(40) # TODO: read pcap or CTRL interface and look for Rejected? (gsm_a.dtap.msg_mm_type == 0x04)
40 print('Asserting modem did not register')
41 # FIXME: this can fail because ofono qmi signals registered before being accepted by network. See OS#2458
Pau Espin Pedrol3a81a7e2020-06-10 16:52:53 +020042 # assert not ms.is_registered(msc.mcc_mnc())
Pau Espin Pedrol7a333b02018-09-18 12:39:14 +020043 assert not msc.subscriber_attached(ms)
44
45 hlr.subscriber_delete(ms)
46 print('KI changed: ' + bad_ki + " => " + good_ki)
47 ms.set_ki(good_ki)
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020048 hlr.subscriber_add(ms, ms.msisdn())
Pau Espin Pedrol7a333b02018-09-18 12:39:14 +020049 print('Attempt connection with correct KI...')
50 else:
51 print('Attempt connection with wrong KI, should work as it is not used...')
52 ms.connect(msc.mcc_mnc())
Pau Espin Pedrol3a81a7e2020-06-10 16:52:53 +020053 wait(ms.is_registered, msc.mcc_mnc())
Pau Espin Pedrol7a333b02018-09-18 12:39:14 +020054 wait(msc.subscriber_attached, ms)