1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2 
3 #ifndef PKIUTILITY_H
4 #define PKIUTILITY_H
5 
6 #include "remote/i2-remote.hpp"
7 #include "base/exception.hpp"
8 #include "base/dictionary.hpp"
9 #include "base/string.hpp"
10 #include <openssl/x509v3.h>
11 #include <memory>
12 
13 namespace icinga
14 {
15 
16 /**
17  * @ingroup remote
18  */
19 class PkiUtility
20 {
21 public:
22 	static int NewCa();
23 	static int NewCert(const String& cn, const String& keyfile, const String& csrfile, const String& certfile);
24 	static int SignCsr(const String& csrfile, const String& certfile);
25 	static std::shared_ptr<X509> FetchCert(const String& host, const String& port);
26 	static int WriteCert(const std::shared_ptr<X509>& cert, const String& trustedfile);
27 	static int GenTicket(const String& cn, const String& salt, std::ostream& ticketfp);
28 	static int RequestCertificate(const String& host, const String& port, const String& keyfile,
29 		const String& certfile, const String& cafile, const std::shared_ptr<X509>& trustedcert,
30 		const String& ticket = String());
31 	static String GetCertificateInformation(const std::shared_ptr<X509>& certificate);
32 	static Dictionary::Ptr GetCertificateRequests(bool removed = false);
33 
34 private:
35 	PkiUtility();
36 
37 };
38 
39 }
40 
41 #endif /* PKIUTILITY_H */
42