/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-IEs"
 * 	found in "X2AP-15-4-0.asn1"
 * 	`asn1c -D ./asn1_n1 -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example`
 */

#ifndef	_SeNBSecurityKey_H_
#define	_SeNBSecurityKey_H_


#include <asn_application.h>

/* Including external dependencies */
#include <BIT_STRING.h>

#ifdef __cplusplus
extern "C" {
#endif

/* SeNBSecurityKey */
typedef BIT_STRING_t	 SeNBSecurityKey_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_SeNBSecurityKey_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SeNBSecurityKey;
asn_struct_free_f SeNBSecurityKey_free;
asn_struct_print_f SeNBSecurityKey_print;
asn_constr_check_f SeNBSecurityKey_constraint;
ber_type_decoder_f SeNBSecurityKey_decode_ber;
der_type_encoder_f SeNBSecurityKey_encode_der;
xer_type_decoder_f SeNBSecurityKey_decode_xer;
xer_type_encoder_f SeNBSecurityKey_encode_xer;
oer_type_decoder_f SeNBSecurityKey_decode_oer;
oer_type_encoder_f SeNBSecurityKey_encode_oer;
per_type_decoder_f SeNBSecurityKey_decode_uper;
per_type_encoder_f SeNBSecurityKey_encode_uper;
per_type_decoder_f SeNBSecurityKey_decode_aper;
per_type_encoder_f SeNBSecurityKey_encode_aper;

#ifdef __cplusplus
}
#endif

#endif	/* _SeNBSecurityKey_H_ */
#include <asn_internal.h>
