Commit dbd690a7 authored by Yann Garcia's avatar Yann Garcia
Browse files

Review verdict; Starting NAS ïntegrity & ciphering tests

parent 57512636
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -17,6 +17,12 @@
		},
		{
			"path": "../free5gc.util"
		},
		{
			"path": "../5G_ciphered_NAS_decipher_tool"
		},
		{
			"path": "../../frameworks/CryptoMobile/CryptoMobile"
		}
	],
	"settings": {
+127 −44
Original line number Diff line number Diff line
@@ -3,6 +3,9 @@
#include <iomanip>
#include <random>

#include <cstring>
#include <openssl/evp.h>

//#include "NG_SecurityDefinitionsAndExternalFunctions.hh"
#include "NG_NAS_SecurityFunctions.hh"
//#include "NR_RRC_ASN1_Definitions.hh"
@@ -13,8 +16,7 @@
#include "loggers.hh"


//namespace NG__SecurityDefinitionsAndExternalFunctions {
namespace NG__NAS__SecurityFunctions {
namespace NG__SecurityDefinitionsAndExternalFunctions {

   /**
   * @desc    This external function ... 
@@ -25,16 +27,97 @@ namespace NG__NAS__SecurityFunctions {
//BITSTRING fx__NR__AsIntegrityAlgorithm(const OCTETSTRING &a, const NR__RRC__ASN1__Definitions::IntegrityProtAlgorithm& b, const BITSTRING &c, const OCTETSTRING &d, const BITSTRING &e, const INTEGER &f){
//return int2bit(0, 0);
//}

OCTETSTRING fx__NG__NasIntegrityAlgorithm(const OCTETSTRING& p_EncodedNasPdu, const BITSTRING& p_IntegrityAlgorithm, const BITSTRING& p_KNASint, const OCTETSTRING& p_NasCount, const BITSTRING& p_BearerId, const INTEGER& p_Direction){
return int2oct(0, 0);
}

OCTETSTRING fx__NG__NasCiphering(const OCTETSTRING& p_EncodedNasPdu,const  BITSTRING& p_CipheringAlgorithm, const BITSTRING& p_KNASenc, const OCTETSTRING& p_NasCount, const  BITSTRING& p_BearerId){
OCTETSTRING fx__NG__NasCiphering(const OCTETSTRING& p_EncodedNasPdu,const  BITSTRING& p_CipheringAlgorithm, const BITSTRING& p_KNASenc, const OCTETSTRING& p_NasCount, const  BITSTRING& p_BearerId, const INTEGER& p_Direction){
   loggers::get_instance().log_msg(">>> fx__NG__NasCiphering: p_EncodedNasPdu: ", p_EncodedNasPdu);
   loggers::get_instance().log_msg(">>> fx__NG__NasCiphering: p_CipheringAlgorithm: ", bit2oct(p_CipheringAlgorithm));
   loggers::get_instance().log_msg(">>> fx__NG__NasCiphering: p_KNASenc: ", bit2oct(p_KNASenc));
   loggers::get_instance().log_msg(">>> fx__NG__NasCiphering: p_NasCount: ", p_NasCount);
   loggers::get_instance().log_msg(">>> fx__NG__NasCiphering: p_BearerId: ", bit2oct(p_BearerId));
   loggers::get_instance().log_msg(">>> fx__NG__NasCiphering: p_Direction: ", p_Direction);

   // sanity checks
   if (p_CipheringAlgorithm.lengthof() != 4)/* || (p_CipheringAlgorithm.get_value() != 0b0001)*/ {
      /// 0b0001 = EEA2 (AES-128)
      loggers::get_instance().error("fx__NG__NasCiphering: p_CipheringAlgorithm: Wrong length");
      return int2oct(0, 0);
   } else if (p_KNASenc.lengthof() != 128) {
      loggers::get_instance().error("fx__NG__NasCiphering: p_KNASenc: Wrong length");
      return int2oct(0, 0);
   } else if ((p_NasCount.lengthof() != 4) || (p_BearerId.lengthof() != 5)) {
      loggers::get_instance().error("fx__NG__NasCiphering: p_NasCount/p_BearerId: Wrong length");
      return int2oct(0, 0);
   }

OCTETSTRING fx__NG__NasDeciphering(const OCTETSTRING& p_CipheredNasMsg, const BITSTRING& p_CipheringAlgorithm, const BITSTRING& p_KNASenc, const OCTETSTRING& p_NasCount, const BITSTRING& p_BearerId){
   // Cypher key
   const unsigned char* key = (const unsigned char*)bit2oct(p_KNASenc);

   // Construct IV (counter block) as per 3GPP TS 33.501 Annex C.3
   const unsigned char iv_length = 16;
   unsigned char iv[iv_length] = {0};
   const unsigned char* nas_count = (const unsigned char*)p_NasCount;
   iv[0] = nas_count[0];
   iv[1] = nas_count[1];
   iv[2] = nas_count[2];
   iv[3] = nas_count[3];
   // BearerId: 5 bits, Direction: 1 bit (LSB)
   unsigned char bearer_dir = ((*((const unsigned char*)bit2oct(p_BearerId)) & 0x1F) << 3) | (((unsigned char)p_Direction.get_long_long_val() & 0x01) << 2);
   loggers::get_instance().log("fx__NG__NasCiphering: bearer_dir=0x%02x", bearer_dir);
   iv[4] = bearer_dir;
   unsigned int u = p_EncodedNasPdu.lengthof();
   loggers::get_instance().log_to_hexa("fx__NG__NasCiphering: p_EncodedNasPdu.lengthof()=", (unsigned char*)&u, 4);
   loggers::get_instance().log("fx__NG__NasCiphering: >> 8 %02x=", u >> 8);
   loggers::get_instance().log("fx__NG__NasCiphering: >> 16 %02x=", u >> 16);
   loggers::get_instance().log("fx__NG__NasCiphering: >> 24 %02x=", u >> 24);
   loggers::get_instance().log("fx__NG__NasCiphering: << 8 %02x=", u << 8);
   OCTETSTRING data_len = int2oct(p_EncodedNasPdu.lengthof(), 4);
   const unsigned char* data_len_ = (const unsigned char*)data_len;
   iv[5] = data_len_[0];
   iv[6] = data_len_[1];
   iv[7] = data_len_[2];
   iv[8] = data_len_[3];
   // Remaining bytes are zero (already set)
   loggers::get_instance().log_to_hexa("fx__NG__NasCiphering: iv=", iv, iv_length);

   // Prepare input/output
   const unsigned char* plaintext = (const unsigned char*)p_EncodedNasPdu;
   int plaintext_len = p_EncodedNasPdu.lengthof();
   std::vector<unsigned char> ciphertext(plaintext_len);
   loggers::get_instance().log_to_hexa("fx__NG__NasCiphering: plaintext=", plaintext, plaintext_len);

   // OpenSSL AES-CTR encryption
   EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new();
   int outlen1 = 0, outlen2 = 0;
   if (!ctx) {
      loggers::get_instance().error("fx__NG__NasCiphering: EVP_CIPHER_CTX_new failed");
      return int2oct(0, 0);
   }
   if (EVP_EncryptInit_ex(ctx, EVP_aes_128_ctr(), NULL, key, iv) != 1) {
      loggers::get_instance().error("fx__NG__NasCiphering: EVP_EncryptInit_ex failed");
      EVP_CIPHER_CTX_free(ctx);
      return int2oct(0, 0);
   }
   if (EVP_EncryptUpdate(ctx, ciphertext.data(), &outlen1, plaintext, plaintext_len) != 1) {
      loggers::get_instance().error("fx__NG__NasCiphering: EVP_EncryptUpdate failed");
      EVP_CIPHER_CTX_free(ctx);
      return int2oct(0, 0);
   }
   if (EVP_EncryptFinal_ex(ctx, ciphertext.data() + outlen1, &outlen2) != 1) {
      loggers::get_instance().error("fx__NG__NasCiphering: EVP_EncryptFinal_ex failed");
      EVP_CIPHER_CTX_free(ctx);
      return int2oct(0, 0);
   }
   EVP_CIPHER_CTX_free(ctx);

   OCTETSTRING result = OCTETSTRING(outlen1 + outlen2, (const unsigned char*)ciphertext.data());
   loggers::get_instance().log_msg("<<< fx__NG__NasCiphering: result: ", result);
   return result;
}

OCTETSTRING fx__NG__NasDeciphering(const OCTETSTRING& p_CipheredNasMsg, const BITSTRING& p_CipheringAlgorithm, const BITSTRING& p_KNASenc, const OCTETSTRING& p_NasCount, const BITSTRING& p_BearerId, const INTEGER& p_Direction){
return int2oct(0, 0);
}

+6 −4
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ LibNGAP_Pixits.PX_AMF_UE_NGAP_ID := 22
LibNGAP_Pixits.PX_PLMN_IDENTITY    := '00f110'O
LibNGAP_Pixits.PX_GNB_ID           := '0000000000000001001110'B

Lib_NG_NAS_Pixits.PX_CHECK_SECURITY                                := false
Lib_NG_NAS_Pixits.PX_SUPI_FORMAT                                   := '0000'B
Lib_NG_NAS_Pixits.PX_SUPI_DIGITS                                   := '00f110214300014444330302'O
Lib_NG_NAS_Pixits.PX_USIM_OPERATOR_VARIANT_ALGORITHM_CONFIGURATION := '00000000000000000000000000000000'O
@@ -67,14 +68,14 @@ system.N2_gNBaMF_P.params := "NGAP/SCTP_FILE/IP_OFFLINE/ETH(mac_src=8c554ac1eee0
#AtsImsIot_TestControl.control

#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_01
###########################NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_02
NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_02
#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_03
#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_04
#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_REQ_05
#NG_NAS_TestCases.TC_5GNAS_AMF_AUT_ABN_01
#NG_NAS_TestCases.TC_NGNAS_AMF_AUT_SEQ_01
#NG_NAS_TestCases.TC_5GNAS_AMF_SEC_ACC_01
#NG_NAS_TestCases.TC_5GNAS_AMF_SEC_REJ_01
NG_NAS_TestCases.TC_5GNAS_AMF_SEC_REJ_01
#NG_NAS_TestCases.TC_5GNAS_AMF_DLN_ACC_01
#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_01
#NG_NAS_TestCases.TC_5GNAS_AMF_REG_ACC_02
@@ -129,10 +130,11 @@ system.N2_gNBaMF_P.params := "NGAP/SCTP_FILE/IP_OFFLINE/ETH(mac_src=8c554ac1eee0
#NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_18_01
#NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_19_01
#NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_20_01
NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_21_01
NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_22_01
#NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_21_01
#NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_22_01
#NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_23_01
#NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_24_01
#NG_NAS_TestCases.TC_5G_AKA_CRYPTO_FUNCTIONS_TEST_25_01

[GROUPS]
# In this section you can specify groups of hosts. These groups can be used inside the
+92 −40
Original line number Diff line number Diff line
@@ -90,11 +90,11 @@ module NG_NAS_TCFunctions {
                                                                                  ),
                                                     v_message
                                                     ) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST ***");
                        setverdict(fail);
                    } else {
                        setverdict(pass);
                        log("*** " & __SCOPE__ & ": PASS: Expected NG_AUTHENTICATION_REQUEST ***");
                        setverdict(pass);
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
@@ -132,11 +132,11 @@ module NG_NAS_TCFunctions {
                    f_NASPDU_Get(vc_recvNGAP_PDU);
                    var NG_NAS_DL_Message_Type v_message;
                    if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_SECURITY_MODE_COMMAND, v_message) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: NG_SECURITY_MODE_COMMAND mismatch. ***");
                        setverdict(fail);
                    } else {
                        setverdict(pass);
                        log("*** " & __SCOPE__ & ": PASS: Expected NG_SECURITY_MODE_COMMAND ***");
                        setverdict(pass);
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
@@ -197,8 +197,8 @@ module NG_NAS_TCFunctions {
                            f_NASPDU_Get(vc_recvNGAP_PDU);
                            var NG_NAS_DL_Message_Type v_message;
                            if (f_Check_5GAKA_NAS_DL_Message(vc_recvNAS_PDU, mw_NG_AUTHENTICATION_REQUEST, v_message) == true) {
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                                log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_AUTHENTICATION_REQUEST after T3560 timer expiry ***");
                                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                            }
                        }
                        [] tc_noac.timeout {
@@ -262,8 +262,11 @@ module NG_NAS_TCFunctions {
                                                                                  ),
                                                     v_message
                                                     ) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***");
                        setverdict(fail);
                    } else {
                        log("*** " & __SCOPE__ & ": PASS: Expected NG_IDENTITY_REQUEST ***");
                        setverdict(pass);
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
@@ -328,8 +331,11 @@ module NG_NAS_TCFunctions {
                                                                                  complement(ngKSI)
                                                                                  ),
                                                     v_message) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***");
                        setverdict(fail);
                    } else {
                        log("*** " & __SCOPE__ & ": PASS: Expected NG_IDENTITY_REQUEST ***");
                        setverdict(pass);
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
@@ -391,8 +397,11 @@ module NG_NAS_TCFunctions {
                                                                            ),
                                                     v_message
                                                     ) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_IDENTITY_REQUEST ***");
                        setverdict(fail);
                    } else {
                        log("*** " & __SCOPE__ & ": PASS: Expected NG_IDENTITY_REQUEST ***");
                        setverdict(pass);
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
@@ -438,8 +447,11 @@ module NG_NAS_TCFunctions {
                                                     mw_NG_SECURITY_MODE_COMMAND,
                                                     v_message
                                                     ) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: Unexpected NG_SECURITY_MODE_COMMAND ***");
                        setverdict(fail);
                    } else {
                        log("*** " & __SCOPE__ & ": PASS: Expected NG_SECURITY_MODE_COMMAND ***");
                        setverdict(pass);
                    }
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                    log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
@@ -478,8 +490,11 @@ module NG_NAS_TCFunctions {
                    )));
                    f_NASPDU_Get(vc_recvNGAP_PDU);
                    if (f_Check_5GAKA_NAS_UL_Message_is_encrypted(vc_recvNAS_PDU) == false) {
                        setverdict(fail);
                        log("*** " & __SCOPE__ & ": FAIL: Message is not encrypted ***");
                        setverdict(fail);
                    } else {
                        log("*** " & __SCOPE__ & ": PASS: Message is encrypted ***");
                        setverdict(pass);
                    }
                    // FIXME FSCOM Add NAS_PDU message check
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
@@ -593,6 +608,8 @@ module NG_NAS_TCFunctions {
                                                ) == false) {
                    setverdict(fail);
                    return;
                } else {
                    setverdict(pass);
                }

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
@@ -715,6 +732,8 @@ module NG_NAS_TCFunctions {
                                                                          ),
                                                v_message) == false) {
                    setverdict(fail);
                } else {
                    setverdict(pass);
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
@@ -834,8 +853,10 @@ module NG_NAS_TCFunctions {
                                                                          ),
                                                v_message) == false) {
                    log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_ACCEPT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_REGISTRATION_ACCEPT match. ***");
                    setverdict(pass);
                }

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
@@ -956,11 +977,12 @@ module NG_NAS_TCFunctions {
                                                                          ),
                                                v_message) == false) {
                    log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_ACCEPT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_REGISTRATION_ACCEPT match. ***");
                    setverdict(pass);
                }


                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

@@ -1075,8 +1097,10 @@ module NG_NAS_TCFunctions {
                                                                          ),
                                                v_message) == false) {
                    log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_ACCEPT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_REGISTRATION_ACCEPT match. ***");
                    setverdict(pass);
                }

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
@@ -1193,8 +1217,10 @@ module NG_NAS_TCFunctions {
                                                                          ),
                                                v_message) == false) {
                    log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_ACCEPT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_REGISTRATION_ACCEPT match. ***");
                    setverdict(pass);
                }

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
@@ -1317,8 +1343,12 @@ module NG_NAS_TCFunctions {
                                                 )) == false) {

                    log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_REJECT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_REGISTRATION_REJECT match. ***");
                    setverdict(pass);
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());

                log(vc_recvNGAP_PDU);
                f_NASPDU_Get(vc_recvNGAP_PDU);
@@ -1469,7 +1499,10 @@ module NG_NAS_TCFunctions {
                                                 )) == false) {

                    log("*** " & __SCOPE__ & ": FAIL: NG_REGISTRATION_REJECT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail); 
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_REGISTRATION_REJECT match. ***");
                    setverdict(pass);
                }

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
@@ -1535,7 +1568,10 @@ module NG_NAS_TCFunctions {
                                                 ) == false) {

                    log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_ACCEPT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_DEREGISTRATION_ACCEPT match. ***");
                    setverdict(pass);
                }

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
@@ -1597,7 +1633,10 @@ module NG_NAS_TCFunctions {
                                                 ) == false) {

                    log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_ACCEPT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_DEREGISTRATION_ACCEPT match. ***");
                    setverdict(pass)
                }

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
@@ -1656,8 +1695,12 @@ module NG_NAS_TCFunctions {
                                                 )) == false) {

                    log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_REQUEST_MT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail); 
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_DEREGISTRATION_REQUEST_MT match. ***");
                    setverdict(pass);
                }

                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");

@@ -1706,9 +1749,12 @@ module NG_NAS_TCFunctions {
                                                 )) == false) {

                    log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_REQUEST_MT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_DEREGISTRATION_REQUEST_MT match. ***");
                    setverdict(pass);
                }
                //Not sent sesponse and again wait for deregistration_request
                //Not sent response and again wait for deregistration_request
                f_recv_NGAP_PDU(
                    mw_ngap_initMsg(
                        mw_n2_DownlinkNASTransport(
@@ -1738,7 +1784,10 @@ module NG_NAS_TCFunctions {
                                                 )) == false) {

                    log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_REQUEST_MT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_DEREGISTRATION_REQUEST_MT match. ***");
                    setverdict(pass);
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
@@ -1791,7 +1840,10 @@ module NG_NAS_TCFunctions {
                                                 )) == false) {

                    log("*** " & __SCOPE__ & ": FAIL: NG_DEREGISTRATION_REQUEST_MT mismatch. ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    setverdict(fail);
                } else {
                    log("*** " & __SCOPE__ & ": PASS: NG_DEREGISTRATION_REQUEST_MT match. ***");
                    setverdict(pass);
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
                log("*** " & __SCOPE__ & ": INFO: Testbody done. ***");
+134 −32

File changed.

Preview size limit exceeded, changes collapsed.

Loading