#!/usr/bin/env python3 from osmo_gsm_tester.testenv import * def encryption_test_setup_run(enable_auth, algo): hlr = suite.hlr() bts = suite.bts() mgw_msc = suite.mgw() mgw_bsc = suite.mgw() stp = suite.stp() msc = suite.msc(hlr, mgw_msc, stp) bsc = suite.bsc(msc, mgw_bsc, stp) ms = suite.modem() print('start network...') msc.set_authentication(enable_auth) msc.set_encryption(algo) bsc.set_encryption(algo) hlr.start() stp.start() msc.start() mgw_msc.start() mgw_bsc.start() bsc.bts_add(bts) bsc.start() bts.start() wait(bsc.bts_is_connected, bts) ms.log_info() good_ki = ms.ki() bad_ki = ("%1X" % (int(good_ki[0], 16) ^ 0x01)) + good_ki[1:] print('KI changed: ' + good_ki + " => " + bad_ki) ms.set_ki(bad_ki) hlr.subscriber_add(ms) if enable_auth: print('Attempt connection with wrong KI...') ms.connect(msc.mcc_mnc()) sleep(40) # TODO: read pcap or CTRL interface and look for Rejected? (gsm_a.dtap.msg_mm_type == 0x04) print('Asserting modem did not register') # FIXME: this can fail because ofono qmi signals registered before being accepted by network. See OS#2458 # assert not ms.is_connected(msc.mcc_mnc()) assert not msc.subscriber_attached(ms) hlr.subscriber_delete(ms) print('KI changed: ' + bad_ki + " => " + good_ki) ms.set_ki(good_ki) hlr.subscriber_add(ms, ms.msisdn) print('Attempt connection with correct KI...') else: print('Attempt connection with wrong KI, should work as it is not used...') ms.connect(msc.mcc_mnc()) wait(ms.is_connected, msc.mcc_mnc()) wait(msc.subscriber_attached, ms)