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

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

import "wtypes.idl";

//+--------------------------------------------------------------------------
// ICertEncodeStringArray class -- local COM interface
//+--------------------------------------------------------------------------

[
    object,
    uuid(12a88820-7494-11d0-8816-00a0c903b83c),
    dual,
    helpstring("ICertEncodeStringArray Interface"),
    pointer_default(unique)
]

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

    HRESULT Decode(
		[in] BSTR const strBinary);

    HRESULT GetStringType(
		[out, retval] LONG *pStringType);

    HRESULT GetCount(
		[out, retval] LONG *pCount);

    HRESULT GetValue(
		[in] LONG Index,
		[out, retval] BSTR *pstr);

    HRESULT Reset(
		[in] LONG Count,
		[in] LONG StringType);

    HRESULT SetValue(
		[in] LONG Index,
		[in] BSTR const str);

    HRESULT Encode(
		[out, retval] BSTR *pstrBinary);
};


//+--------------------------------------------------------------------------
// ICertEncodeLongArray class -- local COM interface
//+--------------------------------------------------------------------------

[
    object,
    uuid(15e2f230-a0a2-11d0-8821-00a0c903b83c),
    dual,
    helpstring("ICertEncodeLongArray Interface"),
    pointer_default(unique)
]

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

    HRESULT Decode(
		[in] BSTR const strBinary);

    HRESULT GetCount(
		[out, retval] LONG *pCount);

    HRESULT GetValue(
		[in] LONG Index,
		[out, retval] LONG *pValue);

    HRESULT Reset(
		[in] LONG Count);

    HRESULT SetValue(
		[in] LONG Index,
		[in] LONG Value);

    HRESULT Encode(
		[out, retval] BSTR *pstrBinary);
};


//+--------------------------------------------------------------------------
// ICertEncodeDateArray class -- local COM interface
//+--------------------------------------------------------------------------

[
    object,
    uuid(2f9469a0-a470-11d0-8821-00a0c903b83c),
    dual,
    helpstring("ICertEncodeDateArray Interface"),
    pointer_default(unique)
]

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

    HRESULT Decode(
		[in] BSTR const strBinary);

    HRESULT GetCount(
		[out, retval] LONG *pCount);

    HRESULT GetValue(
		[in] LONG Index,
		[out, retval] DATE *pValue);

    HRESULT Reset(
		[in] LONG Count);

    HRESULT SetValue(
		[in] LONG Index,
		[in] DATE Value);

    HRESULT Encode(
		[out, retval] BSTR *pstrBinary);
};


//+--------------------------------------------------------------------------
// ICertEncodeCRLDistInfo class -- local COM interface
//+--------------------------------------------------------------------------

[
    object,
    uuid(01958640-bbff-11d0-8825-00a0c903b83c),
    dual,
    helpstring("ICertEncodeCRLDistInfo Interface"),
    pointer_default(unique)
]

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

    HRESULT Decode(
		[in] BSTR const strBinary);

    HRESULT GetDistPointCount(
		[out, retval] LONG *pDistPointCount);

    HRESULT GetNameCount(
		[in] LONG DistPointIndex,
		[out, retval] LONG *pNameCount);

    HRESULT GetNameChoice(
		[in] LONG DistPointIndex,
		[in] LONG NameIndex,
		[out, retval] LONG *pNameChoice);

    HRESULT GetName(
		[in] LONG DistPointIndex,
		[in] LONG NameIndex,
		[out, retval] BSTR *pstrName);

    HRESULT Reset(
		[in] LONG DistPointCount);

    HRESULT SetNameCount(
		[in] LONG DistPointIndex,
		[in] LONG NameCount);

    HRESULT SetNameEntry(
		[in] LONG DistPointIndex,
		[in] LONG NameIndex,
		[in] LONG NameChoice,
		[in] BSTR const strName);

    HRESULT Encode(
		[out, retval] BSTR *pstrBinary);
};


//+--------------------------------------------------------------------------
// ICertEncodeAltName class -- local COM interface
//+--------------------------------------------------------------------------

const LONG EAN_NAMEOBJECTID = 0x80000000;

[
    object,
    uuid(1c9a8c70-1271-11d1-9bd4-00c04fb683fa),
    dual,
    helpstring("ICertEncodeAltName Interface"),
    pointer_default(unique)
]

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

    HRESULT Decode(
		[in] BSTR const strBinary);

    HRESULT GetNameCount(
		[out, retval] LONG *pNameCount);

    HRESULT GetNameChoice(
		[in] LONG NameIndex,
		[out, retval] LONG *pNameChoice);

    HRESULT GetName(
		[in] LONG NameIndex,		// NameIndex | EAN_*
		[out, retval] BSTR *pstrName);

    HRESULT Reset(
		[in] LONG NameCount);

    HRESULT SetNameEntry(
		[in] LONG NameIndex,		// NameIndex | EAN_*
		[in] LONG NameChoice,
		[in] BSTR const strName);

    HRESULT Encode(
		[out, retval] BSTR *pstrBinary);
};


//+--------------------------------------------------------------------------
// ICertEncodeBitString class -- local COM interface
//+--------------------------------------------------------------------------

[
    object,
    uuid(6db525be-1278-11d1-9bd4-00c04fb683fa),
    dual,
    helpstring("ICertEncodeBitString Interface"),
    pointer_default(unique)
]

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

    HRESULT Decode(
		[in] BSTR const strBinary);

    HRESULT GetBitCount(
		[out, retval] LONG *pBitCount);

    HRESULT GetBitString(
		[out, retval] BSTR *pstrBitString);

    HRESULT Encode(
		[in] LONG BitCount,
		[in] BSTR strBitString,
		[out, retval] BSTR *pstrBinary);
};


//+--------------------------------------------------------------------------
// certenc Type library
//+--------------------------------------------------------------------------

[
    uuid(13199c00-7494-11d0-8816-00a0c903b83c),
    version(1.0),
    helpstring("CertEnc 1.0 Type Library")
]

library CERTENCODELib
{
    importlib("stdole2.tlb");

    [
	uuid(19a76fe0-7494-11d0-8816-00a0c903b83c),
	helpstring("CertEncodeStringArray Class")
    ]
    coclass CCertEncodeStringArray
    {
	[default] interface ICertEncodeStringArray;
    };

    [
	uuid(4e0680a0-a0a2-11d0-8821-00a0c903b83c),
	helpstring("CertEncodeLongArray Class")
    ]
    coclass CCertEncodeLongArray
    {
	[default] interface ICertEncodeLongArray;
    };

    [
	uuid(301f77b0-a470-11d0-8821-00a0c903b83c),
	helpstring("CertEncodeDateArray Class")
    ]
    coclass CCertEncodeDateArray
    {
	[default] interface ICertEncodeDateArray;
    };

    [
	uuid(01fa60a0-bbff-11d0-8825-00a0c903b83c),
	helpstring("CertEncodeCRLDistInfo Class")
    ]
    coclass CCertEncodeCRLDistInfo
    {
	[default] interface ICertEncodeCRLDistInfo;
    };

    [
	uuid(1cfc4cda-1271-11d1-9bd4-00c04fb683fa),
	helpstring("CertEncodeAltName Class")
    ]
    coclass CCertEncodeAltName
    {
	[default] interface ICertEncodeAltName;
    };

    [
	uuid(6d6b3cd8-1278-11d1-9bd4-00c04fb683fa),
	helpstring("CertEncodeBitString Class")
    ]
    coclass CCertEncodeBitString
    {
	[default] interface ICertEncodeBitString;
    };
};
