diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index 21cf742..67537fb 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -954,11 +954,18 @@
 	}
 }
 
-template PDU_BSSAP tr_BSSMAP_HandoverRequest modifies tr_BSSAP_BSSMAP := {
+template PDU_BSSAP tr_BSSMAP_HandoverRequest(template BSSMAP_IE_EncryptionInformation encryptionInformation := *,
+					     template BSSMAP_IE_ChosenEncryptionAlgorithm chosenEncryptionAlgorithm := *,
+					     template BSSMAP_IE_KC128 kC128 := *
+					    )
+  modifies tr_BSSAP_BSSMAP := {
 	pdu := {
 		bssmap := {
 			handoverRequest := {
-				messageType := '10'O
+				messageType := '10'O,
+				encryptionInformation := encryptionInformation,
+				chosenEncryptionAlgorithm := chosenEncryptionAlgorithm,
+				kC128 := kC128
 			}
 		}
 	}
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index 46a368e..221123b 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -5764,8 +5764,22 @@
 	 * from now on this here is the new BSS. */
 	f_create_bssmap_exp_handoverRequest(193);
 
+	var template BSSMAP_IE_EncryptionInformation encryptionInformation;
+	var template BSSMAP_IE_ChosenEncryptionAlgorithm chosenEncryptionAlgorithm;
+	var template BSSMAP_IE_KC128 kC128;
+	var OCT1 a5_perm_alg;
+	f_get_expected_encryption(encryptionInformation, chosenEncryptionAlgorithm, kC128, a5_perm_alg);
+	var template PDU_BSSAP expect_ho_request := tr_BSSMAP_HandoverRequest(encryptionInformation, chosenEncryptionAlgorithm, kC128);
 	var PDU_BSSAP ho_request;
-	BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request;
+	alt {
+	[] BSSAP.receive(expect_ho_request);
+	[] BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request {
+		log("Error: Wrong handoverRequest received. Expected: ", expect_ho_request,
+		    " got ", ho_request);
+		setverdict(fail, "Wrong handoverRequest received");
+		mtc.stop;
+		}
+	}
 
 	/* new BSS composes a RR Handover Command */
 	var PDU_ML3_NW_MS rr_ho_cmd := valueof(ts_RR_HandoverCommand);
@@ -5812,9 +5826,22 @@
 	f_init_handler(pars);
 	f_create_bssmap_exp_handoverRequest(194);
 
+	var template BSSMAP_IE_EncryptionInformation encryptionInformation;
+	var template BSSMAP_IE_ChosenEncryptionAlgorithm chosenEncryptionAlgorithm;
+	var template BSSMAP_IE_KC128 kC128;
+	var OCT1 a5_perm_alg;
+	f_get_expected_encryption(encryptionInformation, chosenEncryptionAlgorithm, kC128, a5_perm_alg);
+	var template PDU_BSSAP expect_ho_request := tr_BSSMAP_HandoverRequest(encryptionInformation, chosenEncryptionAlgorithm, kC128);
 	var PDU_BSSAP ho_request;
-	BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request;
-
+	alt {
+	[] BSSAP.receive(expect_ho_request);
+	[] BSSAP.receive(tr_BSSMAP_HandoverRequest) -> value ho_request {
+		log("Error: Wrong handoverRequest received. Expected: ", expect_ho_request,
+		    " got ", ho_request);
+		setverdict(fail, "Wrong handoverRequest received");
+		mtc.stop;
+		}
+	}
 	/* new BSS composes a RR Handover Command */
 	var PDU_ML3_NW_MS rr_ho_cmd := valueof(ts_RR_HandoverCommand);
 	var octetstring rr_ho_cmd_enc := enc_PDU_ML3_NW_MS(rr_ho_cmd);
@@ -5861,15 +5888,42 @@
 	f_expect_clear();
 	setverdict(pass);
 }
-function f_tc_ho_inter_bsc_main(boolean use_ipv6 := false) runs on MTC_CT {
+function f_tc_ho_inter_bsc_main(boolean use_ipv6 := false, integer a5_n := 0) runs on MTC_CT {
 	var BSC_ConnHdlr vc_conn0;
 	var BSC_ConnHdlr vc_conn1;
 	f_init(2);
 
 	var BSC_ConnHdlrPars pars0 := f_init_pars(53);
 	pars0.use_ipv6 := use_ipv6;
+	pars0.net.expect_ciph := a5_n > 0;
+	pars0.net.expect_auth := pars0.net.expect_ciph;
+	pars0.net.kc_support := bit2oct('00000001'B << a5_n);
+	pars0.cm2.classmarkInformationType2_oct5.a5_3 := '1'B;
+	pars0.cm2.classmarkInformationType2_oct5.a5_2 := '0'B;
+	pars0.cm2.classmarkInformationType2_oct5.cm3 := '1'B;
+	pars0.cm3 := valueof(ts_CM3_default);
+	pars0.use_umts_aka := true;
+	pars0.vec := f_gen_auth_vec_3g();
+	pars0.vec_keep := true;
+
 	var BSC_ConnHdlrPars pars1 := f_init_pars(53);
 	pars1.use_ipv6 := use_ipv6;
+	pars1.net.expect_ciph := pars0.net.expect_ciph;
+	pars1.net.expect_auth := pars0.net.expect_ciph;
+	pars1.net.kc_support := bit2oct('00000001'B << a5_n);
+	pars1.cm2 := pars0.cm2;
+	pars1.cm3 := pars0.cm3;
+	pars1.use_umts_aka := true;
+	/* Both components need the same auth vector info because we expect f_tc_ho_inter_bsc0's ciphering key to be
+	 * identical to the one that shows up in f_tc_ho_inter_bsc1. Can only do that by feeding in a vector to both
+	 * components and then not overwriting it in BSC_ConnectionHandler. */
+	pars1.vec := pars0.vec;
+	pars1.vec_keep := true;
+
+	if (a5_n > 0) {
+		f_vty_config(MSCVTY, "network", "authentication required");
+	}
+	f_vty_config(MSCVTY, "network", "encryption a5 " & int2str(a5_n));
 
 	vc_conn0 := f_start_handler_with_pars(refers(f_tc_ho_inter_bsc0), pars0, 0);
 	vc_conn1 := f_start_handler_with_pars(refers(f_tc_ho_inter_bsc1), pars1, 1);
@@ -5877,7 +5931,16 @@
 	vc_conn1.done;
 }
 testcase TC_ho_inter_bsc() runs on MTC_CT {
-	f_tc_ho_inter_bsc_main(false);
+	f_tc_ho_inter_bsc_main(false, a5_n := 0);
+}
+testcase TC_ho_inter_bsc_a5_1() runs on MTC_CT {
+	f_tc_ho_inter_bsc_main(false, a5_n := 1);
+}
+testcase TC_ho_inter_bsc_a5_3() runs on MTC_CT {
+	f_tc_ho_inter_bsc_main(false, a5_n := 3);
+}
+testcase TC_ho_inter_bsc_a5_4() runs on MTC_CT {
+	f_tc_ho_inter_bsc_main(false, a5_n := 4);
 }
 testcase TC_ho_inter_bsc_ipv6() runs on MTC_CT {
 	f_tc_ho_inter_bsc_main(true);
@@ -6614,6 +6677,9 @@
 
 	execute( TC_ho_inter_bsc_unknown_cell() );
 	execute( TC_ho_inter_bsc() );
+	execute( TC_ho_inter_bsc_a5_1() );
+	execute( TC_ho_inter_bsc_a5_3() );
+	execute( TC_ho_inter_bsc_a5_4() );
 	execute( TC_ho_inter_bsc_ipv6() );
 
 	execute( TC_ho_inter_msc_out() );
