WvStreams
|
00001 /* -*- Mode: C++ -*- 00002 * 00003 * X.509 certificate management class: This class builds upon the 00004 * functionality provided by the WvX509 class, adding operations that are 00005 * made possible with the addition of a private key (e.g. signing certificates 00006 * and CRLs). 00007 */ 00008 #ifndef __WVX509MGR_H 00009 #define __WVX509MGR_H 00010 00011 #include "wvx509.h" 00012 #include "wvcrl.h" 00013 00014 class WvX509Mgr : public WvX509 00015 { 00016 public: 00021 WvX509Mgr(); 00022 00040 WvX509Mgr(WvStringParm _dname, WvRSAKey *_rsa, bool ca = false); 00041 00049 WvX509Mgr(WvStringParm _dname, int bits, bool ca=false); 00050 00054 WvX509Mgr(const WvX509Mgr &mgr); 00055 00056 protected: 00065 void create_selfissued(WvStringParm dname, bool is_ca = false); 00066 00067 public: 00069 virtual ~WvX509Mgr(); 00070 00075 virtual bool isok() const; 00076 00080 virtual WvString errstr() const; 00081 00085 bool operator! () const; 00086 00090 WvRSAKey *get_rsa() { return rsa; } 00091 void set_rsa(WvRSAKey *_rsa) { WVDELETE(rsa); rsa = new WvRSAKey(*_rsa); } 00092 00098 bool bind_ssl(SSL_CTX *ctx); 00099 00105 WvString signreq(WvStringParm pkcs10req) const; 00106 00110 bool signcert(WvX509 &unsignedcert) const; 00111 00117 bool signcrl(WvCRL &unsignedcrl) const; 00118 00124 bool test() const; 00125 00130 WvString sign(WvBuf &data) const; 00131 WvString sign(WvStringParm data) const; 00132 00136 virtual WvString encode(const WvX509::DumpMode mode) const; 00137 virtual WvString encode(const WvRSAKey::DumpMode mode) const; 00138 virtual void encode(const WvX509::DumpMode mode, WvBuf &buf) const; 00139 virtual void encode(const WvRSAKey::DumpMode mode, WvBuf &buf) const; 00140 00147 virtual void decode(const WvX509::DumpMode mode, WvStringParm encoded); 00148 virtual void decode(const WvRSAKey::DumpMode mode, WvStringParm encoded); 00149 virtual void decode(const WvX509::DumpMode mode, WvBuf &encoded); 00150 virtual void decode(const WvRSAKey::DumpMode mode, WvBuf &encoded); 00151 00157 bool write_p12(WvStringParm _fname, WvStringParm _pkcs12pass) const; 00158 00164 void read_p12(WvStringParm _fname, WvStringParm _pkcs12pass); 00165 00166 private: 00172 mutable WvRSAKey *rsa; 00173 00174 mutable WvLog debug; 00175 }; 00176 #endif