xref: /onnv-gate/usr/src/lib/libkmsagent/common/KMSClientProfileImpl.h (revision 12720:3db6e0082404)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 
22 /*
23  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
24  */
25 
26 /**
27  * \file KMSClientProfileImpl.h
28  */
29 
30 #ifndef CLIENT_PROFILE_IMPL_H
31 #define CLIENT_PROFILE_IMPL_H
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 #define AGENT_LOG_FILE              "KMSAgentLog.log"
38 
39 /**
40  *  Build383 corresponds to 2.0.2 which does not support AES Key Wrap and
41  *  enforcment of FIPS mode.
42  */
43 #define FIPS_COMPATIBLE_KMA_VERSION "Build384"
44 
45 
46 extern bool g_bUseFileLog;
47 
48 /*---------------------------------------------------------------------------
49  * Function: KMSClient_InitializeLibrary
50  *
51  * Description: This function initializes the KMS Agent or Management API library.
52  *              It should be called before any other functions are invoked.
53  *              Internally, it setups SSL library and Logging module.
54  *
55  *
56  * Input
57  * -----
58  * i_wsWorkingDirectory -- Working directory of the program which uses the library
59  * i_bIsManager -- TRUE: Initialize Management Library; FALSE: initialize Agent Library.
60  * i_bUseFileLog:   True if logs should go to a log file in the working directory.
61  *                  False otherwise.
62  *
63  * Output
64  * ------
65  * return value                 TRUE or FALSE
66  *
67  *--------------------------------------------------------------------------*/
68 bool KMSClient_InitializeLibrary(
69                         const utf8cstr i_wsWorkingDirectory,
70                         int i_bUseFileLog );
71 
72 /*---------------------------------------------------------------------------
73  * Function: KMSClient_FinalizeLibrary
74  *
75  * Description: This function finalizes the KMS Agent(Or Management) API library.
76  *              It should be called when the library is not needed by the program.
77  *              Internally it cleans up SSL library and Logging module.
78  *
79  *
80  * Input
81  * -----
82  * i_bIsManager -- TRUE: Finalize Management Library; FALSE: Finalize Agent Library.
83  *
84  * Output
85  * ------
86  * return value                 TRUE or FALSE
87  *
88  *--------------------------------------------------------------------------*/
89 bool KMSClient_FinalizeLibrary();
90 
91 utf8cstr KMSClient_GetLastErrorMessage(KMSClientProfile *i_pProfile);
92 
93 bool KMSClient_LoadProfile(
94                 KMSClientProfile *io_pProfile,
95                 utf8cstr  i_wsProfileName,
96                 utf8cstr  i_wsEntityID,
97                 utf8cstr  i_wsPassphrase,
98                 utf8cstr  i_wsApplianceAddress,
99                 int       i_iTransactionTimeout,
100                 int       i_iFailOverLimit,
101                 int       i_iClusterDiscoveryFrequency,
102                 int       i_eKMSmode);
103 
104 /*---------------------------------------------------------------------------
105  * Function: KMSClient_GetClusterInformation
106  *
107  * Description: Get the cluster information by calling cluster discovery
108  *              service.
109  *
110  * Input
111  * -----
112  *            i_pProfile -- a pointer to an initialized KMSClientProfile structure
113  *            i_iEntitySiteIDSize -- the buffer size of the entity site ID
114  *                                           (KMS_MAX_ENTITIY_SITE_ID)
115  *            i_iClusterEntryArraySize -- the array size for cluster entries
116  *                                             (KMS_MAX_CLUSTER_NUM)
117  * Output
118  * ------
119   *            o_wsEntitySiteID -- the entity's Site ID
120  *            o_pApplianceNum -- the returned number of the appliances in the cluster
121  *        o_pClusterEntryArray -- the array of cluster entries
122  *
123  * return value     TRUE/FALSE
124  *                         Use KMSAgent_GetLastErrorMessage() to get the error message
125  *
126  *
127  *--------------------------------------------------------------------------*/
128 bool KMSClient_GetClusterInformation(KMSClientProfile *i_pProfile,
129                                      utf8cstr  o_wsEntitySiteID,
130                                      int i_iEntitySiteIDSize,
131                                      int *o_pApplianceNum,
132                                      KMSClusterEntry *o_pClusterEntryArray,
133                                      int i_iClusterEntryArraySize);
134 
135 /**
136  *  @return true if any KMAs are not FIPS compatible, i.e. perform AES key
137  *  wrap.
138  */
139 bool KMSClient_NoFIPSCompatibleKMAs(const KMSClientProfile * const i_pProfile);
140 
141 /*---------------------------------------------------------------------------
142  * Function: KMSClient_SelectAppliance
143  *
144  * Description: Select the current appliance. The current appliance is used for
145  *              retrieving cluster information.
146  *
147  * Input
148  * -----
149  *            i_pProfile -- a pointer to an initialized KMSClientProfile structure
150  *            i_wsApplianceAddress -- the IP address of the appliance
151  * Output
152  * ------
153  *          (none)
154  * return value     TRUE/FALSE
155  *                         Use KMSAgent_GetLastErrorMessage() to get the error message
156  *
157  *
158  *--------------------------------------------------------------------------*/
159 bool KMSClient_SelectAppliance(KMSClientProfile *i_pProfile,
160                                utf8cstr i_wsApplianceAddress);
161 
162 /**
163  *  check if the profile was loaded successfully
164  *
165  *  @param  i_pProfile  a pointer that may, or may not be to a loaded profile
166  *
167  *  @return true if the profile was loaded
168  */
169 bool KMSClient_ProfileLoaded( KMSClientProfile *i_pProfile );
170 
171 /*---------------------------------------------------------------------------
172  * Function: KMSClient_DeleteProfile
173  *
174  * Description: Delete the profile information from the local disk
175  *
176  *
177  * Input
178  * -----
179  *               i_wsProfileName -- the profile name
180 
181  * Output
182  * ------
183  * return value     TRUE/FALSE
184  *                         Use KMSAgent_GetLastErrorMessage() to get the error message
185  *
186  *--------------------------------------------------------------------------*/
187 bool KMSClient_DeleteProfile(utf8cstr i_wsProfileName);
188 
189 /*---------------------------------------------------------------------------
190  * Function: KMSClient_UnloadProfile
191  *
192  * Description: Destroy the profile information in memory including agent's private
193  *              key.
194  *
195  *
196  * Input
197  * -----
198  *            i_pProfile -- a pointer to an initialized KMSClientProfile structure
199 
200  * Output
201  * ------
202  * return value     TRUE/FALSE
203  *                         Use KMSAgent_GetLastErrorMessage() to get the error message
204  *
205  *--------------------------------------------------------------------------*/
206 bool KMSClient_UnloadProfile(KMSClientProfile *i_pProfile);
207 
208 /**
209  *   @return true if the soap fault string indicates that the SSL handshake
210  *   did not succeed due to an invalid certificate.
211  */
212 bool SSL_InvalidCertificate(const char * const i_sErrorString );
213 
214 /**
215  *   compares the error string with various soap fault substrings to determine if the
216  *   error was a server-side error or not, also checks the supplied errno codes against
217  *   various POSIX errno macros that would imply server connection issues
218  */
219 bool ServerError (const char * i_sErrorString, int i_iErrno );
220 
221 #ifdef __cplusplus
222 }
223 
224 // helper macro to turn value into a string
225 #define LogError(a,b,c,d,e)        LogError_function(a,b,#b,c,d,e)
226 
227 /**
228  *  Log an error after saving the message in the profile.  This supports <code>KMSAgent_GetLastErrorMessage</code>
229  *  @param i_pProfile an initialized profile
230  *
231  *  @param i_iErrno, the error expressed as a number
232  *  @param i_sOperation, the operation number as a string
233  *  @param i_sEntityID optional, the agent ID
234  *  @param i_sNetworkAddress optional, the address of the KMA involved in the error
235  *  @param i_sMessage optional, an informative error message
236  */
237 void LogError_function(KMSClientProfile *i_pProfile,
238               int i_iErrno,
239               const char* i_sOperation,
240               const char* i_sEntityID,
241               const char* i_sNetworkAddress,
242               const char* i_sMessage );
243 
244 #endif
245 
246 /**
247  *  @return true if the KMA version string corresponds to a FIPS compatible
248  *  KMA
249  */
250 bool FIPScompatibleKMA (
251                         const char * const i_sKMAVersion);
252 
253 #define AUDIT_CLIENT_LOG_ERROR_BASE 0x300
254 
255 #define AUDIT_CLIENT_AGENT_CREATE_AUDIT_LOG_SOAP_ERROR	                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x00)
256 #define AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_RESPONSE_INVALID_DESCRIPTION_LENGTH	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x01)
257 #define AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_RESPONSE_INVALID_DU_ID_LENGTH	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x02)
258 #define AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_RESPONSE_INVALID_EXTERNAL_TAG_LENGTH	(AUDIT_CLIENT_LOG_ERROR_BASE + 0x03)
259 #define AUDIT_CLIENT_AGENT_CREATE_DATA_UNIT_SOAP_ERROR	                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x04)
260 #define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEYID_RESPONSE	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x05)
261 #define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_GROUP_ID_LENGTH_RESPONSE	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x06)
262 #define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_LENGTH_RESPONSE	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x07)
263 #define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_STATE_RESPONSE	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x08)
264 #define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_KEY_TYPE_RESPONSE	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x09)
265 #define AUDIT_CLIENT_AGENT_CREATE_KEY_KEY_CALLOUT_ERROR	                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0a)
266 #define AUDIT_CLIENT_AGENT_CREATE_KEY_SOAP_ERROR	                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0b)
267 #define AUDIT_CLIENT_AGENT_DISASSOCIATE_DATA_UNIT_KEYS_SOAP_ERROR	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0c)
268 #define AUDIT_CLIENT_AGENT_LIST_KEY_GROUPS_SOAP_ERROR	                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0d)
269 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_RESPONSE_INVALID_DESCRIPTION_LENGTH	    (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0e)
270 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_RESPONSE_INVALID_EXTERNAL_TAG_LENGTH    (AUDIT_CLIENT_LOG_ERROR_BASE + 0x0f)
271 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_BY_EXTERNAL_UNIQUE_ID_SOAP_ERROR	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x10)
272 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEYS_REMAINING_RESPONSE	(AUDIT_CLIENT_LOG_ERROR_BASE + 0x11)
273 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEYS_SIZE_RESPONSE	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x12)
274 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_ARRAY_SIZE_RESPONSE	(AUDIT_CLIENT_LOG_ERROR_BASE + 0x13)
275 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_LENGTH_RESPONSE	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x14)
276 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_RESPONSE	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x15)
277 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_STATE_RESPONSE	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x16)
278 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_KEY_TYPE_RESPONSE	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x17)
279 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_KEY_CALLOUT_ERROR	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x18)
280 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_SOAP_ERROR	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x19)
281 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_RESPONSE_INVALID_DESCRIPTION_LENGTH	(AUDIT_CLIENT_LOG_ERROR_BASE + 0x1a)
282 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_RESPONSE_INVALID_EXTERNAL_TAG_LENGTH	(AUDIT_CLIENT_LOG_ERROR_BASE + 0x1b)
283 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_SOAP_ERROR	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1c)
284 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEYID_RESPONSE	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1d)
285 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_GROUP_ID_LENGTH_RESPONSE	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1e)
286 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_LENGTH_RESPONSE	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x1f)
287 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_STATE_RESPONSE	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x20)
288 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_KEY_TYPE_RESPONSE	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x21)
289 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_KEY_CALLOUT_ERROR	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x22)
290 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_SOAP_ERROR	                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x23)
291 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEYID_RESPONSE	(AUDIT_CLIENT_LOG_ERROR_BASE + 0x24)
292 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_GROUP_ID_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x25)
293 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_LENGTH_RESPONSE	         (AUDIT_CLIENT_LOG_ERROR_BASE + 0x26)
294 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_STATE_RESPONSE	         (AUDIT_CLIENT_LOG_ERROR_BASE + 0x27)
295 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_KEY_TYPE_RESPONSE	         (AUDIT_CLIENT_LOG_ERROR_BASE + 0x28)
296 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_KEY_CALLOUT_ERROR	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x29)
297 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_SOAP_ERROR	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2a)
298 #define AUDIT_CLIENT_COMPUTE_CHALLENGE_RESPONSE_FAILED	                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2b)
299 #define AUDIT_CLIENT_COMPUTE_FIXED_FAILED	                                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2c)
300 #define AUDIT_CLIENT_GET_CERTIFICATE_INVALID_CERTIFICATE_FORMAT	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2d)
301 #define AUDIT_CLIENT_GET_CERTIFICATE_INVALID_CHALLENGE_RESPONSE	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2e)
302 #define AUDIT_CLIENT_GET_CERTIFICATE_INVALID_KEY_FORMAT	                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x2f)
303 #define AUDIT_CLIENT_GET_CERTIFICATE_INVALID_RESPONSE_FORMAT	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x30)
304 #define AUDIT_CLIENT_GET_CERTIFICATE_SAVE_CA_CERTIFICATE_FAILED	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x31)
305 #define AUDIT_CLIENT_GET_CERTIFICATE_SOAP_ERROR	                                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x32)
306 #define AUDIT_CLIENT_GET_CLUSTER_INFORMATION	                                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x33)
307 #define AUDIT_CLIENT_GET_CLUSTER_INFORMATION_SOAP_ERROR	                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x34)
308 #define AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_INVALID_CA_CERTIFICATE_FORMAT	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x35)
309 #define AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_INVALID_RESPONSE_FORMAT	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x36)
310 #define AUDIT_CLIENT_LOAD_CLUSTER_INFORMATION_INVALID_CLUSTER_FILE_FORMAT	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x37)
311 #define AUDIT_CLIENT_LOAD_CLUSTER_INFORMATION_OPEN_CLUSTER_FILE_FAILED	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x38)
312 #define AUDIT_CLIENT_LOAD_PROFILE_EXPORT_CERTIFICATE_AND_KEY_FAILED	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x39)
313 #define AUDIT_CLIENT_LOAD_PROFILE_FAILED	                                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3a)
314 #define AUDIT_CLIENT_LOAD_PROFILE_SAVE_CA_CERTIFICATE_FAILED	                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3b)
315 #define AUDIT_CLIENT_LOAD_PROFILE_SOAP_ERROR	                                        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3c)
316 #define AUDIT_CLIENT_SAVE_CLUSTER_INFORMATION_OPEN_CLUSTER_FILE_FAILED	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3d)
317 #define AUDIT_CLIENT_SAVE_ROOTCA_FAILED	                                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3e)
318 #define AUDIT_CLIENT_SELECT_APPLIANCE	                                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x3f)
319 #define AUDIT_PROFILE_READ_CONFIG_FILE_INVALID_CONFIGURATION_FILE_FORMAT	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x40)
320 #define AUDIT_PROFILE_READ_CONFIG_FILE_OPEN_CONFIGURATION_FILE_FAILED	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x41)
321 #define AUDIT_PROFILE_WRITE_CONFIG_FILE_OPEN_CONFIGURATION_FILE_FAILED	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x42)
322 #define LoadProfile_AUDIT_CLIENT_GET_ROOT_CA_CERTIFICATE_SOAP_ERROR	                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x43)
323 #define AUDIT_CLIENT_AGENT_CREATE_KEY_AESKEYUNWRAP_ERROR                            (AUDIT_CLIENT_LOG_ERROR_BASE + 0x44)
324 #define AUDIT_CLIENT_AGENT_REGISTER_KWK_ERROR                                       (AUDIT_CLIENT_LOG_ERROR_BASE + 0x45)
325 #define AUDIT_CLIENT_AGENT_REGISTER_KWK_INVALID_KEYID_RESPONSE                      (AUDIT_CLIENT_LOG_ERROR_BASE + 0x46)
326 #define AUDIT_CLIENT_AGENT_CREATE_KWK_RNG_ERROR                                     (AUDIT_CLIENT_LOG_ERROR_BASE + 0x47)
327 #define AUDIT_CLIENT_GET_KWK_WRAPPING_KEY_SOAP_ERROR                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x48)
328 #define AUDIT_CLIENT_GET_KWK_WRAPPING_KEY_INVALID_KEY_RESPONSE                      (AUDIT_CLIENT_LOG_ERROR_BASE + 0x49)
329 #define AUDIT_CLIENT_GET_KWK_WRAPPING_KEY_INVALID_RSA_PUB_KEY                       (AUDIT_CLIENT_LOG_ERROR_BASE + 0x50)
330 #define AUDIT_CLIENT_AGENT_CREATE_KWK_PUBLIC_ENCRYPT_ERROR                          (AUDIT_CLIENT_LOG_ERROR_BASE + 0x51)
331 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_AESKEYUNWRAP_ERROR                          (AUDIT_CLIENT_LOG_ERROR_BASE + 0x52)
332 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_AESKEYUNWRAP_ERROR      (AUDIT_CLIENT_LOG_ERROR_BASE + 0x53)
333 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_AESKEYUNWRAP_ERROR               (AUDIT_CLIENT_LOG_ERROR_BASE + 0x54)
334 #define AUDIT_CLIENT_AGENT_CREATE_KEY_INVALID_WRAPPED_KEY_LENGTH_RESPONSE	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x55)
335 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_INVALID_WRAPPED_KEY_LENGTH_RESPONSE	        (AUDIT_CLIENT_LOG_ERROR_BASE + 0x56)
336 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_INVALID_WRAPPED_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x57)
337 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_INVALID_WRAPPED_KEY_LENGTH_RESPONSE (AUDIT_CLIENT_LOG_ERROR_BASE + 0x58)
338 #define AUDIT_CLIENT_AGENT_CREATE_KEY_KWKID_MISMATCH                                (AUDIT_CLIENT_LOG_ERROR_BASE + 0x59)
339 #define AUDIT_CLIENT_AGENT_RETRIEVE_KEY_KWKID_MISMATCH                              (AUDIT_CLIENT_LOG_ERROR_BASE + 0x60)
340 #define AUDIT_CLIENT_AGENT_RETRIEVE_DATA_UNIT_KEYS_KWKID_MISMATCH                   (AUDIT_CLIENT_LOG_ERROR_BASE + 0x61)
341 #define AUDIT_CLIENT_AGENT_RETRIEVE_PROTECT_AND_PROCESS_KEY_KWKID_MISMATCH          (AUDIT_CLIENT_LOG_ERROR_BASE + 0x62)
342 #define AUDIT_CLIENT_AGENT_LOAD_PROFILE_NO_FIPS_COMPATIBLE_KMAS_AVAILABLE           (AUDIT_CLIENT_LOG_ERROR_BASE + 0x63)
343 
344 #endif
345