#ifndef SECURED_PDU_HPP_TVERYI91 #define SECURED_PDU_HPP_TVERYI91 #include #include #include #include #include namespace vanetza { namespace geonet { /** * Secured PDU consists of GeoNetworking headers belonging to a secured message's payload */ class SecuredPdu { public: template SecuredPdu(const ExtendedPdu& pdu) : common(pdu.common()), extended(pdu.extended()) { } SecuredPdu(const Pdu&); CommonHeader common; HeaderVariant extended; }; void serialize(const SecuredPdu&, OutputArchive&); /** * Cast secured PDU from byte buffer convertible * \param conv source convertible * \return secured PDU pointer or nullptr if cast failed */ SecuredPdu* secured_pdu_cast(ByteBufferConvertible&); } // namespace geonet namespace convertible { template<> struct byte_buffer_impl : public byte_buffer { byte_buffer_impl(const geonet::SecuredPdu&); void convert(ByteBuffer&) const override; std::size_t size() const override; std::unique_ptr duplicate() const override; geonet::SecuredPdu pdu; }; } // namespace convertible } // namespace vanetza #endif /* SECURED_PDU_HPP_TVERYI91 */