Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
ITS - Intelligent Transport Systems
ITS
Commits
086b9e9c
Commit
086b9e9c
authored
Oct 08, 2018
by
garciay
Browse files
STF545: Execute first EA tests
parent
a899b7f9
Changes
16
Hide whitespace changes
Inline
Side-by-side
ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.cc
View file @
086b9e9c
...
@@ -65,7 +65,7 @@ namespace LibItsGeoNetworking__TestSystem {
...
@@ -65,7 +65,7 @@ namespace LibItsGeoNetworking__TestSystem {
// Create layer
// Create layer
_layer
=
layer_stack_builder
::
get_instance
()
->
create_layer_stack
(
it
->
second
.
c_str
());
_layer
=
layer_stack_builder
::
get_instance
()
->
create_layer_stack
(
it
->
second
.
c_str
());
if
(
static_cast
<
geonetworking_layer
*>
(
_layer
)
==
nullptr
)
{
if
(
static_cast
<
geonetworking_layer
*>
(
_layer
)
==
nullptr
)
{
loggers
::
get_instance
().
error
(
"GeoNetworkingPort::user_map: Invalid stack configuration: %s"
,
it
->
second
.
c_str
());
loggers
::
get_instance
().
error
(
"GeoNetworkingPort::user_map: Invalid stack configuration: %s"
,
it
->
second
.
c_str
());
}
}
static_cast
<
geonetworking_layer
*>
(
_layer
)
->
add_upper_port
(
this
);
static_cast
<
geonetworking_layer
*>
(
_layer
)
->
add_upper_port
(
this
);
...
...
ccsrc/Ports/LibIts_ports/GN_ports/GeoNetworkingPort.hh
View file @
086b9e9c
...
@@ -7,8 +7,7 @@
...
@@ -7,8 +7,7 @@
// You may modify this file. Add your attributes and prototypes of your
// You may modify this file. Add your attributes and prototypes of your
// member functions here.
// member functions here.
#ifndef GeoNetworkingPort_HH
#pragma once
#define GeoNetworkingPort_HH
#include
"LibItsGeoNetworking_TestSystem.hh"
#include
"LibItsGeoNetworking_TestSystem.hh"
...
@@ -49,5 +48,3 @@ namespace LibItsGeoNetworking__TestSystem {
...
@@ -49,5 +48,3 @@ namespace LibItsGeoNetworking__TestSystem {
};
};
}
/* end of namespace */
}
/* end of namespace */
#endif
ccsrc/Ports/LibIts_ports/Pki_ports/PkiPort.cc
View file @
086b9e9c
...
@@ -8,95 +8,131 @@
...
@@ -8,95 +8,131 @@
// add your member functions here.
// add your member functions here.
#include
"PkiPort.hh"
#include
"PkiPort.hh"
#include
"pki_layer_factory.hh"
#include
"loggers.hh"
namespace
LibItsPki__TestSystem
{
namespace
LibItsPki__TestSystem
{
PkiPort
::
PkiPort
(
const
char
*
par_port_name
)
PkiPort
::
PkiPort
(
const
char
*
par_port_name
)
:
PkiPort_BASE
(
par_port_name
)
:
PkiPort_BASE
(
par_port_name
),
_cfg_params
(),
_layer_params
(),
_layer
(
nullptr
),
_time_key
(
"PkiPort::outgoing_send"
)
{
{
// Nothing to do
}
}
PkiPort
::~
PkiPort
()
{
}
void
PkiPort
::
set_parameter
(
const
char
*
/*parameter_name*/
,
const
char
*
/*parameter_value*/
)
{
}
/*void PkiPort::Handle_Fd_Event(int fd, boolean is_readable,
PkiPort
::~
PkiPort
()
boolean is_writable, boolean is_error) {}*/
{
loggers
::
get_instance
().
log
(
">>> PkiPort::~PkiPort"
);
if
(
_layer
!=
nullptr
)
{
delete
_layer
;
}
}
void
PkiPort
::
Handle_Fd_Event_Error
(
int
/*fd*/
)
void
PkiPort
::
set_parameter
(
const
char
*
parameter_name
,
const
char
*
parameter_value
)
{
{
loggers
::
get_instance
().
log
(
"PkiPort::set_parameter: %s=%s"
,
parameter_name
,
parameter_value
);
_cfg_params
.
insert
(
std
::
pair
<
std
::
string
,
std
::
string
>
(
std
::
string
(
parameter_name
),
std
::
string
(
parameter_value
)));
}
}
/*void PkiPort::Handle_Fd_Event(int fd, boolean is_readable,
boolean is_writable, boolean is_error) {}*/
void
PkiPort
::
Handle_Fd_Event_
Writable
(
int
/*fd*/
)
void
PkiPort
::
Handle_Fd_Event_
Error
(
int
/*fd*/
)
{
{
}
}
void
PkiPort
::
Handle_Fd_Event_
Read
able
(
int
/*fd*/
)
void
PkiPort
::
Handle_Fd_Event_
Writ
able
(
int
/*fd*/
)
{
{
}
}
/*void PkiPort::Handle_Timeout(double time_since_last_call) {}*/
void
PkiPort
::
Handle_Fd_Event_Readable
(
int
/*fd*/
)
{
void
PkiPort
::
user_map
(
const
char
*
/*system_port*/
)
}
{
}
/*void PkiPort::Handle_Timeout(double time_since_last_call) {}*/
void
PkiPort
::
user_map
(
const
char
*
system_port
)
{
loggers
::
get_instance
().
log
(
">>> PkiPort::user_map: %s"
,
system_port
);
// Build layer stack
params
::
iterator
it
=
_cfg_params
.
find
(
std
::
string
(
"params"
));
if
(
it
!=
_cfg_params
.
end
())
{
loggers
::
get_instance
().
log
(
"PkiPort::user_map: %s"
,
it
->
second
.
c_str
());
// Setup parameters
params
::
convert
(
_layer_params
,
it
->
second
);
// TODO This _layer_params seems to be useless
// Create layer
_layer
=
layer_stack_builder
::
get_instance
()
->
create_layer_stack
(
it
->
second
.
c_str
());
if
(
static_cast
<
pki_layer
*>
(
_layer
)
==
nullptr
)
{
loggers
::
get_instance
().
error
(
"PkiPort::user_map: Invalid stack configuration: %s"
,
it
->
second
.
c_str
());
}
static_cast
<
pki_layer
*>
(
_layer
)
->
add_upper_port
(
this
);
}
else
{
loggers
::
get_instance
().
error
(
"PkiPort::user_map: No layers defined in configuration file"
);
}
}
void
PkiPort
::
user_unmap
(
const
char
*
/*system_port*/
)
void
PkiPort
::
user_unmap
(
const
char
*
system_port
)
{
{
loggers
::
get_instance
().
log
(
">>> PkiPort::user_unmap: %s"
,
system_port
);
}
// Reset layers
if
(
_layer
!=
nullptr
)
{
delete
_layer
;
_layer
=
nullptr
;
}
}
void
PkiPort
::
user_start
()
void
PkiPort
::
user_start
()
{
{
loggers
::
get_instance
().
log
(
">>> PkiPort::user_start"
);
}
}
void
PkiPort
::
user_stop
()
void
PkiPort
::
user_stop
()
{
{
loggers
::
get_instance
().
log
(
">>> PkiPort::user_stop"
);
}
}
void
PkiPort
::
outgoing_send
(
const
EtsiTs102941TypesEnrolment
::
InnerEcRequest
&
send_par
)
void
PkiPort
::
outgoing_send
(
const
EtsiTs102941TypesEnrolment
::
InnerEcRequest
&
send_par
)
{
{
loggers
::
get_instance
().
log_msg
(
">>> PkiPort::outgoing_send: payload="
,
send_par
);
float
duration
;
loggers
::
get_instance
().
set_start_time
(
_time_key
);
params
params
;
static_cast
<
pki_layer
*>
(
_layer
)
->
sendMsg
(
send_par
,
params
);
loggers
::
get_instance
().
set_stop_time
(
_time_key
,
duration
);
}
}
void
PkiPort
::
outgoing_send
(
const
EtsiTs102941TypesEnrolment
::
InnerEcResponse
&
send_par
)
{
void
PkiPort
::
outgoing_send
(
const
EtsiTs102941TypesEnrolment
::
InnerEcResponse
&
send_par
)
}
{
}
void
PkiPort
::
receiveMsg
(
const
EtsiTs102941TypesEnrolment
::
InnerEcRequest
&
p_ind
,
const
params
&
p_params
)
{
loggers
::
get_instance
().
log_msg
(
">>> PkiPort::receive_msg: "
,
p_ind
);
// Sanity check
if
(
!
p_ind
.
is_bound
())
{
return
;
}
void
PkiPort
::
receiveMsg
(
const
EtsiTs102941TypesEnrolment
::
InnerEcRequest
&
p_ind
,
const
params
&
p_params
)
{
incoming_message
(
p_ind
);
loggers
::
get_instance
().
log_msg
(
">>> PkiPort::receive_msg: "
,
p_ind
);
// Sanity check
if
(
!
p_ind
.
is_bound
())
{
return
;
}
}
incoming_message
(
p_ind
);
void
PkiPort
::
receiveMsg
(
const
EtsiTs102941TypesEnrolment
::
InnerEcResponse
&
p_ind
,
const
params
&
p_params
)
{
}
loggers
::
get_instance
().
log_msg
(
">>> PkiPort::receive_msg: "
,
p_ind
);
// Sanity check
if
(
!
p_ind
.
is_bound
())
{
return
;
}
void
PkiPort
::
receiveMsg
(
const
EtsiTs102941TypesEnrolment
::
InnerEcResponse
&
p_ind
,
const
params
&
p_params
)
{
incoming_message
(
p_ind
);
loggers
::
get_instance
().
log_msg
(
">>> PkiPort::receive_msg: "
,
p_ind
);
// Sanity check
if
(
!
p_ind
.
is_bound
())
{
return
;
}
}
incoming_message
(
p_ind
);
}
}
/* end of namespace */
}
/* end of namespace */
ccsrc/Ports/LibIts_ports/Pki_ports/PkiPort.hh
View file @
086b9e9c
...
@@ -7,14 +7,21 @@
...
@@ -7,14 +7,21 @@
// You may modify this file. Add your attributes and prototypes of your
// You may modify this file. Add your attributes and prototypes of your
// member functions here.
// member functions here.
#ifndef PkiPort_HH
#pragma once
#define PkiPort_HH
#include
"LibItsPki_TestSystem.hh"
#include
"LibItsPki_TestSystem.hh"
#include
"layer.hh"
#include
"params.hh"
namespace
LibItsPki__TestSystem
{
namespace
LibItsPki__TestSystem
{
class
PkiPort
:
public
PkiPort_BASE
{
class
PkiPort
:
public
PkiPort_BASE
{
params
_cfg_params
;
params
_layer_params
;
layer
*
_layer
;
std
::
string
_time_key
;
public:
public:
PkiPort
(
const
char
*
par_port_name
=
NULL
);
PkiPort
(
const
char
*
par_port_name
=
NULL
);
~
PkiPort
();
~
PkiPort
();
...
@@ -42,5 +49,3 @@ protected:
...
@@ -42,5 +49,3 @@ protected:
};
};
}
/* end of namespace */
}
/* end of namespace */
#endif
ccsrc/Protocols/Pki/pki_layer.cc
View file @
086b9e9c
...
@@ -5,10 +5,12 @@
...
@@ -5,10 +5,12 @@
#include
"converter.hh"
#include
"converter.hh"
#include
"security_services.hh"
using
namespace
std
;
// Required for isnan()
using
namespace
std
;
// Required for isnan()
#include
"LibItsPki_TestSystem.hh"
#include
"LibItsPki_TestSystem.hh"
pki_layer
::
pki_layer
(
const
std
::
string
&
p_type
,
const
std
::
string
&
param
)
:
t_layer
<
LibItsPki__TestSystem
::
Http
Port
>
(
p_type
),
_params
(),
_etsi_ts102941_types_enrolment_inner_request
(),
_etsi_ts102941_types_enrolment_inner_re
quest
(),
_codec
()
pki_layer
::
pki_layer
(
const
std
::
string
&
p_type
,
const
std
::
string
&
param
)
:
t_layer
<
LibItsPki__TestSystem
::
Pki
Port
>
(
p_type
),
_params
(),
_etsi_ts102941_types_enrolment_inner_request
(),
_etsi_ts102941_types_enrolment_inner_re
sponse
(),
_codec
()
{
{
loggers
::
get_instance
().
log
(
">>> pki_layer::pki_layer: %s, %s"
,
to_string
().
c_str
(),
param
.
c_str
());
loggers
::
get_instance
().
log
(
">>> pki_layer::pki_layer: %s, %s"
,
to_string
().
c_str
(),
param
.
c_str
());
...
@@ -23,31 +25,32 @@ pki_layer::pki_layer(const std::string & p_type, const std::string & param) : t_
...
@@ -23,31 +25,32 @@ pki_layer::pki_layer(const std::string & p_type, const std::string & param) : t_
if
(
it
==
_params
.
cend
())
{
if
(
it
==
_params
.
cend
())
{
_params
[
params
::
certificate
]
=
"CERT_IUT_A_EA"
;
_params
[
params
::
certificate
]
=
"CERT_IUT_A_EA"
;
}
}
_params
[
params
::
its_aid
]
=
"
0
"
;
_params
[
params
::
its_aid
]
=
"
2468
"
;
_params
[
params
::
payload_type
]
=
""
;
_params
[
params
::
payload_type
]
=
""
;
_params
[
params
::
signature
]
=
"NISTP-256"
;
_params
[
params
::
encrypted_mode
]
=
"1"
;
_params
[
params
::
encrypted_mode
]
=
"1"
;
}
}
void
pki_layer
::
sendMsg
(
const
EtsiTs102941TypesEnrolment
::
InnerEcRequest
&
p_inner_ec_request
,
params
&
p_param
)
{
void
pki_layer
::
sendMsg
(
const
EtsiTs102941TypesEnrolment
::
InnerEcRequest
&
p_inner_ec_request
,
params
&
p_param
)
{
loggers
::
get_instance
().
log_msg
(
">>> pki_layer::sendMsg: "
,
p_
pki_message
);
loggers
::
get_instance
().
log_msg
(
">>> pki_layer::sendMsg: "
,
p_
inner_ec_request
);
OCTETSTRING
data
;
OCTETSTRING
data
;
_etsi_ts102941_types_enrolment_inner_request
.
encode
(
p_
pki_message
,
data
);
_etsi_ts102941_types_enrolment_inner_request
.
encode
(
p_
inner_ec_request
,
data
);
// Add security
// Add security
OCTETSTRING
secured_data
;
OCTETSTRING
secured_data
;
if
(
s
ecured
_payload
(
data
,
secured_data
)
==
0
)
{
if
(
s
ign_and_encrypt
_payload
(
data
,
secured_data
)
==
0
)
{
send_data
(
data
,
_params
);
send_data
(
data
,
_params
);
}
}
}
}
void
pki_layer
::
sendMsg
(
const
EtsiTs102941TypesEnrolment
::
InnerEcResponse
&
p_inner_ec_re
quest
,
params
&
p_param
)
{
void
pki_layer
::
sendMsg
(
const
EtsiTs102941TypesEnrolment
::
InnerEcResponse
&
p_inner_ec_re
sponse
,
params
&
p_param
)
{
loggers
::
get_instance
().
log_msg
(
">>> pki_layer::sendMsg: "
,
p_
pki_messag
e
);
loggers
::
get_instance
().
log_msg
(
">>> pki_layer::sendMsg: "
,
p_
inner_ec_respons
e
);
OCTETSTRING
data
;
OCTETSTRING
data
;
_etsi_ts102941_types_enrolment_inner_response
.
encode
(
p_
pki_messag
e
,
data
);
_etsi_ts102941_types_enrolment_inner_response
.
encode
(
p_
inner_ec_respons
e
,
data
);
// Add security
// Add security
OCTETSTRING
secured_data
;
OCTETSTRING
secured_data
;
if
(
s
ecured
_payload
(
data
,
secured_data
)
==
0
)
{
if
(
s
ign_and_encrypt
_payload
(
data
,
secured_data
)
==
0
)
{
send_data
(
data
,
_params
);
send_data
(
data
,
_params
);
}
}
}
}
...
@@ -62,44 +65,36 @@ void pki_layer::receive_data(OCTETSTRING& data, params& params)
...
@@ -62,44 +65,36 @@ void pki_layer::receive_data(OCTETSTRING& data, params& params)
{
{
loggers
::
get_instance
().
log_msg
(
">>> pki_layer::receive_data: "
,
data
);
loggers
::
get_instance
().
log_msg
(
">>> pki_layer::receive_data: "
,
data
);
// Decode HTTP message
//
//
Decode HTTP message
LibItsPki__TypesAndValues
::
HttpMessage
pki_message
;
//
LibItsPki__TypesAndValues::HttpMessage pki_message;
if
(
_codec
.
decode
(
data
,
pki_message
)
==
-
1
)
{
//
if (_codec.decode(data, pki_message) == -1) {
loggers
::
get_instance
().
warning
(
"pki_layer::receive_data: Failed to decode data"
);
//
loggers::get_instance().warning("pki_layer::receive_data: Failed to decode data");
return
;
//
return;
}
//
}
// Pass it to the ports
//
//
Pass it to the ports
to_all_upper_ports
(
pki_message
,
params
);
//
to_all_upper_ports(pki_message, params);
}
}
int
pki_layer
::
sign_and_encrypt_payload
(
const
OCTETSTRING
&
p_data
,
OCTETSTRING
&
p_secured_data
)
{
int
pki_layer
::
sign_and_encrypt_payload
(
const
OCTETSTRING
&
p_data
,
OCTETSTRING
&
p_secured_data
)
{
loggers
::
get_instance
().
log_msg
(
">>> pki_layer::sign_and_encrypt_payload: "
,
p_data
);
loggers
::
get_instance
().
log_msg
(
">>> pki_layer::sign_and_encrypt_payload: "
,
p_data
);
if
(
p_binary_body
.
ischosen
(
LibItsHttp__BinaryMessageBodyTypes
::
BinaryBody
::
ALT_innerEcRequest
))
{
// 1. Signed the data
params
p
;
// TODO To be refined
OCTETSTRING
signed_data
;
if
(
security_services
::
get_instance
().
sign_payload
(
p_data
,
signed_data
,
_params
)
==
-
1
)
{
// 1. Signed the data
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: Failed to sign data"
);
OCTETSTRING
signed_data
;
return
-
1
;
if
(
security_services
::
get_instance
().
sign_payload
(
p_data
,
signed_data
,
p
)
==
-
1
)
{
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: Failed to sign data"
);
return
-
1
;
}
loggers
::
get_instance
().
log_msg
(
"pki_layer::sign_and_encrypt_payload: signed_data="
,
signed_data
);
// 3. Encrypt the signed packet
if
(
security_services
::
get_instance
().
encrypt_gn_payload
(
signed_data
,
p_secured_data
,
p
)
==
-
1
)
{
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: Failed to encrypt data"
);
return
-
1
;
}
loggers
::
get_instance
().
log_msg
(
"<<< http_etsi_ieee1609dot2_codec::encode: "
,
p_secured_data
);
return
0
;
}
}
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: No _codec found"
);
loggers
::
get_instance
().
log_msg
(
"pki_layer::sign_and_encrypt_payload: signed_data="
,
signed_data
);
// 2. Encrypt the signed packet
return
-
1
;
if
(
security_services
::
get_instance
().
encrypt_gn_payload
(
signed_data
,
p_secured_data
,
_params
)
==
-
1
)
{
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: Failed to encrypt data"
);
return
-
1
;
}
loggers
::
get_instance
().
log_msg
(
"<<< http_etsi_ieee1609dot2_codec::encode: "
,
p_secured_data
);
return
0
;
}
}
pki_layer_factory
pki_layer_factory
::
_f
;
pki_layer_factory
pki_layer_factory
::
_f
;
ccsrc/Protocols/Pki/pki_layer.hh
View file @
086b9e9c
...
@@ -31,7 +31,7 @@ class OCTETSTRING; //! Forward declaration of TITAN class
...
@@ -31,7 +31,7 @@ class OCTETSTRING; //! Forward declaration of TITAN class
class
pki_layer
:
public
t_layer
<
LibItsPki__TestSystem
::
PkiPort
>
{
class
pki_layer
:
public
t_layer
<
LibItsPki__TestSystem
::
PkiPort
>
{
params
_params
;
params
_params
;
etsi_ts102941_types_enrolment_inner_request
_etsi_ts102941_types_enrolment_inner_request
;
etsi_ts102941_types_enrolment_inner_request
_etsi_ts102941_types_enrolment_inner_request
;
etsi_ts102941_types_enrolment_inner_response
_etsi_ts102941_types_enrolment_inner_re
quest
;
etsi_ts102941_types_enrolment_inner_response
_etsi_ts102941_types_enrolment_inner_re
sponse
;
etsi_ts103097_data_codec
_codec
;
etsi_ts103097_data_codec
_codec
;
public:
//! \publicsection
public:
//! \publicsection
...
@@ -41,7 +41,7 @@ public: //! \publicsection
...
@@ -41,7 +41,7 @@ public: //! \publicsection
* \param[in] p_type \todo
* \param[in] p_type \todo
* \param[in] p_param \todo
* \param[in] p_param \todo
*/
*/
pki_layer
()
:
t_layer
(),
_params
(),
_etsi_ts102941_types_enrolment_inner_request
(),
_etsi_ts102941_types_enrolment_inner_re
quest
(),
_codec
()
{
};
pki_layer
()
:
t_layer
(),
_params
(),
_etsi_ts102941_types_enrolment_inner_request
(),
_etsi_ts102941_types_enrolment_inner_re
sponse
(),
_codec
()
{
};
/*!
/*!
* \brief Specialised constructor
* \brief Specialised constructor
* Create a new instance of the pki_layer class
* Create a new instance of the pki_layer class
...
...
ccsrc/Protocols/Pki/pki_layer_factory.hh
View file @
086b9e9c
...
@@ -28,7 +28,7 @@ public: //! \publicsection
...
@@ -28,7 +28,7 @@ public: //! \publicsection
*/
*/
pki_layer_factory
()
{
pki_layer_factory
()
{
// Register factory
// Register factory
layer_stack_builder
::
register_layer_factory
(
"
HTTP
"
,
this
);
layer_stack_builder
::
register_layer_factory
(
"
PKI
"
,
this
);
};
};
/*!
/*!
* \fn layer* create_layer(const std::string & type, const std::string & param);
* \fn layer* create_layer(const std::string & type, const std::string & param);
...
...
ccsrc/Protocols/Security/certificates_loader.cc
View file @
086b9e9c
...
@@ -139,7 +139,7 @@ int certificates_loader::build_certificates_cache(std::set<std::experimental::fi
...
@@ -139,7 +139,7 @@ int certificates_loader::build_certificates_cache(std::set<std::experimental::fi
loggers
::
get_instance
().
log
(
"certificates_loader::build_certificates_cache: Caching certificate '%s'"
,
it
->
string
().
c_str
());
loggers
::
get_instance
().
log
(
"certificates_loader::build_certificates_cache: Caching certificate '%s'"
,
it
->
string
().
c_str
());
std
::
ifstream
is
(
it
->
string
(),
ios
::
in
|
ios
::
binary
);
std
::
ifstream
is
(
it
->
string
(),
ios
::
in
|
ios
::
binary
);
if
(
!
is
.
is_open
())
{
if
(
!
is
.
is_open
())
{
loggers
::
get_instance
().
warning
(
"certificates_loader::build_certificates_cache:
f
ailed to open certificate file"
);
loggers
::
get_instance
().
warning
(
"certificates_loader::build_certificates_cache:
F
ailed to open certificate file"
);
return
-
1
;
return
-
1
;
}
}
OCTETSTRING
certificate
=
int2oct
(
0
,
std
::
experimental
::
filesystem
::
file_size
(
*
it
));
OCTETSTRING
certificate
=
int2oct
(
0
,
std
::
experimental
::
filesystem
::
file_size
(
*
it
));
...
...
ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.cc
View file @
086b9e9c
#include
"EtsiTs103097Module.hh"
#include
"EtsiTs103097Module.hh"
#include
"http_etsi_ieee1609dot2_codec.hh"
#include
"etsi_ts102941_types_enrolment_inner_request.hh"
#include
"etsi_ts102941_types_enrolment_inner_response.hh"
#include
"etsi_ts103097_data_codec.hh"
#include
"http_etsi_ieee1609dot2_codec_factory.hh"
#include
"http_etsi_ieee1609dot2_codec_factory.hh"
#include
"LibItsHttp_MessageBodyTypes.hh"
#include
"LibItsHttp_MessageBodyTypes.hh"
...
@@ -20,43 +12,18 @@ int http_etsi_ieee1609dot2_codec::encode (const LibItsHttp__BinaryMessageBodyTyp
...
@@ -20,43 +12,18 @@ int http_etsi_ieee1609dot2_codec::encode (const LibItsHttp__BinaryMessageBodyTyp
{
{
loggers
::
get_instance
().
log_msg
(
">>> http_etsi_ieee1609dot2_codec::encode: "
,
p_binary_body
);
loggers
::
get_instance
().
log_msg
(
">>> http_etsi_ieee1609dot2_codec::encode: "
,
p_binary_body
);
etsi_ts103097_data_codec
codec
;
if
(
p_binary_body
.
ischosen
(
LibItsHttp__BinaryMessageBodyTypes
::
BinaryBody
::
ALT_ieee1609dot2__data
))
{
if
(
p_binary_body
.
ischosen
(
LibItsHttp__BinaryMessageBodyTypes
::
BinaryBody
::
ALT_innerEcRequest
))
{
// Encode the Ieee1609Dot2Data
if
(
_codec
.
encode
(
p_binary_body
.
ieee1609dot2__data
(),
p_data
)
==
-
1
)
{
params
p
;
// TODO To be refined
p
[
params
::
hash
]
=
"SHA-256"
;
p
[
params
::
its_aid
]
=
"0"
;
p
[
params
::
payload_type
]
=
""
;
p
[
params
::
signature
]
=
"NISTP-256"
;
p
[
params
::
certificate
]
=
"CERT_TS_A_AT"
;
p
[
params
::
encrypted_mode
]
=
"1"
;
p
[
params
::
cypher
]
=
"NISTP-256"
;
p
[
params
::
peer_certificate
]
=
"CERT_IUT_A_AT"
;
// 1. Encode the InnerEcRequest
OCTETSTRING
os
;
etsi_ts102941_types_enrolment_inner_request
c
;
if
(
c
.
encode
(
p_binary_body
.
innerEcRequest
(),
os
)
==
-
1
)
{
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: Failed to encode InnerEcRequest"
);
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: Failed to encode InnerEcRequest"
);
return
-
1
;
return
-
1
;
}
}
// 2. Signed the packet
OCTETSTRING
signed_os
;
if
(
security_services
::
get_instance
().
sign_payload
(
os
,
signed_os
,
p
)
==
-
1
)
{
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: Failed to sign InnerEcRequest"
);
return
-
1
;
}
// 3. Encrypt the signed packet
if
(
security_services
::
get_instance
().
encrypt_gn_payload
(
signed_os
,
p_data
,
p
)
==
-
1
)
{
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: Failed to encrypt InnerEcRequest"
);
return
-
1
;
}
loggers
::
get_instance
().
log_msg
(
"<<< http_etsi_ieee1609dot2_codec::encode: "
,
p_data
);
loggers
::
get_instance
().
log_msg
(
"<<< http_etsi_ieee1609dot2_codec::encode: "
,
p_data
);
return
0
;
return
0
;
}
}
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: No codec found"
);
loggers
::
get_instance
().
warning
(
"http_etsi_ieee1609dot2_codec::encode: No codec found"
);
return
-
1
;
return
-
1
;
}
}
...
@@ -64,7 +31,6 @@ int http_etsi_ieee1609dot2_codec::decode (const OCTETSTRING& p_data, LibItsHttp_
...
@@ -64,7 +31,6 @@ int http_etsi_ieee1609dot2_codec::decode (const OCTETSTRING& p_data, LibItsHttp_
{
{
loggers
::
get_instance
().
log_msg
(
">>> http_etsi_ieee1609dot2_codec::decode: "
,
p_data
);
loggers
::
get_instance
().
log_msg
(
">>> http_etsi_ieee1609dot2_codec::decode: "
,
p_data
);
etsi_ts103097_data_codec
codec
;
/*if (p_binary_body.ischosen(LibItsHttp__BinaryMessageBodyTypes::BinaryBody::ALT_innerEcResponse)) {
/*if (p_binary_body.ischosen(LibItsHttp__BinaryMessageBodyTypes::BinaryBody::ALT_innerEcResponse)) {
return codec.decode(p_data, p_binary_body.innerEcResponse(), p_data);
return codec.decode(p_data, p_binary_body.innerEcResponse(), p_data);
...
...
ccsrc/Protocols/Security/http_etsi_ieee1609dot2_codec.hh
View file @
086b9e9c
#pragma once
#pragma once
#include
"codec.hh"
#include
"
etsi_ts103097_data_
codec.hh"