Vanetza
 
Loading...
Searching...
No Matches
encryption_parameter.hpp
1#ifndef ENCRYPTION_PARAMETER_HPP_EIAWNAWY
2#define ENCRYPTION_PARAMETER_HPP_EIAWNAWY
3
4#include <vanetza/security/v2/serialization.hpp>
5#include <boost/variant/variant.hpp>
6#include <array>
7#include <cstdint>
8
9namespace vanetza
10{
11namespace security
12{
13namespace v2
14{
15
16/// forward declaration, see public_key.hpp
17enum class SymmetricAlgorithm : uint8_t;
18
19/// Nonce specified in TS 103 097 v1.2.1, section 4.2.7
20using Nonce = std::array<uint8_t, 12>;
21
22/// EncryptionParameter specified in TS 103 097 v1.2.1, section 4.2.7
23using EncryptionParameter = boost::variant<Nonce>;
24
25/**
26 * \brief Determines SymmetricAlgorithm for an EncryptionParameter
27 * \param param
28 * \return SymmetricAlgorithm
29 */
30SymmetricAlgorithm get_type(const EncryptionParameter&);
31
32/**
33 * \brief Serializes an EncryptionParameter into a binary archive
34 * \param ar to serialize in
35 * \param param to serialize
36 */
37void serialize(OutputArchive&, const EncryptionParameter&);
38
39/**
40 * \brief Calculates size of an EncryptionParameter
41 * \param param
42 * \return number of octets needed to serialize the EncryptionParameter
43 */
44size_t get_size(const EncryptionParameter&);
45
46/**
47 * \brief Deserializes an EncryptionParameter from a binary archive
48 * \param ar Input expected to start with an EncryptionParameter
49 * \param enc Deserialized encryption parameter
50 * \return size of deserialized EncryptionParameter
51 */
52size_t deserialize(InputArchive&, EncryptionParameter&);
53
54} // namespace v2
55} // namespace security
56} // namespace vanetzta
57
58#endif /* ENCRYPTION_PARAMETER_HPP_EIAWNAWY */