00001 00009 #ifndef __CRL_H__ 00010 #define __CRL_H__ 00011 00012 #include "PKIFdll.h" 00013 #define CAC_API_FACTORY 00014 00015 #include <vector> 00016 #include <map> 00017 #include "IPKIFHasExtensions.h" 00018 00019 // forward declaration 00020 struct CPKIFCRLImpl; 00021 FD_SMART_PTR(CPKIFName); 00022 FD_SMART_PTR(CPKIFTime); 00023 FD_SMART_PTR(CPKIFAlgorithmIdentifier); 00024 FD_SMART_PTR(CPKIFCertificate); 00025 FD_SMART_PTR(CPKIFCRLEntry); 00026 00027 00028 00055 class CAC_API CPKIFCRL : public IPKIFHasExtensions 00056 { 00057 public: 00058 CPKIFCRL(void); 00059 virtual ~CPKIFCRL(void); 00060 00061 virtual void Decode(const unsigned char* cert, int certLen); 00062 virtual CPKIFBufferPtr Encoded() const; 00063 00064 virtual int Version() const; 00065 virtual CPKIFNamePtr Issuer( ) const; 00066 virtual CPKIFBufferPtr Signature() const; 00067 virtual CPKIFTimePtr NextUpdate() const; 00068 virtual CPKIFTimePtr ThisUpdate() const; 00069 virtual CPKIFAlgorithmIdentifierPtr SignatureAlgorithm() const; 00070 00071 virtual bool operator==(const CPKIFCRL& rhs) const; 00072 00073 virtual void PopulateEntryMap(); 00074 virtual std::vector<std::pair<CPKIFNamePtr, std::map<std::string, CPKIFCRLEntryPtr> > > GetCRLEntryMap(); 00075 virtual bool CertOnThisCRL(const CPKIFCertificatePtr& cert, CPKIFCRLEntryPtr& crlEntry); 00076 virtual bool AreThereAnyUnprocessedCriticalExtensions(std::vector<CPKIFX509ExtensionPtr>& processedExts); 00077 00078 virtual void GetEncodedExtensions (CPKIFBufferPtr& buf); 00079 virtual void GetExtensionByOID(const CPKIFOID& oid, CPKIFX509ExtensionPtr& ref); 00080 00081 00082 private: 00083 CPKIFCRL(const CPKIFCRL& ext); 00084 CPKIFCRL& operator=(const CPKIFCRL& rhs); //added 4/6/2004 00085 00086 struct CPKIFCRLImpl *m_impl; 00087 }; 00088 DECLARE_SMART_POINTERS(CPKIFCRL) 00089 typedef std::vector<CPKIFCRLPtr, PKIFAlloc<CPKIFCRLPtr> > CPKIFCRLList; 00090 DECLARE_SMART_POINTERS(CPKIFCRLList) 00091 00092 #endif