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