Vanetza
 
Loading...
Searching...
No Matches
certificate_validity.hpp
1#ifndef BC8469A6_CC39_4826_A95E_DE639D68863B
2#define BC8469A6_CC39_4826_A95E_DE639D68863B
3
4#include <boost/optional/optional.hpp>
5
6namespace vanetza
7{
8namespace security
9{
10
11enum class CertificateInvalidReason
12{
13 Broken_Time_Period,
14 Off_Time_Period,
15 Unknown_Signer,
16 Missing_Signature,
17 Missing_Public_Key,
18 Invalid_Signer,
19 Invalid_Name,
20 Excessive_Chain_Length,
21 Off_Region,
22 Inconsistent_With_Signer,
23 Insufficient_ITS_AID,
24 Missing_Subject_Assurance,
25};
26
28{
29public:
30 CertificateValidity() = default;
31
32 /**
33 * Create CertificateValidity signalling an invalid certificate
34 * \param reason Reason for invalidity
35 */
36 CertificateValidity(CertificateInvalidReason reason) : m_reason(reason) {}
37
38 /**
39 * \brief Create CertificateValidity signalling a valid certificate
40 * This method is equivalent to default construction but should be more expressive.
41 * \return validity
42 */
44
45 /**
46 * Check if status corresponds to a valid certificate
47 * \return true if certificate is valid
48 */
49 operator bool() const { return !m_reason; }
50
51 /**
52 * \brief Get reason for certificate invalidity
53 * This call is only safe if reason is available, i.e. check validity before!
54 *
55 * \return reason
56 */
57 CertificateInvalidReason reason() const { return *m_reason; }
58
59private:
60 boost::optional<CertificateInvalidReason> m_reason;
61};
62
63} // namespace security
64} // namespace vanetza
65
66#endif /* BC8469A6_CC39_4826_A95E_DE639D68863B */
static CertificateValidity valid()
Create CertificateValidity signalling a valid certificate This method is equivalent to default constr...
CertificateValidity(CertificateInvalidReason reason)
CertificateInvalidReason reason() const
Get reason for certificate invalidity This call is only safe if reason is available,...