00001 00009 #ifndef __SIMPLECRLCACHE_H__ 00010 #define __SIMPLECRLCACHE_H__ 00011 00012 #include "PKIFdll.h" 00013 #include "components.h" 00014 #include <vector> 00015 00016 #include "IPKIFCRLRepository.h" 00017 #include "IPKIFCRLRepositoryUpdate.h" 00018 #include "IPKIFColleague.h" 00019 00020 FD_LIST_PTR(CPKIFCRL); 00021 FD_SMART_PTR(CPKIFCertificate); 00022 FD_SMART_PTR(CPKIFGeneralName); 00023 00024 struct SimpleCRLCacheImpl; 00025 00041 class CAC_API SimpleCRLCache : public IPKIFCRLRepository, public IPKIFCRLRepositoryUpdate, 00042 public IPKIFColleague 00043 { 00044 friend struct SimpleCRLCacheImpl; 00045 public: 00046 SimpleCRLCache(void); 00047 virtual ~SimpleCRLCache(void); 00048 00049 //IPKIFColleague functions 00050 void Initialize(void); 00051 00052 //IPKIFCRLRepository functions 00053 void GetCRLs(const CPKIFCertificatePtr& cert, CPKIFCRLList& crlList, PKIInfoSource source = ALL); 00054 00055 void GetCRLs(std::vector<CPKIFCRLPtr>& v); 00056 00057 void GetCRLs(const CPKIFCertificatePtr& cert, CPKIFCRLList& crlList, PKIInfoSource source, CPKIFPathSettingsPtr& ps); 00058 00059 //IPKIFCRLRepositoryUpdate 00060 void AddCRL(const CPKIFCRLPtr& crl, const CPKIFGeneralNamePtr& dp); 00061 00062 void Clear(); 00063 int size(); 00064 void SetAutoCleanup(bool on, unsigned long interval = 3600000); 00065 void WriteCRLsToDirectory(const char* path); 00066 void ReadCRLsFromDirectory(const char* path); 00067 00068 private: 00070 SimpleCRLCache(const SimpleCRLCache& copy); 00072 SimpleCRLCache& operator=(const SimpleCRLCache& rhs); //added 4/6/2004 00073 00074 enum { thisComponent = TOOLKIT_SR_SIMPLECRLCACHE }; 00075 00076 struct SimpleCRLCacheImpl *m_impl; 00077 00078 }; 00079 DECLARE_SMART_POINTERS(SimpleCRLCache); 00080 00081 00082 CAC_API SimpleCRLCache* MakeSimpleCRLCache(); 00083 CAC_API void FreeSimpleCRLCache(SimpleCRLCache* ldap); 00084 00085 #endif 00086