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
36
37} // namespace v3
38
39/**
40 * Verify service with basic certificate and signature checks
41 */
43{
44public:
45 StraightVerifyService(const Runtime&, Backend&);
46 StraightVerifyService(const Runtime&, Backend&, PositionProvider&);
47
48 void use_certificate_cache(v2::CertificateCache*);
49 void use_certificate_provider(v2::CertificateProvider*);
50 void use_certificate_validator(v2::CertificateValidator*);
51 void use_sign_header_policy(v2::SignHeaderPolicy*);
52
53 void use_certificate_provider(v3::CertificateProvider*);
54 void use_certificate_cache(v3::CertificateCache*);
55 void use_certificate_validator(v3::CertificateValidator*);
56 void use_sign_header_policy(v3::SignHeaderPolicy*);
57
58 VerifyConfirm verify(const VerifyRequest&) override;
59 VerifyConfirm verify(const v2::SecuredMessage&);
60 VerifyConfirm verify(const v3::SecuredMessage&);
61
62private:
63 const Runtime& m_runtime;
64 Backend& m_backend;
65 PositionProvider* m_position_provider = nullptr;
66
67 struct {
68 v2::CertificateCache* m_cert_cache = nullptr;
69 v2::CertificateProvider* m_cert_provider = nullptr;
70 v2::CertificateValidator* m_cert_validator = nullptr;
71 v2::SignHeaderPolicy* m_sign_policy = nullptr;
72
73 constexpr bool complete() const
74 {
75 return m_cert_cache && m_cert_provider && m_cert_validator && m_sign_policy;
76 }
77 } m_context_v2;
78
79 struct {
80 v3::CertificateCache* m_cert_cache = nullptr;
81 v3::CertificateValidator* m_cert_validator = nullptr;
82 v3::SignHeaderPolicy* m_sign_policy = nullptr;
83 } m_context_v3;
84};
85
86} // namespace security
87} // namespace vanetza
virtual const PositionFix & position_fix()=0
virtual Clock::time_point now() const =0
static CertificateValidity valid()
Create CertificateValidity signalling a valid certificate This method is equivalent to default constr...
CertificateInvalidReason reason() const
Get reason for certificate invalidity This call is only safe if reason is available,...
void insert(const Certificate &certificate)
virtual CertificateValidity check_certificate(const Certificate &certificate)=0
IntX specified in TS 103 097 v1.2.1, section 4.2.1.
Definition int_x.hpp:21
virtual void request_unrecognized_certificate(HashedId8 id)=0
bool is_known(const HashedId8 &digest) const
bool announce(const HashedId8 &digest)
virtual CertificateCache & cache()=0
virtual Verdict valid_for_signing(const CertificateView &certificate, ItsAid app)=0
virtual void discard_p2p_request(HashedId3 id)=0
virtual void enqueue_p2p_request(HashedId3 id)=0
virtual void request_unrecognized_certificate(HashedId8 id)=0
described in TS 103 097 v1.2.1 (2015-06), section 6.1
SecuredMessage as specified in TS 103 097 v1.2.1, section 5.1.
const TrailerField * trailer_field(TrailerFieldType type) const