#ifndef SIGN_SERVICE_HPP_4MDQBSEF #define SIGN_SERVICE_HPP_4MDQBSEF #include #include #include #include #include #include #include #include #include #include namespace vanetza { // forward declaration class Runtime; namespace security { // mandatory SN-SIGN.request parameters struct SignRequest { DownPacket plain_message; ItsAid its_aid; ByteBuffer permissions; // optional SN-ENCAP.request context_information (TS 102 723-8 V1.1.1 Table 24): // opaque octets for selecting properties of the security protocol ByteBuffer context_information; bool external_payload = false; bool self_signed = false; }; enum class SignConfirmError { Unspecified, No_Certificate, No_Service, }; // mandatory SN-SIGN.confirm parameters struct SignConfirm { SignConfirm(SignConfirmError error, boost::optional message) : error(error), secured_message(std::move(message)) { } static SignConfirm success(SecuredMessage&& message) { return { SignConfirmError::Unspecified, std::move(message) }; } static SignConfirm failure(SignConfirmError error) { return { error, boost::none }; } SignConfirmError error; boost::optional secured_message; }; /** * Equivalant of SN-SIGN service in TS 102 723-8 v1.1.1 */ class SignService { public: virtual ~SignService() = default; virtual SignConfirm sign(SignRequest&&) = 0; }; } // namespace security } // namespace vanetza #endif /* SIGN_SERVICE_HPP_4MDQBSEF */