AnyConnect Secure Mobility Client  5.0.02075
api.h
Go to the documentation of this file.
1 /**************************************************************************
2 * Copyright (c) 2008, 2022 Cisco Systems, Inc.
3 * All Rights Reserved. Cisco Highly Confidential.
4 ***************************************************************************
5 *
6 * File: api.h
7 * Date: 01/2008
8 *
9 ***************************************************************************
10 * VPN GUI API module interface types
11 ***************************************************************************/
12 #ifndef _APISTDHEADER_
13 #define _APISTDHEADER_
14 
15 /**
16  * @file
17  * This file contains some basic compiler definitions as well as common enums.
18  */
19 
20 //Not compatible with MIDL
21 #if !defined(__midl)
22 #ifdef _WIN32
23  #pragma warning(disable:4251 4786)
24 
25  #ifndef UNICODE
26  #define UNICODE
27  #endif // UNICODE
28 
29  #ifndef _UNICODE
30  #define _UNICODE
31  #endif // _UNICODE
32 
33  #ifndef tstring
34 /** std::wstring */
35  #define tstring std::wstring /**< my wstring description */
36  #endif // tstring
37 
38 #else // non-windows
39 
40  #ifndef tstring
41  #define tstring std::string
42  #endif // tstring
43 
44 #endif // _WIN32
45 
46 #ifdef _UNICODE
47  #define tostream std::wostream
48 #else
49  #define tostream std::ostream
50 #endif /* UNICODE */
51 
52 
53 //used when including implementation files directly in an EXE.
54 #ifdef _NOEXPORTDLL
55  #define VPN_VPNAPI
56 #else
57  #ifdef _WIN32
58  #ifdef VPN_APIEXPORTS //api
59  #define VPN_VPNAPI __declspec(dllexport)
60  #else
61  #define VPN_VPNAPI __declspec(dllimport)
62  #endif
63  #else
64  #ifdef VPN_APIEXPORTS
65  #define VPN_VPNAPI __attribute__((visibility("default")))
66  #else
67  #define VPN_VPNAPI
68  #endif
69  #endif //_WIN32
70 #endif //NOEXPORTDLL
71 
72 #ifndef OUT
73 #define OUT
74 #endif
75 
76 #ifndef IN
77 #define IN
78 #endif
79 
80 #ifdef __cplusplus //only include if C++ is being used,
81  //C code also includes api.h for COM proxy of enumerators.
82 #include <string>
83 #include <map>
84 #include <list>
85 
86 typedef std::map<tstring, tstring> ApiStringMap;
87 typedef std::map<tstring, std::list<tstring> > ApiStringListMap;
88 
89 #endif //__cplusplus
90 #endif //#if !defined(__midl)
91 
92 
93 /***** PUT ONLY SHARED ENUMS EXPOSED TO USERS OF API FROM THIS POINT UNTIL END *****\
94 ********* make sure to add the [v1_enum] inside a __midl define to new enums ********
95 \******************** This is also compiled with IDL compiler **********************/
96 
97 #include "GlobalEnums.h"
98 /**
99  * MessageType
100  * presents a level of severity associated with messages that are
101  * sent to the API. The severity can be useful for deciding how a message is
102  * to be shown. A UI might decide based on type to show a message as
103  * a modal dialog versus a message written to the status area for an existing UI.
104  */
105 #if defined(__midl)
106 [v1_enum] /*serialize as 32 bits*/
107 #endif
109 {
110  MsgType_Error, /**< Issue usually requiring user to acknowledge */
111  MsgType_Alert, /**< Warning message that must be shown to user. */
112  MsgType_Warn, /**< Less severe, not required to be shown to user */
113  MsgType_Info, /**< General message providing status, progress, etc. */
114  MsgType_Status, /**< Can be used to indicate unexpected tunnel status change. */
115  MsgType_UrlError, /**< Error message that provides additional information by opening browser. */
116  MsgType_Announcement, /**< Informational message that must be shown to the user. */
117  // Announcement is presently only used and supported on desktop platforms.
118 };
119 
120 
121 /**
122  * Identifies the type of token that was used successfully when SDI
123  * Authentication is in use.
124  */
125 #if defined(__midl)
126 [v1_enum] /*serialize as 32 bits*/
127 #endif
129 {
130  SDITT_NONE,
131  SDITT_HARDWARE,
132  SDITT_SOFTWARE
133 };
134 
135 /**
136  * Provides the current state of the VPN tunnel.
137  */
138 #if defined(__midl)
139 [v1_enum] /*serialize as 32 bits*/
140 #endif
142 {
143  CONNECTED = STATE_CONNECTED, /**< VPN is active */
144  DISCONNECTED = STATE_DISCONNECTED, /**< VPN is inactive */
145  CONNECTING = STATE_CONNECTING, /**< VPN is being established */
146  DISCONNECTING = STATE_DISCONNECTING, /**< VPN is being terminated */
147  RECONNECTING = STATE_RECONNECTING, /**< VPN is being re-connected. This state
148  can occur due to network or other
149  temporary problems. The state
150  indicates that the VPN is temporarily
151  unavailable and indicates the
152  connection is being re-established. */
153  PAUSING = STATE_PAUSING, /**< VPN is being paused. */
154  PAUSED = STATE_PAUSED, /**< VPN is paused. */
155  SSOPOLLING = STATE_SSOPOLLING, /**< API is doing auth-poll, VPN is disconnected. */
156  UNKNOWN = ~0
157 };
158 
159 /**
160  * Provides the current sub-state of the VPN tunnel.
161  */
162 #if defined(__midl)
163 [v1_enum] /*serialize as 32 bits*/
164 #endif
166 {
167  VPNSS_NORMAL = VCSS_NORMAL,
168  VPNSS_INDEFINITE_DELAY = VCSS_INDEFINITE_DELAY,
169  VPNSS_SESSION_EXPIRING = VCSS_SESSION_EXPIRING,
170  VPNSS_MT_DISCONNECTED_DISABLED = VCSS_MT_DISCONNECTED_DISABLED,
171  VPNSS_MT_DISCONNECTED_TRUSTED_NW = VCSS_MT_DISCONNECTED_TRUSTED_NW,
172  VPNSS_MT_DISCONNECTED_USER_TUNNEL_ACTIVE= VCSS_MT_DISCONNECTED_USER_TUNNEL_ACTIVE,
173  VPNSS_MT_DISCONNECTED_LAUNCH_FAILED = VCSS_MT_DISCONNECTED_LAUNCH_FAILED,
174  VPNSS_MT_DISCONNECTED_CONNECT_FAILED = VCSS_MT_DISCONNECTED_CONNECT_FAILED,
175  VPNSS_MT_DISCONNECTED_BAD_VPN_CONFIG = VCSS_MT_DISCONNECTED_BAD_VPN_CONFIG,
176  VPNSS_MT_DISCONNECTED_SW_UP_PENDING = VCSS_MT_DISCONNECTED_SW_UP_PENDING,
177  VPNSS_MTU_ADJUSTMENT_PENDING = VCSS_MTU_ADJUSTMENT_PENDING
178 };
179 
180 /**
181  * WMHint
182  * provides a hint for the GUI to either minimize or un-minimize.
183  */
184 #if defined(__midl)
185 [v1_enum] /*serialize as 32 bits*/
186 #endif
187 enum WMHint
188 {
189  MINIMIZE, /**< hint to minimize GUI */
190  OPEN, /**< hint to un-minimize GUI */
191  QUIT, /**< hint that GUI should close. @see WMHintReason */
192  REFRESHHOSTNAMES,/**< hint to refresh the list of secure gateways */
193  REFRESHPREFS, /**< hint to refresh the preferences */
194  SHOWCONNECTING, /**< hint to display "connecting" status */
195  CLOSECREDENTIALPOPUP, /**< hint to close the credentials popup */
196 };
197 
198 
199 /**
200  * WMHintReason
201  * provides a reason indicator for the #WMHint
202  */
203 #if defined(__midl)
204 [v1_enum] /*serialize as 32 bits*/
205 #endif
207 {
208  SECONDGUISTART, /**< Indicates a second GUI has been launched. This
209  indicator is used to suggest that the GUI
210  already running be OPENed and that the first one
211  should exit. */
212  PROXYREQUEST, /**< Proxy credential request can be for web-launch or
213  standalone-initiated connections. */
214  SERVICEFAILURE, /**< This tag is used when the VPN service
215  is no longer available. */
216  DISCONNECT, /**< Any disconnect notices should be seen by the user. */
217  SERVICESTOPPED, /**< This tag will be used in cases where the VPN service
218  has been stopped. */
219  CONNECT, /**< Tag indicating an action to be taken due to connect,
220  for example a request to minimize the UI. */
221  REASONUNKNOWN /**< */
222 };
223 
224 /**
225  * provides an indication of the type of credential data being requested.
226  */
227 #if defined(__midl)
228 [v1_enum] /*serialize as 32 bits*/
229 #endif
231 {
232  CERTIFICATE, /**< Indicates a certificate-only type of connection and
233  would not normally be sent to client unless a
234  post-authentication banner is to be displayed. */
235  CREDENTIALS, /**< Indicates that the user is to be prompted for authentication
236  credentials */
237  PROXY, /**< Indicates that the user is to be prompted for
238  proxy-authentication credentials */
239  MANUAL_PKCS12_IMPORT, /**< Indicates that the user is to be prompted for passwords related
240  to PKCS12 import*/
241  STATUS, /**< Indicates that status messages are to be displayed to
242  the user*/
243  SINGLESIGNON, /**< Indicates an embedded browser based single sign-on authentication method is requested. */
244  SINGLELOGOUT, /**< Indicates an embedded browser based single sign-on authentication logout is requested. */
245  LEGACY_SINGLESIGNON, /**< (deprecated) Indicates a browser based single sign-on authentication method is requested. */
246 };
247 
248 
249 /**
250  * Indicates the prompt or credential type.
251  */
252 #if defined(__midl)
253 [v1_enum] /*serialize as 32 bits*/
254 #endif
255 enum PromptType { Prompt_Input, /**< label and value. */
256  Prompt_Password, /**< label and value, indicates user
257  response should be masked. */
258  Prompt_Banner, /**< value (the banner) with no label set. */
259  Prompt_Combo, /**< list with choices options. */
260  Prompt_Header, /**< label intended as header and with
261  value. */
262  Prompt_Hidden, /**< hidden value, should be ignored and
263  left unchanged in response. */
264  Prompt_CheckBox, /**< label and value (contrained to true or false) */
265  Prompt_SSO /**< single sign-on authentication token prompt */
266 };
267 
268 #if defined(__midl)
269 [v1_enum] /*serialize as 32 bits*/
270 #endif
271 
272 /*
273  * ***************** !!! ATTENTION !!! ***********************************
274  * *
275  * * When updating this preference enum, you must ensure that the enum in
276  * * vpn/Api/jni/java/Preference.java is also updated.
277  * *
278  * ***************** !!! ATTENTION !!! ***********************************
279  */
281 {
282  ServiceDisable, /**< This preference disable the VPN service.
283  If more than one profile exists and any one
284  profile has VPN enabled, then it will be
285  enabled. False is the default. */
286  CertificateStoreOverride,/**< This preference will trigger an alternate
287  authentication sequence in the API. The
288  preference is only settable by an
289  administrator. */
290  CertificateStore, /**< This preference indicates which Windows certificate
291  store AnyConnect should look in for client certificates.
292  The options are All, Machine and User with a default of All.
293  The preference is only settable by an administrator. */
294  CertificateStoreMac, /**< This preference indicates which macOS keychain
295  AnyConnect should look in for client certificates.
296  The options are All, System and Login with a default of All.
297  The preference is only settable by an administrator. */
298  CertificateStoreLinux, /**< This preference indicates which Linux certificate
299  store AnyConnect should look in for client certificates.
300  The options are All, Machine and User with a default of All.
301  The preference is only settable by an administrator. */
302  ShowPreConnectMessage, /**< The ShowPreConnectMessage preference gives the
303  administrator the ability to display an AnyConnect
304  startup banner message. The message will appear
305  only once per AnyConnect program start. The
306  preference is only settable by an
307  administrator. */
308  AutoConnectOnStart, /**< This preference allows the user to select
309  whether to establish a connection automatically
310  on startup or not. */
311  MinimizeOnConnect, /**< This preference allows the user to select if
312  the GUI should minimize when the connection is
313  established */
314  LocalLanAccess, /**< This preference will provide a mechanism where
315  the user can disable access to their Local LAN. */
316  DisableCaptivePortalDetection, /**<This preference will provide a mechanism where
317  the user can disable captive portal detection.*/
318  AutoReconnect, /**< First control of the reconnect behavior. If the
319  client becomes disconnected for any reason, a
320  reconnect attempt is made. */
321  AutoReconnectBehavior, /**< Second control of the reconnect behavior. When
322  coming out of suspend/hibernate/standby mode.
323  Options are disconnect on suspend and reconnect
324  after suspend. */
325  SuspendOnConnectedStandby, /**< This setting allows to control whether the VPN tunnel
326  is suspended when the system enters the Connected Standby
327  mode. It applies only to Windows 8 and above. */
328  UseStartBeforeLogon, /**< This preference allows an administrator to
329  control the use of the Start Before Logon
330  feature. The preference can be set to true (on)
331  or false (off). */
332  AutoUpdate, /**< Once the Downloader has loaded the profile, it
333  can check the AutoUpdate preference to see if
334  updates are either disabled or enabled */
335  RSASecurIDIntegration, /**< This preference will enable the administrator
336  and possibly end user to select the preferred
337  method of managing their SDI PIN and PASSCODE
338  interactions. Options are Automatic (default),
339  SoftwareTokens and HardwareTokens. */
340  WindowsLogonEnforcement,/**< This preference allows an administrator to
341  control if more than one user may be logged into
342  the client PC during the VPN connection (Windows
343  only). */
344  WindowsVPNEstablishment,/**< This preference allows an administrator to
345  control whether or not remote users may initiate
346  a VPN connection (Windows only). */
347  LinuxLogonEnforcement, /**< This preference allows an administrator to
348  control if more than one user may be logged into
349  the client PC during the VPN connection (Linux
350  only). */
351  LinuxVPNEstablishment, /**< This preference allows an administrator to
352  control whether or not remote users may initiate
353  a VPN connection (Linux only). */
354  ProxySettings, /**< This preference allows an administrator to
355  control how user's proxy setups are handled.*/
356  AllowLocalProxyConnections, /**< This preference allows the administrator to control
357  whether to allow establishing a connection through
358  a local proxy. */
359  PPPExclusion, /**< This preference allows an administrator to control
360  the policy used to exclude routes to
361  PPP servers when connecting over L2TP or PPTP.
362  Options are Automatic (default), Disable,
363  and Override. */
364  PPPExclusionServerIP, /**< When PPPExclusion is set to Manual,
365  the value of this preference allows an
366  end user to specify the address of a
367  PPP server that should be excluded
368  from tunnel traffic. */
369  AutomaticVPNPolicy, /**< This preference allows an administrator to
370  define a policy to automatically manage when a
371  VPN connection should be started or stopped. */
372  TrustedNetworkPolicy, /**< This preference allows an administrator to
373  define a policy for users in trusted networks.
374  The options are: Disconnect or DoNothing. */
375  UntrustedNetworkPolicy, /**< This preference allows an administrator to
376  define a policy for users in untrusted networks.
377  The options are: Connect or DoNothing. */
378  TrustedDNSDomains, /**< This preference defines a list of comma
379  separated DNS suffixes that a network interface
380  in a trusted network might have. */
381  TrustedDNSServers, /**< This preference defines a list of comma
382  separated DNS servers that a network interface
383  in a trusted network might have. */
384  TrustedHttpsServerList, /**< This preference defines a list of comma separated
385  https servers reachable only via a trusted network.*/
386  DisableUntrustedInterfaces, /**< This preference disables interface without trusted
387  server connectivity while in trusted network
388  when there are multiple network interfaces. */
389  AlwaysOn, /**< This preference governs VPN reestablishment after
390  interruptions */
391  ConnectFailurePolicy, /**< This preference gives the network administrator
392  the ability to dictate the network access allowed
393  by the client endpoint device following a VPN
394  connection establishment failure. It is a component
395  of AlwaysOn */
396  AllowCaptivePortalRemediation, /**< This preference gives the network administrator
397  the ability to dictate the network access
398  allowed by the client endpoint device following
399  a VPN connection establishment failure it is a
400  component of AlwaysOn */
401  CaptivePortalRemediationTimeout, /**< This preference allows the network administrator
402  the ability to impose a time limit for captive portal
403  remediation when the ConnectFailurePolicy value is Closed
404  It is a component of AlwaysOn */
405  ApplyLastVPNLocalResourceRules, /**< This preference gives the network administrator
406  the ability to allow split routes and firewall rules
407  to be applied following a VPN connection establishment
408  failure when the ConnectFailurePolicy value is Closed
409  It is a component of AlwaysOn */
410  AllowVPNDisconnect, /**< During Always On, this specifies that the user is allowed to
411  disconnect the VPN session. */
412  AllowedHosts, /**< During Always On, user has access to the specified hosts
413  when VPN is disconnected. */
414  EnableScripting, /**< This preference allows an administrator to
415  enable scripting (on connect or on
416  disconnect). */
417  TerminateScriptOnNextEvent, /**< This preference dictates whether or not
418  AnyConnect will terminate a running script
419  process if a transition to another
420  scriptable event occurs. */
421  EnablePostSBLOnConnectScript, /**< This preference is used to control whether
422  or not the OnConnect script will be launched
423  from the desktop GUI when a tunnel has been
424  established via SBL. */
425  AutomaticCertSelection, /**< This preference dictates whether or not to disable
426  the default automatic certificate selection for user
427  certificates. If disabled, a certificate selection dialog is
428  displayed. This only applies if the GUI is enabled
429  and not SBL. This only applies to Windows (not WinMobile). */
430  RetainVpnOnLogoff, /**< First control of the logoff behavior. This preference allows
431  an administrator to control if the VPN is terminated or retained
432  after user logs off.*/
433  UserEnforcement, /**< Second control of the logoff behavior. When the VPN connection has
434  been retained after user logged off. Controls what user can log in
435  and keep the VPN connection. Options are same user only and any user. */
436  DeviceLockRequired, /**< This preference indicates whether or not
437  a Windows Mobile device must be configured
438  with a password or PIN prior to establishing
439  a VPN connection. This configuration is
440  only valid on Windows Mobile devices that
441  use the Microsoft Default Local
442  Authentication Provider (LAP). */
443  DeviceLockMaximumTimeoutMinutes, /**< When set to a non-negative number,
444  this preference specifies the maximum
445  number of minutes a device can be
446  inactive before device lock takes
447  into effect. (WM5/WM5AKU2+) */
448  DeviceLockMinimumPasswordLength, /**< When set to a non-negative number,
449  this preference specifies that any
450  PIN/password used for device lock
451  must be equal to or longer than
452  the specified value, in characters.
453  This setting must be pushed down to
454  the mobile device by syncing with
455  an Exchange server before it can be
456  enforced. (WM5AKU2+) */
457  DeviceLockPasswordComplexity, /**< This preference checks whether or
458  not the password belongs to one of
459  three subtypes: alpha, pin, strong */
460  EnableAutomaticServerSelection, /**< Automatic server selection will
461  automatically select the optimal
462  secure gateway for the endpoint */
463  AutoServerSelectionImprovement, /**< During a reconnection attempt after
464  a system resume, this setting
465  specifies the minimum estimated
466  performance improvement required to
467  justify transitioning a user to a new server
468  This value represents percentage in 0..100 */
469  AutoServerSelectionSuspendTime, /**< During a reconnection attempt after
470  a system resume, this specifies the
471  minimum time a user must have been
472  suspended in order to justify a new
473  server selection calculation. Unit is hours */
474  AuthenticationTimeout, /**< Time, in seconds, that the client waits
475  for authentication to be completed.*/
476  SafeWordSofTokenIntegration, /**< This preference will enable the administrator and possibly
477  the end user to enable SafeWord SofToken integration.
478  Options are Enabled (true) and Disabled (false - default). */
479  AllowIPsecOverSSL, /**< if 'true' then tunneling of IPSEC over SSL
480  is made possible with help from the ASA.
481  */
482  ClearSmartcardPin, /**< This preference controls whether the smartcard pin
483  will be cleared on a successful connection*/
484  IPProtocolSupport, /**< This preference controls which protocol(s) will be
485  allowed for the connection*/
486  CaptivePortalRemediationBrowserFailover, /**< This preference is applicable to enhanced captive portal
487  remediation and specifies whether the user is allowed to
488  opt for an external browser for remediation, as opposed to
489  the AnyConnect browser. */
490  AllowManualHostInput, /**< This preference specifies whether the user
491  is allowed to type a new hostname in the VPN
492  edit box. */
493  BlockUntrustedServers, /**< This preference specifies whether the user wants
494  to allow for connections to secure gateways with
495  certificate errors. */
496  PublicProxyServerAddress, /**< This preference specifies the public proxy server
497  address to be used. This number is in the format
498  ServerAddr:ServerPort (ex. 101.89.85.444:8080)
499  or just the FQDN. */
500  CertificatePinning, /**< This preference specifies whether Certificate Pinning
501  check should be performed during server certificate
502  verification. */
503  UnknownPreference
504 };
505 
506 
507 /**
508  * Indicates the scope of the preferences contained in a PreferenceInfo object
509  */
510 #if defined(__midl)
511 [v1_enum] /*serialize as 32 bits*/
512 #endif
514 {
515  User, /**< Indicates that the preferences were set by a user */
516  Global, /**< Indicates that the preferences are global */
517  UserAndGlobal /**< Indicates that we have both user and global preferences */
518 };
519 
520 /**
521  * Indicates the client mode of operation. Unlike tunneling mode or other
522  * mutually exclusive modes, client operating modes are independent settings,
523  * several of which can be turned on simultaneously.
524  */
525 #if defined(__midl)
526 [v1_enum] /*serialize as 32 bits*/
527 #endif
529 {
530  FIPS = (1 << 0), /**< Indicates that the client is
531  running in FIPS mode. */
532  StartBeforeLogon = (1 << 1), /**< Indicates that the client is
533  running in Start Before Login
534  mode. */
535  GUI = (1 << 2), /**< Indicates that the client is
536  a GUI client. */
537  TrustedNetworkDetection = (1 << 3), /**< Indicates that a Trusted Network
538  Detection policy is enabled for
539  the client. */
540  AlwaysOnVpn = (1 << 4), /**< Indicates that the Always On
541  policy is enabled for the client. */
542  NetworkIssue = (1 << 5), /**< For user notifications only.
543  Indication by API to the UI that
544  there is a network condition. */
545  Quarantined = (1 << 6), /**< Indicates that the VPN session is being
546  Quarantined by the secure gateway. */
547  AutomaticHeadendSelection= (1 << 7), /**< Indicates that Automatic Headend
548  is enabled. */
549  DisconnectAllowed = (1 << 8), /**< Indicates that the user is allowed
550  to disconnect the VPN based on
551  policy. */
552  VPNDisabled = (1 << 9), /**< Indicates that the VPN service is
553  to be marked as disabled. */
554  SCEPMode = (1 << 10), /**< Indicates that the client is
555  performing a SCEP cert enrollment. */
556  OnTrustedNetwork = (1 << 11), /**< Indicates that at last check, the
557  client detected that it was on
558  a trusted network. */
559  ManualHostInputAllowed = (1 << 12), /**< Indicates that the user is allowed
560  to add a new host by typing its name
561  in the VPN edit box. */
562  ErrorSuppressed = (1 << 13), /**< Indicates a connection error has
563  been returned fronm the agent, but
564  was suppressed to warning to
565  prevent popup dialog in the UI. */
566  StrictMode = (1 << 14), /**< Indicates that the client is
567  running in strict certificate trust mode. */
568  CLI = (1 << 15), /**< Indicates that the client is
569  a CLI client. */
570  Management = (1 << 16) /**< Indicates that the client is strictly
571  used for initiating a management tunnel. */
572 };
573 
574 /**
575  * Indicates the last error seen by the API in this connection attempt.
576  */
577 #if defined(__midl)
578 [v1_enum] /*serialize as 32 bits*/
579 #endif
581 {
582  VPNSuccess = 0, /**< No error has occurred. */
583  VPNError_Generic_FatalError = 1, /**< An error of unknown type has
584  occured */
585 
586  VPNError_Connection_Error = 100, /**< An unknown connection error has
587  occured, such as bad hostname, bad
588  group, etc. */
589  VPNError_Connection_InvalidGroupURL, /**< Invalid Group URL specified in the
590  server address */
591 
592  VPNError_Network_Error = 200, /**< An unknown network error has
593  occured, such as DNS resolution
594  error, unable to open socket,
595  routing error, captive portal,
596  etc. */
597 
598  VPNError_Authentication_Error = 300, /**< An unknown user authenication
599  error has occured. */
600 
601  VPNError_Authentication_DAP_Terminate, /**< Access Denied: Your system does
602  not meet policy requirements (DAP). */
603 
604  VPNError_ClientCertificate_UnknownError = 400, /**< An unknown client
605  certificate error has
606  occured. */
607  VPNError_ClientCertificate_Missing, /**< A client certificate is required
608  but no client certificate has been
609  found on the system. */
610  VPNError_ClientCertificate_Expired, /**< The client certificate has expired */
611  VPNError_ClientCertificate_NotYetValid, /**< The client certificate is not
612  yet valid. */
613 
614  VPNError_ServerCertificate_UnknownError = 500, /**< An unknown error has
615  occured when validating
616  the server certificate. */
617  VPNError_ServerCertificate_Expired, /**< The server certificate has
618  expired. */
619  VPNError_ServerCertificate_NotYetValid /**< The server certificate is not
620  yet valid. */
621 };
622 
624 {
625  CertAuth_Automatic, /**< Will try each available certificate in succession
626  until authentication is obtained or we run out of
627  available certificates */
628  CertAuth_Disabled, /**< Will disable Certificate Based Authentication */
629  CertAuth_Manual /**< Will only use preconfigured certificate to attempt
630  Certificate Based Authentication */
631 };
632 
633 enum CertificateType
634 {
635  CertificateType_Client,
636  CertificateType_SystemTrusted,
637  CertificateType_Server
638 };
639 
640 enum CertConfirmReason
641 {
642  CertConfirmReason_Unspecified,
643  CertConfirmReason_NameMismatch,
644  CertConfirmReason_Expired,
645  CertConfirmReason_NotValidYet,
646  CertConfirmReason_UntrustedSource,
647  CertConfirmReason_InvalidUse,
648  CertConfirmReason_Revoked,
649  CertConfirmReason_Malformed,
650  CertConfirmReason_NotFipsCompliant,
651  CertConfirmReason_InvalidateDate,
652  CertConfirmReason_SignatureAlgorithm,
653  CertConfirmReason_KeySize
654 };
655 
656 enum UserResponseError
657 {
658  UserResponseError_None,
659  UserResponseError_Unspecified,
660  UserResponseError_BadServerCert,
661  UserResponseError_SsoNavigation,
662  UserResponseError_SsoGettingCookie,
663  UserResponseError_SsoTimeout,
664  UserResponseError_SsoMissingDependency,
665  UserResponseError_SsoClientCertRequest,
666  UserResponseError_SsoAborted,
667 };
668 
669 #if defined(__midl)
670 [v1_enum] /*serialize as 32 bits*/
671 #endif
672 enum ClientType
673 {
674  ClientType_GUI,
675  ClientType_GUI_SBL,
676  ClientType_CLI,
677  ClientType_MGMT
678 };
679 
680 #endif // _APISTDHEADER_
VPNError_ClientCertificate_NotYetValid
@ VPNError_ClientCertificate_NotYetValid
Definition: api.h:611
CertificateStoreMac
@ CertificateStoreMac
Definition: api.h:294
ConnectFailurePolicy
@ ConnectFailurePolicy
Definition: api.h:391
REFRESHHOSTNAMES
@ REFRESHHOSTNAMES
Definition: api.h:192
Prompt_Hidden
@ Prompt_Hidden
Definition: api.h:262
SuspendOnConnectedStandby
@ SuspendOnConnectedStandby
Definition: api.h:325
VPNError_Connection_Error
@ VPNError_Connection_Error
Definition: api.h:586
WMHintReason
WMHintReason
Definition: api.h:207
AutoConnectOnStart
@ AutoConnectOnStart
Definition: api.h:308
MINIMIZE
@ MINIMIZE
Definition: api.h:189
MsgType_Warn
@ MsgType_Warn
Definition: api.h:112
CREDENTIALS
@ CREDENTIALS
Definition: api.h:235
CertificateStore
@ CertificateStore
Definition: api.h:290
MANUAL_PKCS12_IMPORT
@ MANUAL_PKCS12_IMPORT
Definition: api.h:239
VPNError_Network_Error
@ VPNError_Network_Error
Definition: api.h:592
DeviceLockPasswordComplexity
@ DeviceLockPasswordComplexity
Definition: api.h:457
DeviceLockMaximumTimeoutMinutes
@ DeviceLockMaximumTimeoutMinutes
Definition: api.h:443
AutoUpdate
@ AutoUpdate
Definition: api.h:332
ClearSmartcardPin
@ ClearSmartcardPin
Definition: api.h:482
FIPS
@ FIPS
Definition: api.h:530
ErrorSuppressed
@ ErrorSuppressed
Definition: api.h:562
EnablePostSBLOnConnectScript
@ EnablePostSBLOnConnectScript
Definition: api.h:421
DISCONNECT
@ DISCONNECT
Definition: api.h:216
VPNError_ServerCertificate_UnknownError
@ VPNError_ServerCertificate_UnknownError
Definition: api.h:614
WindowsVPNEstablishment
@ WindowsVPNEstablishment
Definition: api.h:344
PAUSING
@ PAUSING
Definition: api.h:153
EnableScripting
@ EnableScripting
Definition: api.h:414
MsgType_Alert
@ MsgType_Alert
Definition: api.h:111
GUI
@ GUI
Definition: api.h:535
PreferenceId
PreferenceId
Definition: api.h:281
SDITokenType
SDITokenType
Definition: api.h:129
DisableCaptivePortalDetection
@ DisableCaptivePortalDetection
Definition: api.h:316
VPNError_Generic_FatalError
@ VPNError_Generic_FatalError
Definition: api.h:583
AutoServerSelectionImprovement
@ AutoServerSelectionImprovement
Definition: api.h:463
AllowedHosts
@ AllowedHosts
Definition: api.h:412
DisconnectAllowed
@ DisconnectAllowed
Definition: api.h:549
Prompt_Header
@ Prompt_Header
Definition: api.h:260
TrustedNetworkPolicy
@ TrustedNetworkPolicy
Definition: api.h:372
Quarantined
@ Quarantined
Definition: api.h:545
Prompt_Banner
@ Prompt_Banner
Definition: api.h:258
PAUSED
@ PAUSED
Definition: api.h:154
AllowIPsecOverSSL
@ AllowIPsecOverSSL
Definition: api.h:479
AutomaticVPNPolicy
@ AutomaticVPNPolicy
Definition: api.h:369
SERVICESTOPPED
@ SERVICESTOPPED
Definition: api.h:217
DeviceLockRequired
@ DeviceLockRequired
Definition: api.h:436
UntrustedNetworkPolicy
@ UntrustedNetworkPolicy
Definition: api.h:375
CLOSECREDENTIALPOPUP
@ CLOSECREDENTIALPOPUP
Definition: api.h:195
MessageType
MessageType
Definition: api.h:109
CertAuthMode
CertAuthMode
Definition: api.h:624
Prompt_Input
@ Prompt_Input
Definition: api.h:255
CONNECT
@ CONNECT
Definition: api.h:219
DISCONNECTED
@ DISCONNECTED
Definition: api.h:144
SSOPOLLING
@ SSOPOLLING
Definition: api.h:155
AutomaticHeadendSelection
@ AutomaticHeadendSelection
Definition: api.h:547
MinimizeOnConnect
@ MinimizeOnConnect
Definition: api.h:311
VPNError_ClientCertificate_Missing
@ VPNError_ClientCertificate_Missing
Definition: api.h:607
WMHint
WMHint
Definition: api.h:188
PublicProxyServerAddress
@ PublicProxyServerAddress
Definition: api.h:496
VPNState
VPNState
Definition: api.h:142
MsgType_UrlError
@ MsgType_UrlError
Definition: api.h:115
DeviceLockMinimumPasswordLength
@ DeviceLockMinimumPasswordLength
Definition: api.h:448
UserAndGlobal
@ UserAndGlobal
Definition: api.h:517
Management
@ Management
Definition: api.h:570
AlwaysOnVpn
@ AlwaysOnVpn
Definition: api.h:540
ProxySettings
@ ProxySettings
Definition: api.h:354
CertAuth_Disabled
@ CertAuth_Disabled
Definition: api.h:628
CertificateStoreOverride
@ CertificateStoreOverride
Definition: api.h:286
WindowsLogonEnforcement
@ WindowsLogonEnforcement
Definition: api.h:340
CertAuth_Automatic
@ CertAuth_Automatic
Definition: api.h:625
VPNError_ClientCertificate_Expired
@ VPNError_ClientCertificate_Expired
Definition: api.h:610
AutomaticCertSelection
@ AutomaticCertSelection
Definition: api.h:425
MsgType_Announcement
@ MsgType_Announcement
Definition: api.h:116
MsgType_Info
@ MsgType_Info
Definition: api.h:113
REFRESHPREFS
@ REFRESHPREFS
Definition: api.h:193
Prompt_Password
@ Prompt_Password
Definition: api.h:256
PPPExclusionServerIP
@ PPPExclusionServerIP
Definition: api.h:364
VPNError
VPNError
Definition: api.h:581
SECONDGUISTART
@ SECONDGUISTART
Definition: api.h:208
CertAuth_Manual
@ CertAuth_Manual
Definition: api.h:629
BlockUntrustedServers
@ BlockUntrustedServers
Definition: api.h:493
Prompt_CheckBox
@ Prompt_CheckBox
Definition: api.h:264
VPNError_Authentication_DAP_Terminate
@ VPNError_Authentication_DAP_Terminate
Definition: api.h:601
PROXY
@ PROXY
Definition: api.h:237
DISCONNECTING
@ DISCONNECTING
Definition: api.h:146
TrustedNetworkDetection
@ TrustedNetworkDetection
Definition: api.h:537
VPNSubState
VPNSubState
Definition: api.h:166
PROXYREQUEST
@ PROXYREQUEST
Definition: api.h:212
SERVICEFAILURE
@ SERVICEFAILURE
Definition: api.h:214
AllowVPNDisconnect
@ AllowVPNDisconnect
Definition: api.h:410
EnableAutomaticServerSelection
@ EnableAutomaticServerSelection
Definition: api.h:460
VPNError_Authentication_Error
@ VPNError_Authentication_Error
Definition: api.h:598
CLI
@ CLI
Definition: api.h:568
ApplyLastVPNLocalResourceRules
@ ApplyLastVPNLocalResourceRules
Definition: api.h:405
SINGLESIGNON
@ SINGLESIGNON
Definition: api.h:243
OperatingMode
OperatingMode
Definition: api.h:529
StrictMode
@ StrictMode
Definition: api.h:566
UseStartBeforeLogon
@ UseStartBeforeLogon
Definition: api.h:328
TrustedDNSServers
@ TrustedDNSServers
Definition: api.h:381
RSASecurIDIntegration
@ RSASecurIDIntegration
Definition: api.h:335
ConnectPromptType
ConnectPromptType
Definition: api.h:231
AllowCaptivePortalRemediation
@ AllowCaptivePortalRemediation
Definition: api.h:396
ManualHostInputAllowed
@ ManualHostInputAllowed
Definition: api.h:559
Prompt_Combo
@ Prompt_Combo
Definition: api.h:259
CONNECTED
@ CONNECTED
Definition: api.h:143
SINGLELOGOUT
@ SINGLELOGOUT
Definition: api.h:244
OPEN
@ OPEN
Definition: api.h:190
SHOWCONNECTING
@ SHOWCONNECTING
Definition: api.h:194
SafeWordSofTokenIntegration
@ SafeWordSofTokenIntegration
Definition: api.h:476
VPNError_ServerCertificate_Expired
@ VPNError_ServerCertificate_Expired
Definition: api.h:617
VPNSuccess
@ VPNSuccess
Definition: api.h:582
VPNError_ClientCertificate_UnknownError
@ VPNError_ClientCertificate_UnknownError
Definition: api.h:604
MsgType_Error
@ MsgType_Error
Definition: api.h:110
User
@ User
Definition: api.h:515
VPNError_Connection_InvalidGroupURL
@ VPNError_Connection_InvalidGroupURL
Definition: api.h:589
PPPExclusion
@ PPPExclusion
Definition: api.h:359
AllowManualHostInput
@ AllowManualHostInput
Definition: api.h:490
STATUS
@ STATUS
Definition: api.h:241
TerminateScriptOnNextEvent
@ TerminateScriptOnNextEvent
Definition: api.h:417
UserEnforcement
@ UserEnforcement
Definition: api.h:433
QUIT
@ QUIT
Definition: api.h:191
CERTIFICATE
@ CERTIFICATE
Definition: api.h:232
AllowLocalProxyConnections
@ AllowLocalProxyConnections
Definition: api.h:356
AutoReconnect
@ AutoReconnect
Definition: api.h:318
AuthenticationTimeout
@ AuthenticationTimeout
Definition: api.h:474
LinuxVPNEstablishment
@ LinuxVPNEstablishment
Definition: api.h:351
VPNError_ServerCertificate_NotYetValid
@ VPNError_ServerCertificate_NotYetValid
Definition: api.h:619
LocalLanAccess
@ LocalLanAccess
Definition: api.h:314
RetainVpnOnLogoff
@ RetainVpnOnLogoff
Definition: api.h:430
IPProtocolSupport
@ IPProtocolSupport
Definition: api.h:484
CertificateStoreLinux
@ CertificateStoreLinux
Definition: api.h:298
StartBeforeLogon
@ StartBeforeLogon
Definition: api.h:532
AutoReconnectBehavior
@ AutoReconnectBehavior
Definition: api.h:321
ShowPreConnectMessage
@ ShowPreConnectMessage
Definition: api.h:302
OnTrustedNetwork
@ OnTrustedNetwork
Definition: api.h:556
NetworkIssue
@ NetworkIssue
Definition: api.h:542
LEGACY_SINGLESIGNON
@ LEGACY_SINGLESIGNON
Definition: api.h:245
CONNECTING
@ CONNECTING
Definition: api.h:145
AlwaysOn
@ AlwaysOn
Definition: api.h:389
RECONNECTING
@ RECONNECTING
Definition: api.h:147
CaptivePortalRemediationTimeout
@ CaptivePortalRemediationTimeout
Definition: api.h:401
Prompt_SSO
@ Prompt_SSO
Definition: api.h:265
LinuxLogonEnforcement
@ LinuxLogonEnforcement
Definition: api.h:347
TrustedDNSDomains
@ TrustedDNSDomains
Definition: api.h:378
SCEPMode
@ SCEPMode
Definition: api.h:554
CaptivePortalRemediationBrowserFailover
@ CaptivePortalRemediationBrowserFailover
Definition: api.h:486
AutoServerSelectionSuspendTime
@ AutoServerSelectionSuspendTime
Definition: api.h:469
CertificatePinning
@ CertificatePinning
Definition: api.h:500
DisableUntrustedInterfaces
@ DisableUntrustedInterfaces
Definition: api.h:386
VPNDisabled
@ VPNDisabled
Definition: api.h:552
PreferenceScope
PreferenceScope
Definition: api.h:514
MsgType_Status
@ MsgType_Status
Definition: api.h:114
Global
@ Global
Definition: api.h:516
ServiceDisable
@ ServiceDisable
Definition: api.h:282
PromptType
PromptType
Definition: api.h:255
TrustedHttpsServerList
@ TrustedHttpsServerList
Definition: api.h:384