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

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

import "wtypes.idl";

//+--------------------------------------------------------------------------
// ICertView::GetResultColumnValue Flags for value encoding:

const LONG CV_OUT_BASE64HEADER = 	0x00000000; // BASE64 with begin/end
const LONG CV_OUT_BASE64 =       	0x00000001; // BASE64 w/o begin/end
const LONG CV_OUT_BINARY =       	0x00000002; // binary
const LONG CV_OUT_BASE64REQUESTHEADER = 0x00000003; // BASE64 with begin/end
const LONG CV_OUT_HEX =          	0x00000004; // hex string
const LONG CV_OUT_HEXASCII =          	0x00000005; // hex string w/Ascii
const LONG CV_OUT_BASE64X509CRLHEADER =	0x00000009; // BASE64 with begin/end
const LONG CV_OUT_HEXADDR =		0x0000000a; // hex string w/addr
const LONG CV_OUT_HEXASCIIADDR =	0x0000000b; // hex string w/Ascii+addr
const LONG CV_OUT_ENCODEMASK =	 	0x000000ff; // encoding mask


// ICertView::SetRestriction SeekOperator values:

const LONG CVR_SEEK_NONE    = 0x00000000;
const LONG CVR_SEEK_EQ      = 0x00000001;
const LONG CVR_SEEK_LT      = 0x00000002;
const LONG CVR_SEEK_LE      = 0x00000004;
const LONG CVR_SEEK_GE      = 0x00000008;
const LONG CVR_SEEK_GT      = 0x00000010;
const LONG CVR_SEEK_MASK    = 0x000000ff;

const LONG CVR_SEEK_NODELTA = 0x00001000;


// ICertView::SetRestriction SortOperator values:

const LONG CVR_SORT_NONE    = 0x00000000;
const LONG CVR_SORT_ASCEND  = 0x00000001;
const LONG CVR_SORT_DESCEND = 0x00000002;


// ICertView::SetColumnCount cResultColumn values:

const LONG CV_COLUMN_QUEUE_DEFAULT	 = -1;
const LONG CV_COLUMN_LOG_DEFAULT	 = -2;
const LONG CV_COLUMN_LOG_FAILED_DEFAULT	 = -3;
const LONG CV_COLUMN_EXTENSION_DEFAULT	 = -4;
const LONG CV_COLUMN_ATTRIBUTE_DEFAULT	 = -5;
const LONG CV_COLUMN_CRL_DEFAULT	 = -6;
const LONG CV_COLUMN_LOG_REVOKED_DEFAULT = -7;

// ICertView::GetColumnCount and ICertView::GetColumnIndex values for
// fResultColumn 

const LONG CVRC_COLUMN_SCHEMA	= 0x00000000;	// Schema column info
const LONG CVRC_COLUMN_RESULT	= 0x00000001;	// Result column info
const LONG CVRC_COLUMN_VALUE	= 0x00000002;	// Value column info
const LONG CVRC_COLUMN_MASK	= 0x00000fff;	// column info mask

const LONG CVRC_TABLE_REQCERT	  = 0x00000000;	// default table request+cert
//const LONG CVRC_TABLE_REQUEST	  = 0x00001000;
//const LONG CVRC_TABLE_CERTIFICATE = 0x00002000;
const LONG CVRC_TABLE_EXTENSIONS  = 0x00003000;	// Extensions table
const LONG CVRC_TABLE_ATTRIBUTES  = 0x00004000;	// Attributes table
const LONG CVRC_TABLE_CRL	  = 0x00005000;	// CRL table
const LONG CVRC_TABLE_MASK	  = 0x0000f000;	// Table mask
const LONG CVRC_TABLE_SHIFT	  = 12;		// Table shift


//+--------------------------------------------------------------------------
// IEnumCERTVIEWCOLUMN -- local COM interface, implementation uses DCOM
//+--------------------------------------------------------------------------

[
    object,
    uuid(9c735be2-57a5-11d1-9bdb-00c04fb683fa),
    dual,
    local,
    helpstring("IEnumCERTVIEWCOLUMN Interface"),
    pointer_default(unique)
]

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

    HRESULT Next(
		[out, retval] LONG *pIndex);

    HRESULT GetName(
		[out, retval] BSTR *pstrOut);

    HRESULT GetDisplayName(
		[out, retval] BSTR *pstrOut);

    HRESULT GetType(
		[out, retval] LONG *pType);

    HRESULT IsIndexed(
		[out, retval] LONG *pIndexed);

    HRESULT GetMaxLength(
		[out, retval] LONG *pMaxLength);

    HRESULT GetValue(
		[in] LONG Flags,		// CV_OUT_*
		[out, retval] VARIANT *pvarValue);
    
    HRESULT Skip(
		[in] LONG celt);
    
    HRESULT Reset(void);
    
    HRESULT Clone(
		[out, retval] IEnumCERTVIEWCOLUMN **ppenum);
};


//+--------------------------------------------------------------------------
// IEnumCERTVIEWATTRIBUTE -- local COM interface, uses DCOM
//+--------------------------------------------------------------------------

[
    object,
    uuid(e77db656-7653-11d1-9bde-00c04fb683fa),
    dual,
    local,
    helpstring("IEnumCERTVIEWATTRIBUTE Interface"),
    pointer_default(unique)
]

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

    HRESULT Next(
		[out, retval] LONG *pIndex);

    HRESULT GetName(
		[out, retval] BSTR *pstrOut);

    HRESULT GetValue(
		[out, retval] BSTR *pstrOut);
    
    HRESULT Skip(
		[in] LONG celt);
    
    HRESULT Reset(void);
    
    HRESULT Clone(
		[out, retval] IEnumCERTVIEWATTRIBUTE **ppenum);
};


//+--------------------------------------------------------------------------
// IEnumCERTVIEWEXTENSION -- local COM interface, uses DCOM
//+--------------------------------------------------------------------------

[
    object,
    uuid(e7dd1466-7653-11d1-9bde-00c04fb683fa),
    dual,
    local,
    helpstring("IEnumCERTVIEWEXTENSION Interface"),
    pointer_default(unique)
]

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

    HRESULT Next(
		[out, retval] LONG *pIndex);

    HRESULT GetName(
		[out, retval] BSTR *pstrOut);

    HRESULT GetFlags(
		[out, retval] LONG *pFlags);

    HRESULT GetValue(
		[in] LONG Type,
		[in] LONG Flags,		// CV_OUT_*
		[out, retval] VARIANT *pvarValue);
    
    HRESULT Skip(
		[in] LONG celt);
    
    HRESULT Reset(void);
    
    HRESULT Clone(
		[out, retval] IEnumCERTVIEWEXTENSION **ppenum);
};


//+--------------------------------------------------------------------------
// IEnumCERTVIEWROW -- local COM interface, implementation uses DCOM
//+--------------------------------------------------------------------------

[
    object,
    uuid(d1157f4c-5af2-11d1-9bdc-00c04fb683fa),
    dual,
    local,
    helpstring("IEnumCERTVIEWROW Interface"),
    pointer_default(unique)
]

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

    HRESULT Next(
		[out, retval] LONG *pIndex);

    HRESULT EnumCertViewColumn(
		[out, retval] IEnumCERTVIEWCOLUMN **ppenum);
    
    HRESULT EnumCertViewAttribute(
		[in] LONG Flags,		// must be 0
		[out, retval] IEnumCERTVIEWATTRIBUTE **ppenum);
    
    HRESULT EnumCertViewExtension(
		[in] LONG Flags,		// must be 0
		[out, retval] IEnumCERTVIEWEXTENSION **ppenum);
    
    HRESULT Skip(
		[in] LONG celt);
    
    HRESULT Reset(void);
    
    HRESULT Clone(
		[out, retval] IEnumCERTVIEWROW **ppenum);

    HRESULT GetMaxIndex(
		[out, retval] LONG *pIndex);
};


//+--------------------------------------------------------------------------
// ICertView -- local COM interface, implementation uses DCOM
//+--------------------------------------------------------------------------

[
    object,
    uuid(c3fac344-1e84-11d1-9bd6-00c04fb683fa),
    dual,
    local,
    helpstring("ICertView Interface"),
    pointer_default(unique)
]

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

    HRESULT OpenConnection(
		[in] BSTR const strConfig);

    HRESULT EnumCertViewColumn(
		[in]  LONG fResultColumn,	// CVRC_COLUMN_*
		[out, retval] IEnumCERTVIEWCOLUMN **ppenum);

    HRESULT GetColumnCount(
		[in] LONG fResultColumn,	// CVRC_COLUMN_*
		[out, retval] LONG *pcColumn);

    HRESULT GetColumnIndex(
		[in] LONG fResultColumn,	// CVRC_COLUMN_*
		[in] BSTR const strColumnName,
		[out, retval] LONG *pColumnIndex);

    // Set output column count and columns by column index:

    HRESULT SetResultColumnCount(
		[in] LONG cResultColumn);

    HRESULT SetResultColumn(
		[in] LONG ColumnIndex);

    // Set the view restriction:

    HRESULT SetRestriction(
		[in] LONG ColumnIndex,
		[in] LONG SeekOperator,		// CVR_SEEK_*
		[in] LONG SortOrder,		// CVR_SORT_*
		[in] VARIANT const *pvarValue);

    // Open or reset the view:

    HRESULT OpenView(
		[out, retval] IEnumCERTVIEWROW **ppenum);
};


//+--------------------------------------------------------------------------
// ICertView2 -- local COM interface, implementation uses DCOM
//+--------------------------------------------------------------------------

[
    object,
    uuid(d594b282-8851-4b61-9c66-3edadf848863),
    dual,
    helpstring("ICertView2 Interface"),
    pointer_default(unique)
]

interface ICertView2: ICertView
{
    HRESULT SetTable(
		[in] LONG Table);		// CVRC_TABLE_*
};
