Vanetza
Loading...
Searching...
No Matches
signer_info.hpp
1#ifndef SIGNER_INFO_HPP_9K6GXK4R
2#define SIGNER_INFO_HPP_9K6GXK4R
3
4#include <vanetza/security/v2/basic_elements.hpp>
5#include <vanetza/security/v2/public_key.hpp>
6#include <boost/variant/recursive_wrapper.hpp>
7#include <boost/variant/variant.hpp>
8#include <cstddef>
9#include <cstdint>
10#include <list>
11
12namespace vanetza
13{
14namespace security
15{
16namespace v2
17{
18
19struct Certificate;
20
21/// described in TS 103 097 v1.2.1, section 4.2.11
22enum class SignerInfoType : uint8_t
23{
24 Self = 0, // nothing -> nullptr_t
25 Certificate_Digest_With_SHA256 = 1, // HashedId8
26 Certificate = 2, // Certificate
27 Certificate_Chain = 3, // std::list<Certificate>
28 Certificate_Digest_With_Other_Algorithm = 4 // CertificateDigestWithOtherAlgorithm
29};
30
31/// described in TS 103 097 v1.2.1, section 4.2.10
33{
34 PublicKeyAlgorithm algorithm;
35 HashedId8 digest;
36};
37
38/// described in TS 103 097 v1.2.1, section 4.2.10
39using SignerInfo = boost::variant<
40 std::nullptr_t,
41 HashedId8,
42 boost::recursive_wrapper<Certificate>,
43 std::list<Certificate>,
44 CertificateDigestWithOtherAlgorithm
45>;
46
47/**
48 * \brief Determines SignerInfoType of SignerInfo
49 * \param SignerInfo
50 * \return SignerInfoType
51 */
52SignerInfoType get_type(const SignerInfo&);
53
54/**
55 * \brief Calculates size of an CertificateDigestWithOtherAlgorithm
56 * \param CertificateDigestWithOtherAlgorithm
57 * \return number of octets needed to serialize the CertificateDigestWithOtherAlgorithm
58 */
59size_t get_size(const CertificateDigestWithOtherAlgorithm&);
60
61/**
62 * \brief Calculates size of an SignerInfo
63 * \param SignerInfo
64 * \return number of octets needed to serialize the SignerInfo
65 */
66size_t get_size(const SignerInfo&);
67
68/**
69 * \brief Serializes an CertificateDigestWithOtherAlgorithm into a binary archive
70 */
72
73/**
74 * \brief Serializes an SignerInfo into a binary archive
75 */
76void serialize(OutputArchive&, const SignerInfo&);
77
78/**
79 * \brief Deserializes an CertificateDigestWithOtherAlgorithm from a binary archive
80 * \param archive with a CertificateDigestWithOtherAlgorithm at the beginning
81 * \param CertificateDigestWithOtherAlgorithm to deserialize
82 * \return size of the deserialized CertificateDigestWithOtherAlgorithm
83 */
85
86/**
87 * \brief Deserializes an SignerInfo from a binary archive
88 * \param archive with a SignerInfo at the beginning
89 * \param SignerInfo to deserialize
90 * \return size of the deserialized SignerInfo
91 */
92size_t deserialize(InputArchive&, SignerInfo&);
93
94} // namespace v2
95} // namespace security
96} // namespace vanetza
97
98#endif /* SIGNER_INFO_HPP_9K6GXK4R */
ChunckPacket is a packet consisting of several memory chunks.
ByteBufferConvertible & operator[](OsiLayer ol)
ChunkPacket & merge(ChunkPacket &packet, OsiLayer from, OsiLayer to)
std::size_t size() const
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
std::size_t size() 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
Definition factory.hpp:45
value_type operator[](size_type) const
Definition byte_view.cpp:48
byte_view_range(ByteBuffer &&)
Definition byte_view.cpp:37
byte_view_range(const ByteBuffer::const_iterator &, const ByteBuffer::const_iterator &)
Definition byte_view.cpp:27
ByteBuffer::const_pointer data() const
Definition byte_view.cpp:42
void encode(units::Duration)
Definition lifetime.cpp:45
units::Duration decode() const
Definition lifetime.cpp:59
bool after(const Timestamp &other) const
Definition timestamp.cpp:76
bool before(const Timestamp &other) const
Definition timestamp.cpp:71
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,...
IntX specified in TS 103 097 v1.2.1, section 4.2.1.
Definition int_x.hpp:21
Compressed_Lsb_Y_0 specified in TS 103 097 v1.2.1 in section 4.2.5.
Definition ecc_point.hpp:24
Compressed_Lsb_Y_1 specified in TS 103 097 v1.2.1 in section 4.2.5.
Definition ecc_point.hpp:30
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.
Definition signature.hpp:17
Uncompressed specified in TS 103 097 v1.2.1 in section 4.2.5.
Definition ecc_point.hpp:36
X_Coordinate_Only specified in TS 103 097 v1.2.1 in section 4.2.5.
Definition ecc_point.hpp:18
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)
Payload specified in TS 103 097 v1.2.1, section 5.2.
Definition payload.hpp:28
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.
Definition region.hpp:21
Time64WithStandardDeviation specified in TS 103 097 v1.2.1, section 4.2.16.
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 HeaderFieldType
resolve type for matching TrailerFieldType