Vanetza
Loading...
Searching...
No Matches
naive_certificate_provider.hpp
1#pragma once
2#include <string>
3#include <vanetza/common/runtime.hpp>
4#include <vanetza/security/v2/basic_elements.hpp>
5#include <vanetza/security/backend_cryptopp.hpp>
6#include <vanetza/security/v3/certificate.hpp>
7#include <vanetza/security/v3/certificate_provider.hpp>
8
9namespace vanetza
10{
11namespace security
12{
13namespace v3
14{
15
16/**
17 * \brief A very simplistic certificate provider
18 *
19 * This certificate provider signs its certificates with a randomly generated root certificate. This means the
20 * signatures produced based on this certificate provider can't be verified by other parties.
21 *
22 * It's intended for experimenting with secured messages without validating signatures.
23 */
24class NaiveCertificateProvider : public BaseCertificateProvider
25{
26public:
27 NaiveCertificateProvider(const Runtime&);
28
29 /**
30 * \brief get own certificate for signing
31 * \return own certificate
32 */
33 const Certificate& own_certificate() override;
34
35 /**
36 * \brief get own private key
37 * \return private key
38 */
39 const PrivateKey& own_private_key() override;
40
41 /**
42 * \brief get ticket signer certificate (same for all instances)
43 * \return signing authorization authority certificate
44 */
46
47 /**
48 * \brief get root certificate (same for all instances)
49 * \return signing root certificate
50 */
52
53 /**
54 * \brief generate an authorization ticket
55 * \return generated certificate
56 */
58
59 /**
60 * \brief sign an authorization ticket
61 * \param certificate certificate to sign
62 */
63 void sign_authorization_ticket(Certificate& certificate);
64
65private:
66 /**
67 * \brief get root key (same for all instances)
68 * \return root key
69 */
71
72 /**
73 * \brief get root key (same for all instances)
74 * \return root key
75 */
77
78 /**
79 * \brief generate a authorization authority certificate
80 *
81 * \return generated certificate
82 */
83 Certificate generate_aa_certificate(const std::string& subject_name);
84
85 /**
86 * \brief generate a root certificate
87 *
88 * \return generated certificate
89 */
90 Certificate generate_root_certificate(const std::string& subject_name);
91
92 BackendCryptoPP m_crypto_backend; /*< key generation is not a generic backend feature */
93 const Runtime& m_runtime;
94 const ecdsa256::KeyPair m_own_key_pair;
95 Certificate m_own_certificate;
96};
97
98} // namespace v3
99} // namespace security
100} // namespace vanetza
101
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)