// IISCertObj.h : Declaration of the CIISCertObj #ifndef __IISCERTOBJ_H_ #define __IISCERTOBJ_H_ #include "resource.h" // main symbols #define NUMBER_OF_AUTOMATION_INTERFACES 20 ///////////////////////////////////////////////////////////////////////////// // CIISCertObj class ATL_NO_VTABLE CIISCertObj : public CComObjectRootEx, public CComCoClass, public IDispatchImpl { public: CIISCertObj() { m_lpwszUserPasswordEncrypted = NULL; m_cbUserPasswordEncrypted = 0; m_RemoteObjCoCreateCount = 0; m_ServerName.Empty(); m_UserName.Empty(); m_InstanceName.Empty(); IISDebugOutput(_T("CIISCertObj::CIISCertObj\r\n")); m_ppRemoteInterfaces = new IIISCertObj * [NUMBER_OF_AUTOMATION_INTERFACES]; for (int i = 0; i < NUMBER_OF_AUTOMATION_INTERFACES; i++) { m_ppRemoteInterfaces[i] = NULL; } } ~CIISCertObj() { if (m_lpwszUserPasswordEncrypted) { if (m_cbUserPasswordEncrypted > 0) { SecureZeroMemory(m_lpwszUserPasswordEncrypted,m_cbUserPasswordEncrypted); } LocalFree(m_lpwszUserPasswordEncrypted); m_lpwszUserPasswordEncrypted = NULL; m_cbUserPasswordEncrypted = 0; } // Release any opened remotes we might have. FreeRemoteInterfaces(); } DECLARE_REGISTRY_RESOURCEID(IDR_IISCERTOBJ) DECLARE_NOT_AGGREGATABLE(CIISCertObj) DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CIISCertObj) COM_INTERFACE_ENTRY(IIISCertObj) COM_INTERFACE_ENTRY(IDispatch) END_COM_MAP() // IIISCertObj public: STDMETHOD(put_InstanceName)(BSTR newVal); STDMETHOD(put_UserName)(BSTR newVal); STDMETHOD(put_UserPassword)(BSTR newVal); STDMETHOD(put_ServerName)(BSTR newVal); STDMETHOD(IsInstalled)(VARIANT_BOOL * retval); STDMETHOD(IsInstalledRemote)(VARIANT_BOOL * retval); STDMETHOD(IsExportable)(VARIANT_BOOL * retval); STDMETHOD(IsExportableRemote)(VARIANT_BOOL * retval); STDMETHOD(GetCertInfo)(VARIANT * pVtArray); STDMETHOD(GetCertInfoRemote)(VARIANT * pVtArray); STDMETHOD(Copy)( VARIANT_BOOL bAllowExport, VARIANT_BOOL bOverWriteExisting, BSTR DestinationServerName, BSTR DestinationServerInstance, VARIANT DestinationServerUserName OPTIONAL, VARIANT DestinationServerPassword OPTIONAL); STDMETHOD(Move)( VARIANT_BOOL bAllowExport, VARIANT_BOOL bOverWriteExisting, BSTR DestinationServerName, BSTR DestinationServerInstance, VARIANT DestinationServerUserName OPTIONAL, VARIANT DestinationServerPassword OPTIONAL); STDMETHOD(RemoveCert)( VARIANT_BOOL bRemoveFromCertStore, VARIANT_BOOL bPrivateKey); STDMETHOD(Import)( BSTR FileName, BSTR Password, VARIANT_BOOL bAllowExport, VARIANT_BOOL bOverWriteExisting); STDMETHOD(ImportToCertStore)( BSTR FileName, BSTR Password, VARIANT_BOOL bAllowExport, VARIANT_BOOL bOverWriteExisting, VARIANT* BinaryVariant); STDMETHOD(ImportFromBlob)( BSTR InstanceName, BSTR Password, VARIANT_BOOL bInstallToMetabase, VARIANT_BOOL bAllowExport, VARIANT_BOOL bOverWriteExisting, DWORD pcbSize, char * pBlobBinary); STDMETHOD(ImportFromBlobGetHash)( BSTR InstanceName, BSTR Password, VARIANT_BOOL bInstallToMetabase, VARIANT_BOOL bAllowExport, VARIANT_BOOL bOverWriteExisting, DWORD pcbSize, char * pBlobBinary, DWORD * pcbCertHashSize, char ** bCertHash); STDMETHOD(Export)( BSTR FileName, BSTR Password, VARIANT_BOOL bPrivateKey, VARIANT_BOOL bCertChain, VARIANT_BOOL bRemoveCert); STDMETHOD(ExportToBlob)( BSTR InstanceName, BSTR Password, VARIANT_BOOL bPrivateKey, VARIANT_BOOL bCertChain, DWORD * pcbSize, char ** pBlobBinary); private: CComBSTR m_ServerName; CComBSTR m_UserName; LPWSTR m_lpwszUserPasswordEncrypted; DWORD m_cbUserPasswordEncrypted; CComBSTR m_InstanceName; int m_RemoteObjCoCreateCount; IIISCertObj ** m_ppRemoteInterfaces; IIISCertObj * GetObject(HRESULT * phr); IIISCertObj * GetObject(HRESULT * phr, CComBSTR csServerName,CComBSTR csUserName OPTIONAL,CComBSTR csUserPassword OPTIONAL); HRESULT CopyOrMove(VARIANT_BOOL bRemoveFromCertAfterCopy,VARIANT_BOOL bCopyCertDontInstallRetHash,VARIANT_BOOL bAllowExport,VARIANT_BOOL bOverWriteExisting,VARIANT * pVtArray,BSTR bstrDestinationServerName,BSTR bstrDestinationServerInstance,VARIANT varDestinationServerUserName, VARIANT varDestinationServerPassword); void AddRemoteInterface(IIISCertObj * pAddMe); void DelRemoteInterface(IIISCertObj * pRemoveMe); void FreeRemoteInterfaces(void); }; HRESULT RemoveCertProxy(IIISCertObj * pObj,BSTR InstanceName, VARIANT_BOOL bPrivateKey); HRESULT ImportFromBlobProxy(IIISCertObj * pObj,BSTR InstanceName,BSTR Password,VARIANT_BOOL bInstallToMetabase,VARIANT_BOOL bAllowExport,VARIANT_BOOL bOverWriteExisting,DWORD actual,BYTE *pData,DWORD *cbHashBufferSize,char **pbHashBuffer); HRESULT ExportToBlobProxy(IIISCertObj * pObj,BSTR InstanceName,BSTR Password,VARIANT_BOOL bPrivateKey,VARIANT_BOOL bCertChain,DWORD * pcbSize,char ** pBlobBinary); #endif //__IISCERTOBJ_H_