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