Vanetza
 
Loading...
Searching...
No Matches
verify_service.hpp
1#ifndef VERIFY_SERVICE_HPP_BR4ISDBH
2#define VERIFY_SERVICE_HPP_BR4ISDBH
3
4#include <boost/optional.hpp>
5#include <vanetza/common/its_aid.hpp>
6#include <vanetza/security/certificate_validity.hpp>
7#include <vanetza/security/hashed_id.hpp>
8#include <vanetza/security/secured_message.hpp>
9#include <functional>
10
11namespace vanetza
12{
13namespace security
14{
15
16
17enum class VerificationReport
18{
19 Success,
20 False_Signature,
21 Invalid_Certificate,
22 Revoked_Certificate,
23 Inconsistent_Chain,
24 Invalid_Timestamp,
25 Duplicate_Message,
26 Invalid_Mobility_Data,
27 Unsigned_Message,
28 Signer_Certificate_Not_Found,
29 Unsupported_Signer_Identifier_Type,
30 Incompatible_Protocol,
31 Configuration_Problem,
32};
33
34// mandatory parameters of SN-VERIFY.request (TS 102 723-8 V1.1.1)
36{
37 VerifyRequest(const SecuredMessage& msg) : secured_message(msg) {}
38 const SecuredMessage& secured_message; /*< contains security header and payload */
39};
40
41// parameters of SN-VERIFY.confirm (TS 102 723-8 V1.1.1)
43{
44 VerificationReport report; // mandatory
45 ItsAid its_aid; // mandatory
46 ByteBuffer permissions; // mandatory
47 CertificateValidity certificate_validity; // non-standard extension
48 boost::optional<HashedId8> certificate_id; // optional
49};
50
51/**
52 * Equivalent of SN-VERIFY service in TS 102 723-8 V1.1.1
53 */
55{
56public:
57 virtual ~VerifyService() = default;
58 virtual VerifyConfirm verify(VerifyRequest&&) = 0;
59};
60
61
62/**
63 * Get insecure dummy verify service without any checks
64 */
66{
67public:
68 /**
69 * \param report predefined confirm report result
70 * \param validity predefined certificate validity result
71 */
72 DummyVerifyService(VerificationReport report, CertificateValidity validity);
73 VerifyConfirm verify(VerifyRequest&&) override;
74
75private:
76 VerificationReport m_report;
77 CertificateValidity m_validity;
78};
79
80} // namespace security
81} // namespace vanetza
82
83#endif /* VERIFY_SERVICE_HPP_BR4ISDBH */