00001 /* -*- Mode: C++ -*- 00002 * Worldvisions Weaver Software: 00003 * Copyright (C) 1997-2005 Net Integration Technologies, Inc. 00004 * 00005 * X.509v3 CRL management classes. 00006 */ 00007 #ifndef __WVCRL_H 00008 #define __WVCRL_H 00009 00010 #include "wvlog.h" 00011 #include "wverror.h" 00012 00013 // Structures to make the compiler happy so we don't have to include x509v3.h ;) 00014 struct X509_crl_st; 00015 typedef struct X509_crl_st X509_CRL; 00016 struct ssl_ctx_st; 00017 typedef struct ssl_ctx_st SSL_CTX; 00018 struct asn1_string_st; 00019 typedef struct asn1_string_st ASN1_INTEGER; 00020 00021 class WvRSAKey; 00022 class WvX509Mgr; 00023 00028 class WvCRLMgr 00029 { 00030 public: 00034 WvError err; 00035 00042 enum DumpMode { PEM = 0, DER, TEXT }; 00043 00056 enum Valid { CRLERROR = -1, VALID, NOT_THIS_CA, NO_VALID_SIGNATURE, BEFORE_VALID, AFTER_VALID, REVOKED }; 00057 00064 WvCRLMgr(X509_CRL *_crl = NULL); 00065 00066 private: 00071 WvCRLMgr(const WvCRLMgr &mgr); 00072 00073 public: 00075 virtual ~WvCRLMgr(); 00076 00077 00079 X509_CRL *getcrl() 00080 { return crl; } 00081 00082 00088 WvString hexify(); 00089 00098 Valid validate(WvX509Mgr *cert); 00099 00105 bool signedbyCAindir(WvStringParm certdir); 00106 00107 00112 bool signedbyCAinfile(WvStringParm certfile); 00113 00114 00119 bool signedbyCA(WvX509Mgr *cert); 00120 00124 bool isok() 00125 { return err.isok(); } 00126 00127 00131 void setca(WvX509Mgr *cacert); 00132 00133 00137 WvString encode(const DumpMode mode); 00138 00139 00146 void decode(const DumpMode mode, WvStringParm PemEncoded); 00147 00148 00153 WvString get_issuer(); 00154 00155 00159 bool isrevoked(WvX509Mgr *cert); 00160 bool isrevoked(WvStringParm serial_number); 00161 00162 00166 int numcerts(); 00167 00168 00172 void addcert(WvX509Mgr *cert); 00173 00174 00175 private: 00177 WvLog debug; 00178 00179 X509_CRL *crl; 00180 WvX509Mgr *cacert; 00181 int certcount; 00182 WvString issuer; 00183 00184 ASN1_INTEGER *serial_to_int(WvStringParm serial); 00185 void setupcrl(); 00186 00187 }; 00188 00189 #endif // __WVCRL_H