/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef _INC_EAPHOSTPEERCONFIGAPIS
#define _INC_EAPHOSTPEERCONFIGAPIS
#if (_WIN32_WINNT >= 0x0600)
#include <eaptypes.h>
#ifdef __cplusplus
extern "C" {
#endif

DWORD WINAPI EapHostPeerQueryUserBlobFromCredentialInputFields(
  HANDLE hUserImpersonationToken,
  EAP_METHOD_TYPE eapMethodType,
  DWORD dwFlags,
  DWORD dwEapConnDataSize,
  const BYTE *pbEapConnData,
  const EAP_CONFIG_INPUT_FIELD_ARRAY *pEapConfigInputFieldArray,
  DWORD *pdwUserBlobSize,
  BYTE **ppbUserBlob,
  EAP_ERROR **pEapError
);

VOID WINAPI EapHostPeerFreeErrorMemory(
    EAP_ERROR *pEapError
);

DWORD WINAPI EapHostPeerConfigBlob2Xml(
  DWORD dwFlags,
  EAP_METHOD_TYPE eapMethodType,
  DWORD dwSizeOfConfigIn,
  BYTE *pConfigIn,
  IXMLDOMDocument2 **ppConfigDoc,
  EAP_ERROR **ppEapError
);

DWORD WINAPI EapHostPeerInvokeInteractiveUI(
  HWND hwndParent,
  DWORD dwSizeofUIContextData,
  const BYTE *pUIContextData,
  DWORD *pdwSizeofDataFromInteractiveUI,
  BYTE **ppDataFromInteractiveUI,
  EAP_ERROR **ppEapError
);

DWORD WINAPI EapHostPeerQueryInteractiveUIInputFields(
  DWORD dwVersion,
  DWORD dwFlags,
  DWORD dwSizeofUIContextData,
  const BYTE *pUIContextData,
  EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
  EAP_ERROR **ppEapError,
  LPVOID *ppvReserved
);

DWORD WINAPI EapHostPeerQueryUIBlobFromInteractiveUIInputFields(
  DWORD dwVersion,
  DWORD dwFlags,
  DWORD dwSizeofUIContextData,
  const BYTE *pUIContextData,
  const EAP_INTERACTIVE_UI_DATA *pEapInteractiveUIData,
  DWORD *pdwSizeOfDataFromInteractiveUI,
  BYTE **ppDataFromInteractiveUI,
  EAP_ERROR **ppEapError,
  LPVOID *ppvReserved
);

DWORD WINAPI EapHostPeerConfigXml2Blob(
  DWORD dwFlags,
  IXMLDOMNode *pConfigDoc,
  DWORD *pdwSizeOfConfigOut,
  BYTE **ppConfigOut,
  EAP_METHOD_TYPE *pEapMethodType,
  EAP_ERROR **ppEapError
);

DWORD WINAPI EapHostPeerCredentialsXml2Blob(
  DWORD dwFlags,
  IXMLDOMNode *pCredentialsDoc,
  DWORD dwSizeOfConfigIn,
  BYTE *pConfigIn,
  DWORD *pdwSizeofCredentialsOut,
  BYTE **ppCredentialsOut,
  EAP_METHOD_TYPE *pEapMethodType,
  EAP_ERROR **ppEapError
);

DWORD WINAPI EapHostPeerInvokeConfigUI(
  HWND hwndParent,
  DWORD dwFlags,
  EAP_METHOD_TYPE eapMethodType,
  DWORD dwSizeOfConfigIn,
  const BYTE *pConfigIn,
  DWORD *pdwSizeOfConfigOut,
  BYTE **ppConfigOut,
  EAP_ERROR **pEapError
);

VOID WINAPI EapHostPeerFreeMemory(
  BYTE *pData
);

DWORD WINAPI EapHostPeerQueryCredentialInputFields(
  HANDLE hUserImpersonationToken,
  EAP_METHOD_TYPE eapMethodType,
  DWORD dwFlags,
  DWORD dwEapConnDataSize,
  const BYTE *pbEapConnData,
  EAP_CONFIG_INPUT_FIELD_ARRAY *pEapConfigInputFieldArray,
  EAP_ERROR **pEapError
);

DWORD WINAPI EapHostPeerGetMethods(
  EAP_METHOD_INFO_ARRAY *pEapMethodInfoArray,
  EAP_ERROR **ppEapError
);

DWORD WINAPI EapHostPeerInvokeIdentityUI(
  DWORD dwVersion,
  EAP_METHOD_TYPE eapMethodType,
  DWORD dwFlags,
  HWND hwndParent,
  DWORD dwSizeofConnectionData,
  const  BYTE * pConnectionData,
  DWORD dwSizeofUserData,
  const  BYTE *pUserData,
  DWORD *pdwSizeofUserDataOut,
  BYTE **ppUserDataOut,
  LPWSTR *ppwszIdentity,
  EAP_ERROR **ppEapError,
  LPVOID *ppvReserved
);

#ifdef __cplusplus
}
#endif
#endif /*(_WIN32_WINNT >= 0x0600)*/
#endif /*_INC_EAPHOSTPEERCONFIGAPIS*/