//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File:        certif.idl
//
// Contents:    IDL source for certif.dll
//
//---------------------------------------------------------------------------

import "wtypes.idl";

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

// ICertServerPolicy::EnumerateExtensionsSetup and
// ICertServerExit::EnumerateExtensionsSetup Flags:

const LONG ENUMEXT_OBJECTID = 0x00000001; // return objectid; else "friendly" name

//+--------------------------------------------------------------------------
// ICertServerPolicy class -- local COM interface
//+--------------------------------------------------------------------------

[
    object,
    uuid(aa000922-ffbe-11cf-8800-00a0c903b83c),
    dual,
    helpstring("ICertServerPolicy Interface"),
    pointer_default(unique)
]

interface ICertServerPolicy : IDispatch
{
    import "oaidl.idl";

    HRESULT SetContext(
			[in] LONG Context);

    HRESULT GetRequestProperty(
			[in] BSTR const strPropertyName,
			[in] LONG PropertyType,
			[out, retval] VARIANT *pvarPropertyValue);

    HRESULT GetRequestAttribute(
			[in] BSTR const strAttributeName,
			[out, retval] BSTR *pstrAttributeValue);

    HRESULT GetCertificateProperty(
			[in] BSTR const strPropertyName,
			[in] LONG PropertyType,
			[out, retval] VARIANT *pvarPropertyValue);

    HRESULT SetCertificateProperty(
			[in] BSTR const strPropertyName,
			[in] LONG PropertyType,
			[in] VARIANT const *pvarPropertyValue);

    HRESULT GetCertificateExtension(
			[in] BSTR const strExtensionName,
			[in] LONG Type,
			[out, retval] VARIANT *pvarValue);

    HRESULT GetCertificateExtensionFlags(
			[out, retval] LONG *pExtFlags);

    HRESULT SetCertificateExtension(
			[in] BSTR const strExtensionName,
			[in] LONG Type,
			[in] LONG ExtFlags,
			[in] VARIANT const *pvarValue);

    HRESULT EnumerateExtensionsSetup(
			[in] LONG Flags);

    HRESULT EnumerateExtensions(
			[out, retval] BSTR *pstrExtensionName);

    HRESULT EnumerateExtensionsClose();

    HRESULT EnumerateAttributesSetup(
			[in] LONG Flags);

    HRESULT EnumerateAttributes(
			[out, retval] BSTR *pstrAttributeName);

    HRESULT EnumerateAttributesClose();
};

//+--------------------------------------------------------------------------
// ICertServerExit class -- local COM interface
//+--------------------------------------------------------------------------

[
    object,
    uuid(4ba9eb90-732c-11d0-8816-00a0c903b83c),
    dual,
    helpstring("ICertServerExit Interface"),
    pointer_default(unique)
]

interface ICertServerExit: IDispatch
{
    import "oaidl.idl";

    HRESULT SetContext(
			[in] LONG Context);

    HRESULT GetRequestProperty(
			[in] BSTR const strPropertyName,
			[in] LONG PropertyType,
			[out, retval] VARIANT *pvarPropertyValue);

    HRESULT GetRequestAttribute(
			[in] BSTR const strAttributeName,
			[out, retval] BSTR *pstrAttributeValue);

    HRESULT GetCertificateProperty(
			[in] BSTR const strPropertyName,
			[in] LONG PropertyType,
			[out, retval] VARIANT *pvarPropertyValue);

    HRESULT GetCertificateExtension(
			[in] BSTR const strExtensionName,
			[in] LONG Type,
			[out, retval] VARIANT *pvarValue);

    HRESULT GetCertificateExtensionFlags(
			[out, retval] LONG *pExtFlags);

    HRESULT EnumerateExtensionsSetup(
			[in] LONG Flags);

    HRESULT EnumerateExtensions(
			[out, retval] BSTR *pstrExtensionName);

    HRESULT EnumerateExtensionsClose();

    HRESULT EnumerateAttributesSetup(
			[in] LONG Flags);

    HRESULT EnumerateAttributes(
			[out, retval] BSTR *pstrAttributeName);

    HRESULT EnumerateAttributesClose();
};
