Vanetza
 
Loading...
Searching...
No Matches
straight_verify_service.hpp
1#pragma once
2#include <vanetza/security/verify_service.hpp>
3
4namespace vanetza
5{
6
7// forward declaration
8class PositionProvider;
9class Runtime;
10
11namespace security
12{
13
14// forward declarations
15class Backend;
16
17namespace v2
18{
19
20// forward declarations
21class CertificateCache;
22class CertificateProvider;
23class CertificateValidator;
24class SignHeaderPolicy;
25
26} // namespace v2
27
28namespace v3
29{
30
31// forward declarations
32class CertificateCache;
33
34} // namespace v3
35
36/**
37 * Verify service with basic certificate and signature checks
38 */
40{
41public:
43
44 void use_certificate_cache(v2::CertificateCache*);
45 void use_certificate_provider(v2::CertificateProvider*);
46 void use_certitifcate_validator(v2::CertificateValidator*);
47 void use_sign_header_policy(v2::SignHeaderPolicy*);
48
49 void use_certificate_cache(v3::CertificateCache*);
50
51 VerifyConfirm verify(VerifyRequest&&) override;
52 VerifyConfirm verify(const v2::SecuredMessage&);
53 VerifyConfirm verify(const v3::SecuredMessage&);
54
55private:
56 const Runtime& m_runtime;
57 Backend& m_backend;
58 PositionProvider& m_position_provider;
59
60 struct {
61 v2::CertificateCache* m_cert_cache = nullptr;
62 v2::CertificateProvider* m_cert_provider = nullptr;
63 v2::CertificateValidator* m_cert_validator = nullptr;
64 v2::SignHeaderPolicy* m_sign_policy = nullptr;
65
66 constexpr bool complete() const
67 {
68 return m_cert_cache && m_cert_provider && m_cert_validator && m_sign_policy;
69 }
70 } m_context_v2;
71
72 struct {
73 v3::CertificateCache* m_cert_cache = nullptr;
74 } m_context_v3;
75};
76
77} // namespace security
78} // namespace vanetza
SecuredMessage as specified in TS 103 097 v1.2.1, section 5.1.