2#include <vanetza/asn1/asn1c_wrapper.hpp>
3#include <vanetza/asn1/security/EtsiTs103097Certificate.h>
4#include <vanetza/common/clock.hpp>
5#include <vanetza/common/its_aid.hpp>
6#include <vanetza/common/position_fix.hpp>
7#include <vanetza/net/packet_variant.hpp>
8#include <vanetza/security/hashed_id.hpp>
9#include <vanetza/security/key_type.hpp>
10#include <vanetza/security/public_key.hpp>
11#include <vanetza/security/signature.hpp>
12#include <vanetza/security/v3/asn1_types.hpp>
13#include <vanetza/security/v3/location_checker.hpp>
14#include <vanetza/security/v3/validity_restriction.hpp>
15#include <boost/optional/optional_fwd.hpp>
29
30
31
32
33
37 explicit CertificateView(
const asn1::EtsiTs103097Certificate* cert);
40
41
42
46
47
48
52
53
54
58
59
60
64
65
66
70
71
72
76
77
78
82
83
84
88
89
90
91
92
96
97
98
99
100
104
105
106
107
108
112
113
114
118
119
120
124
125
126
127 ByteBuffer
encode()
const;
130 const asn1::EtsiTs103097Certificate* m_cert =
nullptr;
138 explicit Certificate(
const asn1::EtsiTs103097Certificate&);
147 ByteBuffer encode()
const;
149 void add_permission(ItsAid aid,
const ByteBuffer& ssp);
151 void add_cert_permission(asn1::PsidGroupPermissions* group_permission);
153 void set_signature(
const SomeEcdsaSignature& signature);
157
158
159
160
161boost::optional<HashedId8> calculate_digest(
const asn1::EtsiTs103097Certificate& cert);
164
165
166
167
168bool is_canonical(
const asn1::EtsiTs103097Certificate& cert);
171
172
173
174
175boost::optional<
Certificate> canonicalize(
const asn1::EtsiTs103097Certificate& cert);
178
179
180
181
182
183
184bool valid_at_timepoint(
const asn1::EtsiTs103097Certificate& cert,
const Clock::time_point& time_point);
187
188
189
190
191
192
193bool valid_for_application(
const asn1::EtsiTs103097Certificate& cert, ItsAid aid);
196
197
198
199
200boost::optional<
PublicKey> get_public_key(
const asn1::EtsiTs103097Certificate& cert);
203
204
205
206
207KeyType get_verification_key_type(
const asn1::EtsiTs103097Certificate& cert);
210
211
212
213
214boost::optional<
PublicKey> get_public_encryption_key(
const asn1::EtsiTs103097Certificate& cert);
217
218
219
220
221boost::optional<
Signature> get_signature(
const asn1::EtsiTs103097Certificate& cert);
224
225
226
227
228std::list<ItsAid> get_aids(
const asn1::EtsiTs103097Certificate& cert);
231
232
233
234
235
236ByteBuffer get_app_permissions(
const asn1::EtsiTs103097Certificate& cert, ItsAid aid);
238void add_psid_group_permission(asn1::PsidGroupPermissions* group_permission, ItsAid aid,
const ByteBuffer& ssp,
const ByteBuffer& bitmask);
#define FWD_OCTET_STRING(name)
#define FWD_ALIAS(name, base)
#define FWD_NATIVE_INTEGER(name)
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
Result create(Args... args) 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
virtual boost::optional< Uncompressed > decompress_point(const EccPoint &ecc_point)=0
decompress a possibly compressed elliptic curve point
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,...
std::chrono::seconds to_seconds() const
IntX specified in TS 103 097 v1.2.1, section 4.2.1.
ByteBuffer encode() const
boost::optional< Certificate > canonicalize() const
bool valid_at_timepoint(const Clock::time_point &time_point) const
StartAndEndValidity get_start_and_end_validity() const
bool is_at_certificate() const
bool is_ca_certificate() const
bool issuer_is_self() const
bool valid_for_application(ItsAid aid) const
boost::optional< HashedId8 > calculate_digest() const
bool valid_at_location(const PositionFix &location, const LocationChecker *lc) const
bool has_region_restriction() const
boost::optional< HashedId8 > issuer_digest() const
KeyType get_verification_key_type() const
bool is_canonical() const
Compressed_Lsb_Y_0 specified in TS 103 097 v1.2.1 in section 4.2.5.
Compressed_Lsb_Y_1 specified in TS 103 097 v1.2.1 in section 4.2.5.
static DecapConfirm from(VerifyConfirm &&verify_confirm, const SecuredMessageView &msg_view)
Input data for decapsulating a secured message.
EcdsaSignature specified in TS 103 097 v1.2.1, section 4.2.9.
Uncompressed specified in TS 103 097 v1.2.1 in section 4.2.5.
X_Coordinate_Only specified in TS 103 097 v1.2.1 in section 4.2.5.
described in TS 103 097 v1.2.1, section 4.2.10
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)
CircularRegion specified in TS 103 097 v1.2.1, section 4.2.22.
EciesEncryptedKey specified in TS 103 097 v1.2.1, section 5.9.
EncryptionKey specified in TS 103 097 v1.2.1, section 6.4.
IdentifiedRegion specified in TS 103 097 v1.2.1, section 4.2.25.
ItsAidSsp specified in TS 103 097 v1.2.1, section 6.9.
Specified in TS 103 097 v1.2.1, section 4.2.20.
OpaqueKey specified in TS 103 097 v1.2.1, section 5.8.
Payload specified in TS 103 097 v1.2.1, section 5.2.
RecipientInfo specified in TS 103 097 v1.2.1, section 5.8.
RectangularRegion specified in TS 103 097 v1.2.1, section 4.2.23.
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)
SubjectAssurance specified in TS 103 097 v1.2.1 in section 6.6 and 7.4.1.
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.
TwoDLocation specified in TS 103 097 v1.2.1, section 4.2.18.
VerificationKey specified in TS 103 097 v1.2.1, section 6.4.
ecdsa_nistp256_with_sha256 specified in TS 103 097 v1.2.1, section 4.2.4
ecies_nistp256 specified in TS 103 097 v1.2.1, section 4.2.4
resolve type for matching TrailerFieldType