WvStreams
wvx509mgr.h
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