VRDPAuth.h revision c98fb3e16fcd571a790eab772c0c66173d225205
/** @file
* VBox Remote Desktop Protocol:
* External Authentication Library Interface.
*/
/*
* Copyright (C) 2006-2007 innotek GmbH
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* you can redistribute it and/or modify it under the terms of the GNU
* General Public License as published by the Free Software Foundation,
* in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
* distribution. VirtualBox OSE is distributed in the hope that it will
* be useful, but WITHOUT ANY WARRANTY of any kind.
*/
#ifndef ___VBox_vrdpauth_h
#define ___VBox_vrdpauth_h
/* The following 2 enums are 32 bits values.*/
typedef enum _VRDPAuthResult
{
VRDPAuthAccessDenied = 0,
VRDPAuthAccessGranted = 1,
VRDPAuthDelegateToGuest = 2,
VRDPAuthSizeHack = 0x7fffffff
} VRDPAuthResult;
typedef enum _VRDPAuthGuestJudgement
{
VRDPAuthGuestNotAsked = 0,
VRDPAuthGuestAccessDenied = 1,
VRDPAuthGuestNoJudgement = 2,
VRDPAuthGuestAccessGranted = 3,
VRDPAuthGuestNotReacted = 4,
VRDPAuthGuestSizeHack = 0x7fffffff
} VRDPAuthGuestJudgement;
/* UUID memory representation. Array of 16 bytes. */
typedef unsigned char VRDPAUTHUUID[16];
typedef VRDPAUTHUUID *PVRDPAUTHUUID;
/* The library entry point calling convention. */
#ifdef _MSC_VER
# define VRDPAUTHCALL __cdecl
#elif defined(__GNUC__)
# define VRDPAUTHCALL
#else
# error "Unsupported compiler"
#endif
/**
* Authentication library entry point. Decides whether to allow
* a client connection.
*
* Parameters:
*
* pUuid Pointer to the UUID of the virtual machine
* which the client connected to.
* guestJudgement Result of the guest authentication.
* szUser User name passed in by the client (UTF8).
* szPassword Password passed in by the client (UTF8).
* szDomain Domain passed in by the client (UTF8).
*
* Return code:
*
* VRDPAuthAccessDenied Client access has been denied.
* VRDPAuthAccessGranted Client has the right to use the
* virtual machine.
* VRDPAuthDelegateToGuest Guest operating system must
* authenticate the client and the
* library must be called again with
* the result of the guest
* authentication.
*/
typedef VRDPAuthResult VRDPAUTHCALL VRDPAUTHENTRY(PVRDPAUTHUUID pUuid,
VRDPAuthGuestJudgement guestJudgement,
const char *szUser,
const char *szPassword,
const char *szDomain);
typedef VRDPAUTHENTRY *PVRDPAUTHENTRY;
/**
* Authentication library entry point version 2. Decides whether to allow
* a client connection.
*
* Parameters:
*
* pUuid Pointer to the UUID of the virtual machine
* which the client connected to.
* guestJudgement Result of the guest authentication.
* szUser User name passed in by the client (UTF8).
* szPassword Password passed in by the client (UTF8).
* szDomain Domain passed in by the client (UTF8).
* fLogon Boolean flag. Indicates whether the entry point is called
* for a client logon or the client disconnect.
* clientId Server side unique identifier of the client.
*
* Return code:
*
* VRDPAuthAccessDenied Client access has been denied.
* VRDPAuthAccessGranted Client has the right to use the
* virtual machine.
* VRDPAuthDelegateToGuest Guest operating system must
* authenticate the client and the
* library must be called again with
* the result of the guest
* authentication.
*
* Note: When 'fLogon' is false, only pUuid and clientId are valid and the return
* code is ignored.
*/
typedef VRDPAuthResult VRDPAUTHCALL VRDPAUTHENTRY2(PVRDPAUTHUUID pUuid,
VRDPAuthGuestJudgement guestJudgement,
const char *szUser,
const char *szPassword,
const char *szDomain,
bool fLogon,
unsigned clientId);
typedef VRDPAUTHENTRY2 *PVRDPAUTHENTRY2;
#endif