ranap_msg_factory: add Security Mode Complete msg generator

Needed by hnb-test to reply to a Security Mode Command message.
This commit is contained in:
Neels Hofmeyr 2016-04-19 01:21:41 +02:00
parent 68b7a47868
commit a9f5566482
2 changed files with 38 additions and 0 deletions

View File

@ -4,6 +4,8 @@
#include <osmocom/ranap/RANAP_Cause.h>
#include <osmocom/ranap/RANAP_CN-DomainIndicator.h>
#include <osmocom/ranap/RANAP_GlobalRNC-ID.h>
#include <osmocom/ranap/RANAP_ChosenIntegrityProtectionAlgorithm.h>
#include <osmocom/ranap/RANAP_ChosenEncryptionAlgorithm.h>
/*! \brief generate RANAP DIRECT TRANSFER message */
struct msgb *ranap_new_msg_dt(uint8_t sapi, const uint8_t *nas, unsigned int nas_len);
@ -11,6 +13,11 @@ struct msgb *ranap_new_msg_dt(uint8_t sapi, const uint8_t *nas, unsigned int nas
/*! \brief generate RANAP SECURITY MODE COMMAND message */
struct msgb *ranap_new_msg_sec_mod_cmd(const uint8_t *ik, const uint8_t *ck);
/*! \brief generate RANAP SECURITY MODE COMPLETE message */
struct msgb *ranap_new_msg_sec_mod_compl(
RANAP_ChosenIntegrityProtectionAlgorithm_t chosen_ip_alg,
RANAP_ChosenEncryptionAlgorithm_t chosen_enc_alg);
/*! \brief generate RANAP COMMON ID message */
struct msgb *ranap_new_msg_common_id(const char *imsi);

View File

@ -263,6 +263,37 @@ struct msgb *ranap_new_msg_sec_mod_cmd(const uint8_t *ik, const uint8_t *ck)
return msg;
}
struct msgb *ranap_new_msg_sec_mod_compl(
RANAP_ChosenIntegrityProtectionAlgorithm_t chosen_ip_alg,
RANAP_ChosenEncryptionAlgorithm_t chosen_enc_alg)
{
RANAP_SecurityModeCompleteIEs_t ies;
RANAP_SecurityModeComplete_t out;
struct msgb *msg;
int i, rc;
memset(&ies, 0, sizeof(ies));
memset(&out, 0, sizeof(out));
ies.presenceMask = SECURITYMODECOMPLETEIES_RANAP_CHOSENENCRYPTIONALGORITHM_PRESENT;
ies.chosenIntegrityProtectionAlgorithm = chosen_ip_alg;
ies.chosenEncryptionAlgorithm = chosen_enc_alg;
/* ies -> out */
rc = ranap_encode_securitymodecompleteies(&out, &ies);
/* out -> msg */
msg = ranap_generate_successful_outcome(RANAP_ProcedureCode_id_SecurityModeControl,
RANAP_Criticality_reject,
&asn_DEF_RANAP_SecurityModeComplete,
&out);
/* release dynamic allocations attached to out */
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RANAP_SecurityModeComplete, &out);
return msg;
}
/*! \brief generate RANAP COMMON ID message */
struct msgb *ranap_new_msg_common_id(const char *imsi)
{