Vanetza
Loading...
Searching...
No Matches
sign_service.hpp
1#ifndef SIGN_SERVICE_HPP_4MDQBSEF
2#define SIGN_SERVICE_HPP_4MDQBSEF
3
4#include <vanetza/common/byte_buffer.hpp>
5#include <vanetza/common/its_aid.hpp>
6#include <vanetza/common/position_provider.hpp>
7#include <vanetza/net/packet.hpp>
8#include <vanetza/security/hash_algorithm.hpp>
9#include <vanetza/security/key_type.hpp>
10#include <vanetza/security/secured_message.hpp>
11#include <vanetza/security/signing_policy.hpp>
12#include <boost/optional/optional.hpp>
13#include <functional>
14
15namespace vanetza
16{
17
18// forward declaration
19class Runtime;
20
21namespace security
22{
23
24// mandatory SN-SIGN.request parameters
26{
27 DownPacket plain_message;
28 ItsAid its_aid;
29 ByteBuffer permissions;
30 bool external_payload = false;
31 bool self_signed = false;
32};
33
34enum class SignConfirmError
35{
36 Unspecified,
37 No_Certificate,
38 No_Service,
39};
40
41// mandatory SN-SIGN.confirm parameters
42struct SignConfirm
43{
44 SignConfirm() = delete;
45
46 static SignConfirm success(SecuredMessage&& message)
47 {
48 return { SignConfirmError::Unspecified, std::move(message) };
49 }
50
51 static SignConfirm failure(SignConfirmError error)
52 {
53 return { error, boost::none };
54 }
55
56 SignConfirmError error;
57 boost::optional<SecuredMessage> secured_message;
58};
59
60/**
61 * Equivalant of SN-SIGN service in TS 102 723-8 v1.1.1
62 */
64{
65public:
66 virtual ~SignService() = default;
67 virtual SignConfirm sign(SignRequest&&) = 0;
68};
69
70} // namespace security
71} // namespace vanetza
72
73#endif /* SIGN_SERVICE_HPP_4MDQBSEF */