1#ifndef CERTIFICATE_HPP_LWBWIAVL
2#define CERTIFICATE_HPP_LWBWIAVL
4#include <vanetza/common/byte_buffer.hpp>
5#include <vanetza/common/its_aid.hpp>
6#include <vanetza/security/backend.hpp>
7#include <vanetza/security/ecdsa256.hpp>
8#include <vanetza/security/v2/basic_elements.hpp>
9#include <vanetza/security/v2/ecc_point.hpp>
10#include <vanetza/security/v2/serialization.hpp>
11#include <vanetza/security/v2/signature.hpp>
12#include <vanetza/security/v2/signer_info.hpp>
13#include <vanetza/security/v2/subject_attribute.hpp>
14#include <vanetza/security/v2/subject_info.hpp>
15#include <vanetza/security/v2/validity_restriction.hpp>
16#include <boost/optional/optional.hpp>
17#include <boost/variant/get.hpp>
29 SignerInfo signer_info;
31 std::list<SubjectAttribute> subject_attributes;
32 std::list<ValidityRestriction> validity_restriction;
35 uint8_t version()
const {
return 2; }
41 const SubjectAttribute*
get_attribute(SubjectAttributeType type)
const;
47 const ValidityRestriction*
get_restriction(ValidityRestrictionType type)
const;
79 template<SubjectAttributeType T>
82 using type = subject_attribute_type<T>;
84 return boost::get<type>(field);
92 template<Val
idityRestrictionType T>
95 using type = validity_restriction_type<T>;
97 return boost::get<type>(field);
107size_t get_size(
const Certificate&);
135ByteBuffer convert_for_signing(
const Certificate&);
142void sort(Certificate& certificate);
150boost::optional<Uncompressed> get_uncompressed_public_key(
const Certificate&,
Backend& backend);
158boost::optional<ecdsa256::PublicKey> get_public_key(
const Certificate&,
Backend& backend);
165HashedId8 calculate_hash(
const Certificate&);
described in TS 103 097 v1.2.1 (2015-06), section 6.1
void add_permission(ItsAid aid)
const validity_restriction_type< T > * get_restriction() const
void remove_attribute(SubjectAttributeType type)
const subject_attribute_type< T > * get_attribute() const
void remove_restriction(ValidityRestrictionType type)
described in TS 103 097 v1.2.1, section 6.2