00001 00010 #ifndef __VALPOLREQUEST_H__ 00011 #define __VALPOLREQUEST_H__ 00012 00013 00014 #include "PKIFSCVPDLL.h" 00015 #include "PKIFdll.h" 00016 00017 00018 // forward declarations 00019 struct CPKIFValPolRequestImpl; 00020 00021 FD_MC_PTR(); 00022 FD_SMART_PTR(CPKIFOID); 00023 FD_SMART_PTR(CPKIFBuffer); 00024 00030 class PKIFSCVP_API CPKIFValPolRequest 00031 { 00032 public: 00033 CPKIFValPolRequest(); 00034 CPKIFValPolRequest(const CPKIFBufferPtr&); 00035 virtual ~CPKIFValPolRequest(void); 00036 00037 //Default version is 1 00038 int GetVersion() const; 00039 void SetVersion(int v); 00040 00041 //required field 00042 void SetNonce(CPKIFBufferPtr& nonce); 00043 const CPKIFBufferPtr GetNonce() const; 00044 00045 //CPKIFValPolRequest supports automatic nonce generation. The mediator parameter allows caller 00046 //to control what random number generator will be used. If m is NULL (or does not contain 00047 //the IPKIFCryptoMisc interface) then a temporary instance of CPKIFCAPIRaw or CPKIFNSSRaw will 00048 //be used to produce the nonce. 00049 void SetGenerateNonce(bool generateNonce); 00050 void SetGenerateNonce(bool generateNonce, IPKIFMediatorPtr& m); 00051 bool GetGenerateNonce() const; 00052 00053 CPKIFBufferPtr Encode() const; 00054 void Decode(CPKIFBufferPtr& msg); 00055 00056 private: 00058 CPKIFValPolRequest(const CPKIFValPolRequest& copy); 00060 CPKIFValPolRequest& operator=(const CPKIFValPolRequest& rhs); 00061 00062 struct CPKIFValPolRequestImpl *m_impl; 00063 }; 00064 DECLARE_SMART_POINTERS(CPKIFValPolRequest); 00065 00066 typedef std::vector<CPKIFValPolRequestPtr, PKIFAlloc<CPKIFValPolRequestPtr> > CPKIFValPolRequestList; 00067 DECLARE_SMART_POINTERS(CPKIFValPolRequestList); 00068 #endif //__VALPOLREQUEST_H__