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.
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.
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]
23 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
27 * \file KMSClientProfileImpl.h
30 #ifndef CLIENT_PROFILE_IMPL_H
31 #define CLIENT_PROFILE_IMPL_H
37 #define AGENT_LOG_FILE "KMSAgentLog.log"
40 * Build383 corresponds to 2.0.2 which does not support AES Key Wrap and
41 * enforcment of FIPS mode.
43 #define FIPS_COMPATIBLE_KMA_VERSION "Build384"
46 extern bool g_bUseFileLog
;
48 /*---------------------------------------------------------------------------
49 * Function: KMSClient_InitializeLibrary
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.
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.
65 * return value TRUE or FALSE
67 *--------------------------------------------------------------------------*/
68 bool KMSClient_InitializeLibrary(
69 const utf8cstr i_wsWorkingDirectory
,
72 /*---------------------------------------------------------------------------
73 * Function: KMSClient_FinalizeLibrary
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.
82 * i_bIsManager -- TRUE: Finalize Management Library; FALSE: Finalize Agent Library.
86 * return value TRUE or FALSE
88 *--------------------------------------------------------------------------*/
89 bool KMSClient_FinalizeLibrary();
91 utf8cstr
KMSClient_GetLastErrorMessage(KMSClientProfile
*i_pProfile
);
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
,
104 /*---------------------------------------------------------------------------
105 * Function: KMSClient_GetClusterInformation
107 * Description: Get the cluster information by calling cluster discovery
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)
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
123 * return value TRUE/FALSE
124 * Use KMSAgent_GetLastErrorMessage() to get the error message
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
);
136 * @return true if any KMAs are not FIPS compatible, i.e. perform AES key
139 bool KMSClient_NoFIPSCompatibleKMAs(const KMSClientProfile
* const i_pProfile
);
141 /*---------------------------------------------------------------------------
142 * Function: KMSClient_SelectAppliance
144 * Description: Select the current appliance. The current appliance is used for
145 * retrieving cluster information.
149 * i_pProfile -- a pointer to an initialized KMSClientProfile structure
150 * i_wsApplianceAddress -- the IP address of the appliance
154 * return value TRUE/FALSE
155 * Use KMSAgent_GetLastErrorMessage() to get the error message
158 *--------------------------------------------------------------------------*/
159 bool KMSClient_SelectAppliance(KMSClientProfile
*i_pProfile
,
160 utf8cstr i_wsApplianceAddress
);
163 * check if the profile was loaded successfully
165 * @param i_pProfile a pointer that may, or may not be to a loaded profile
167 * @return true if the profile was loaded
169 bool KMSClient_ProfileLoaded( KMSClientProfile
*i_pProfile
);
171 /*---------------------------------------------------------------------------
172 * Function: KMSClient_DeleteProfile
174 * Description: Delete the profile information from the local disk
179 * i_wsProfileName -- the profile name
183 * return value TRUE/FALSE
184 * Use KMSAgent_GetLastErrorMessage() to get the error message
186 *--------------------------------------------------------------------------*/
187 bool KMSClient_DeleteProfile(utf8cstr i_wsProfileName
);
189 /*---------------------------------------------------------------------------
190 * Function: KMSClient_UnloadProfile
192 * Description: Destroy the profile information in memory including agent's private
198 * i_pProfile -- a pointer to an initialized KMSClientProfile structure
202 * return value TRUE/FALSE
203 * Use KMSAgent_GetLastErrorMessage() to get the error message
205 *--------------------------------------------------------------------------*/
206 bool KMSClient_UnloadProfile(KMSClientProfile
*i_pProfile
);
209 * @return true if the soap fault string indicates that the SSL handshake
210 * did not succeed due to an invalid certificate.
212 bool SSL_InvalidCertificate(const char * const i_sErrorString
);
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
219 bool ServerError (const char * i_sErrorString
, int i_iErrno
);
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)
228 * Log an error after saving the message in the profile. This supports <code>KMSAgent_GetLastErrorMessage</code>
229 * @param i_pProfile an initialized profile
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
237 void LogError_function(KMSClientProfile
*i_pProfile
,
239 const char* i_sOperation
,
240 const char* i_sEntityID
,
241 const char* i_sNetworkAddress
,
242 const char* i_sMessage
);
247 * @return true if the KMA version string corresponds to a FIPS compatible
250 bool FIPScompatibleKMA (
251 const char * const i_sKMAVersion
);
253 #define AUDIT_CLIENT_LOG_ERROR_BASE 0x300
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)