Loading ccsrc/Framework/src/Asn1Recode.cc→ccsrc/Asn1c/Asn1Recode.cc100755 → 100644 +14 −4 Original line number Diff line number Diff line #include <asn1/asn_application.h> #include "Codec.hh" #include "CodecPer.hh" extern "C" { static int asn1c_collect_encoded_data(const void *buffer, size_t size, void *application_specific_key) Loading @@ -11,7 +11,7 @@ extern "C" { } } int ASN1Recode::recode(const asn_TYPE_descriptor_s & td, int from, int to, TTCN_Buffer & buf) int ASN1RecodePer::recode(const asn_TYPE_descriptor_s & td, int from, int to, TTCN_Buffer & buf) { int rc = -1; void * ptr = NULL; Loading @@ -30,12 +30,22 @@ int ASN1Recode::recode(const asn_TYPE_descriptor_s & td, int from, int to, TTCN_ return rc; } int ASN1Recode::ber2per(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) int ASN1RecodePer::ber2per(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) { return recode(td, (int)ATS_BER, (int)ATS_UNALIGNED_CANONICAL_PER, buf); } int ASN1Recode::per2ber(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) int ASN1RecodePer::per2ber(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) { return recode(td, (int)ATS_UNALIGNED_BASIC_PER, (int)ATS_DER, buf); } /*int ASN1RecodeOer::ber2oer(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) { return recode(td, (int)ATS_XER, (int)ATS_CANONICAL_OER, buf); } int ASN1RecodeOer::oer2ber(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) { return recodeOer(td, (int)ATS_BASIC_OER, (int)ATS_XER, buf); }*/ ccsrc/Asn1c/Asn1cEncDec.cc +65 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ extern "C" int asn1c_collect_encoded_data(const void *buffer, size_t size, void return 0; } // PER Encoding #include <ber_decoder.h> #include <der_encoder.h> #include <per_encoder.h> Loading Loading @@ -173,3 +174,67 @@ int asn1c_ber2per(asn_TYPE_descriptor_t &td, const TTCN_Buffer & ber, TTCN_Buffe }*/ return rc; } // OER Encoding #include <xer_decoder.h> #include <xer_encoder.h> #include <oer_decoder.h> #include <oer_encoder.h> int asn1c_oer2xer(asn_TYPE_descriptor_t &td, const TTCN_Buffer & oer, TTCN_Buffer & xer, void** ctx ) { //void** obj = ctx; int rc = -1; asn_dec_rval_t rc_d; rc_d = oer_decode(NULL, &td, ctx, oer.get_read_data(), oer.get_read_len()); if(rc_d.code == RC_OK){ asn_enc_rval_t rc_e; xer.clear(); rc_e = xer_encode(&td, (const asn_oer_constraints_t*)ctx, XER_F_BASIC, asn1c_collect_encoded_data, &xer); rc = rc_e.encoded; } /*if(obj) { ASN_STRUCT_FREE(td, obj); }*/ return rc; } int asn1c_xer2oer(asn_TYPE_descriptor_t &td, const TTCN_Buffer & xer, TTCN_Buffer & oer, void** ctx ) { //void** obj = ctx; int rc = -1; asn_dec_rval_t rc_d; rc_d = xer_decode( NULL, &td, ctx, xer.get_data(), xer.get_len()); if(rc_d.code == RC_OK){ loggers::get_instance().log("asn1c_ber2per: XER decoding succeed"); asn_enc_rval_t rc_e; //per.clear(); rc_e = oer_encode(&td, ctx, asn1c_collect_encoded_data, &oer); rc = rc_e.encoded; if(rc < 0) { loggers::get_instance().warning("asn1c_ber2per: OER encoding failed"); } } else { loggers::get_instance().warning("asn1c_ber2per: XER decoding failed"); // td.free_struct(&td, *ctx, 0); } /*if(obj) { ASN_STRUCT_FREE(td, obj); }*/ return rc; } ccsrc/Asn1c/Asn1cEncDec.hh +2 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ TS asn1c2titan_seq(const TA& a) int asn1c_per2ber(asn_TYPE_descriptor_t &td, const TTCN_Buffer & per, TTCN_Buffer & ber, void** ctx ); int asn1c_ber2per(asn_TYPE_descriptor_t &td, const TTCN_Buffer & ber, TTCN_Buffer & per, void** ctx ); // int asn1c_oer2xer(asn_TYPE_descriptor_t &td, const TTCN_Buffer & oer, TTCN_Buffer & xer, void** ctx ); // int asn1c_xer2oer(asn_TYPE_descriptor_t &td, const TTCN_Buffer & xer, TTCN_Buffer & oer, void** ctx ); #endif ccsrc/EncDec/LibItsIvim_Encdec.cc +18 −8 Original line number Diff line number Diff line Loading @@ -203,23 +203,33 @@ namespace LibItsIvim__EncdecDeclarations { return oct2bit(os); } BITSTRING fx__enc__UtIvimChangePosition (const LibItsIvim__TypesAndValues::UtIvimChangePosition& p_utIvimChangePosition) BITSTRING fx__enc__UtIvimTrigger (const LibItsIvim__TypesAndValues::UtIvimTrigger& p_utIvimTrigger) { loggers::get_instance().log_msg(">>> fx__enc__UtIvimChangePosition: ", p_utIvimChangePosition); loggers::get_instance().log_msg(">>> fx__enc__UtIvimTrigger: ", p_utIvimTrigger); UpperTesterIvimCodec codec; OCTETSTRING os; codec.encode(p_utIvimChangePosition, os); codec.encode(p_utIvimTrigger, os); return oct2bit(os); } BITSTRING fx__enc__UtIvimTrigger (const LibItsIvim__TypesAndValues::UtIvimTrigger& p_utIvimTrigger) BITSTRING fx__enc__UtIvimUpdate (const LibItsIvim__TypesAndValues::UtIvimUpdate& p_utIvimUpdate) { loggers::get_instance().log_msg(">>> fx__enc__UtIvimTrigger: ", p_utIvimTrigger); loggers::get_instance().log_msg(">>> fx__enc__UtIvimUpdate: ", p_utIvimUpdate); UpperTesterIvimCodec codec; OCTETSTRING os; codec.encode(p_utIvimTrigger, os); codec.encode(p_utIvimUpdate, os); return oct2bit(os); } BITSTRING fx__enc__UtIvimTermination (const LibItsIvim__TypesAndValues::UtIvimTermination& p_utIvimTermination) { loggers::get_instance().log_msg(">>> fx__enc__UtIvimTermination: ", p_utIvimTermination); UpperTesterIvimCodec codec; OCTETSTRING os; codec.encode(p_utIvimTermination, os); return oct2bit(os); } Loading ccsrc/EncDec/LibItsSecurity_Encdec.cc +47 −0 Original line number Diff line number Diff line #include "LibItsSecurity_EncdecDeclarations.hh" #include "EtsiTs103097Codec.hh" #include "loggers.hh" namespace LibItsSecurity__EncdecDeclarations { BITSTRING fx__enc__CertificateBase(IEEE1609dot2::CertificateBase const& p_cert) { loggers::get_instance().log_msg(">>> fx__enc__CertificateBase: ", p_cert); EtsiTs103097Codec codec; OCTETSTRING os; if (codec.encode(p_cert, os) == -1) { loggers::get_instance().warning("fx__enc__CertificateBase: -1 result code was returned"); return int2bit(0, 1); } return oct2bit(os); } INTEGER fx__dec__ToBeSignedCertificate(BITSTRING& b, LibItsSecurity__TypesAndValues::ToBeSignedCertificate& p) { loggers::get_instance().log_msg(">>> fx__dec__ToBeSignedCertificate: ", b); return -1; } /**************************************************** * @desc External function to encode a SecuredMessage type * @param value to encode * @return encoded value ****************************************************/ // BITSTRING fx__enc__SecuredMessage(const LibItsSecurity__TypesAndValues::SecuredMessage& p) // { // return int2bit(0,8); // } /**************************************************** * @desc External function to encode a SecuredMessage type * @param value to encode Loading Loading
ccsrc/Framework/src/Asn1Recode.cc→ccsrc/Asn1c/Asn1Recode.cc100755 → 100644 +14 −4 Original line number Diff line number Diff line #include <asn1/asn_application.h> #include "Codec.hh" #include "CodecPer.hh" extern "C" { static int asn1c_collect_encoded_data(const void *buffer, size_t size, void *application_specific_key) Loading @@ -11,7 +11,7 @@ extern "C" { } } int ASN1Recode::recode(const asn_TYPE_descriptor_s & td, int from, int to, TTCN_Buffer & buf) int ASN1RecodePer::recode(const asn_TYPE_descriptor_s & td, int from, int to, TTCN_Buffer & buf) { int rc = -1; void * ptr = NULL; Loading @@ -30,12 +30,22 @@ int ASN1Recode::recode(const asn_TYPE_descriptor_s & td, int from, int to, TTCN_ return rc; } int ASN1Recode::ber2per(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) int ASN1RecodePer::ber2per(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) { return recode(td, (int)ATS_BER, (int)ATS_UNALIGNED_CANONICAL_PER, buf); } int ASN1Recode::per2ber(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) int ASN1RecodePer::per2ber(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) { return recode(td, (int)ATS_UNALIGNED_BASIC_PER, (int)ATS_DER, buf); } /*int ASN1RecodeOer::ber2oer(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) { return recode(td, (int)ATS_XER, (int)ATS_CANONICAL_OER, buf); } int ASN1RecodeOer::oer2ber(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf) { return recodeOer(td, (int)ATS_BASIC_OER, (int)ATS_XER, buf); }*/
ccsrc/Asn1c/Asn1cEncDec.cc +65 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ extern "C" int asn1c_collect_encoded_data(const void *buffer, size_t size, void return 0; } // PER Encoding #include <ber_decoder.h> #include <der_encoder.h> #include <per_encoder.h> Loading Loading @@ -173,3 +174,67 @@ int asn1c_ber2per(asn_TYPE_descriptor_t &td, const TTCN_Buffer & ber, TTCN_Buffe }*/ return rc; } // OER Encoding #include <xer_decoder.h> #include <xer_encoder.h> #include <oer_decoder.h> #include <oer_encoder.h> int asn1c_oer2xer(asn_TYPE_descriptor_t &td, const TTCN_Buffer & oer, TTCN_Buffer & xer, void** ctx ) { //void** obj = ctx; int rc = -1; asn_dec_rval_t rc_d; rc_d = oer_decode(NULL, &td, ctx, oer.get_read_data(), oer.get_read_len()); if(rc_d.code == RC_OK){ asn_enc_rval_t rc_e; xer.clear(); rc_e = xer_encode(&td, (const asn_oer_constraints_t*)ctx, XER_F_BASIC, asn1c_collect_encoded_data, &xer); rc = rc_e.encoded; } /*if(obj) { ASN_STRUCT_FREE(td, obj); }*/ return rc; } int asn1c_xer2oer(asn_TYPE_descriptor_t &td, const TTCN_Buffer & xer, TTCN_Buffer & oer, void** ctx ) { //void** obj = ctx; int rc = -1; asn_dec_rval_t rc_d; rc_d = xer_decode( NULL, &td, ctx, xer.get_data(), xer.get_len()); if(rc_d.code == RC_OK){ loggers::get_instance().log("asn1c_ber2per: XER decoding succeed"); asn_enc_rval_t rc_e; //per.clear(); rc_e = oer_encode(&td, ctx, asn1c_collect_encoded_data, &oer); rc = rc_e.encoded; if(rc < 0) { loggers::get_instance().warning("asn1c_ber2per: OER encoding failed"); } } else { loggers::get_instance().warning("asn1c_ber2per: XER decoding failed"); // td.free_struct(&td, *ctx, 0); } /*if(obj) { ASN_STRUCT_FREE(td, obj); }*/ return rc; }
ccsrc/Asn1c/Asn1cEncDec.hh +2 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ TS asn1c2titan_seq(const TA& a) int asn1c_per2ber(asn_TYPE_descriptor_t &td, const TTCN_Buffer & per, TTCN_Buffer & ber, void** ctx ); int asn1c_ber2per(asn_TYPE_descriptor_t &td, const TTCN_Buffer & ber, TTCN_Buffer & per, void** ctx ); // int asn1c_oer2xer(asn_TYPE_descriptor_t &td, const TTCN_Buffer & oer, TTCN_Buffer & xer, void** ctx ); // int asn1c_xer2oer(asn_TYPE_descriptor_t &td, const TTCN_Buffer & xer, TTCN_Buffer & oer, void** ctx ); #endif
ccsrc/EncDec/LibItsIvim_Encdec.cc +18 −8 Original line number Diff line number Diff line Loading @@ -203,23 +203,33 @@ namespace LibItsIvim__EncdecDeclarations { return oct2bit(os); } BITSTRING fx__enc__UtIvimChangePosition (const LibItsIvim__TypesAndValues::UtIvimChangePosition& p_utIvimChangePosition) BITSTRING fx__enc__UtIvimTrigger (const LibItsIvim__TypesAndValues::UtIvimTrigger& p_utIvimTrigger) { loggers::get_instance().log_msg(">>> fx__enc__UtIvimChangePosition: ", p_utIvimChangePosition); loggers::get_instance().log_msg(">>> fx__enc__UtIvimTrigger: ", p_utIvimTrigger); UpperTesterIvimCodec codec; OCTETSTRING os; codec.encode(p_utIvimChangePosition, os); codec.encode(p_utIvimTrigger, os); return oct2bit(os); } BITSTRING fx__enc__UtIvimTrigger (const LibItsIvim__TypesAndValues::UtIvimTrigger& p_utIvimTrigger) BITSTRING fx__enc__UtIvimUpdate (const LibItsIvim__TypesAndValues::UtIvimUpdate& p_utIvimUpdate) { loggers::get_instance().log_msg(">>> fx__enc__UtIvimTrigger: ", p_utIvimTrigger); loggers::get_instance().log_msg(">>> fx__enc__UtIvimUpdate: ", p_utIvimUpdate); UpperTesterIvimCodec codec; OCTETSTRING os; codec.encode(p_utIvimTrigger, os); codec.encode(p_utIvimUpdate, os); return oct2bit(os); } BITSTRING fx__enc__UtIvimTermination (const LibItsIvim__TypesAndValues::UtIvimTermination& p_utIvimTermination) { loggers::get_instance().log_msg(">>> fx__enc__UtIvimTermination: ", p_utIvimTermination); UpperTesterIvimCodec codec; OCTETSTRING os; codec.encode(p_utIvimTermination, os); return oct2bit(os); } Loading
ccsrc/EncDec/LibItsSecurity_Encdec.cc +47 −0 Original line number Diff line number Diff line #include "LibItsSecurity_EncdecDeclarations.hh" #include "EtsiTs103097Codec.hh" #include "loggers.hh" namespace LibItsSecurity__EncdecDeclarations { BITSTRING fx__enc__CertificateBase(IEEE1609dot2::CertificateBase const& p_cert) { loggers::get_instance().log_msg(">>> fx__enc__CertificateBase: ", p_cert); EtsiTs103097Codec codec; OCTETSTRING os; if (codec.encode(p_cert, os) == -1) { loggers::get_instance().warning("fx__enc__CertificateBase: -1 result code was returned"); return int2bit(0, 1); } return oct2bit(os); } INTEGER fx__dec__ToBeSignedCertificate(BITSTRING& b, LibItsSecurity__TypesAndValues::ToBeSignedCertificate& p) { loggers::get_instance().log_msg(">>> fx__dec__ToBeSignedCertificate: ", b); return -1; } /**************************************************** * @desc External function to encode a SecuredMessage type * @param value to encode * @return encoded value ****************************************************/ // BITSTRING fx__enc__SecuredMessage(const LibItsSecurity__TypesAndValues::SecuredMessage& p) // { // return int2bit(0,8); // } /**************************************************** * @desc External function to encode a SecuredMessage type * @param value to encode Loading