Vanetza
Loading...
Searching...
No Matches
sign_header_policy.hpp
1
#pragma once
2
#include <vanetza/common/clock.hpp>
3
#include <vanetza/common/runtime.hpp>
4
#include <vanetza/security/hashed_id.hpp>
5
#include <vanetza/security/peer_request_tracker.hpp>
6
#include <boost/optional/optional.hpp>
7
8
namespace
vanetza
9
{
10
11
// forward declaration
12
class
PositionProvider
;
13
14
namespace
security
15
{
16
17
// forward declarations
18
class
CertificateProvider;
19
struct
SignRequest
;
20
21
namespace
v3
22
{
23
24
25
/**
26
* SignHeaderPolicy is used while signing messages
27
*
28
* SignHeaderPolicy determines the header fields to be included in the secured message.
29
* Other components can influence the policy's behaviour by calling one of its "report" methods.
30
*/
31
class
SignHeaderPolicy
32
{
33
public
:
34
/**
35
* Prepare header fields for next secured message.
36
*
37
* \param req signing request (including ITS-AID for example)
38
* \param secured_message output message
39
* \return header fields
40
*/
41
virtual
void
prepare_header
(
const
SignRequest
& req,
SecuredMessage
& secured_message) = 0;
42
43
/**
44
* Mark certificate as unrecognized in next secured message
45
* \param id hash of unknown certificate
46
*/
47
virtual
void
request_unrecognized_certificate
(HashedId8
id
) = 0;
48
49
/**
50
* Request a full certificate to be included in next secured message
51
*/
52
virtual
void
request_certificate
() = 0;
53
54
/**
55
* Enqueue a certificate for P2P distribution.
56
* \param id hash of requested certificate
57
*/
58
virtual
void
enqueue_p2p_request
(HashedId3
id
) = 0;
59
60
/**
61
* Discard a P2P certificate request.
62
* \param id hash of requested certificate
63
*/
64
virtual
void
discard_p2p_request
(HashedId3
id
) = 0;
65
66
virtual
~SignHeaderPolicy
() =
default
;
67
};
68
69
/**
70
* DefaultSignHeaderPolicy implements the default behaviour specified by ETSI TS 103 097 V2.1.1
71
*/
72
class
DefaultSignHeaderPolicy :
public
SignHeaderPolicy
73
{
74
public
:
75
DefaultSignHeaderPolicy(
const
Runtime
&,
PositionProvider
& positioning,
CertificateProvider
&);
76
77
void
prepare_header
(
const
SignRequest
& request,
SecuredMessage
& secured_message)
override
;
78
void
request_unrecognized_certificate
(HashedId8
id
)
override
;
79
void
request_certificate
()
override
;
80
void
enqueue_p2p_request
(HashedId3)
override
;
81
void
discard_p2p_request
(HashedId3)
override
;
82
83
private
:
84
const
Runtime
& m_runtime;
85
PositionProvider
& m_positioning;
86
CertificateProvider
& m_cert_provider;
87
Clock::time_point m_cam_next_certificate;
88
bool
m_cert_requested;
89
PeerRequestTracker
m_incoming_requests;
90
PeerRequestTracker
m_outgoing_requests;
91
};
92
93
}
// namespace v3
94
}
// namespace security
95
}
// namespace vanetza
96
vanetza::PositionProvider
Definition
position_provider.hpp:16
vanetza::Runtime
Definition
runtime.hpp:16
vanetza::security::PeerRequestTracker
Definition
peer_request_tracker.hpp:15
vanetza::security::v3::CertificateProvider
Definition
certificate_provider.hpp:14
vanetza::security::v3::DefaultSignHeaderPolicy::request_unrecognized_certificate
void request_unrecognized_certificate(HashedId8 id) override
Definition
sign_header_policy.cpp:112
vanetza::security::v3::DefaultSignHeaderPolicy::discard_p2p_request
void discard_p2p_request(HashedId3) override
Definition
sign_header_policy.cpp:127
vanetza::security::v3::DefaultSignHeaderPolicy::prepare_header
void prepare_header(const SignRequest &request, SecuredMessage &secured_message) override
Definition
sign_header_policy.cpp:52
vanetza::security::v3::DefaultSignHeaderPolicy::enqueue_p2p_request
void enqueue_p2p_request(HashedId3) override
Definition
sign_header_policy.cpp:122
vanetza::security::v3::DefaultSignHeaderPolicy::request_certificate
void request_certificate() override
Definition
sign_header_policy.cpp:117
vanetza::security::v3::SignHeaderPolicy
Definition
sign_header_policy.hpp:32
vanetza::security::v3::SignHeaderPolicy::discard_p2p_request
virtual void discard_p2p_request(HashedId3 id)=0
vanetza::security::v3::SignHeaderPolicy::request_certificate
virtual void request_certificate()=0
vanetza::security::v3::SignHeaderPolicy::enqueue_p2p_request
virtual void enqueue_p2p_request(HashedId3 id)=0
vanetza::security::v3::SignHeaderPolicy::prepare_header
virtual void prepare_header(const SignRequest &req, SecuredMessage &secured_message)=0
vanetza::security::v3::SignHeaderPolicy::request_unrecognized_certificate
virtual void request_unrecognized_certificate(HashedId8 id)=0
vanetza::security::SignRequest
Definition
sign_service.hpp:26
vanetza::security::v3::SecuredMessage
Definition
secured_message.hpp:29
vanetza
security
v3
sign_header_policy.hpp
Generated on
for Vanetza by
1.14.0