Vanetza
Loading...
Searching...
No Matches
secured_message.hpp
1#ifndef BAAED6CC_75E1_4851_B84B_7B90FD87FBAC
2#define BAAED6CC_75E1_4851_B84B_7B90FD87FBAC
3
4#include <vanetza/common/its_aid.hpp>
5#include <vanetza/common/serialization.hpp>
6#include <vanetza/net/packet_variant.hpp>
7#include <vanetza/security/v2/secured_message.hpp>
8#include <vanetza/security/v3/secured_message.hpp>
9#include <boost/variant/variant.hpp>
10
11namespace vanetza
12{
13namespace security
14{
15
16using SecuredMessage = boost::variant<v2::SecuredMessage, v3::SecuredMessage>;
17
18class SecuredMessageView
19{
20public:
21 explicit SecuredMessageView(const SecuredMessage& msg);
22
23 template<typename Visitor>
24 typename Visitor::result_type apply_visitor(Visitor& visitor) const
25 {
26 return m_variant.apply_visitor(visitor);
27 }
28
29private:
30 boost::variant<const v2::SecuredMessage&, const v3::SecuredMessage&> m_variant;
31};
32
33ItsAid get_its_aid(const SecuredMessage&);
34ItsAid get_its_aid(const SecuredMessageView&);
35
36std::size_t get_size(const SecuredMessage& msg);
37std::size_t get_size(const SecuredMessageView& msg);
38
39void serialize(OutputArchive& ar, const SecuredMessage& msg);
40void serialize(OutputArchive& ar, const SecuredMessageView& msg);
41
42std::size_t deserialize(InputArchive& ar, SecuredMessage&);
43
44PacketVariant get_payload_copy(const SecuredMessage&);
45PacketVariant get_payload_copy(const SecuredMessageView&);
46
47} // namespace security
48} // namespace vanetza
49
50#endif /* BAAED6CC_75E1_4851_B84B_7B90FD87FBAC */