Vanetza
 
Loading...
Searching...
No Matches
subject_info.cpp
1#include <vanetza/security/v2/subject_info.hpp>
2#include <vanetza/security/v2/length_coding.hpp>
3
4namespace vanetza
5{
6namespace security
7{
8namespace v2
9{
10
11size_t get_size(const SubjectInfo& sub)
12{
13 size_t size = sizeof(sub.subject_type);
14 size += sub.subject_name.size();
15 size += length_coding_size(sub.subject_name.size());
16 return size;
17}
18
19void serialize(OutputArchive& ar, const SubjectInfo& sub)
20{
21 serialize(ar, sub.subject_type);
22 size_t size = sub.subject_name.size();
23 serialize_length(ar, size);
24 for (auto& byte : sub.subject_name) {
25 ar << byte;
26 }
27}
28
29size_t deserialize(InputArchive& ar, SubjectInfo& sub)
30{
31 deserialize(ar, sub.subject_type);
32 const std::uintmax_t size = deserialize_length(ar);
33 for (uintmax_t c = 0; c < size; ++c) {
34 uint8_t tmp;
35 ar >> tmp;
36 sub.subject_name.push_back(tmp);
37 }
38 return get_size(sub);
39}
40
41} // ns v2
42} // ns security
43} // ns vanetza