VirtualBox

source: vbox/trunk/include/VBox/VBoxAuth.h@ 72101

Last change on this file since 72101 was 69107, checked in by vboxsync, 7 years ago

include/VBox/: (C) year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.0 KB
Line 
1/** @file
2 * VirtualBox External Authentication Library Interface.
3 */
4
5/*
6 * Copyright (C) 2006-2017 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 */
25
26#ifndef ___VBox_vboxauth_h
27#define ___VBox_vboxauth_h
28
29/** @defgroup grp_vboxauth VirtualBox External Authentication Library Interface
30 * @{
31 */
32
33/* The following 2 enums are 32 bits values.*/
34typedef enum AuthResult
35{
36 AuthResultAccessDenied = 0,
37 AuthResultAccessGranted = 1,
38 AuthResultDelegateToGuest = 2,
39 AuthResultSizeHack = 0x7fffffff
40} AuthResult;
41
42typedef enum AuthGuestJudgement
43{
44 AuthGuestNotAsked = 0,
45 AuthGuestAccessDenied = 1,
46 AuthGuestNoJudgement = 2,
47 AuthGuestAccessGranted = 3,
48 AuthGuestNotReacted = 4,
49 AuthGuestSizeHack = 0x7fffffff
50} AuthGuestJudgement;
51
52/** UUID memory representation. Array of 16 bytes.
53 *
54 * @note VirtualBox uses a consistent binary representation of UUIDs on all platforms. For this reason
55 * the integer fields comprising the UUID are stored as little endian values. If you want to pass such
56 * UUIDs to code which assumes that the integer fields are big endian (often also called network byte
57 * order), you need to adjust the contents of the UUID to e.g. achieve the same string representation.
58 *
59 * The required changes are:
60 * - reverse the order of byte 0, 1, 2 and 3
61 * - reverse the order of byte 4 and 5
62 * - reverse the order of byte 6 and 7.
63 *
64 * Using this conversion you will get identical results when converting the binary UUID to the string
65 * representation.
66 */
67typedef unsigned char AUTHUUID[16];
68typedef AUTHUUID *PAUTHUUID;
69
70/** The library entry point calling convention. */
71#ifdef _MSC_VER
72# define AUTHCALL __cdecl
73#elif defined(__GNUC__)
74# define AUTHCALL
75#else
76# error "Unsupported compiler"
77#endif
78
79
80/**
81 * Authentication library entry point.
82 *
83 * @param pUuid Pointer to the UUID of the accessed virtual machine. Can be NULL.
84 * @param guestJudgement Result of the guest authentication.
85 * @param pszUser User name passed in by the client (UTF8).
86 * @param pszPassword Password passed in by the client (UTF8).
87 * @param pszDomain Domain passed in by the client (UTF8).
88 *
89 * Return code:
90 *
91 * @retval AuthAccessDenied Client access has been denied.
92 * @retval AuthAccessGranted Client has the right to use the virtual machine.
93 * @retval AuthDelegateToGuest Guest operating system must
94 * authenticate the client and the
95 * library must be called again with
96 * the result of the guest
97 * authentication.
98 */
99typedef AuthResult AUTHCALL FNAUTHENTRY(PAUTHUUID pUuid,
100 AuthGuestJudgement guestJudgement,
101 const char *pszUser,
102 const char *pszPassword,
103 const char *pszDomain);
104/** Pointer to a FNAUTHENTRY function. */
105typedef FNAUTHENTRY *PFNAUTHENTRY;
106/** @deprecated */
107typedef FNAUTHENTRY AUTHENTRY;
108/** @deprecated */
109typedef PFNAUTHENTRY PAUTHENTRY;
110/** Name of the FNAUTHENTRY entry point. */
111#define AUTHENTRY_NAME "VRDPAuth"
112
113/**
114 * Authentication library entry point version 2.
115 *
116 * @param pUuid Pointer to the UUID of the accessed virtual machine. Can be NULL.
117 * @param guestJudgement Result of the guest authentication.
118 * @param pszUser User name passed in by the client (UTF8).
119 * @param pszPassword Password passed in by the client (UTF8).
120 * @param pszDomain Domain passed in by the client (UTF8).
121 * @param fLogon Boolean flag. Indicates whether the entry point is
122 * called for a client logon or the client disconnect.
123 * @param clientId Server side unique identifier of the client.
124 *
125 * @retval AuthAccessDenied Client access has been denied.
126 * @retval AuthAccessGranted Client has the right to use the virtual machine.
127 * @retval AuthDelegateToGuest Guest operating system must
128 * authenticate the client and the
129 * library must be called again with
130 * the result of the guest authentication.
131 *
132 * @note When @a fLogon is 0, only @a pUuid and @a clientId are valid and the
133 * return code is ignored.
134 */
135typedef AuthResult AUTHCALL FNAUTHENTRY2(PAUTHUUID pUuid,
136 AuthGuestJudgement guestJudgement,
137 const char *pszUser,
138 const char *pszPassword,
139 const char *pszDomain,
140 int fLogon,
141 unsigned clientId);
142/** Pointer to a FNAUTHENTRY2 function. */
143typedef FNAUTHENTRY2 *PFNAUTHENTRY2;
144/** @deprecated */
145typedef FNAUTHENTRY2 AUTHENTRY2;
146/** @deprecated */
147typedef PFNAUTHENTRY2 PAUTHENTRY2;
148/** Name of the FNAUTHENTRY2 entry point. */
149#define AUTHENTRY2_NAME "VRDPAuth2"
150
151/**
152 * Authentication library entry point version 3.
153 *
154 * @param pszCaller The name of the component which calls the library (UTF8).
155 * @param pUuid Pointer to the UUID of the accessed virtual machine. Can be NULL.
156 * @param guestJudgement Result of the guest authentication.
157 * @param pszUser User name passed in by the client (UTF8).
158 * @param pszPassword Password passed in by the client (UTF8).
159 * @param pszDomain Domain passed in by the client (UTF8).
160 * @param fLogon Boolean flag. Indicates whether the entry point is
161 * called for a client logon or the client disconnect.
162 * @param clientId Server side unique identifier of the client.
163 *
164 * @retval AuthResultAccessDenied Client access has been denied.
165 * @retval AuthResultAccessGranted Client has the right to use the
166 * virtual machine.
167 * @retval AuthResultDelegateToGuest Guest operating system must
168 * authenticate the client and the
169 * library must be called again with
170 * the result of the guest
171 * authentication.
172 *
173 * @note When @a fLogon is 0, only @a pszCaller, @a pUuid and @a clientId are
174 * valid and the return code is ignored.
175 */
176typedef AuthResult AUTHCALL FNAUTHENTRY3(const char *pszCaller,
177 PAUTHUUID pUuid,
178 AuthGuestJudgement guestJudgement,
179 const char *pszUser,
180 const char *pszPassword,
181 const char *pszDomain,
182 int fLogon,
183 unsigned clientId);
184/** Pointer to a FNAUTHENTRY3 function. */
185typedef FNAUTHENTRY3 *PFNAUTHENTRY3;
186/** @deprecated */
187typedef FNAUTHENTRY3 AUTHENTRY3;
188/** @deprecated */
189typedef PFNAUTHENTRY3 PAUTHENTRY3;
190
191/** Name of the FNAUTHENTRY3 entry point. */
192#define AUTHENTRY3_NAME "AuthEntry"
193
194/** @} */
195
196#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette