1#ifndef VALIDITY_RESTRICTION_HPP_LMCUHYLJ
2#define VALIDITY_RESTRICTION_HPP_LMCUHYLJ
4#include <vanetza/common/bit_number.hpp>
5#include <vanetza/security/v2/region.hpp>
6#include <vanetza/security/v2/serialization.hpp>
7#include <boost/variant/variant.hpp>
17using Time32 = uint32_t;
18using Time64 = uint64_t;
28 Sixty_Hour_Blocks = 0x3,
33 Duration(
BitNumber<uint16_t, 13> value, Units unit);
34 Duration(uint16_t raw);
42
43
44
47 return static_cast<Units>(m_raw >> 13);
51
52
53
56 return m_raw & 0x1FFF;
60
61
62
63
72enum class ValidityRestrictionType : uint8_t
75 Time_Start_And_End = 1,
76 Time_Start_And_Duration = 2,
82 StartAndEndValidity() =
default;
83 StartAndEndValidity(Time32 start, Time32 end);
85 Time32 start_validity;
91 StartAndDurationValidity() =
default;
92 StartAndDurationValidity(Time32 start,
Duration);
94 Time32 start_validity;
98using EndValidity = Time32;
100typedef boost::variant<EndValidity, StartAndEndValidity, StartAndDurationValidity, GeographicRegion> ValidityRestriction;
103
104
105
106ValidityRestrictionType get_type(
const ValidityRestriction&);
109
110
111
112
115size_t get_size(
const ValidityRestriction&);
116size_t get_size(
const Time32&);
117size_t get_size(
const Time64&);
121
122
123
124
125
129
130
131
132
138template<ValidityRestrictionType>
144 using type = EndValidity;
168
169
170
171
172template<ValidityRestrictionType T>
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.
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)
EncryptionKey specified in TS 103 097 v1.2.1, section 6.4.
ItsAidSsp specified in TS 103 097 v1.2.1, section 6.9.
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)
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.
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