Vanetza
Loading...
Searching...
No Matches
recipient_info.hpp
1#ifndef RECIPIENT_INFO_HPP_IENLXEUN
2#define RECIPIENT_INFO_HPP_IENLXEUN
3
4#include <vanetza/security/v2/basic_elements.hpp>
5#include <vanetza/security/v2/public_key.hpp>
6#include <boost/variant/variant.hpp>
7
8namespace vanetza
9{
10namespace security
11{
12namespace v2
13{
14
15/// EciesEncryptedKey specified in TS 103 097 v1.2.1, section 5.9
17{
18 EccPoint v;
19 ByteBuffer c;
20 std::array<uint8_t, 16> t;
21};
22
23/// OpaqueKey specified in TS 103 097 v1.2.1, section 5.8
25{
26 ByteBuffer data;
27};
28
29/// Key specified in TS 103 097 v1.2.1, section 5.8 (in RecipientInfo)
30typedef boost::variant<EciesEncryptedKey, OpaqueKey> Key;
31
32/// RecipientInfo specified in TS 103 097 v1.2.1, section 5.8
34{
35 HashedId8 cert_id;
36 Key enc_key;
37
38 PublicKeyAlgorithm pk_encryption() const;
39};
40
41/**
42 * \brief Determines applicable PublicKeyAlgorithm
43 * \param key Algorithm has to fit this kind of key
44 * \return PublicKeyAlgorithm
45 */
46PublicKeyAlgorithm get_type(const Key&);
47
48/**
49 * Calculates size of a RecipientInfo
50 * \param info
51 * \return number of octets needed to serialize the RecipientInfo
52 */
53size_t get_size(const RecipientInfo&);
54
55/**
56 * \brief Serializes a RecipientInfo into a binary archive
57 * \param ar Destination of serialized object
58 * \param info RecipientInfo to serialize
59 * \param sym Applicable symmetric algorithm
60 */
61void serialize(OutputArchive&, const RecipientInfo&, SymmetricAlgorithm);
62
63/**
64 * \brief Deserialize a RecipientInfo
65 * \param ar Input starting with serialized RecipientInfo
66 * \param info Deserialized RecipientInfo
67 * \param sym Symmetric algorithm required to deserialize encrypted key
68 * \return size of the deserialized RecipientInfo in bytes
69 */
70size_t deserialize(InputArchive&, RecipientInfo&, const SymmetricAlgorithm&);
71
72} // namespace v2
73} // namespace security
74} // namespace vanetza
75
76#endif /* RECIPIENT_INFO_HPP_IENLXEUN */
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,...
std::chrono::seconds to_seconds() const
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)
CircularRegion specified in TS 103 097 v1.2.1, section 4.2.22.
Definition region.hpp:74
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.
Definition region.hpp:110
ItsAidSsp specified in TS 103 097 v1.2.1, section 6.9.
Specified in TS 103 097 v1.2.1, section 4.2.20.
Definition region.hpp:65
OpaqueKey specified in TS 103 097 v1.2.1, section 5.8.
Payload specified in TS 103 097 v1.2.1, section 5.2.
Definition payload.hpp:28
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.
Definition region.hpp:90
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.
Definition region.hpp:21
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.
Definition region.hpp:47
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 HeaderFieldType
resolve type for matching TrailerFieldType