]> WPIA git - cassiopeia.git/blob - src/X509.h
chg: Split off X509-related API
[cassiopeia.git] / src / X509.h
1 #pragma once
2 #include <memory>
3 #include <openssl/ssl.h>
4
5 class X509Req {
6 private:
7     std::shared_ptr<EVP_PKEY> pk;
8     std::shared_ptr<X509_REQ> req;
9     X509Req( X509_REQ* csr );
10 public:
11     static std::shared_ptr<X509Req> parse( std::string filename );
12     int verify();
13     std::shared_ptr<EVP_PKEY> getPkey();
14 };
15
16 class X509Cert {
17 private:
18     std::shared_ptr<X509> target;
19 public:
20     X509Cert();
21     void setIssuerNameFrom( std::shared_ptr<X509> ca );
22     void setPubkeyFrom( std::shared_ptr<X509Req> r );
23     void setSerialNumber( int num );
24     void setExtensions( std::shared_ptr<X509> caCert );
25     void setTimes( long before, long after );
26     std::string sign( std::shared_ptr<EVP_PKEY> caKey );
27 };
28