// CertObj.idl : IDL source for CertObj.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (CertObj.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";

	[
		object,
		uuid(BD0C73BC-805B-4043-9C30-9A28D64DD7D2),
		dual,
		helpstring("IIISCertObj Interface"),
		pointer_default(unique)
	]
	interface IIISCertObj : IDispatch
	{
		[propput, id(1), helpstring("property ServerName")] 
		HRESULT ServerName([in] BSTR newVal);
		[propput, id(2), helpstring("property UserName")] 
		HRESULT UserName([in] BSTR newVal);
		[propput, id(3), helpstring("property UserPassword")] 
		HRESULT UserPassword([in] BSTR newVal);
		[propput, id(4), helpstring("property InstanceName")] 
		HRESULT InstanceName([in] BSTR newVal);

		[id(5), local, helpstring("method IsInstalled")] 
		HRESULT IsInstalled([out, retval] VARIANT_BOOL * retval);

		[id(6), hidden, helpstring("method IsInstalledRemote")] 
		HRESULT IsInstalledRemote([out, retval] VARIANT_BOOL * retval);

		[id(7), local, helpstring("method IsExportable")] 
		HRESULT IsExportable([out, retval] VARIANT_BOOL * retval);

		[id(8), hidden, helpstring("method IsExportableRemote")] 
		HRESULT IsExportableRemote([out, retval] VARIANT_BOOL * retval);

		[id(9), local, helpstring("method GetCertInfo")] 
		HRESULT GetCertInfo([out,retval] VARIANT * BinaryVariant);

		[id(10), hidden, helpstring("method GetCertInfoRemote")] 
		HRESULT GetCertInfoRemote([out,retval] VARIANT * BinaryVariant);

		[id(11), local, helpstring("method Copy")] 
		HRESULT Copy(
		    [in] BOOL bAllowExport,
			[in] BSTR bstrDestinationServerName, 
			[in] BSTR bstrDestinationServerInstance, 
			[in,optional] VARIANT bstrDestinationServerUserName,
			[in,optional] VARIANT bstrDestinationServerPassword);

		[id(12), local, helpstring("method CopyToCertStore")] 
		HRESULT CopyToCertStore(
		    [in] BOOL bAllowExport,
			[in] BSTR bstrDestinationServerName, 
			[in] VARIANT bstrDestinationServerUserName,
			[in] VARIANT bstrDestinationServerPassword,
			[out] VARIANT * BinaryVariant);

		[id(13), local, helpstring("method Move")] 
		HRESULT Move(
		    [in] BOOL bAllowExport,
			[in] BSTR bstrDestinationServerName, 
			[in] BSTR bstrDestinationServerInstance, 
			[in,optional] VARIANT bstrDestinationServerUserName,
			[in,optional] VARIANT bstrDestinationServerPassword);

		[id(14), local, helpstring("method RemoveCert")] 
		HRESULT RemoveCert([in] BOOL bPrivateKey);

		[id(15), local, helpstring("method Import")] 
		HRESULT Import(
			[in] BSTR FileName, 
			[in] BSTR Password,
			[in] BOOL bAllowExport);

		[id(16), local, helpstring("method ImportToCertStore")] 
		HRESULT ImportToCertStore(
			[in] BSTR FileName, 
			[in] BSTR Password,
			[in] BOOL bAllowExport,
			[out,retval] VARIANT * BinaryVariant
			);

		[id(17), hidden, helpstring("method ImportFromBlob")] 
		HRESULT ImportFromBlob(
			[in] BSTR InstanceName, [in] BSTR Password,
			[in] BOOL bInstallToMetabase,
			[in] BOOL bAllowExport,
			[in] DWORD pcbSize,
			[in,string,size_is(pcbSize)] char * pBlobBinary
			);

		[id(18), hidden, helpstring("method ImportFromBlob")] 
		HRESULT ImportFromBlobGetHash(
			[in] BSTR InstanceName, [in] BSTR Password,
			[in] BOOL bInstallToMetabase,
			[in] BOOL bAllowExport,
			[in] DWORD pcbSize,
			[in,string,size_is(pcbSize)] char * pBlobBinary,
			[out] DWORD *pcbCertHashSize,
			[out] char ** pCertHash
			);

		[id(19), local, helpstring("method Export")] 
		HRESULT Export(
			[in] BSTR FileName, 
			[in] BSTR Password, 
			[in] BOOL bPrivateKey, 
			[in] BOOL bCertChain, 
			[in] BOOL bRemoveCert);

		[id(20), hidden, helpstring("method ExportToBlob")] 
		HRESULT ExportToBlob(
			[in] BSTR InstanceName,
			[in] BSTR Password, 
			[in] BOOL bPrivateKey,
			[in] BOOL bCertChain,
			[in,out] DWORD *pcbSize,
			[in,out,string] char ** pBlobBinary);
	};
[
	uuid(939CE595-0BB3-4F3F-A504-8CE81BDF4943),
	version(1.0),
	helpstring("IIS CertObj 1.0 Type Library")
]
library CERTOBJLib
{
	importlib("stdole2.tlb");

	[
		uuid(62B8CCBE-5A45-4372-8C4A-6A87DD3EDD60),
		helpstring("IIS CertObj")
	]
	coclass IISCertObj
	{
		[default] interface IIISCertObj;
	};
};