Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
5.5 KiB

  1. // IISCertObj.h : Declaration of the CIISCertObj
  2. #ifndef __IISCERTOBJ_H_
  3. #define __IISCERTOBJ_H_
  4. #include "resource.h" // main symbols
  5. #define NUMBER_OF_AUTOMATION_INTERFACES 20
  6. /////////////////////////////////////////////////////////////////////////////
  7. // CIISCertObj
  8. class ATL_NO_VTABLE CIISCertObj :
  9. public CComObjectRootEx<CComSingleThreadModel>,
  10. public CComCoClass<CIISCertObj, &CLSID_IISCertObj>,
  11. public IDispatchImpl<IIISCertObj, &IID_IIISCertObj, &LIBID_CERTOBJLib>
  12. {
  13. public:
  14. CIISCertObj()
  15. {
  16. m_lpwszUserPasswordEncrypted = NULL;
  17. m_cbUserPasswordEncrypted = 0;
  18. m_RemoteObjCoCreateCount = 0;
  19. m_ServerName.Empty();
  20. m_UserName.Empty();
  21. m_InstanceName.Empty();
  22. IISDebugOutput(_T("CIISCertObj::CIISCertObj\r\n"));
  23. m_ppRemoteInterfaces = new IIISCertObj * [NUMBER_OF_AUTOMATION_INTERFACES];
  24. for (int i = 0; i < NUMBER_OF_AUTOMATION_INTERFACES; i++)
  25. {
  26. m_ppRemoteInterfaces[i] = NULL;
  27. }
  28. }
  29. ~CIISCertObj()
  30. {
  31. if (m_lpwszUserPasswordEncrypted)
  32. {
  33. if (m_cbUserPasswordEncrypted > 0)
  34. {
  35. SecureZeroMemory(m_lpwszUserPasswordEncrypted,m_cbUserPasswordEncrypted);
  36. }
  37. LocalFree(m_lpwszUserPasswordEncrypted);
  38. m_lpwszUserPasswordEncrypted = NULL;
  39. m_cbUserPasswordEncrypted = 0;
  40. }
  41. // Release any opened remotes we might have.
  42. FreeRemoteInterfaces();
  43. }
  44. DECLARE_REGISTRY_RESOURCEID(IDR_IISCERTOBJ)
  45. DECLARE_NOT_AGGREGATABLE(CIISCertObj)
  46. DECLARE_PROTECT_FINAL_CONSTRUCT()
  47. BEGIN_COM_MAP(CIISCertObj)
  48. COM_INTERFACE_ENTRY(IIISCertObj)
  49. COM_INTERFACE_ENTRY(IDispatch)
  50. END_COM_MAP()
  51. // IIISCertObj
  52. public:
  53. STDMETHOD(put_InstanceName)(BSTR newVal);
  54. STDMETHOD(put_UserName)(BSTR newVal);
  55. STDMETHOD(put_UserPassword)(BSTR newVal);
  56. STDMETHOD(put_ServerName)(BSTR newVal);
  57. STDMETHOD(IsInstalled)(VARIANT_BOOL * retval);
  58. STDMETHOD(IsInstalledRemote)(VARIANT_BOOL * retval);
  59. STDMETHOD(IsExportable)(VARIANT_BOOL * retval);
  60. STDMETHOD(IsExportableRemote)(VARIANT_BOOL * retval);
  61. STDMETHOD(GetCertInfo)(VARIANT * pVtArray);
  62. STDMETHOD(GetCertInfoRemote)(VARIANT * pVtArray);
  63. STDMETHOD(Copy)(
  64. VARIANT_BOOL bAllowExport,
  65. VARIANT_BOOL bOverWriteExisting,
  66. BSTR DestinationServerName,
  67. BSTR DestinationServerInstance,
  68. VARIANT DestinationServerUserName OPTIONAL,
  69. VARIANT DestinationServerPassword OPTIONAL);
  70. STDMETHOD(Move)(
  71. VARIANT_BOOL bAllowExport,
  72. VARIANT_BOOL bOverWriteExisting,
  73. BSTR DestinationServerName,
  74. BSTR DestinationServerInstance,
  75. VARIANT DestinationServerUserName OPTIONAL,
  76. VARIANT DestinationServerPassword OPTIONAL);
  77. STDMETHOD(RemoveCert)(
  78. VARIANT_BOOL bRemoveFromCertStore,
  79. VARIANT_BOOL bPrivateKey);
  80. STDMETHOD(Import)(
  81. BSTR FileName,
  82. BSTR Password,
  83. VARIANT_BOOL bAllowExport,
  84. VARIANT_BOOL bOverWriteExisting);
  85. STDMETHOD(ImportToCertStore)(
  86. BSTR FileName,
  87. BSTR Password,
  88. VARIANT_BOOL bAllowExport,
  89. VARIANT_BOOL bOverWriteExisting,
  90. VARIANT* BinaryVariant);
  91. STDMETHOD(ImportFromBlob)(
  92. BSTR InstanceName,
  93. BSTR Password,
  94. VARIANT_BOOL bInstallToMetabase,
  95. VARIANT_BOOL bAllowExport,
  96. VARIANT_BOOL bOverWriteExisting,
  97. DWORD pcbSize,
  98. char * pBlobBinary);
  99. STDMETHOD(ImportFromBlobGetHash)(
  100. BSTR InstanceName,
  101. BSTR Password,
  102. VARIANT_BOOL bInstallToMetabase,
  103. VARIANT_BOOL bAllowExport,
  104. VARIANT_BOOL bOverWriteExisting,
  105. DWORD pcbSize,
  106. char * pBlobBinary,
  107. DWORD * pcbCertHashSize,
  108. char ** bCertHash);
  109. STDMETHOD(Export)(
  110. BSTR FileName,
  111. BSTR Password,
  112. VARIANT_BOOL bPrivateKey,
  113. VARIANT_BOOL bCertChain,
  114. VARIANT_BOOL bRemoveCert);
  115. STDMETHOD(ExportToBlob)(
  116. BSTR InstanceName,
  117. BSTR Password,
  118. VARIANT_BOOL bPrivateKey,
  119. VARIANT_BOOL bCertChain,
  120. DWORD * pcbSize,
  121. char ** pBlobBinary);
  122. private:
  123. CComBSTR m_ServerName;
  124. CComBSTR m_UserName;
  125. LPWSTR m_lpwszUserPasswordEncrypted;
  126. DWORD m_cbUserPasswordEncrypted;
  127. CComBSTR m_InstanceName;
  128. int m_RemoteObjCoCreateCount;
  129. IIISCertObj ** m_ppRemoteInterfaces;
  130. IIISCertObj * GetObject(HRESULT * phr);
  131. IIISCertObj * GetObject(HRESULT * phr, CComBSTR csServerName,CComBSTR csUserName OPTIONAL,CComBSTR csUserPassword OPTIONAL);
  132. HRESULT CopyOrMove(VARIANT_BOOL bRemoveFromCertAfterCopy,VARIANT_BOOL bCopyCertDontInstallRetHash,VARIANT_BOOL bAllowExport,VARIANT_BOOL bOverWriteExisting,VARIANT * pVtArray,BSTR bstrDestinationServerName,BSTR bstrDestinationServerInstance,VARIANT varDestinationServerUserName, VARIANT varDestinationServerPassword);
  133. void AddRemoteInterface(IIISCertObj * pAddMe);
  134. void DelRemoteInterface(IIISCertObj * pRemoveMe);
  135. void FreeRemoteInterfaces(void);
  136. };
  137. HRESULT RemoveCertProxy(IIISCertObj * pObj,BSTR InstanceName, VARIANT_BOOL bPrivateKey);
  138. 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);
  139. HRESULT ExportToBlobProxy(IIISCertObj * pObj,BSTR InstanceName,BSTR Password,VARIANT_BOOL bPrivateKey,VARIANT_BOOL bCertChain,DWORD * pcbSize,char ** pBlobBinary);
  140. #endif //__IISCERTOBJ_H_