00001 // This class was intentionally not "pimpl"ed because the documentation 00002 // states that it is only internally used. Should it be declared "CAC_API" ? 00003 // -MH 12/28/05 00004 00005 00006 00015 #ifndef __PKIFBASICPATHSTATE2_H__ 00016 #define __PKIFBASICPATHSTATE2_H__ 00017 00018 #include "PKIFdll.h" 00019 #include "PKIFEnums.h" 00020 #include "CertificatePathState.h" 00021 #include "IPKIFTrustAnchor.h" 00022 #include <vector> 00023 00024 FD_LIST_PTR(CPKIFTrustRoot); 00025 FD_LIST_PTR(IPKIFTrustAnchor); 00026 FD_SMART_PTR(CPKIFCertificateNodeListWithSourceInfo); 00027 class CPKIFPathBuilder2; 00028 struct CPKIFPathBuilder2Impl; 00029 00030 //This class is a template class simply to permit the builder to have direct access to 00031 //its contents. It should probably be re-written without a friend declaration and with 00032 //accessor methods. 00033 00042 class CAC_API CPKIFBasicPathState2 : public CPKIFCertificatePathState 00043 { 00044 friend class CPKIFPathBuilder2; 00045 friend struct CPKIFPathBuilder2Impl; 00046 public: 00047 virtual ~CPKIFBasicPathState2(void); 00048 00049 void SetTrustRoot(const IPKIFTrustAnchorList& rootList);// {m_rootList.clear(); copy(rootList.begin(), rootList.end(), back_inserter(m_rootList));} 00050 void ClearState(); 00051 00052 private: 00054 CPKIFBasicPathState2(const CPKIFBasicPathState2& copy); 00056 CPKIFBasicPathState2& operator=(const CPKIFBasicPathState2& rhs); //added 4/6/2004 00057 00058 CPKIFBasicPathState2(void); 00059 00060 IPKIFTrustAnchorList m_rootList; //"top" of the table of cert nodes 00061 std::vector<CPKIFCertificateNodeListWithSourceInfoPtr> m_table; //table of cert nodes 00062 PKIInfoSource m_maxSource; 00063 bool m_bInitCompleteLocal; 00064 int m_nGrowCount; 00065 00066 void* m_reserved; 00067 IPKIFTrustAnchorPtr* m_curRoot; 00068 }; 00069 00070 00071 00072 00073 00074 #endif