1#ifndef CERTIFICATE_HPP_LWBWIAVL
2#define CERTIFICATE_HPP_LWBWIAVL
4#include <vanetza/common/byte_buffer.hpp>
5#include <vanetza/common/its_aid.hpp>
6#include <vanetza/security/backend.hpp>
7#include <vanetza/security/ecdsa256.hpp>
8#include <vanetza/security/v2/basic_elements.hpp>
9#include <vanetza/security/v2/ecc_point.hpp>
10#include <vanetza/security/v2/serialization.hpp>
11#include <vanetza/security/v2/signature.hpp>
12#include <vanetza/security/v2/signer_info.hpp>
13#include <vanetza/security/v2/subject_attribute.hpp>
14#include <vanetza/security/v2/subject_info.hpp>
15#include <vanetza/security/v2/validity_restriction.hpp>
16#include <boost/optional/optional.hpp>
17#include <boost/variant/get.hpp>
29 SignerInfo signer_info;
31 std::list<SubjectAttribute> subject_attributes;
32 std::list<ValidityRestriction> validity_restriction;
35 uint8_t version()
const {
return 2; }
38
39
40
44
45
46
47 const ValidityRestriction*
get_restriction(ValidityRestrictionType type)
const;
50
51
52
56
57
58
62
63
64
68
69
70
71
75
76
77
78
79 template<SubjectAttributeType T>
82 using type = subject_attribute_type<T>;
83 const SubjectAttribute* field = get_attribute(T);
84 return boost::get<type>(field);
88
89
90
91
92 template<ValidityRestrictionType T>
95 using type = validity_restriction_type<T>;
97 return boost::get<type>(field);
102
103
104
105
106
110
111
112
113
114
118
119
120
121
122
123
127
128
129
130
131
132
133
134
138
139
140
141
145
146
147
148
149
153
154
155
156
157
161
162
163
164
ChunckPacket is a packet consisting of several memory chunks.
ByteBufferConvertible & operator[](OsiLayer ol)
ChunkPacket & merge(ChunkPacket &packet, OsiLayer from, OsiLayer to)
const ByteBufferConvertible & layer(OsiLayer ol) const
const ByteBufferConvertible & operator[](OsiLayer ol) const
ByteBufferConvertible & layer(OsiLayer ol)
std::size_t size(OsiLayer from, OsiLayer to) const
ChunkPacket extract(OsiLayer from, OsiLayer to)
std::size_t size(OsiLayer from, OsiLayer to) const
buffer_const_range operator[](OsiLayer layer) const
void set_boundary(OsiLayer, unsigned bytes)
const ByteBuffer & buffer() const
CohesivePacket(const ByteBuffer &buffer, OsiLayer layer)
void trim(OsiLayer from, unsigned bytes)
std::size_t size(OsiLayer single_layer) const
value_type operator[](size_type) const
byte_view_range(ByteBuffer &&)
byte_view_range(const ByteBuffer::const_iterator &, const ByteBuffer::const_iterator &)
ByteBuffer::const_pointer data() const
void encode(units::Duration)
units::Duration decode() const
bool after(const Timestamp &other) const
bool before(const Timestamp &other) const
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,...
IntX specified in TS 103 097 v1.2.1, section 4.2.1.
static DecapConfirm from(VerifyConfirm &&verify_confirm, const SecuredMessageView &msg_view)
Input data for decapsulating a secured message.
Uncompressed specified in TS 103 097 v1.2.1 in section 4.2.5.
described in TS 103 097 v1.2.1 (2015-06), section 6.1
void add_permission(ItsAid aid, const ByteBuffer &ssp)
const ValidityRestriction * get_restriction(ValidityRestrictionType type) const
const SubjectAttribute * get_attribute(SubjectAttributeType type) const
void remove_attribute(SubjectAttributeType type)
const validity_restriction_type< T > * get_restriction() const
const subject_attribute_type< T > * get_attribute() const
void remove_restriction(ValidityRestrictionType type)
void add_permission(ItsAid aid)
Payload specified in TS 103 097 v1.2.1, section 5.2.
SecuredMessage as specified in TS 103 097 v1.2.1, section 5.1.
HeaderField * header_field(HeaderFieldType)
const TrailerField * trailer_field(TrailerFieldType type) const
const HeaderField * header_field(HeaderFieldType type) const
TrailerField * trailer_field(TrailerFieldType)
described in TS 103 097 v1.2.1, section 6.2
ThreeDLocation specified in TS 103 097 v1.2.1, section 4.2.19.
Time64WithStandardDeviation specified in TS 103 097 v1.2.1, section 4.2.16.
resolve type for matching TrailerFieldType