]> WPIA git - cassiopeia.git/blobdiff - src/X509.h
upd: add file I/O util funcs.
[cassiopeia.git] / src / X509.h
index a9d60e67abd0850f81e7f62d64b97fe6c7aa901c..dbc6d0a0df470a76a4dceea1691ddce034f85d1f 100644 (file)
@@ -1,14 +1,22 @@
 #pragma once
+
 #include <memory>
+#include <vector>
+
 #include <openssl/ssl.h>
 
+#include "database.h"
+
 class X509Req {
 private:
     std::shared_ptr<EVP_PKEY> pk;
     std::shared_ptr<X509_REQ> req;
+    std::shared_ptr<NETSCAPE_SPKI> spki;
     X509Req( X509_REQ* csr );
+    X509Req( std::string spkac );
 public:
-    static std::shared_ptr<X509Req> parse( std::string filename );
+    static std::shared_ptr<X509Req> parse( std::string content );
+    static std::shared_ptr<X509Req> parseSPKAC( std::string content );
     int verify();
     std::shared_ptr<EVP_PKEY> getPkey();
 };
@@ -16,13 +24,14 @@ public:
 class X509Cert {
 private:
     std::shared_ptr<X509> target;
+    std::shared_ptr<X509_NAME> subject;
 public:
     X509Cert();
+    void addRDN( int nid, std::string data );
     void setIssuerNameFrom( std::shared_ptr<X509> ca );
     void setPubkeyFrom( std::shared_ptr<X509Req> r );
-    void setSerialNumber( int num );
-    void setExtensions( std::shared_ptr<X509> caCert );
-    void setTimes( long before, long after );
-    std::string sign( std::shared_ptr<EVP_PKEY> caKey );
+    void setSerialNumber( BIGNUM* num );
+    void setExtensions( std::shared_ptr<X509> caCert, std::vector<std::shared_ptr<SAN>>& sans );
+    void setTimes( uint32_t before, uint32_t after );
+    std::shared_ptr<SignedCertificate> sign( std::shared_ptr<EVP_PKEY> caKey, std::string signAlg );
 };
-