Vanetza
Loading...
Searching...
No Matches
naive_certificate_provider.hpp
1#pragma once
2#include <memory>
3#include <string>
4#include <vanetza/common/runtime.hpp>
5#include <vanetza/security/backend.hpp>
6#include <vanetza/security/v2/basic_elements.hpp>
7#include <vanetza/security/v3/certificate.hpp>
8#include <vanetza/security/v3/certificate_provider.hpp>
9
10namespace vanetza
11{
12namespace security
13{
14namespace v3
15{
16
17/**
18 * \brief A very simplistic certificate provider
19 *
20 * This certificate provider signs its certificates with a randomly generated root certificate. This means the
21 * signatures produced based on this certificate provider can't be verified by other parties.
22 *
23 * It's intended for experimenting with secured messages without validating signatures.
24 */
26{
27public:
28 NaiveCertificateProvider(const Runtime&);
29
30 /**
31 * \brief get own certificate for signing
32 * \return own certificate
33 */
34 const Certificate& own_certificate() override;
35
36 /**
37 * \brief get own private key
38 * \return private key
39 */
40 const PrivateKey& own_private_key() override;
41
42 /**
43 * \brief get ticket signer certificate (same for all instances)
44 * \return signing authorization authority certificate
45 */
47
48 /**
49 * \brief get root certificate (same for all instances)
50 * \return signing root certificate
51 */
53
54 /**
55 * \brief generate an authorization ticket
56 * \return generated certificate
57 */
59
60 /**
61 * \brief sign an authorization ticket
62 * \param certificate certificate to sign
63 */
64 void sign_authorization_ticket(Certificate& certificate);
65
66private:
67 /**
68 * \brief get root key (same for all instances)
69 * \return root key
70 */
71 const ecdsa256::KeyPair& aa_key_pair();
72
73 /**
74 * \brief get root key (same for all instances)
75 * \return root key
76 */
77 const ecdsa256::KeyPair& root_key_pair();
78
79 /**
80 * \brief generate a authorization authority certificate
81 *
82 * \return generated certificate
83 */
84 Certificate generate_aa_certificate(const std::string& subject_name);
85
86 /**
87 * \brief generate a root certificate
88 *
89 * \return generated certificate
90 */
91 Certificate generate_root_certificate(const std::string& subject_name);
92
93 std::unique_ptr<Backend> m_crypto_backend;
94 const Runtime& m_runtime;
95 const ecdsa256::KeyPair m_own_key_pair;
96 Certificate m_own_certificate;
97};
98
99} // namespace v3
100} // namespace security
101} // namespace vanetza
boost::optional< HashedId8 > calculate_digest() const
void sign_authorization_ticket(Certificate &certificate)
sign an authorization ticket
const ecdsa256::KeyPair & aa_key_pair()
get root key (same for all instances)
Certificate generate_root_certificate(const std::string &subject_name)
generate a root certificate
Certificate generate_aa_certificate(const std::string &subject_name)
generate a authorization authority certificate
const Certificate & own_certificate() override
get own certificate for signing
Certificate generate_authorization_ticket()
generate an authorization ticket
const Certificate & root_certificate()
get root certificate (same for all instances)
const PrivateKey & own_private_key() override
get own private key
const ecdsa256::KeyPair & root_key_pair()
get root key (same for all instances)
const Certificate & aa_certificate()
get ticket signer certificate (same for all instances)
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
Uncompressed specified in TS 103 097 v1.2.1 in section 4.2.5.
Definition ecc_point.hpp:36
void add_cert_issue_permission(asn1::PsidGroupPermissions *group_permission)
add cert issuing permission
void add_app_permission(ItsAid aid, const ByteBuffer &ssp)
add application permissions as bitmap