//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 2000
//
//  File:       pasrec.idl
//
//  Description:
//
//      This file describes the DPAPI PasswordRecovery interface, which is
//      a local-only RPC interface used to support the "password recovery 
//      disk" feature for local user accounts. The server-side handlers
//      for this interface live in the lsass.exe process.
//      
//--------------------------------------------------------------------------


import "unknwn.idl";


import "basetsd.h";

////////////////////////////
// Interfaces

[
  uuid(5cbe92cb-f4be-45c9-9fc9-33e73e557b20),
  version(1.0),
  pointer_default(unique)
]
interface PasswordRecovery
{


    DWORD
    SSRecoverQueryStatus(
            [in]                                    handle_t h,
            [in,ptr][size_is(cbUserName)]           BYTE* pbUserName,
            [in]                                    DWORD cbUserName,
            [out, retval]                           DWORD* pcbRecoveryStatus);


    DWORD
    SSRecoverImportRecoveryKey(
            [in]                                    handle_t h,
            [in,ptr][size_is(cbUsername)]           BYTE* pbUsername,
            [in]                                    DWORD cbUsername,
            [in,ptr][size_is(cbCurrentPassword)]    BYTE* pbCurrentPassword,
            [in]                                    DWORD cbCurrentPassword,
            [in,ptr][size_is(cbRecoveryPublic)]     BYTE* pbRecoveryPublic,
            [in]                                    DWORD cbRecoveryPublic);

    DWORD
    SSRecoverPassword(
            [in]                                    handle_t h,
            [in,ptr][size_is(cbUsername)]           BYTE* pbUsername,
            [in]                                    DWORD cbUsername,
            [in,ptr][size_is(cbRecoveryPrivate)]    BYTE* pbRecoveryPrivate,
            [in]                                    DWORD cbRecoveryPrivate,
            [in,ptr][size_is(cbPasswordData)]       BYTE* pbPasswordData,
            [in]                                    DWORD cbPasswordData);
}