// 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);

//		[propput, id(4), helpstring("property InstanceName")] HRESULT InstanceName([in] BSTR newVal);
//		[propput, id(5), helpstring("property Password")] HRESULT Password([in] BSTR newVal);
//		[propput, id(6), helpstring("property CommonName")] HRESULT CommonName([in] BSTR newVal);
//		[propput, id(7), helpstring("property FriendlyName")] HRESULT FriendlyName([in] BSTR newVal);
//		[propput, id(8), helpstring("property Organization")] HRESULT Organization([in] BSTR newVal);
//		[propput, id(9), helpstring("property OrganizationUnit")] HRESULT OrganizationUnit([in] BSTR newVal);
//		[propput, id(10), helpstring("property Locality")] HRESULT Locality([in] BSTR newVal);
//		[propput, id(11), helpstring("property State")] HRESULT State([in] BSTR newVal);
//		[propput, id(12), helpstring("property Country")] HRESULT Country([in] BSTR newVal);
//		[propput, id(13), helpstring("property CertAuthority")] HRESULT CertAuthority([in] BSTR newVal);
//		[propput, id(14), helpstring("property CertTemplate")] HRESULT CertTemplate([in] BSTR newVal);
//		[propput, id(15), helpstring("property KeySize")] HRESULT KeySize([in] int newVal);
//		[propput, id(16), helpstring("property SGC_Cert")] HRESULT SGC_Cert([in] BOOL newVal);
//		[id(17), helpstring("method CreateRequest")] HRESULT CreateRequest(BSTR FileName);
//		[id(18), helpstring("method ProcessResponse")] HRESULT ProcessResponse(BSTR FileName);
//		[id(19), helpstring("method RequestCert")] HRESULT RequestCert(BSTR CertAuthority);

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

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

		[id(19), local, helpstring("method RemoveCert")] 
		HRESULT RemoveCert(BSTR InstanceName, BOOL bPrivateKey);

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

		[id(21), hidden, helpstring("method ExportToBlob")] 
		HRESULT ExportToBlob(
			BSTR InstanceName, BSTR Password, 
			BOOL bPrivateKey, BOOL bCertChain,
			BOOL bBase64Encoded,
			[in,out] DWORD *pcbSize,
			[in,out,string,size_is(*pcbSize)] char * pBlobBinary);

		[id(22), local, helpstring("method Import")] 
		HRESULT Import(
			BSTR FileName, BSTR InstanceName, BSTR Password);

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

		[id(24), local, helpstring("method IsInstalled")] 
		HRESULT IsInstalled(
			[in] BSTR InstanceName, [out, retval] VARIANT_BOOL * retval);

		[id(25), hidden, helpstring("method IsInstalledRemote")] 
		HRESULT IsInstalledRemote(
			[in] BSTR InstanceName, [out, retval] VARIANT_BOOL * retval);

//		[id(26), helpstring("method LoadSettings")] HRESULT LoadSettings(BSTR ApplicationKey, BSTR SettingsKey);
//		[id(27), helpstring("method SaveSettings")] HRESULT SaveSettings(BSTR ApplicationKey, BSTR SettingsKey);
	};

[
	uuid(939CE595-0BB3-4F3F-A504-8CE81BDF4943),
	version(1.0),
	helpstring("CertObj 1.0 Type Library")
]
library CERTOBJLib
{
	importlib("stdole2.tlb");

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