00001 00010 #ifndef __QUERY_H__ 00011 #define __QUERY_H__ 00012 00013 #include "PKIFSCVPDLL.h" 00014 #include "IPKIFHasExtensions.h" 00015 00016 // forward declarations 00017 struct CPKIFQueryImpl; 00018 00019 00020 00021 FD_MC_PTR(); 00022 FD_SMART_PTR(CPKIFResponseFlags); 00023 FD_SMART_PTR(CPKIFPKCReference); 00024 FD_SMART_PTR(CPKIFRevocationInfo); 00025 FD_SMART_PTR(CPKIFRevocationInfo); 00026 FD_LIST_PTR(CPKIFCertificate); 00027 FD_LIST_PTR(CPKIFValidationPolicy); 00028 FD_LIST_PTR(CPKIFTime); 00029 FD_LIST_PTR(CPKIFRevocationInfo); 00030 FD_LIST_PTR(CPKIFCertReferences); 00031 00032 //typedef std::vector<CPKIFRevocationInfoPtr> CPKIFRevocationInfoList; 00033 //DECLARE_SMART_POINTERS(CPKIFRevocationInfoList); 00034 // 00035 //typedef std::vector<CPKIFPKCReferencePtr> CPKIFPKCReferenceList; 00036 //DECLARE_SMART_POINTERS(CPKIFPKCReferenceList); 00059 class PKIFSCVP_API CPKIFQuery: public IPKIFHasExtensions 00060 { 00061 public: 00062 CPKIFQuery(); 00063 CPKIFQuery(const CPKIFBufferPtr& query); 00064 virtual ~CPKIFQuery(void); 00065 00066 //req field 00067 void SetValidationPolicy(CPKIFValidationPolicyPtr& validationPolicy); 00068 const CPKIFValidationPolicyPtr GetValidationPolicy() const; 00069 00070 //req field 00071 void SetChecks(CPKIFOIDListPtr& checks); 00072 void GetChecks(CPKIFOIDListPtr& checks) const; 00073 00074 //req field 00075 void SetCertRef(CPKIFCertReferencesPtr& certRefs); 00076 void GetCertRef(CPKIFCertReferencesPtr& certRefs) const; 00077 00078 //optional field 00079 void SetWantBack(CPKIFOIDListPtr& wantBack); 00080 void GetWantBack(CPKIFOIDListPtr& wantBack) const; 00081 00082 //optional field 00083 void SetValidationTime(CPKIFTimePtr& validationTime); 00084 const CPKIFTimePtr GetValidationTime() const; 00085 00086 //optional field 00087 void SetProducedAt(CPKIFTimePtr& producedAt); 00088 const CPKIFTimePtr GetProducedAt() const; 00089 00090 //optional field 00091 void SetRevInfos(CPKIFRevocationInfoListPtr& revInfos); 00092 void GetRevInfos(CPKIFRevocationInfoListPtr& revInfos) const; 00093 00094 //optional field 00095 void SetResponseFlags(CPKIFResponseFlagsPtr& responseFlags); 00096 const CPKIFResponseFlagsPtr GetResponseFlags() const; 00097 00098 //optional field 00099 void SetServerContextInfo(CPKIFBufferPtr& serverContextInfo); 00100 const CPKIFBufferPtr GetServerContextInfo() const; 00101 00102 //optional field 00103 void SetCertBundle(CPKIFCertificateListPtr& bundle); 00104 void GetCertBundle(CPKIFCertificateListPtr& bundle) const; 00105 void AddToCertBundle(CPKIFCertificatePtr& cert); 00106 00107 00108 bool ExtensionsPresent() const; 00109 00110 00111 template <class T> boost::shared_ptr<T> GetExtension(); 00112 00113 void GetExtensionByOID(const CPKIFOID& oid, CPKIFX509ExtensionPtr& ref); 00114 void GetEncodedExtensions (CPKIFBufferPtr& buf); 00115 bool AreThereAnyUnprocessedCriticalExtensions(); 00116 private: 00118 CPKIFQuery(const CPKIFQuery& copy); 00120 CPKIFQuery& operator=(const CPKIFQuery& rhs); 00121 00122 struct CPKIFQueryImpl *m_impl; 00123 }; 00124 DECLARE_SMART_POINTERS(CPKIFQuery); 00125 00128 typedef CPKIFAlgorithmIdentifier CPKIFValidationPolRef; 00131 typedef CPKIFAlgorithmIdentifier CPKIFValidationAlg; 00132 00133 DECLARE_SMART_POINTERS(CPKIFValidationPolRef); 00134 DECLARE_SMART_POINTERS(CPKIFValidationAlg); 00135 00136 #endif //__QUERY_H__