//+-----------------------------------------------------------------------
//
// File:        KdcDbg.IDL
//
// Contents:    IDL file for KDC Debug API.
//
//
// History:     19-Dec-91   WadeR    Created
//
//------------------------------------------------------------------------

[
    uuid(00000002-0001-0000-C000-000000000069),
    version(1.0),
    pointer_default(unique)
]


interface KdcDebug
{
import "secimp.idl";

typedef struct _KDC_DBG_DOMAIN_INFO {
    UNICODE_STRING DnsName;
    UNICODE_STRING NetbiosName;
    UNICODE_STRING ClosestRoute;     // Points to referral target for this domain or NULL if unreachable
    ULONG Attributes;
    ULONG Type;
} KDC_DBG_DOMAIN_INFO, *PKDC_DBG_DOMAIN_INFO;

typedef struct _KDC_DBG_DOMAIN_LIST {
    ULONG Count;
    [size_is(Count)] PKDC_DBG_DOMAIN_INFO Domains;
} KDC_DBG_DOMAIN_LIST, *PKDC_DBG_DOMAIN_LIST;


NTSTATUS
KDC_GetState(
                [in]    handle_t            hBinding,
                [out]   unsigned long *     KDCFlags,
                [out]   unsigned long *     MaxLifespan,
                [out]   unsigned long *     MaxRenewSpan,
                [out]   PLARGE_INTEGER          FudgeFactor);

NTSTATUS
KDC_SetState(
                [in]    handle_t            hBinding,
                [in]    unsigned long       KDCFlags,
                [in]    unsigned long       MaxLifespan,
                [in]    unsigned long       MaxRenewSpan,
                [in]    LARGE_INTEGER           FudgeFactor);


NTSTATUS
KDC_GetDomainList(
    [in] handle_t hBinding,
    [out] PKDC_DBG_DOMAIN_LIST * DomainList
    );

NTSTATUS
KDC_SetPassword(
    [in] handle_t hBinding,
    [in] PUNICODE_STRING UserName,
    [in] PUNICODE_STRING PrincipalName,
    [in] PUNICODE_STRING Password,
    [in] ULONG Flags
    );



NTSTATUS
KDC_SetAccountKeys(
    [in] handle_t hBinding,
    [in] PUNICODE_STRING UserName,
    [in] ULONG Flags,
    [in] PKERB_STORED_CREDENTIAL Keys
    );

}