Vanetza
Loading...
Searching...
No Matches
encap_service.cpp
1#include <vanetza/security/encap_service.hpp>
2
3namespace vanetza
4{
5namespace security
6{
7
8EncapConfirm EncapConfirm::from(SignConfirm&& sign_confirm)
9{
10 if (sign_confirm.secured_message) {
11 return EncapConfirm { std::move(*sign_confirm.secured_message) };
12 } else {
13 return EncapConfirm { sign_confirm.error };
14 }
15}
16
17const SecuredMessage* EncapConfirm::secured_message() const
18{
19 return boost::get<SecuredMessage>(this);
20}
21
22SecuredMessage* EncapConfirm::secured_message()
23{
24 return boost::get<SecuredMessage>(this);
25}
26
27EncapConfirm dispatch(EncapRequest&& encap_request, SignService* sign_service)
28{
29 struct Dispatcher : boost::static_visitor<EncapConfirm>
30 {
31 Dispatcher(SignService* sign_service) : m_sign_service(sign_service) {}
32
33 EncapConfirm operator()(SignRequest& request)
34 {
35 if (m_sign_service) {
36 return EncapConfirm::from(m_sign_service->sign(std::move(request)));
37 } else {
38 return EncapConfirm::from(SignConfirm::failure(SignConfirmError::No_Service));
39 }
40 }
41
42 SignService* m_sign_service;
43 };
44
45 Dispatcher dispatcher(sign_service);
46 return boost::apply_visitor(dispatcher, encap_request);
47}
48
49} // namespace security
50} // namespace vanetza