-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathacexport.h
370 lines (324 loc) · 16 KB
/
acexport.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
/* acexport.h -- required include file for ACE/Agent API calls */
/******************************************************************************
* COPYRIGHT © 1995-2011 EMC CORPORATION **
* ---ALL RIGHTS RESERVED--- *
* *
* THIS SOFTWARE IS PROPRIETARY AND CONFIDENTIAL TO EMC CORPORATION , IS *
* FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ONLY IN ACCORDANCE THE *
* TERMS OF SUCH LICENSE AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. *
* THIS SOFTWARE OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE *
* MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE *
* SOFTWARE IS HEREBY TRANSFERRED. *
* *
* THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND *
* SHOULD NOT BE CONSTRUED AS A COMMITMENT BY EMC CORPORATION *
******************************************************************************/
#ifndef ACEXPORT_H
#define ACEXPORT_H
#include <time.h>
#ifdef WIN32
#pragma pack(push,8)
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
* we'll do this before including the header files.
*/
#ifndef WIN32
#define WINAPI /* must hide windows calling convention */
#define USE_ACE_AGENT_API_PROTOTYPES
#endif
#include "sdacmvls.h" /* return codes from ACE/Server */
#include "acclnt.h" /* return codes from AceXxx functions */
#include "sdi_defs.h" /* definition of SD_CLIENT structure */
#include "sd_types.h" /* new portability macros */
/*
* This enum type is used
* to tell the api what type of agent is installed
*/
typedef enum
{
RSA_DA_AGENT_LOCAL=0,
RSA_DA_AGENT_DOMAIN=1,
RSA_DA_AGENT_ANY=2,
RSA_DA_AGENT_NONE=3
} RSA_DA_AGENT_TYPE;
/*
* The AceDAGetAuthData() call uses this enum type
* to determin what attributes to return to the caller
*/
typedef enum
{
RSA_DA_ATTR_AUTH_TIME, /* The time the auth successfully matched */
RSA_DA_ATTR_POA , /* The Hash Derived POA Key associated with the */
/* successful authentication */
RSA_DA_ATTR_EAC_EXP, /* If the authentication was an EAC auth, this */
/* returns the date and time the EAC code used */
/* will expire. */
RSA_DA_ATTR_TICKET,
RSA_DA_ATTR_LOGIN_PW,
RSA_DA_ATTR_HIGH_WATER_MARK,
RSA_DA_ATTR_SERVER_LIST,
RSA_DA_ATTR_DOWLOAD_STATUS,
RSA_DA_ATTR_TOKEN_SERIAL,
RSA_DA_ATTR_PASSWORD_CHANGED,
RSA_DA_ATTR_POLICY_CHANGED,
RSA_DA_ATTR_DADAYS,
RSA_DA_ATTR_LPIENABLED,
RSA_DA_ATTR_DAENABLED,
RSA_DA_ATTR_SALT,
RSA_DA_ATTR_LAST_AVAILABLE,
RSA_DA_ATTR_OA_VERSION,
RSA_DA_ATTR_PIN_LENGTH
} RSA_DA_ATTR;
#ifdef WIN32
#include "status_display.h"
#endif
/* Holds pin limits and related values */
typedef struct tagSD_PIN
{
SD_CHAR Min;
SD_CHAR Max;
SD_CHAR Selectable;
SD_CHAR Alphanumeric;
SD_CHAR System[LENPRNST+2];
} SD_PIN;
/* ACE/Agent API handle */
typedef int SDI_HANDLE, * LP_SDI_HANDLE;
/* invalid ACE/Agent API handle */
#define SDI_HANDLE_NONE 0
/*
* Additional RSA_DA_ATTR used in AceGetDAAuthData (really to get
* something out of the sUSER structure).
*/
#define RSA_DA_ATTR_DA_HANDLE -1
#define RSA_DA_ATTR_IS_DISCONNECTED -2
#define RSA_DA_ATTR_DA_ADDRESS -3
#define RSA_DA_ATTR_DA_PORT -4
#define RSA_DA_ATTR_DA_STATE -5 /* Same as AceGetDAuthenticationStatus */
#define RSA_DA_ATTR_DA_STATUS -6 /* Status of the last call to AceDACheck */
/*
* SET Attributes
*/
typedef enum
{
RSA_AUTH_SET_ATTR_LPI, /* Login Password Integration */
RSA_AUTH_SET_ATTR_DL_DAYFILES, /* Download dayfiles */
RSA_AUTH_SET_ATTR_RADIUS_PROFILE, /* Third-party Auth Extension */
RSA_AUTH_SET_ATTR_OFFLINE_AUTH, /* Authenticate offline */
RSA_AUTH_SET_ATTR___RESERVED__, /* Reserved value */
RSA_AUTH_SET_ATTR___RESERVED2__, /* Reserved value */
RSA_AUTH_SET_ATTR_DOMAIN_CLIENT_VERSION, /* Indicate the domain agent client is 6.1 or after*/
RSA_AUTH_SET_ATTR_AGENT_TYPE, /* is it LAC or DAH installation */
RSA_AUTH_SET_ATTR_RADIUS_EXTENSIONS, /* Radius User Extensions requested */
RSA_AUTH_SET_ATTR_EAP32
/* Insert any new SET attribute types here */
} RSA_AUTH_SET_ATTR;
/*
* GET Attributes
*/
typedef enum
{
RSA_AUTH_GET_ATTR_RADIUS_PROFILE, /* Get Radius profile */
RSA_AUTH_GET_ATTR_RADIUS_EXTENSIONS,/* Get Radius user extensions */
RSA_AUTH_GET_ATTR_PIN_LENGTH, /* Get user's PIN length */
RSA_AUTH_GET_ATTR_EAP32_KEYS, /* Get EAP Keys */
RSA_AUTH_GET_ATTR_EAP32_PEPPER, /* Get EAP data */
RSA_AUTH_GET_ATTR_AUTHENTICATOR_ID, /* Get the user's token ID */
RSA_AUTH_GET_ATTR_AUTH_HASH, /* Get the authentication hash */
RSA_AUTH_GET_ATTR_DOMAIN_CLIENT_VERSION, /* Indicate the domain agent client is 6.1 or after*/
RSA_AUTH_GET_ATTR_AGENT_TYPE, /* is it LAC or DAH installation */
RSA_AUTH_GET_ATTR_EAP32_MAC, /* EAP32 MacA */
RSA_AUTH_GET_ATTR_ENC_SYSTEM_PIN /* Encrypted System Pin, for new pin mode */
/* Insert any new GET attribute types here */
} RSA_AUTH_GET_ATTR;
/*
* Authentication Credential Types
*/
typedef enum
{
RSA_AUTH_CRED_TYPE_PASSCODE, /* Pass-code: Pin, Token-code, or both */
RSA_AUTH_CRED_TYPE_EAP32, /* EAP32 Auth Credential */
RSA_AUTH_CRED_TYPE_EAP32_RESUME /* EAP32 Session Resumption Auth Credential */
/* Insert any new credential types here */
} RSA_AUTH_CRED_TYPE;
/* this is what our callbacks always look like */
typedef void (WINAPI *ACECALLBACK)(SDI_HANDLE);
/* Unix will use these prototypes always */
#ifdef USE_ACE_AGENT_API_PROTOTYPES
/* initialization and shutdown calls */
SD_BOOL WINAPI AceInitialize ( void );
SD_BOOL WINAPI AceInitializeEx ( SD_CHAR *ConfigFile, SD_CHAR *SharedMemoryName, SD_U32 HashIndexSize );
SD_BOOL WINAPI AceShutdown ( ACECALLBACK CleanupCallback );
void WINAPI AceCleanup ( ACECALLBACK CleanupCallback );
void WINAPI AceDisableNodeSecretCache ( void );
void WINAPI AceRefreshIP ( void );
/* New Asynchronous and thread-safe calls */
int WINAPI AceInit ( LP_SDI_HANDLE, void *, ACECALLBACK );
int WINAPI AceInitEx ( LP_SDI_HANDLE, void *, ACECALLBACK, RSA_DA_AGENT_TYPE );
int WINAPI AceLock ( SDI_HANDLE, ACECALLBACK );
int WINAPI AceCheck ( SDI_HANDLE, ACECALLBACK );
int WINAPI AceClientCheck ( SDI_HANDLE, ACECALLBACK );
int WINAPI AceSendNextPasscode ( SDI_HANDLE, ACECALLBACK );
int WINAPI AceSendPin ( SDI_HANDLE, ACECALLBACK );
int WINAPI AceCancelPin ( SDI_HANDLE, ACECALLBACK );
int WINAPI AceClose ( SDI_HANDLE, ACECALLBACK );
int WINAPI AceGetAuthenticationStatus ( SDI_HANDLE, SD_I32 * );
int WINAPI AceGetMinPinLen ( SDI_HANDLE, SD_CHAR * );
int WINAPI AceGetMaxPinLen ( SDI_HANDLE, SD_CHAR * );
int WINAPI AceGetUserSelectable( SDI_HANDLE, SD_CHAR * );
int WINAPI AceGetAlphanumeric ( SDI_HANDLE, SD_CHAR * );
int WINAPI AceGetSystemPin ( SDI_HANDLE, SD_CHAR * );
int WINAPI AceGetPinParams ( SDI_HANDLE, SD_PIN* );
int WINAPI AceGetUserData ( SDI_HANDLE, void ** );
int WINAPI AceGetLoginPW ( SDI_HANDLE, SD_CHAR *, SD_U32 * );
int WINAPI AceSetLoginPW ( SDI_HANDLE, SD_CHAR * , SD_U32 );
int WINAPI AceGetDAuthenticationStatus(SDI_HANDLE, INT32BIT *);
int WINAPI AceGetDAAuthData ( SDI_HANDLE, RSA_DA_ATTR, void *, SD_U32*);
int WINAPI AceGetAuthAttr (SDI_HANDLE, RSA_AUTH_GET_ATTR, void *, SD_U32 *);
int WINAPI AceGetTime ( SDI_HANDLE, SD_I32 * );
int WINAPI AceGetShell ( SDI_HANDLE, SD_CHAR * );
int WINAPI AceGetPepperPolicy (SDI_HANDLE, char *, char *);
int WINAPI AceGetIterCountPolicy(SDI_HANDLE, INT32BIT *, INT32BIT *);
int WINAPI AceGetRealmID ( SDI_HANDLE, char* );
int WINAPI AceSetPasscode ( SDI_HANDLE, SD_CHAR * );
int WINAPI AceSetCredential ( SDI_HANDLE, RSA_AUTH_CRED_TYPE, void *, SD_U32);
int WINAPI AceSetUsername ( SDI_HANDLE, SD_CHAR * );
int WINAPI AceSetClientAddr ( SDI_HANDLE, SD_U32 );
int WINAPI AceSetNextPasscode ( SDI_HANDLE, SD_CHAR * );
int WINAPI AceSetNextCredential( SDI_HANDLE, void *, SD_U32 );
int WINAPI AceSetPin ( SDI_HANDLE, SD_CHAR * );
int WINAPI AceSetPinCredential ( SDI_HANDLE, void *, SD_U32 );
int WINAPI AceSetUserClientAddress ( SDI_HANDLE, SD_UCHAR * );
int WINAPI AceSetUserData ( SDI_HANDLE, void * );
int WINAPI AceSetTimeout ( SDI_HANDLE, time_t, ACECALLBACK );
int WINAPI AceSetAuthAttr ( SDI_HANDLE, RSA_AUTH_SET_ATTR, void *, SD_U32);
/* New Synchronous and thread-safe calls */
int WINAPI SD_Init ( LP_SDI_HANDLE );
int WINAPI SD_InitEx ( LP_SDI_HANDLE, SD_BOOL, RSA_DA_AGENT_TYPE );
int WINAPI SD_Lock ( SDI_HANDLE, SD_CHAR * );
int WINAPI SD_Check ( SDI_HANDLE, SD_CHAR *, SD_CHAR * );
int WINAPI SD_CheckCredential ( SDI_HANDLE, SD_CHAR *, RSA_AUTH_CRED_TYPE, void *, SD_U32 );
int WINAPI SD_ClientCheck ( SDI_HANDLE, SD_CHAR *, SD_CHAR *, SD_U32 );
int WINAPI SD_ClientCheckCredential
( SDI_HANDLE, SD_CHAR *, RSA_AUTH_CRED_TYPE, void *, SD_U32, SD_U32 );
int WINAPI SD_Next ( SDI_HANDLE, SD_CHAR * );
int WINAPI SD_NextCredential ( SDI_HANDLE, void *, SD_U32 );
int WINAPI SD_Pin ( SDI_HANDLE, SD_CHAR * );
int WINAPI SD_PinCredential ( SDI_HANDLE, void *, SD_U32 );
int WINAPI SD_Close ( SDI_HANDLE );
/* New Synchronous and thread-safe calls */
SD_ERROR WINAPI AceStartAuth(LP_SDI_HANDLE,
SD_CHAR *userID,
SD_I32 userIDLen,
SD_BOOL *moreData,
SD_BOOL *noEcho,
SD_I32 *respTimeout,
SD_I32 *nextRespLen,
SD_CHAR *promptStr,
SD_I32 *promptStrLen);
SD_ERROR WINAPI AceContinueAuth(SDI_HANDLE,
SD_CHAR *userID,
SD_I32 userIDLen,
SD_BOOL *moreData,
SD_BOOL *noEcho,
SD_I32 *respTimeout,
SD_I32 *nextRespLen,
SD_CHAR *promptStr,
SD_I32 *promptStrLen);
SD_ERROR WINAPI AceCloseAuth(SDI_HANDLE);
#else /* !USE_ACE_AGENT_API_PROTOTYPES */
/* initialization and shutdown calls */
typedef SD_BOOL (WINAPI *ACEINITIALIZEPROC) ( void );
typedef SD_BOOL (WINAPI *ACEINITIALIZEEXPROC) ( SD_CHAR *, SD_CHAR *, SD_U32 );
typedef SD_BOOL (WINAPI *ACESHUTDOWNPROC) ( ACECALLBACK );
typedef void (WINAPI *ACECLEANUPPROC) ( ACECALLBACK );
typedef void (WINAPI *ACEDISABLENODESECRETCACHE) ( void );
typedef void (WINAPI *ACEREFRESHIP) ( void );
/* New Asynchronous and thread-safe calls */
typedef int (WINAPI *ACEINITPROC) ( LP_SDI_HANDLE, void *, ACECALLBACK );
typedef int (WINAPI *ACEINITEXPROC) ( LP_SDI_HANDLE, void *, ACECALLBACK, RSA_DA_AGENT_TYPE );
typedef int (WINAPI *ACELOCKPROC) ( SDI_HANDLE, ACECALLBACK );
typedef int (WINAPI *ACECHECKPROC) ( SDI_HANDLE, ACECALLBACK );
typedef int (WINAPI *ACECLIENTCHECKPROC) ( SDI_HANDLE, ACECALLBACK );
typedef int (WINAPI *ACESENDNEXTPASSCODEPROC) ( SDI_HANDLE, ACECALLBACK );
typedef int (WINAPI *ACESENDPINPROC) ( SDI_HANDLE, ACECALLBACK );
typedef int (WINAPI *ACECANCELPINPROC) ( SDI_HANDLE, ACECALLBACK );
typedef int (WINAPI *ACECLOSEPROC) ( SDI_HANDLE, ACECALLBACK );
typedef int (WINAPI *ACEGETAUTHENTICATIONSTATUSPROC) ( SDI_HANDLE, SD_I32 * );
typedef int (WINAPI *ACEGETMINPINLENPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACEGETMAXPINLENPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACEGETUSERSELECTABLEPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACEGETALPHANUMERICPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACEGETSYSTEMPINPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACEGETPINPARAMSPROC) ( SDI_HANDLE, SD_PIN * );
typedef int (WINAPI *ACEGETUSERDATAPROC) ( SDI_HANDLE, void ** );
typedef int (WINAPI *ACEGETLOGINPWPROC) ( SDI_HANDLE, SD_CHAR *, SD_U32 * );
typedef int (WINAPI *ACESETLOGINPWPROC) ( SDI_HANDLE, SD_CHAR *, SD_U32 );
typedef int (WINAPI *ACEGETDAUTHENTICATIONSTATUSPROC) (SDI_HANDLE, INT32BIT *);
typedef int (WINAPI *ACEGETDAAUTHDATAPROC) ( SDI_HANDLE, int, void *, SD_U32*);
typedef int (WINAPI *ACEGETTIMEPROC) ( SDI_HANDLE, SD_I32 * );
typedef int (WINAPI *ACEGETSHELLPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACEGETAUTHATTRPROC) ( SDI_HANDLE, RSA_AUTH_GET_ATTR, void *, SD_U32 *);
typedef int (WINAPI *ACESETPASSCODEPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACESETCREDENTIALPROC) ( SDI_HANDLE, RSA_AUTH_CRED_TYPE, void *, SD_U32);
typedef int (WINAPI *ACESETUSERNAMEPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACESETCLIENTADDRPROC) ( SDI_HANDLE, SD_U32 );
typedef int (WINAPI *ACESETNEXTPASSCODEPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACESETNEXTCREDENTIALPROC) ( SDI_HANDLE, void *, SD_U32 );
typedef int (WINAPI *ACESETPINPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *ACESETPINCREDENTIALPROC) ( SDI_HANDLE, void *, SD_U32 );
typedef int (WINAPI *ACESETUSERCLIENTADDRESSPROC) ( SDI_HANDLE, SD_UCHAR * );
typedef int (WINAPI *ACESETUSERDATAPROC) ( SDI_HANDLE, void * );
typedef int (WINAPI *ACESETTIMEOUTPROC) ( SDI_HANDLE, time_t, ACECALLBACK );
typedef int (WINAPI *ACEAGENTSTATUSDISPLAYPROC) ( S_status_display * );
typedef int (WINAPI *ACESETAUTHATTRPROC) ( SDI_HANDLE, RSA_AUTH_SET_ATTR, void *, SD_U32);
typedef int (WINAPI *ACEGETPEPPERPOLICYPROC) ( SDI_HANDLE, char *, char * );
typedef int (WINAPI *ACEGETITERCOUNTPOLICYPROC) ( SDI_HANDLE, INT32BIT *, INT32BIT * );
typedef int (WINAPI *ACEGETREALMIDPROC) ( SDI_HANDLE, char* );
/* New Synchronous and thread-safe calls */
typedef int (WINAPI *NEWSDINITPROC) ( LP_SDI_HANDLE );
typedef int (WINAPI *NEWSDINITEXPROC) ( LP_SDI_HANDLE, SD_BOOL, RSA_DA_AGENT_TYPE );
typedef int (WINAPI *NEWSDLOCKPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *NEWSDCHECKPROC) ( SDI_HANDLE, SD_CHAR *, SD_CHAR * );
typedef int (WINAPI *NEWSDCHECKCREDENTIALPROC)
( SDI_HANDLE, SD_CHAR *, RSA_AUTH_CRED_TYPE, void *, SD_U32);
typedef int (WINAPI *NEWSDCLIENTCHECKCREDENTIALPROC)
( SDI_HANDLE, SD_CHAR *, RSA_AUTH_CRED_TYPE, void *, SD_U32, SD_U32 );
typedef int (WINAPI *NEWSDCLIENTCHECKPROC) ( SDI_HANDLE, SD_CHAR *, SD_CHAR *, SD_U32 );
typedef int (WINAPI *NEWSDNEXTPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *NEWSDNEXTCREDENTIALPROC)
( SDI_HANDLE, void *, SD_U32 );
typedef int (WINAPI *NEWSDPINPROC) ( SDI_HANDLE, SD_CHAR * );
typedef int (WINAPI *NEWSDPINCREDENTIALPROC)
( SDI_HANDLE, void *, SD_U32 );
typedef int (WINAPI *NEWSDCLOSEPROC) ( SDI_HANDLE );
/* New Synchronous and thread-safe calls */
typedef SD_ERROR (WINAPI *ACESTARTAUTHPROC)(LP_SDI_HANDLE,
SD_CHAR *userID,
SD_I32 userIDLen,
SD_BOOL *moreData,
SD_BOOL *noEcho,
SD_I32 *respTimeout,
SD_I32 *nextRespLen,
SD_CHAR *promptStr,
SD_I32 *promptStrLen);
typedef SD_ERROR (WINAPI *ACECONTINUEAUTHPROC)(SDI_HANDLE,
SD_CHAR *userID,
SD_I32 userIDLen,
SD_BOOL *moreData,
SD_BOOL *noEcho,
SD_I32 *respTimeout,
SD_I32 *nextRespLen,
SD_CHAR *promptStr,
SD_I32 *promptStrLen);
typedef SD_ERROR (WINAPI *ACECLOSEAUTHPROC)(SDI_HANDLE);
#endif /* USE_ACE_AGENT_API_PROTOTYPES */
#ifdef __cplusplus
}
#endif
#ifdef WIN32
#pragma pack(pop)
#endif
#endif /* !ACEXPORT_H */