WvStreams
wvx509mgr.h
1 /* -*- Mode: C++ -*-
2  *
3  * X.509 certificate management class: This class builds upon the
4  * functionality provided by the WvX509 class, adding operations that are
5  * made possible with the addition of a private key (e.g. signing certificates
6  * and CRLs).
7  */
8 #ifndef __WVX509MGR_H
9 #define __WVX509MGR_H
10 
11 #include "wvx509.h"
12 #include "wvcrl.h"
13 
14 class WvX509Mgr : public WvX509
15 {
16  public:
21  WvX509Mgr();
22 
40  WvX509Mgr(WvStringParm _dname, WvRSAKey *_rsa, bool ca = false);
41 
49  WvX509Mgr(WvStringParm _dname, int bits, bool ca=false);
50 
54  WvX509Mgr(const WvX509Mgr &mgr);
55 
56  protected:
65  void create_selfissued(WvStringParm dname, bool is_ca = false);
66 
67 public:
69  virtual ~WvX509Mgr();
70 
75  virtual bool isok() const;
76 
80  virtual WvString errstr() const;
81 
85  bool operator! () const;
86 
90  WvRSAKey *get_rsa() { return rsa; }
91  void set_rsa(WvRSAKey *_rsa) { WVDELETE(rsa); rsa = new WvRSAKey(*_rsa); }
92 
98  bool bind_ssl(SSL_CTX *ctx);
99 
105  WvString signreq(WvStringParm pkcs10req) const;
106 
110  bool signcert(WvX509 &unsignedcert) const;
111 
117  bool signcrl(WvCRL &unsignedcrl) const;
118 
124  bool test() const;
125 
130  WvString sign(WvBuf &data) const;
131  WvString sign(WvStringParm data) const;
132 
136  virtual WvString encode(const WvX509::DumpMode mode) const;
137  virtual WvString encode(const WvRSAKey::DumpMode mode) const;
138  virtual void encode(const WvX509::DumpMode mode, WvBuf &buf) const;
139  virtual void encode(const WvRSAKey::DumpMode mode, WvBuf &buf) const;
140 
147  virtual void decode(const WvX509::DumpMode mode, WvStringParm encoded);
148  virtual void decode(const WvRSAKey::DumpMode mode, WvStringParm encoded);
149  virtual void decode(const WvX509::DumpMode mode, WvBuf &encoded);
150  virtual void decode(const WvRSAKey::DumpMode mode, WvBuf &encoded);
151 
157  bool write_p12(WvStringParm _fname, WvStringParm _pkcs12pass) const;
158 
164  void read_p12(WvStringParm _fname, WvStringParm _pkcs12pass);
165 
166  private:
172  mutable WvRSAKey *rsa;
173 
174  mutable WvLog debug;
175 };
176 #endif