1#include <vanetza/security/exception.hpp>
2#include <vanetza/security/v2/encryption_parameter.hpp>
3#include <vanetza/security/v2/public_key.hpp>
4#include <boost/variant/apply_visitor.hpp>
5#include <boost/variant/static_visitor.hpp>
14SymmetricAlgorithm get_type(
const EncryptionParameter& param)
16 struct Encryption_visitor :
public boost::static_visitor<SymmetricAlgorithm>
18 SymmetricAlgorithm operator()(
const Nonce&)
20 return SymmetricAlgorithm::AES128_CCM;
24 Encryption_visitor visit;
25 return boost::apply_visitor(visit, param);
28void serialize(
OutputArchive& ar,
const EncryptionParameter& param)
30 struct Encryption_visitor :
public boost::static_visitor<>
37 void operator()(
const Nonce& nonce)
39 for (
auto& byte : nonce) {
47 SymmetricAlgorithm algo = get_type(param);
49 Encryption_visitor visit(ar);
50 boost::apply_visitor(visit, param);
53size_t get_size(
const EncryptionParameter& param)
55 size_t size =
sizeof(SymmetricAlgorithm);
56 struct Encryption_visitor :
public boost::static_visitor<size_t>
58 size_t operator()(
const Nonce& nonce)
64 Encryption_visitor visit;
65 size += boost::apply_visitor(visit, param);
69size_t deserialize(
InputArchive& ar, EncryptionParameter& param)
71 SymmetricAlgorithm algo;
72 deserialize(ar, algo);
74 case SymmetricAlgorithm::AES128_CCM: {
76 for (size_t s = 0; s < nonce.size(); s++) {
86 return get_size(param);
thrown when a deserialization error occurred