]> WPIA git - cassiopeia.git/blobdiff - src/X509.h
add: simple, signer-side record handling
[cassiopeia.git] / src / X509.h
index 66165809a2afc2b8813a10e44b6b0803738708fc..5f1b76fe282adeda0ccc7605ad8531494f5de62e 100644 (file)
@@ -11,9 +11,12 @@ 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> parseCSR( std::string content );
+    static std::shared_ptr<X509Req> parseSPKAC( std::string content );
     int verify();
     std::shared_ptr<EVP_PKEY> getPkey();
 };
@@ -21,12 +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 setSerialNumber( BIGNUM* num );
     void setExtensions( std::shared_ptr<X509> caCert, std::vector<std::shared_ptr<SAN>>& sans );
-    void setTimes( long before, long after );
-    std::string sign( std::shared_ptr<EVP_PKEY> caKey );
+    void setTimes( uint32_t before, uint32_t after );
+    std::shared_ptr<SignedCertificate> sign( std::shared_ptr<EVP_PKEY> caKey, std::string signAlg );
 };