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/**
17 * SN-VERIFY.confirm report codes
18 *
19 * "Configuration_Problem" is not found in TS 103 723-8 V1.1.1 but indicates a
20 * problem with the verification subsystem itself, e.g. a programming error.
21 *
22 * \see TS 102 723-8 v1.1.1 table 5
23 */
24enum class VerificationReport
25{
26 Success,
27 False_Signature,
28 Invalid_Certificate,
29 Revoked_Certificate,
30 Inconsistent_Chain,
31 Invalid_Timestamp,
32 Duplicate_Message,
33 Invalid_Mobility_Data,
34 Unsigned_Message,
35 Signer_Certificate_Not_Found,
36 Unsupported_Signer_Identifier_Type,
37 Incompatible_Protocol,
38 Configuration_Problem,
39};
40
41// mandatory parameters of SN-VERIFY.request (TS 102 723-8 V1.1.1)
42struct VerifyRequest
43{
44 VerifyRequest(SecuredMessageView msg) : secured_message(msg) {}
45 SecuredMessageView secured_message; /*< contains security header and payload */
46};
47
48// parameters of SN-VERIFY.confirm (TS 102 723-8 V1.1.1)
50{
51 VerificationReport report; // mandatory
52 ItsAid its_aid; // mandatory
53 ByteBuffer permissions; // mandatory
54 CertificateValidity certificate_validity; // non-standard extension
55 boost::optional<HashedId8> certificate_id; // optional
56};
57
58/**
59 * Equivalent of SN-VERIFY service in TS 102 723-8 V1.1.1
60 */
62{
63public:
64 virtual ~VerifyService() = default;
65 virtual VerifyConfirm verify(const VerifyRequest&) = 0;
66};
67
68
69/**
70 * Get insecure dummy verify service without any checks
71 */
73{
74public:
75 /**
76 * \param report predefined confirm report result
77 * \param validity predefined certificate validity result
78 */
79 DummyVerifyService(VerificationReport report, CertificateValidity validity);
80 VerifyConfirm verify(const VerifyRequest&) override;
81
82private:
83 VerificationReport m_report;
84 CertificateValidity m_validity;
85};
86
87} // namespace security
88} // namespace vanetza
89
90#endif /* VERIFY_SERVICE_HPP_BR4ISDBH */
DummyVerifyService(VerificationReport report, CertificateValidity validity)