Vanetza
 
Loading...
Searching...
No Matches
naive_certificate_provider.hpp
1#ifndef NAIVE_CERTIFICATE_PROVIDER_HPP_MTULFLKX
2#define NAIVE_CERTIFICATE_PROVIDER_HPP_MTULFLKX
3
4#include <string>
5#include <vanetza/common/runtime.hpp>
6#include <vanetza/security/backend_cryptopp.hpp>
7#include <vanetza/security/v2/certificate.hpp>
8#include <vanetza/security/v2/certificate_provider.hpp>
9
10namespace vanetza
11{
12namespace security
13{
14namespace v2
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:
29
30 /**
31 * \brief get own certificate for signing
32 * \return own certificate
33 */
34 const Certificate& own_certificate() override;
35
36 /**
37 * Get own certificate chain, excluding the leaf certificate and root CA
38 * \return own certificate chain
39 */
40 std::list<Certificate> own_chain() override;
41
42 /**
43 * \brief get own private key
44 * \return private key
45 */
46 const ecdsa256::PrivateKey& own_private_key() override;
47
48 /**
49 * \brief get ticket signer certificate (same for all instances)
50 * \return signing authorization authority certificate
51 */
53
54 /**
55 * \brief get root certificate (same for all instances)
56 * \return signing root certificate
57 */
59
60 /**
61 * \brief generate an authorization ticket
62 * \return generated certificate
63 */
65
66 /**
67 * \brief sign an authorization ticket
68 * \param certificate certificate to sign
69 */
70 void sign_authorization_ticket(Certificate& certificate);
71
72private:
73 /**
74 * \brief get root key (same for all instances)
75 * \return root key
76 */
78
79 /**
80 * \brief get root key (same for all instances)
81 * \return root key
82 */
84
85 /**
86 * \brief generate a authorization authority certificate
87 *
88 * \return generated certificate
89 */
90 Certificate generate_aa_certificate(const std::string& subject_name);
91
92 /**
93 * \brief generate a root certificate
94 *
95 * \return generated certificate
96 */
97 Certificate generate_root_certificate(const std::string& subject_name);
98
99 BackendCryptoPP m_crypto_backend; /*< key generation is not a generic backend feature */
100 const Runtime& m_runtime;
101 const ecdsa256::KeyPair m_own_key_pair;
102 Certificate m_own_certificate;
103};
104
105} // namespace v2
106} // namespace security
107} // namespace vanetza
108
109#endif /* NAIVE_CERTIFICATE_PROVIDER_HPP_MTULFLKX */
const Certificate & own_certificate() override
get own certificate for signing
Certificate generate_authorization_ticket()
generate an authorization ticket
const ecdsa256::KeyPair & aa_key_pair()
get root key (same for all instances)
void sign_authorization_ticket(Certificate &certificate)
sign an authorization ticket
const ecdsa256::KeyPair & root_key_pair()
get root key (same for all instances)
Certificate generate_aa_certificate(const std::string &subject_name)
generate a authorization authority certificate
const ecdsa256::PrivateKey & own_private_key() override
get own private key
const Certificate & aa_certificate()
get ticket signer certificate (same for all instances)
const Certificate & root_certificate()
get root certificate (same for all instances)
Certificate generate_root_certificate(const std::string &subject_name)
generate a root certificate
described in TS 103 097 v1.2.1 (2015-06), section 6.1
Definition: certificate.hpp:28