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
9class Runtime;
10
11namespace security
12{
13
14// forward declarations
15class Backend;
16
17namespace v2
18{
19
20// forward declarations
25
26} // namespace v2
27
28namespace v3
29{
30
31// forward declarations
35
36} // namespace v3
37
38/**
39 * Verify service with basic certificate and signature checks
40 */
41class StraightVerifyService : public VerifyService
42{
43public:
44 StraightVerifyService(const Runtime&, Backend&, PositionProvider&);
45
46 void use_certificate_cache(v2::CertificateCache*);
47 void use_certificate_provider(v2::CertificateProvider*);
48 void use_certificate_validator(v2::CertificateValidator*);
49 void use_sign_header_policy(v2::SignHeaderPolicy*);
50
51 void use_certificate_provider(v3::CertificateProvider*);
52 void use_certificate_validator(v3::CertificateValidator*);
53 void use_sign_header_policy(v3::SignHeaderPolicy*);
54
55 VerifyConfirm verify(const VerifyRequest&) override;
56 VerifyConfirm verify(const v2::SecuredMessage&);
57 VerifyConfirm verify(const v3::SecuredMessage&);
58
59private:
60 const Runtime& m_runtime;
61 Backend& m_backend;
62 PositionProvider& m_position_provider;
63
64 struct {
65 v2::CertificateCache* m_cert_cache = nullptr;
66 v2::CertificateProvider* m_cert_provider = nullptr;
67 v2::CertificateValidator* m_cert_validator = nullptr;
68 v2::SignHeaderPolicy* m_sign_policy = nullptr;
69
70 constexpr bool complete() const
71 {
72 return m_cert_cache && m_cert_provider && m_cert_validator && m_sign_policy;
73 }
74 } m_context_v2;
75
76 struct {
77 v3::CertificateProvider* m_cert_provider = nullptr;
78 v3::CertificateValidator* m_cert_validator = nullptr;
79 v3::SignHeaderPolicy* m_sign_policy = nullptr;
80 } m_context_v3;
81};
82
83} // namespace security
84} // namespace vanetza
SecuredMessage as specified in TS 103 097 v1.2.1, section 5.1.