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