Vanetza
Loading...
Searching...
No Matches
sign_header_policy.hpp
1
#ifndef SIGN_HEADER_POLICY_HPP_KJIIEGCH
2
#define SIGN_HEADER_POLICY_HPP_KJIIEGCH
3
4
#include <vanetza/common/clock.hpp>
5
#include <vanetza/common/runtime.hpp>
6
#include <vanetza/security/hashed_id.hpp>
7
#include <vanetza/security/v2/header_field.hpp>
8
#include <set>
9
10
namespace
vanetza
11
{
12
13
// forward declaration
14
class
PositionProvider;
15
16
namespace
security
17
{
18
19
// forward declarations
20
class
CertificateProvider;
21
struct
SignRequest;
22
23
namespace
v2
24
{
25
26
/**
27
* SignHeaderPolicy is used while signing messages
28
*
29
* SignHeaderPolicy determines the header fields to be included in the secured message.
30
* Other components can influence the policy's behaviour by calling one of its "report" methods.
31
*/
32
class
SignHeaderPolicy
33
{
34
public
:
35
/**
36
* Prepare header fields for next secured message.
37
*
38
* \param req signing request (including ITS-AID for example)
39
* \param certprvd available certificates
40
* \return header fields
41
*/
42
virtual
std::list<HeaderField>
prepare_header
(
const
SignRequest
& req,
CertificateProvider
& certprvd) = 0;
43
44
/**
45
* Mark certificate as unrecognized in next secured message
46
* \param id hash of unknown certificate
47
*/
48
virtual
void
request_unrecognized_certificate
(HashedId8
id
) = 0;
49
50
/**
51
* Request a full certificate to be included in next secured message
52
*/
53
virtual
void
request_certificate
() = 0;
54
55
/**
56
* Request a full certificate chain to be included in next secured message
57
*/
58
virtual
void
request_certificate_chain
() = 0;
59
60
virtual
~SignHeaderPolicy
() =
default
;
61
};
62
63
/**
64
* DefaultSignHeaderPolicy implements the default behaviour specified by ETSI TS 103 097 V1.2.1
65
*/
66
class
DefaultSignHeaderPolicy
:
public
SignHeaderPolicy
67
{
68
public
:
69
DefaultSignHeaderPolicy
(
const
Runtime
&,
PositionProvider
& positioning);
70
71
std::list<HeaderField>
prepare_header
(
const
SignRequest
& request,
CertificateProvider
& certificate_provider)
override
;
72
void
request_unrecognized_certificate
(HashedId8
id
)
override
;
73
void
request_certificate
()
override
;
74
void
request_certificate_chain
()
override
;
75
76
private
:
77
const
Runtime
& m_runtime;
78
PositionProvider
& m_positioning;
79
Clock::time_point m_cam_next_certificate;
80
std::set<HashedId3> m_unknown_certificates;
81
bool
m_cert_requested;
82
bool
m_chain_requested;
83
};
84
85
}
// namespace v2
86
}
// namespace security
87
}
// namespace vanetza
88
89
#endif
/* SIGN_HEADER_POLICY_HPP_KJIIEGCH */
vanetza::PositionProvider
Definition:
position_provider.hpp:16
vanetza::Runtime
Definition:
runtime.hpp:16
vanetza::security::v2::CertificateProvider
Definition:
certificate_provider.hpp:16
vanetza::security::v2::DefaultSignHeaderPolicy
Definition:
sign_header_policy.hpp:67
vanetza::security::v2::DefaultSignHeaderPolicy::request_unrecognized_certificate
void request_unrecognized_certificate(HashedId8 id) override
Definition:
sign_header_policy.cpp:82
vanetza::security::v2::DefaultSignHeaderPolicy::request_certificate_chain
void request_certificate_chain() override
Definition:
sign_header_policy.cpp:92
vanetza::security::v2::DefaultSignHeaderPolicy::prepare_header
std::list< HeaderField > prepare_header(const SignRequest &request, CertificateProvider &certificate_provider) override
Definition:
sign_header_policy.cpp:21
vanetza::security::v2::DefaultSignHeaderPolicy::request_certificate
void request_certificate() override
Definition:
sign_header_policy.cpp:87
vanetza::security::v2::SignHeaderPolicy
Definition:
sign_header_policy.hpp:33
vanetza::security::v2::SignHeaderPolicy::request_unrecognized_certificate
virtual void request_unrecognized_certificate(HashedId8 id)=0
vanetza::security::v2::SignHeaderPolicy::request_certificate
virtual void request_certificate()=0
vanetza::security::v2::SignHeaderPolicy::request_certificate_chain
virtual void request_certificate_chain()=0
vanetza::security::v2::SignHeaderPolicy::prepare_header
virtual std::list< HeaderField > prepare_header(const SignRequest &req, CertificateProvider &certprvd)=0
vanetza::security::SignRequest
Definition:
sign_service.hpp:23
vanetza
security
v2
sign_header_policy.hpp
Generated on Thu Nov 30 2023 12:03:35 for Vanetza by
1.9.6