1/* 2 * Copyright (c) 2003-2013 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24#include <Security/SecBase.h> 25#include <Security/SecBasePriv.h> 26#include <Security/SecKeychainPriv.h> 27#include <security_utilities/threading.h> 28#include "SecBridge.h" 29 30static CFStringRef copyErrorMessageFromBundle(OSStatus status,CFStringRef tableName); 31 32// caller MUST release the string, since it is gotten with "CFCopyLocalizedStringFromTableInBundle" 33// intended use of reserved param is to pass in CFStringRef with name of the Table for lookup 34// Will look by default in "SecErrorMessages.strings" in the resources of Security.framework. 35 36 37CFStringRef 38SecCopyErrorMessageString(OSStatus status, void *reserved) 39{ 40 try 41 { 42 CFStringRef result = copyErrorMessageFromBundle(status,CFSTR("SecErrorMessages")); 43 if (result == NULL) 44 result = copyErrorMessageFromBundle(status,CFSTR("SecDebugErrorMessages")); 45 46 if (result == NULL) 47 { 48 if (status >= errSecErrnoBase && status <= errSecErrnoLimit) 49 { 50 result = CFStringCreateWithFormat (NULL, NULL, CFSTR("UNIX[%s]"), strerror(status-errSecErrnoBase)); 51 } 52 else 53 { 54 // no error message found, so format a faked-up error message from the status 55 result = CFStringCreateWithFormat(NULL, NULL, CFSTR("OSStatus %d"), (int)status); 56 } 57 } 58 59 return result; 60 } 61 catch (...) 62 { 63 return NULL; 64 } 65} 66 67 68void 69cssmPerror(const char *how, CSSM_RETURN error) 70{ 71 try 72 { 73 const char* errMsg = cssmErrorString(error); 74 fprintf(stderr, "%s: %s\n", how ? how : "error", errMsg); 75 } 76 catch (...) 77 { 78 fprintf(stderr, "failed to print error: %lu\n", (unsigned long)error); 79 } 80} 81 82 83const char * 84cssmErrorString(CSSM_RETURN error) 85{ 86 static ThreadNexus<string> lastError; 87 88 try { 89 string err; 90 91 if (error >= errSecErrnoBase && error <= errSecErrnoLimit) 92 { 93 err = string ("UNIX[") + strerror(error - errSecErrnoBase) + "]"; 94 } 95 else 96 { 97 CFStringRef result = copyErrorMessageFromBundle(error,CFSTR("SecErrorMessages")); 98 if (result == NULL) 99 result = copyErrorMessageFromBundle(error,CFSTR("SecDebugErrorMessages")); 100 err = cfString(result, true); 101 } 102 103 if (err.empty()) 104 { 105 char buf[200]; 106 snprintf(buf, sizeof(buf), "unknown error %ld=%lx", (long) error, (long) error); 107 err = buf; 108 } 109 110 lastError() = err; 111 return lastError().c_str(); 112 } 113 catch (...) 114 { 115 char buf[256]; 116 snprintf (buf, sizeof (buf), "unknown error %ld=%lx", (long) error, (long) error); 117 lastError() = buf; 118 return lastError().c_str(); 119 } 120} 121 122 123static ModuleNexus<Mutex> gBundleLock; 124 125CFStringRef 126copyErrorMessageFromBundle(OSStatus status,CFStringRef tableName) 127{ 128 StLock<Mutex> _lock(gBundleLock()); 129 130 CFStringRef errorString = nil; 131 CFStringRef keyString = nil; 132 CFBundleRef secBundle = NULL; 133 134 // Make a bundle instance using the URLRef. 135 secBundle = CFBundleGetBundleWithIdentifier(CFSTR("com.apple.security")); 136 if (!secBundle) 137 goto xit; 138 139 // Convert status to Int32 string representation, e.g. "-25924" 140 keyString = CFStringCreateWithFormat (kCFAllocatorDefault,NULL,CFSTR("%d"),(int)status); 141 if (!keyString) 142 goto xit; 143 144 errorString = CFCopyLocalizedStringFromTableInBundle(keyString,tableName,secBundle,NULL); 145 if (CFStringCompare(errorString, keyString, 0)==kCFCompareEqualTo) // no real error message 146 { 147 if (errorString) 148 CFRelease(errorString); 149 errorString = nil; 150 } 151xit: 152 if (keyString) 153 CFRelease(keyString); 154 155 return errorString; 156} 157 158/* Convert a possible CSSM type osStatus error to a more Keychain friendly OSStatus. */ 159OSStatus SecKeychainErrFromOSStatus(OSStatus osStatus) 160{ 161 if (CSSM_ERR_IS_CONVERTIBLE(osStatus)) 162 { 163 switch (CSSM_ERRCODE(osStatus)) 164 { 165 // CONVERTIBLE ERROR CODES. 166 case CSSM_ERRCODE_SERVICE_NOT_AVAILABLE: 167 return errSecNotAvailable; 168 case CSSM_ERRCODE_USER_CANCELED: 169 return errSecUserCanceled; 170 case CSSM_ERRCODE_OPERATION_AUTH_DENIED: 171 return errSecAuthFailed; 172 case CSSM_ERRCODE_NO_USER_INTERACTION: 173 return errSecInteractionNotAllowed; 174 case CSSM_ERRCODE_IN_DARK_WAKE: 175 return errSecInDarkWake; 176 case CSSM_ERRCODE_OS_ACCESS_DENIED: 177 return errSecWrPerm; 178 case CSSM_ERRCODE_INSUFFICIENT_CLIENT_IDENTIFICATION: 179 return errSecInsufficientClientID; 180 case CSSM_ERRCODE_DEVICE_RESET: 181 return errSecDeviceReset; 182 case CSSM_ERRCODE_DEVICE_FAILED: 183 return errSecDeviceFailed; 184 case CSSM_ERRCODE_INTERNAL_ERROR: 185 return errSecInternalError; 186 case CSSM_ERRCODE_MEMORY_ERROR: 187 return errSecMemoryError; 188 case CSSM_ERRCODE_MDS_ERROR: 189 return errSecMDSError; 190 case CSSM_ERRCODE_INVALID_POINTER: 191 case CSSM_ERRCODE_INVALID_INPUT_POINTER: 192 case CSSM_ERRCODE_INVALID_OUTPUT_POINTER: 193 case CSSM_ERRCODE_INVALID_CERTGROUP_POINTER: 194 case CSSM_ERRCODE_INVALID_CERT_POINTER: 195 case CSSM_ERRCODE_INVALID_CRL_POINTER: 196 case CSSM_ERRCODE_INVALID_FIELD_POINTER: 197 case CSSM_ERRCODE_INVALID_DB_LIST_POINTER: 198 return errSecInvalidPointer; 199 case CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED: 200 return errSecUnimplemented; 201 case CSSM_ERRCODE_SELF_CHECK_FAILED: 202 case CSSMERR_CL_SELF_CHECK_FAILED: 203 case CSSMERR_DL_SELF_CHECK_FAILED: 204 return errSecSelfCheckFailed; 205 case CSSM_ERRCODE_FUNCTION_FAILED: 206 return errSecFunctionFailed; 207 case CSSM_ERRCODE_MODULE_MANIFEST_VERIFY_FAILED: 208 return errSecModuleManifestVerifyFailed; 209 case CSSM_ERRCODE_INVALID_GUID: 210 return errSecInvalidGUID; 211 case CSSM_ERRCODE_OBJECT_USE_AUTH_DENIED: 212 case CSSM_ERRCODE_OBJECT_MANIP_AUTH_DENIED: 213 return errAuthorizationDenied; 214 case CSSM_ERRCODE_OBJECT_ACL_NOT_SUPPORTED: 215 case CSSM_ERRCODE_OBJECT_ACL_REQUIRED: 216 case CSSM_ERRCODE_INVALID_ACL_SUBJECT_VALUE: 217 case CSSM_ERRCODE_ACL_SUBJECT_TYPE_NOT_SUPPORTED: 218 case CSSM_ERRCODE_INVALID_ACL_EDIT_MODE: 219 case CSSM_ERRCODE_INVALID_NEW_ACL_ENTRY: 220 case CSSM_ERRCODE_INVALID_NEW_ACL_OWNER: 221 return errSecInvalidACL; 222 case CSSM_ERRCODE_INVALID_ACCESS_CREDENTIALS: 223 return errSecInvalidAccessCredentials; 224 case CSSM_ERRCODE_INVALID_ACL_BASE_CERTS: 225 case CSSM_ERRCODE_ACL_BASE_CERTS_NOT_SUPPORTED: 226 return errSecInvalidCertificateGroup; 227 case CSSM_ERRCODE_INVALID_SAMPLE_VALUE: 228 return errSecInvalidSampleValue; 229 case CSSM_ERRCODE_SAMPLE_VALUE_NOT_SUPPORTED: 230 return errSecInvalidSampleValue; 231 case CSSM_ERRCODE_INVALID_ACL_CHALLENGE_CALLBACK: 232 return errSecInvalidCallback; 233 case CSSM_ERRCODE_ACL_CHALLENGE_CALLBACK_FAILED: 234 return errSecCallbackFailed; 235 case CSSM_ERRCODE_INVALID_ACL_ENTRY_TAG: 236 case CSSM_ERRCODE_UNKNOWN_TAG: 237 return errSecUnknownTag; 238 case CSSM_ERRCODE_ACL_ENTRY_TAG_NOT_FOUND: 239 return errSecTagNotFound; 240 case CSSM_ERRCODE_ACL_CHANGE_FAILED: 241 return errSecACLChangeFailed; 242 case CSSM_ERRCODE_ACL_DELETE_FAILED: 243 return errSecACLDeleteFailed; 244 case CSSM_ERRCODE_ACL_REPLACE_FAILED: 245 return errSecACLReplaceFailed; 246 case CSSM_ERRCODE_ACL_ADD_FAILED: 247 return errSecACLAddFailed; 248 case CSSM_ERRCODE_INVALID_CONTEXT_HANDLE: 249 case CSSM_ERRCODE_INVALID_DB_HANDLE: 250 case CSSM_ERRCODE_INVALID_CSP_HANDLE: 251 case CSSM_ERRCODE_INVALID_DL_HANDLE: 252 case CSSM_ERRCODE_INVALID_CL_HANDLE: 253 case CSSM_ERRCODE_INVALID_TP_HANDLE: 254 case CSSM_ERRCODE_INVALID_KR_HANDLE: 255 case CSSM_ERRCODE_INVALID_AC_HANDLE: 256 return errSecInvalidHandle; 257 case CSSM_ERRCODE_INCOMPATIBLE_VERSION: 258 return errSecIncompatibleVersion; 259 case CSSM_ERRCODE_INVALID_DATA: 260 return errSecInvalidData; 261 case CSSM_ERRCODE_CRL_ALREADY_SIGNED: 262 return errSecCRLAlreadySigned; 263 case CSSM_ERRCODE_INVALID_NUMBER_OF_FIELDS: 264 return errSecInvalidNumberOfFields; 265 case CSSM_ERRCODE_VERIFICATION_FAILURE: 266 return errSecVerificationFailure; 267 case CSSM_ERRCODE_PRIVILEGE_NOT_GRANTED: 268 return errSecPrivilegeNotGranted; 269 case CSSM_ERRCODE_INVALID_DB_LIST: 270 return errSecInvalidDBList; 271 case CSSM_ERRCODE_UNKNOWN_FORMAT: 272 return errSecUnknownFormat; 273 case CSSM_ERRCODE_INVALID_PASSTHROUGH_ID: 274 return errSecInvalidPassthroughID; 275 case CSSM_ERRCODE_INVALID_NETWORK_ADDR: 276 return errSecInvalidNetworkAddress; 277 case CSSM_ERRCODE_INVALID_CRYPTO_DATA: 278 return errSecInvalidData; 279 } 280 } 281 switch (osStatus) 282 { 283 // Some CSSM errors mapped to OSStatus-type (SnowLeopard and earlier). 284 // 285 case CSSMERR_DL_RECORD_NOT_FOUND: 286 case CSSMERR_APPLETP_CERT_NOT_FOUND_FROM_ISSUER: 287 case CSSMERR_CSP_PRIVATE_KEY_NOT_FOUND: 288 return errSecItemNotFound; 289 case CSSMERR_DL_INVALID_UNIQUE_INDEX_DATA: 290 case CSSMERR_CSP_PRIVATE_KEY_ALREADY_EXISTS: 291 case CSSMERR_CSP_KEY_LABEL_ALREADY_EXISTS: 292 return errSecDuplicateItem; 293 case CSSMERR_DL_DATABASE_CORRUPT: 294 return errSecInvalidKeychain; 295 case CSSMERR_DL_DATASTORE_DOESNOT_EXIST: 296 return errSecNoSuchKeychain; 297 case CSSMERR_DL_DATASTORE_ALREADY_EXISTS: 298 return errSecDuplicateKeychain; 299 case CSSMERR_APPLEDL_DISK_FULL: 300 return errSecDskFull; 301 case CSSMERR_DL_INVALID_OPEN_PARAMETERS: 302 case CSSMERR_APPLEDL_INVALID_OPEN_PARAMETERS: 303 case CSSMERR_APPLE_DOTMAC_REQ_SERVER_PARAM: 304 return errSecParam; 305 case CSSMERR_DL_INVALID_FIELD_NAME: 306 case CSSMERR_CSSM_INVALID_ATTRIBUTE: 307 return errSecNoSuchAttr; 308 case CSSMERR_DL_OS_ACCESS_DENIED: 309 case CSSMERR_CSP_OS_ACCESS_DENIED: 310 case CSSMERR_TP_OS_ACCESS_DENIED: 311 case CSSMERR_AC_OS_ACCESS_DENIED: 312 case CSSMERR_CL_OS_ACCESS_DENIED: 313 return errSecWrPerm; 314 case CSSMERR_CSSM_BUFFER_TOO_SMALL: 315 return errSecBufferTooSmall; 316 case CSSMERR_CSSM_FUNCTION_NOT_IMPLEMENTED: 317 case CSSMERR_CSP_FUNCTION_NOT_IMPLEMENTED: 318 case CSSMERR_TP_FUNCTION_NOT_IMPLEMENTED: 319 case CSSMERR_AC_FUNCTION_NOT_IMPLEMENTED: 320 case CSSMERR_CL_FUNCTION_NOT_IMPLEMENTED: 321 case CSSMERR_DL_FUNCTION_NOT_IMPLEMENTED: 322 case CSSMERR_APPLE_DOTMAC_REQ_SERVER_UNIMPL: 323 return errSecUnimplemented; 324 case CSSMERR_CSSM_INTERNAL_ERROR: 325 case CSSMERR_CSP_INTERNAL_ERROR: 326 case CSSMERR_TP_INTERNAL_ERROR: 327 case CSSMERR_AC_INTERNAL_ERROR: 328 case CSSMERR_CL_INTERNAL_ERROR: 329 case CSSMERR_DL_INTERNAL_ERROR: 330 return errSecInternalError; 331 case CSSMERR_CSSM_MEMORY_ERROR: 332 case CSSMERR_CSP_MEMORY_ERROR: 333 case CSSMERR_TP_MEMORY_ERROR: 334 case CSSMERR_AC_MEMORY_ERROR: 335 case CSSMERR_CSP_DEVICE_MEMORY_ERROR: 336 case CSSMERR_CL_MEMORY_ERROR: 337 case CSSMERR_DL_MEMORY_ERROR: 338 return errSecMemoryError; 339 case CSSMERR_CSSM_MDS_ERROR: 340 case CSSMERR_CSP_MDS_ERROR: 341 case CSSMERR_TP_MDS_ERROR: 342 case CSSMERR_AC_MDS_ERROR: 343 case CSSMERR_CL_MDS_ERROR: 344 case CSSMERR_DL_MDS_ERROR: 345 return errSecMDSError; 346 case CSSMERR_CSSM_INVALID_POINTER: 347 case CSSMERR_CSP_INVALID_POINTER: 348 case CSSMERR_TP_INVALID_POINTER: 349 case CSSMERR_AC_INVALID_POINTER: 350 case CSSMERR_CL_INVALID_POINTER: 351 case CSSMERR_DL_INVALID_POINTER: 352 case CSSMERR_CSSM_INVALID_INPUT_POINTER: 353 case CSSMERR_CSP_INVALID_INPUT_POINTER: 354 case CSSMERR_TP_INVALID_INPUT_POINTER: 355 case CSSMERR_AC_INVALID_INPUT_POINTER: 356 case CSSMERR_CL_INVALID_INPUT_POINTER: 357 case CSSMERR_DL_INVALID_INPUT_POINTER: 358 case CSSMERR_TP_INVALID_DB_LIST_POINTER: 359 case CSSMERR_AC_INVALID_DB_LIST_POINTER: 360 case CSSMERR_DL_INVALID_DB_LIST_POINTER: 361 case CSSMERR_TP_INVALID_CERTGROUP_POINTER: 362 case CSSMERR_TP_INVALID_CERT_POINTER: 363 case CSSMERR_TP_INVALID_CRL_POINTER: 364 case CSSMERR_TP_INVALID_FIELD_POINTER: 365 case CSSMERR_CSP_INVALID_KEY_POINTER: 366 case CSSMERR_TP_INVALID_CALLERAUTH_CONTEXT_POINTER: 367 case CSSMERR_TP_INVALID_IDENTIFIER_POINTER: 368 case CSSMERR_TP_INVALID_CRLGROUP_POINTER: 369 case CSSMERR_TP_INVALID_TUPLEGROUP_POINTER: 370 case CSSMERR_CL_INVALID_CERTGROUP_POINTER: 371 case CSSMERR_CL_INVALID_CERT_POINTER: 372 case CSSMERR_CL_INVALID_CRL_POINTER: 373 case CSSMERR_CL_INVALID_FIELD_POINTER: 374 case CSSMERR_CL_INVALID_BUNDLE_POINTER: 375 case CSSMERR_CSSM_INVALID_OUTPUT_POINTER: 376 case CSSMERR_CSP_INVALID_OUTPUT_POINTER: 377 case CSSMERR_TP_INVALID_OUTPUT_POINTER: 378 case CSSMERR_AC_INVALID_OUTPUT_POINTER: 379 case CSSMERR_CL_INVALID_OUTPUT_POINTER: 380 case CSSMERR_DL_INVALID_OUTPUT_POINTER: 381 return errSecInvalidPointer; 382 case CSSMERR_CSSM_FUNCTION_FAILED: 383 case CSSMERR_CSP_FUNCTION_FAILED: 384 case CSSMERR_TP_FUNCTION_FAILED: 385 case CSSMERR_AC_FUNCTION_FAILED: 386 case CSSMERR_CL_FUNCTION_FAILED: 387 case CSSMERR_DL_FUNCTION_FAILED: 388 return errSecFunctionFailed; 389 case CSSMERR_CSP_INVALID_DATA: 390 case CSSMERR_TP_INVALID_DATA: 391 case CSSMERR_AC_INVALID_DATA: 392 case CSSMERR_CL_INVALID_DATA: 393 case CSSMERR_CSP_INVALID_CRYPTO_DATA: 394 case CSSMERR_CSP_INVALID_DATA_COUNT: 395 case CSSMERR_TP_INVALID_ACTION_DATA: 396 return errSecInvalidData; 397 case CSSMERR_TP_INVALID_DB_LIST: 398 case CSSMERR_AC_INVALID_DB_LIST: 399 return errSecInvalidDBList; 400 case CSSMERR_CSP_INVALID_PASSTHROUGH_ID: 401 case CSSMERR_TP_INVALID_PASSTHROUGH_ID: 402 case CSSMERR_AC_INVALID_PASSTHROUGH_ID: 403 case CSSMERR_CL_INVALID_PASSTHROUGH_ID: 404 case CSSMERR_DL_INVALID_PASSTHROUGH_ID: 405 return errSecInvalidPassthroughID; 406 case CSSMERR_TP_INVALID_CSP_HANDLE: 407 case CSSMERR_TP_INVALID_CL_HANDLE: 408 case CSSMERR_TP_INVALID_DL_HANDLE: 409 case CSSMERR_AC_INVALID_TP_HANDLE: 410 case CSSMERR_AC_INVALID_DL_HANDLE: 411 case CSSMERR_DL_INVALID_DL_HANDLE: 412 case CSSMERR_AC_INVALID_CL_HANDLE: 413 case CSSMERR_DL_INVALID_CL_HANDLE: 414 case CSSMERR_DL_INVALID_CSP_HANDLE: 415 case CSSMERR_TP_INVALID_DB_HANDLE: 416 case CSSMERR_CSSM_INVALID_ADDIN_HANDLE: 417 case CSSMERR_CSSM_INVALID_CONTEXT_HANDLE: 418 case CSSMERR_CL_INVALID_CACHE_HANDLE: 419 case CSSMERR_CL_INVALID_RESULTS_HANDLE: 420 case CSSMERR_DL_INVALID_RESULTS_HANDLE: 421 case CSSMERR_TP_INVALID_KEYCACHE_HANDLE: 422 case CSSMERR_CSP_INVALID_CONTEXT_HANDLE: 423 case CSSMERR_TP_INVALID_CONTEXT_HANDLE: 424 case CSSMERR_AC_INVALID_CONTEXT_HANDLE: 425 case CSSMERR_CL_INVALID_CONTEXT_HANDLE: 426 return errSecInvalidHandle; 427 case CSSMERR_TP_CRL_ALREADY_SIGNED: 428 case CSSMERR_CL_CRL_ALREADY_SIGNED: 429 return errSecCRLAlreadySigned; 430 case CSSMERR_TP_INVALID_NUMBER_OF_FIELDS: 431 case CSSMERR_CL_INVALID_NUMBER_OF_FIELDS: 432 return errSecInvalidNumberOfFields; 433 case CSSMERR_TP_VERIFICATION_FAILURE: 434 case CSSMERR_CL_VERIFICATION_FAILURE: 435 return errSecVerificationFailure; 436 case CSSMERR_TP_INVALID_NETWORK_ADDR: 437 case CSSMERR_DL_INVALID_NETWORK_ADDR: 438 return errSecInvalidNetworkAddress; 439 case CSSMERR_TP_UNKNOWN_TAG: 440 case CSSMERR_CL_UNKNOWN_TAG: 441 case CSSMERR_CSP_INVALID_ACL_ENTRY_TAG: 442 case CSSMERR_DL_INVALID_ACL_ENTRY_TAG: 443 case CSSMERR_DL_INVALID_SELECTION_TAG: 444 return errSecUnknownTag; 445 case CSSMERR_CSP_INVALID_SIGNATURE: 446 case CSSMERR_TP_INVALID_SIGNATURE: 447 return errSecInvalidSignature; 448 case CSSMERR_CSSM_USER_CANCELED: 449 case CSSMERR_CSP_USER_CANCELED: 450 case CSSMERR_TP_USER_CANCELED: 451 case CSSMERR_AC_USER_CANCELED: 452 case CSSMERR_CL_USER_CANCELED: 453 case CSSMERR_DL_USER_CANCELED: 454 return errSecUserCanceled; 455 case CSSMERR_CSSM_NO_USER_INTERACTION: 456 case CSSMERR_CSP_NO_USER_INTERACTION: 457 case CSSMERR_TP_NO_USER_INTERACTION: 458 case CSSMERR_AC_NO_USER_INTERACTION: 459 case CSSMERR_CL_NO_USER_INTERACTION: 460 case CSSMERR_DL_NO_USER_INTERACTION: 461 return errSecInteractionNotAllowed; 462 case CSSMERR_CSSM_IN_DARK_WAKE: 463 case CSSMERR_CSP_IN_DARK_WAKE: 464 case CSSMERR_TP_IN_DARK_WAKE: 465 case CSSMERR_AC_IN_DARK_WAKE: 466 case CSSMERR_CL_IN_DARK_WAKE: 467 case CSSMERR_DL_IN_DARK_WAKE: 468 return errSecInDarkWake; 469 case CSSMERR_CSSM_SERVICE_NOT_AVAILABLE: 470 case CSSMERR_CSP_SERVICE_NOT_AVAILABLE: 471 case CSSMERR_TP_SERVICE_NOT_AVAILABLE: 472 case CSSMERR_AC_SERVICE_NOT_AVAILABLE: 473 case CSSMERR_CL_SERVICE_NOT_AVAILABLE: 474 case CSSMERR_DL_SERVICE_NOT_AVAILABLE: 475 return errSecServiceNotAvailable; 476 case CSSMERR_CSSM_INSUFFICIENT_CLIENT_IDENTIFICATION: 477 case CSSMERR_CSP_INSUFFICIENT_CLIENT_IDENTIFICATION: 478 case CSSMERR_TP_INSUFFICIENT_CLIENT_IDENTIFICATION: 479 case CSSMERR_AC_INSUFFICIENT_CLIENT_IDENTIFICATION: 480 case CSSMERR_CL_INSUFFICIENT_CLIENT_IDENTIFICATION: 481 case CSSMERR_DL_INSUFFICIENT_CLIENT_IDENTIFICATION: 482 return errSecInsufficientClientID; 483 case CSSMERR_CSSM_DEVICE_RESET: 484 case CSSMERR_CSP_DEVICE_RESET: 485 case CSSMERR_TP_DEVICE_RESET: 486 case CSSMERR_AC_DEVICE_RESET: 487 case CSSMERR_CL_DEVICE_RESET: 488 case CSSMERR_DL_DEVICE_RESET: 489 return errSecDeviceReset; 490 case CSSMERR_CSSM_DEVICE_FAILED: 491 case CSSMERR_CSP_DEVICE_FAILED: 492 case CSSMERR_TP_DEVICE_FAILED: 493 case CSSMERR_AC_DEVICE_FAILED: 494 case CSSMERR_CL_DEVICE_FAILED: 495 case CSSMERR_DL_DEVICE_FAILED: 496 return errSecDeviceFailed; 497 case CSSMERR_APPLE_DOTMAC_REQ_SERVER_AUTH: 498 case CSSMERR_CSSM_EMM_AUTHENTICATE_FAILED: 499 case CSSMERR_CSSM_ADDIN_AUTHENTICATE_FAILED: 500 case CSSMERR_CSP_OPERATION_AUTH_DENIED: 501 case CSSMERR_CSP_OBJECT_USE_AUTH_DENIED: 502 case CSSMERR_CSP_OBJECT_MANIP_AUTH_DENIED: 503 case CSSMERR_TP_AUTHENTICATION_FAILED: 504 case CSSMERR_DL_OPERATION_AUTH_DENIED: 505 case CSSMERR_DL_OBJECT_USE_AUTH_DENIED: 506 case CSSMERR_DL_OBJECT_MANIP_AUTH_DENIED: 507 return errAuthorizationDenied; 508 case CSSMERR_CSSM_SCOPE_NOT_SUPPORTED: 509 case CSSMERR_CL_SCOPE_NOT_SUPPORTED: 510 case CSSMERR_CL_INVALID_SCOPE: 511 return errSecInvalidScope; 512 case CSSMERR_TP_INVALID_NAME: 513 case CSSMERR_DL_INVALID_DB_NAME: 514 return errSecInvalidName; 515 case CSSMERR_APPLETP_BAD_CERT_FROM_ISSUER: 516 case CSSMERR_TP_INVALID_CERTIFICATE: 517 case CSSMERR_TP_INVALID_ANCHOR_CERT: 518 case CSSMERR_APPLETP_CRL_INVALID_ANCHOR_CERT: 519 case CSSMERR_APPLETP_OCSP_INVALID_ANCHOR_CERT: 520 return errSecInvalidCertificateRef; 521 case CSSMERR_CSP_ACL_ENTRY_TAG_NOT_FOUND: 522 case CSSMERR_DL_ACL_ENTRY_TAG_NOT_FOUND: 523 return errSecTagNotFound; 524 case CSSMERR_DL_UNSUPPORTED_QUERY: 525 case CSSMERR_DL_INVALID_QUERY: 526 return errSecInvalidQuery; 527 case CSSMERR_CSP_INVALID_ACL_CHALLENGE_CALLBACK: 528 case CSSMERR_TP_INVALID_CALLBACK: 529 case CSSMERR_DL_INVALID_ACL_CHALLENGE_CALLBACK: 530 return errSecInvalidCallback; 531 case CSSMERR_CSP_ACL_CHALLENGE_CALLBACK_FAILED: 532 case CSSMERR_CSP_CRYPTO_DATA_CALLBACK_FAILED: 533 case CSSMERR_DL_ACL_CHALLENGE_CALLBACK_FAILED: 534 return errSecCallbackFailed; 535 case CSSMERR_TP_INVALID_CERTGROUP: 536 case CSSMERR_TP_CERTGROUP_INCOMPLETE: 537 case CSSMERR_DL_INVALID_ACL_BASE_CERTS: 538 case CSSMERR_DL_ACL_BASE_CERTS_NOT_SUPPORTED: 539 case CSSMERR_CSP_INVALID_ACL_BASE_CERTS: 540 return errSecInvalidCertificateGroup; 541 case CSSMERR_CSP_ACL_DELETE_FAILED: 542 case CSSMERR_DL_ACL_DELETE_FAILED: 543 return errSecACLDeleteFailed; 544 case CSSMERR_CSP_ACL_REPLACE_FAILED: 545 case CSSMERR_DL_ACL_REPLACE_FAILED: 546 return errSecACLReplaceFailed; 547 case CSSMERR_CSP_ACL_ADD_FAILED: 548 case CSSMERR_DL_ACL_ADD_FAILED: 549 return errSecACLAddFailed; 550 case CSSMERR_DL_ACL_CHANGE_FAILED: 551 case CSSMERR_CSP_ACL_CHANGE_FAILED: 552 return errSecACLChangeFailed; 553 case CSSMERR_CSSM_PRIVILEGE_NOT_GRANTED: 554 case CSSMERR_CSP_PRIVILEGE_NOT_GRANTED: 555 return errSecPrivilegeNotGranted; 556 case CSSMERR_CSP_INVALID_ACCESS_CREDENTIALS: 557 case CSSMERR_DL_INVALID_ACCESS_CREDENTIALS: 558 return errSecInvalidAccessCredentials; 559 case CSSMERR_DL_INVALID_RECORD_INDEX: 560 case CSSMERR_DL_INVALID_RECORDTYPE: 561 case CSSMERR_DL_UNSUPPORTED_RECORDTYPE: 562 case CSSMERR_DL_INVALID_RECORD_UID: 563 case CSSMERR_DL_STALE_UNIQUE_RECORD: 564 return errSecInvalidRecord; 565 case CSSMERR_CSP_INVALID_KEY: 566 case CSSMERR_CSP_INVALID_KEY_REFERENCE: 567 case CSSMERR_CSP_INVALID_KEY_CLASS: 568 return errSecInvalidKeyRef; 569 case CSSMERR_CSP_OBJECT_ACL_NOT_SUPPORTED: 570 case CSSMERR_CSP_OBJECT_ACL_REQUIRED: 571 case CSSMERR_CSP_ACL_BASE_CERTS_NOT_SUPPORTED: 572 case CSSMERR_CSP_INVALID_ACL_SUBJECT_VALUE: 573 case CSSMERR_CSP_ACL_SUBJECT_TYPE_NOT_SUPPORTED: 574 case CSSMERR_DL_OBJECT_ACL_NOT_SUPPORTED: 575 case CSSMERR_DL_OBJECT_ACL_REQUIRED: 576 case CSSMERR_DL_INVALID_ACL_SUBJECT_VALUE: 577 case CSSMERR_DL_ACL_SUBJECT_TYPE_NOT_SUPPORTED: 578 case CSSMERR_DL_INVALID_NEW_ACL_ENTRY: 579 case CSSMERR_DL_INVALID_NEW_ACL_OWNER: 580 case CSSMERR_DL_INVALID_ACL_EDIT_MODE: 581 case CSSMERR_CSP_INVALID_ACL_EDIT_MODE: 582 case CSSMERR_CSP_INVALID_NEW_ACL_ENTRY: 583 case CSSMERR_CSP_INVALID_NEW_ACL_OWNER: 584 return errSecInvalidACL; 585 case CSSMERR_CSP_INVALID_SAMPLE_VALUE: 586 case CSSMERR_DL_INVALID_SAMPLE_VALUE: 587 case CSSMERR_CSP_SAMPLE_VALUE_NOT_SUPPORTED: 588 case CSSMERR_DL_SAMPLE_VALUE_NOT_SUPPORTED: 589 return errSecInvalidSampleValue; 590 case CSSMERR_TP_UNKNOWN_FORMAT: 591 case CSSMERR_CL_UNKNOWN_FORMAT: 592 return errSecUnknownFormat; 593 case CSSMERR_CSP_APPLE_ADD_APPLICATION_ACL_SUBJECT: 594 return errSecAppleAddAppACLSubject; 595 case CSSMERR_CSP_APPLE_PUBLIC_KEY_INCOMPLETE: 596 return errSecApplePublicKeyIncomplete; 597 case CSSMERR_CSP_APPLE_SIGNATURE_MISMATCH: 598 return errSecAppleSignatureMismatch; 599 case CSSMERR_CSP_APPLE_INVALID_KEY_START_DATE: 600 return errSecAppleInvalidKeyStartDate; 601 case CSSMERR_CSP_APPLE_INVALID_KEY_END_DATE: 602 return errSecAppleInvalidKeyEndDate; 603 case CSSMERR_CSPDL_APPLE_DL_CONVERSION_ERROR: 604 return errSecConversionError; 605 case CSSMERR_CSP_APPLE_SSLv2_ROLLBACK: 606 return errSecAppleSSLv2Rollback; 607 case CSSMERR_APPLEDL_QUOTA_EXCEEDED: 608 return errSecQuotaExceeded; 609 case CSSMERR_APPLEDL_FILE_TOO_BIG: 610 return errSecFileTooBig; 611 case CSSMERR_APPLEDL_INVALID_DATABASE_BLOB: 612 return errSecInvalidDatabaseBlob; 613 case CSSMERR_APPLEDL_INVALID_KEY_BLOB: 614 return errSecInvalidKeyBlob; 615 case CSSMERR_APPLEDL_INCOMPATIBLE_DATABASE_BLOB: 616 return errSecIncompatibleDatabaseBlob; 617 case CSSMERR_APPLEDL_INCOMPATIBLE_KEY_BLOB: 618 return errSecIncompatibleKeyBlob; 619 case CSSMERR_APPLETP_HOSTNAME_MISMATCH: 620 return errSecHostNameMismatch; 621 case CSSMERR_APPLETP_UNKNOWN_CRITICAL_EXTEN: 622 return errSecUnknownCriticalExtensionFlag; 623 case CSSMERR_APPLETP_NO_BASIC_CONSTRAINTS: 624 return errSecNoBasicConstraints; 625 case CSSMERR_APPLETP_INVALID_AUTHORITY_ID: 626 return errSecInvalidAuthorityKeyID; 627 case CSSMERR_APPLETP_INVALID_SUBJECT_ID: 628 return errSecInvalidSubjectKeyID; 629 case CSSMERR_APPLETP_INVALID_KEY_USAGE: 630 return errSecInvalidKeyUsageForPolicy; 631 case CSSMERR_APPLETP_INVALID_EXTENDED_KEY_USAGE: 632 return errSecInvalidExtendedKeyUsage; 633 case CSSMERR_APPLETP_INVALID_ID_LINKAGE: 634 return errSecInvalidIDLinkage; 635 case CSSMERR_APPLETP_PATH_LEN_CONSTRAINT: 636 return errSecPathLengthConstraintExceeded; 637 case CSSMERR_APPLETP_INVALID_ROOT: 638 return errSecInvalidRoot; 639 case CSSMERR_APPLETP_CRL_EXPIRED: 640 return errSecCRLExpired; 641 case CSSMERR_APPLETP_CRL_NOT_VALID_YET: 642 return errSecCRLNotValidYet; 643 case CSSMERR_APPLETP_CRL_NOT_FOUND: 644 return errSecCRLNotFound; 645 case CSSMERR_APPLETP_CRL_SERVER_DOWN: 646 return errSecCRLServerDown; 647 case CSSMERR_APPLETP_CRL_BAD_URI: 648 return errSecCRLBadURI; 649 case CSSMERR_APPLETP_UNKNOWN_CERT_EXTEN: 650 return errSecUnknownCertExtension; 651 case CSSMERR_APPLETP_UNKNOWN_CRL_EXTEN: 652 return errSecUnknownCRLExtension; 653 case CSSMERR_APPLETP_CRL_NOT_TRUSTED: 654 return errSecCRLNotTrusted; 655 case CSSMERR_APPLETP_CRL_POLICY_FAIL: 656 return errSecCRLPolicyFailed; 657 case CSSMERR_APPLETP_IDP_FAIL: 658 return errSecIDPFailure; 659 case CSSMERR_APPLETP_SMIME_EMAIL_ADDRS_NOT_FOUND: 660 return errSecSMIMEEmailAddressesNotFound; 661 case CSSMERR_APPLETP_SMIME_BAD_EXT_KEY_USE: 662 return errSecSMIMEBadExtendedKeyUsage; 663 case CSSMERR_APPLETP_SMIME_BAD_KEY_USE: 664 return errSecSMIMEBadKeyUsage; 665 case CSSMERR_APPLETP_SMIME_KEYUSAGE_NOT_CRITICAL: 666 return errSecSMIMEKeyUsageNotCritical; 667 case CSSMERR_APPLETP_SMIME_NO_EMAIL_ADDRS: 668 return errSecSMIMENoEmailAddress; 669 case CSSMERR_APPLETP_SMIME_SUBJ_ALT_NAME_NOT_CRIT: 670 return errSecSMIMESubjAltNameNotCritical; 671 case CSSMERR_APPLETP_SSL_BAD_EXT_KEY_USE: 672 return errSecSSLBadExtendedKeyUsage; 673 case CSSMERR_APPLETP_OCSP_BAD_RESPONSE: 674 return errSecOCSPBadResponse; 675 case CSSMERR_APPLETP_OCSP_BAD_REQUEST: 676 return errSecOCSPBadRequest; 677 case CSSMERR_APPLETP_OCSP_UNAVAILABLE: 678 return errSecOCSPUnavailable; 679 case CSSMERR_APPLETP_OCSP_STATUS_UNRECOGNIZED: 680 return errSecOCSPStatusUnrecognized; 681 case CSSMERR_APPLETP_INCOMPLETE_REVOCATION_CHECK: 682 return errSecIncompleteCertRevocationCheck; 683 case CSSMERR_APPLETP_NETWORK_FAILURE: 684 return errSecNetworkFailure; 685 case CSSMERR_APPLETP_OCSP_NOT_TRUSTED: 686 return errSecOCSPNotTrustedToAnchor; 687 case CSSMERR_APPLETP_OCSP_SIG_ERROR: 688 return errSecOCSPSignatureError; 689 case CSSMERR_APPLETP_OCSP_NO_SIGNER: 690 return errSecOCSPNoSigner; 691 case CSSMERR_APPLETP_OCSP_RESP_MALFORMED_REQ: 692 return errSecOCSPResponderMalformedReq; 693 case CSSMERR_APPLETP_OCSP_RESP_INTERNAL_ERR: 694 return errSecOCSPResponderInternalError; 695 case CSSMERR_APPLETP_OCSP_RESP_TRY_LATER: 696 return errSecOCSPResponderTryLater; 697 case CSSMERR_APPLETP_OCSP_RESP_SIG_REQUIRED: 698 return errSecOCSPResponderSignatureRequired; 699 case CSSMERR_APPLETP_OCSP_RESP_UNAUTHORIZED: 700 return errSecOCSPResponderUnauthorized; 701 case CSSMERR_APPLETP_OCSP_NONCE_MISMATCH: 702 return errSecOCSPResponseNonceMismatch; 703 case CSSMERR_APPLETP_CS_BAD_CERT_CHAIN_LENGTH: 704 return errSecCodeSigningBadCertChainLength; 705 case CSSMERR_APPLETP_CS_NO_BASIC_CONSTRAINTS: 706 return errSecCodeSigningNoBasicConstraints; 707 case CSSMERR_APPLETP_CS_BAD_PATH_LENGTH: 708 return errSecCodeSigningBadPathLengthConstraint; 709 case CSSMERR_APPLETP_CS_NO_EXTENDED_KEY_USAGE: 710 return errSecCodeSigningNoExtendedKeyUsage; 711 case CSSMERR_APPLETP_CODE_SIGN_DEVELOPMENT: 712 return errSecCodeSigningDevelopment; 713 case CSSMERR_APPLETP_RS_BAD_CERT_CHAIN_LENGTH: 714 return errSecResourceSignBadCertChainLength; 715 case CSSMERR_APPLETP_RS_BAD_EXTENDED_KEY_USAGE: 716 return errSecResourceSignBadExtKeyUsage; 717 case CSSMERR_APPLETP_TRUST_SETTING_DENY: 718 return errSecTrustSettingDeny; 719 case CSSMERR_APPLETP_INVALID_EMPTY_SUBJECT: 720 return errSecInvalidSubjectName; 721 case CSSMERR_APPLETP_UNKNOWN_QUAL_CERT_STATEMENT: 722 return errSecUnknownQualifiedCertStatement; 723 case CSSMERR_APPLETP_MISSING_REQUIRED_EXTENSION: 724 return errSecMissingRequiredExtension; 725 case CSSMERR_APPLETP_EXT_KEYUSAGE_NOT_CRITICAL: 726 return errSecExtendedKeyUsageNotCritical; 727 case CSSMERR_APPLE_DOTMAC_REQ_QUEUED: 728 return errSecMobileMeRequestQueued; 729 case CSSMERR_APPLE_DOTMAC_REQ_REDIRECT: 730 return errSecMobileMeRequestRedirected; 731 case CSSMERR_APPLE_DOTMAC_REQ_SERVER_ERR: 732 return errSecMobileMeServerError; 733 case CSSMERR_APPLE_DOTMAC_REQ_SERVER_NOT_AVAIL: 734 return errSecMobileMeServerNotAvailable; 735 case CSSMERR_APPLE_DOTMAC_REQ_SERVER_ALREADY_EXIST: 736 return errSecMobileMeServerAlreadyExists; 737 case CSSMERR_APPLE_DOTMAC_REQ_SERVER_SERVICE_ERROR: 738 return errSecMobileMeServerServiceErr; 739 case CSSMERR_APPLE_DOTMAC_REQ_IS_PENDING: 740 return errSecMobileMeRequestAlreadyPending; 741 case CSSMERR_APPLE_DOTMAC_NO_REQ_PENDING: 742 return errSecMobileMeNoRequestPending; 743 case CSSMERR_APPLE_DOTMAC_CSR_VERIFY_FAIL: 744 return errSecMobileMeCSRVerifyFailure; 745 case CSSMERR_APPLE_DOTMAC_FAILED_CONSISTENCY_CHECK: 746 return errSecMobileMeFailedConsistencyCheck; 747 case CSSMERR_CSSM_NOT_INITIALIZED: 748 return errSecNotInitialized; 749 case CSSMERR_CSSM_INVALID_HANDLE_USAGE: 750 return errSecInvalidHandleUsage; 751 case CSSMERR_CSSM_PVC_REFERENT_NOT_FOUND: 752 return errSecPVCReferentNotFound; 753 case CSSMERR_CSSM_FUNCTION_INTEGRITY_FAIL: 754 return errSecFunctionIntegrityFail; 755 case CSSMERR_CSSM_SELF_CHECK_FAILED: 756 case CSSMERR_CSP_SELF_CHECK_FAILED: 757 return errSecSelfCheckFailed; 758 case CSSMERR_CSSM_MODULE_MANIFEST_VERIFY_FAILED: 759 return errSecModuleManifestVerifyFailed; 760 case CSSMERR_CSSM_INVALID_GUID: 761 return errSecInvalidGUID; 762 case CSSMERR_CSSM_INCOMPATIBLE_VERSION: 763 return errSecIncompatibleVersion; 764 case CSSMERR_CSSM_PVC_ALREADY_CONFIGURED: 765 return errSecPVCAlreadyConfigured; 766 case CSSMERR_CSSM_INVALID_PVC: 767 return errSecInvalidPVC; 768 case CSSMERR_CSSM_EMM_LOAD_FAILED: 769 return errSecEMMLoadFailed; 770 case CSSMERR_CSSM_EMM_UNLOAD_FAILED: 771 return errSecEMMUnloadFailed; 772 case CSSMERR_CSSM_ADDIN_LOAD_FAILED: 773 return errSecAddinLoadFailed; 774 case CSSMERR_CSSM_INVALID_KEY_HIERARCHY: 775 return errSecInvalidKeyHierarchy; 776 case CSSMERR_CSSM_ADDIN_UNLOAD_FAILED: 777 return errSecAddinUnloadFailed; 778 case CSSMERR_CSSM_LIB_REF_NOT_FOUND: 779 return errSecLibraryReferenceNotFound; 780 case CSSMERR_CSSM_INVALID_ADDIN_FUNCTION_TABLE: 781 return errSecInvalidAddinFunctionTable; 782 case CSSMERR_CSSM_INVALID_SERVICE_MASK: 783 return errSecInvalidServiceMask; 784 case CSSMERR_CSSM_MODULE_NOT_LOADED: 785 return errSecModuleNotLoaded; 786 case CSSMERR_CSSM_INVALID_SUBSERVICEID: 787 return errSecInvalidSubServiceID; 788 case CSSMERR_CSSM_ATTRIBUTE_NOT_IN_CONTEXT: 789 return errSecAttributeNotInContext; 790 case CSSMERR_CSSM_MODULE_MANAGER_INITIALIZE_FAIL: 791 return errSecModuleManagerInitializeFailed; 792 case CSSMERR_CSSM_MODULE_MANAGER_NOT_FOUND: 793 return errSecModuleManagerNotFound; 794 case CSSMERR_CSSM_EVENT_NOTIFICATION_CALLBACK_NOT_FOUND: 795 return errSecEventNotificationCallbackNotFound; 796 case CSSMERR_CSP_INPUT_LENGTH_ERROR: 797 return errSecInputLengthError; 798 case CSSMERR_CSP_OUTPUT_LENGTH_ERROR: 799 return errSecOutputLengthError; 800 case CSSMERR_CSP_PRIVILEGE_NOT_SUPPORTED: 801 return errSecPrivilegeNotSupported; 802 case CSSMERR_CSP_DEVICE_ERROR: 803 return errSecDeviceError; 804 case CSSMERR_CSP_ATTACH_HANDLE_BUSY: 805 return errSecAttachHandleBusy; 806 case CSSMERR_CSP_NOT_LOGGED_IN: 807 return errSecNotLoggedIn; 808 case CSSMERR_CSP_ALGID_MISMATCH: 809 return errSecAlgorithmMismatch; 810 case CSSMERR_CSP_KEY_USAGE_INCORRECT: 811 return errSecKeyUsageIncorrect; 812 case CSSMERR_CSP_KEY_BLOB_TYPE_INCORRECT: 813 return errSecKeyBlobTypeIncorrect; 814 case CSSMERR_CSP_KEY_HEADER_INCONSISTENT: 815 return errSecKeyHeaderInconsistent; 816 case CSSMERR_CSP_UNSUPPORTED_KEY_FORMAT: 817 return errSecUnsupportedKeyFormat; 818 case CSSMERR_CSP_UNSUPPORTED_KEY_SIZE: 819 return errSecUnsupportedKeySize; 820 case CSSMERR_CSP_INVALID_KEYUSAGE_MASK: 821 return errSecInvalidKeyUsageMask; 822 case CSSMERR_CSP_UNSUPPORTED_KEYUSAGE_MASK: 823 return errSecUnsupportedKeyUsageMask; 824 case CSSMERR_CSP_INVALID_KEYATTR_MASK: 825 return errSecInvalidKeyAttributeMask; 826 case CSSMERR_CSP_UNSUPPORTED_KEYATTR_MASK: 827 return errSecUnsupportedKeyAttributeMask; 828 case CSSMERR_CSP_INVALID_KEY_LABEL: 829 return errSecInvalidKeyLabel; 830 case CSSMERR_CSP_UNSUPPORTED_KEY_LABEL: 831 return errSecUnsupportedKeyLabel; 832 case CSSMERR_CSP_INVALID_KEY_FORMAT: 833 return errSecInvalidKeyFormat; 834 case CSSMERR_CSP_VECTOR_OF_BUFS_UNSUPPORTED: 835 return errSecUnsupportedVectorOfBuffers; 836 case CSSMERR_CSP_INVALID_INPUT_VECTOR: 837 return errSecInvalidInputVector; 838 case CSSMERR_CSP_INVALID_OUTPUT_VECTOR: 839 return errSecInvalidOutputVector; 840 case CSSMERR_CSP_INVALID_CONTEXT: 841 return errSecInvalidContext; 842 case CSSMERR_CSP_INVALID_ALGORITHM: 843 return errSecInvalidAlgorithm; 844 case CSSMERR_CSP_INVALID_ATTR_KEY: 845 return errSecInvalidAttributeKey; 846 case CSSMERR_CSP_MISSING_ATTR_KEY: 847 return errSecMissingAttributeKey; 848 case CSSMERR_CSP_INVALID_ATTR_INIT_VECTOR: 849 return errSecInvalidAttributeInitVector; 850 case CSSMERR_CSP_MISSING_ATTR_INIT_VECTOR: 851 return errSecMissingAttributeInitVector; 852 case CSSMERR_CSP_INVALID_ATTR_SALT: 853 return errSecInvalidAttributeSalt; 854 case CSSMERR_CSP_MISSING_ATTR_SALT: 855 return errSecMissingAttributeSalt; 856 case CSSMERR_CSP_INVALID_ATTR_PADDING: 857 return errSecInvalidAttributePadding; 858 case CSSMERR_CSP_MISSING_ATTR_PADDING: 859 return errSecMissingAttributePadding; 860 case CSSMERR_CSP_INVALID_ATTR_RANDOM: 861 return errSecInvalidAttributeRandom; 862 case CSSMERR_CSP_MISSING_ATTR_RANDOM: 863 return errSecMissingAttributeRandom; 864 case CSSMERR_CSP_INVALID_ATTR_SEED: 865 return errSecInvalidAttributeSeed; 866 case CSSMERR_CSP_MISSING_ATTR_SEED: 867 return errSecMissingAttributeSeed; 868 case CSSMERR_CSP_INVALID_ATTR_PASSPHRASE: 869 return errSecInvalidAttributePassphrase; 870 case CSSMERR_CSP_MISSING_ATTR_PASSPHRASE: 871 return errSecMissingAttributePassphrase; 872 case CSSMERR_CSP_INVALID_ATTR_KEY_LENGTH: 873 return errSecInvalidAttributeKeyLength; 874 case CSSMERR_CSP_MISSING_ATTR_KEY_LENGTH: 875 return errSecMissingAttributeKeyLength; 876 case CSSMERR_CSP_INVALID_ATTR_BLOCK_SIZE: 877 return errSecInvalidAttributeBlockSize; 878 case CSSMERR_CSP_MISSING_ATTR_BLOCK_SIZE: 879 return errSecMissingAttributeBlockSize; 880 case CSSMERR_CSP_INVALID_ATTR_OUTPUT_SIZE: 881 return errSecInvalidAttributeOutputSize; 882 case CSSMERR_CSP_MISSING_ATTR_OUTPUT_SIZE: 883 return errSecMissingAttributeOutputSize; 884 case CSSMERR_CSP_INVALID_ATTR_ROUNDS: 885 return errSecInvalidAttributeRounds; 886 case CSSMERR_CSP_MISSING_ATTR_ROUNDS: 887 return errSecMissingAttributeRounds; 888 case CSSMERR_CSP_INVALID_ATTR_ALG_PARAMS: 889 return errSecInvalidAlgorithmParms; 890 case CSSMERR_CSP_MISSING_ATTR_ALG_PARAMS: 891 return errSecMissingAlgorithmParms; 892 case CSSMERR_CSP_INVALID_ATTR_LABEL: 893 return errSecInvalidAttributeLabel; 894 case CSSMERR_CSP_MISSING_ATTR_LABEL: 895 return errSecMissingAttributeLabel; 896 case CSSMERR_CSP_INVALID_ATTR_KEY_TYPE: 897 return errSecInvalidAttributeKeyType; 898 case CSSMERR_CSP_MISSING_ATTR_KEY_TYPE: 899 return errSecMissingAttributeKeyType; 900 case CSSMERR_CSP_INVALID_ATTR_MODE: 901 return errSecInvalidAttributeMode; 902 case CSSMERR_CSP_MISSING_ATTR_MODE: 903 return errSecMissingAttributeMode; 904 case CSSMERR_CSP_INVALID_ATTR_EFFECTIVE_BITS: 905 return errSecInvalidAttributeEffectiveBits; 906 case CSSMERR_CSP_MISSING_ATTR_EFFECTIVE_BITS: 907 return errSecMissingAttributeEffectiveBits; 908 case CSSMERR_CSP_INVALID_ATTR_START_DATE: 909 return errSecInvalidAttributeStartDate; 910 case CSSMERR_CSP_MISSING_ATTR_START_DATE: 911 return errSecMissingAttributeStartDate; 912 case CSSMERR_CSP_INVALID_ATTR_END_DATE: 913 return errSecInvalidAttributeEndDate; 914 case CSSMERR_CSP_MISSING_ATTR_END_DATE: 915 return errSecMissingAttributeEndDate; 916 case CSSMERR_CSP_INVALID_ATTR_VERSION: 917 return errSecInvalidAttributeVersion; 918 case CSSMERR_CSP_MISSING_ATTR_VERSION: 919 return errSecMissingAttributeVersion; 920 case CSSMERR_CSP_INVALID_ATTR_PRIME: 921 return errSecInvalidAttributePrime; 922 case CSSMERR_CSP_MISSING_ATTR_PRIME: 923 return errSecMissingAttributePrime; 924 case CSSMERR_CSP_INVALID_ATTR_BASE: 925 return errSecInvalidAttributeBase; 926 case CSSMERR_CSP_MISSING_ATTR_BASE: 927 return errSecMissingAttributeBase; 928 case CSSMERR_CSP_INVALID_ATTR_SUBPRIME: 929 return errSecInvalidAttributeSubprime; 930 case CSSMERR_CSP_MISSING_ATTR_SUBPRIME: 931 return errSecMissingAttributeSubprime; 932 case CSSMERR_CSP_INVALID_ATTR_ITERATION_COUNT: 933 return errSecInvalidAttributeIterationCount; 934 case CSSMERR_CSP_MISSING_ATTR_ITERATION_COUNT: 935 return errSecMissingAttributeIterationCount; 936 case CSSMERR_CSP_INVALID_ATTR_DL_DB_HANDLE: 937 return errSecInvalidAttributeDLDBHandle; 938 case CSSMERR_CSP_MISSING_ATTR_DL_DB_HANDLE: 939 return errSecMissingAttributeDLDBHandle; 940 case CSSMERR_CSP_INVALID_ATTR_ACCESS_CREDENTIALS: 941 return errSecInvalidAttributeAccessCredentials; 942 case CSSMERR_CSP_MISSING_ATTR_ACCESS_CREDENTIALS: 943 return errSecMissingAttributeAccessCredentials; 944 case CSSMERR_CSP_INVALID_ATTR_PUBLIC_KEY_FORMAT: 945 return errSecInvalidAttributePublicKeyFormat; 946 case CSSMERR_CSP_MISSING_ATTR_PUBLIC_KEY_FORMAT: 947 return errSecMissingAttributePublicKeyFormat; 948 case CSSMERR_CSP_INVALID_ATTR_PRIVATE_KEY_FORMAT: 949 return errSecInvalidAttributePrivateKeyFormat; 950 case CSSMERR_CSP_MISSING_ATTR_PRIVATE_KEY_FORMAT: 951 return errSecMissingAttributePrivateKeyFormat; 952 case CSSMERR_CSP_INVALID_ATTR_SYMMETRIC_KEY_FORMAT: 953 return errSecInvalidAttributeSymmetricKeyFormat; 954 case CSSMERR_CSP_MISSING_ATTR_SYMMETRIC_KEY_FORMAT: 955 return errSecMissingAttributeSymmetricKeyFormat; 956 case CSSMERR_CSP_INVALID_ATTR_WRAPPED_KEY_FORMAT: 957 return errSecInvalidAttributeWrappedKeyFormat; 958 case CSSMERR_CSP_MISSING_ATTR_WRAPPED_KEY_FORMAT: 959 return errSecMissingAttributeWrappedKeyFormat; 960 case CSSMERR_CSP_STAGED_OPERATION_IN_PROGRESS: 961 return errSecStagedOperationInProgress; 962 case CSSMERR_CSP_STAGED_OPERATION_NOT_STARTED: 963 return errSecStagedOperationNotStarted; 964 case CSSMERR_CSP_VERIFY_FAILED: 965 return errSecVerifyFailed; 966 case CSSMERR_CSP_QUERY_SIZE_UNKNOWN: 967 return errSecQuerySizeUnknown; 968 case CSSMERR_CSP_BLOCK_SIZE_MISMATCH: 969 return errSecBlockSizeMismatch; 970 case CSSMERR_CSP_PUBLIC_KEY_INCONSISTENT: 971 return errSecPublicKeyInconsistent; 972 case CSSMERR_CSP_DEVICE_VERIFY_FAILED: 973 return errSecDeviceVerifyFailed; 974 case CSSMERR_CSP_INVALID_LOGIN_NAME: 975 return errSecInvalidLoginName; 976 case CSSMERR_CSP_ALREADY_LOGGED_IN: 977 return errSecAlreadyLoggedIn; 978 case CSSMERR_CSP_INVALID_DIGEST_ALGORITHM: 979 return errSecInvalidDigestAlgorithm; 980 case CSSMERR_TP_INVALID_CRLGROUP: 981 return errSecInvalidCRLGroup; 982 case CSSMERR_TP_CERTIFICATE_CANT_OPERATE: 983 return errSecCertificateCannotOperate; 984 case CSSMERR_TP_CERT_EXPIRED: 985 return errSecCertificateExpired; 986 case CSSMERR_TP_CERT_NOT_VALID_YET: 987 return errSecCertificateNotValidYet; 988 case CSSMERR_TP_CERT_REVOKED: 989 return errSecCertificateRevoked; 990 case CSSMERR_TP_CERT_SUSPENDED: 991 return errSecCertificateSuspended; 992 case CSSMERR_TP_INSUFFICIENT_CREDENTIALS: 993 return errSecInsufficientCredentials; 994 case CSSMERR_TP_INVALID_ACTION: 995 return errSecInvalidAction; 996 case CSSMERR_TP_INVALID_AUTHORITY: 997 return errSecInvalidAuthority; 998 case CSSMERR_TP_VERIFY_ACTION_FAILED: 999 return errSecVerifyActionFailed; 1000 case CSSMERR_TP_INVALID_CERT_AUTHORITY: 1001 case CSSMERR_APPLETP_INVALID_CA: 1002 return errSecInvalidCertAuthority; 1003 case CSSMERR_TP_INVALID_CRL_AUTHORITY: 1004 return errSecInvaldCRLAuthority; 1005 case CSSMERR_TP_INVALID_CRL_ENCODING: 1006 return errSecInvalidCRLEncoding; 1007 case CSSMERR_TP_INVALID_CRL_TYPE: 1008 return errSecInvalidCRLType; 1009 case CSSMERR_TP_INVALID_CRL: 1010 return errSecInvalidCRL; 1011 case CSSMERR_TP_INVALID_FORM_TYPE: 1012 return errSecInvalidFormType; 1013 case CSSMERR_TP_INVALID_ID: 1014 return errSecInvalidID; 1015 case CSSMERR_TP_INVALID_IDENTIFIER: 1016 return errSecInvalidIdentifier; 1017 case CSSMERR_TP_INVALID_INDEX: 1018 return errSecInvalidIndex; 1019 case CSSMERR_TP_INVALID_POLICY_IDENTIFIERS: 1020 return errSecInvalidPolicyIdentifiers; 1021 case CSSMERR_TP_INVALID_TIMESTRING: 1022 return errSecInvalidTimeString; 1023 case CSSMERR_TP_INVALID_REASON: 1024 return errSecInvalidReason; 1025 case CSSMERR_TP_INVALID_REQUEST_INPUTS: 1026 return errSecInvalidRequestInputs; 1027 case CSSMERR_TP_INVALID_RESPONSE_VECTOR: 1028 return errSecInvalidResponseVector; 1029 case CSSMERR_TP_INVALID_STOP_ON_POLICY: 1030 return errSecInvalidStopOnPolicy; 1031 case CSSMERR_TP_INVALID_TUPLE: 1032 return errSecInvalidTuple; 1033 case CSSMERR_TP_NOT_SIGNER: 1034 return errSecNotSigner; 1035 case CSSMERR_TP_NOT_TRUSTED: 1036 return errSecNotTrusted; 1037 case CSSMERR_TP_NO_DEFAULT_AUTHORITY: 1038 return errSecNoDefaultAuthority; 1039 case CSSMERR_TP_REJECTED_FORM: 1040 return errSecRejectedForm; 1041 case CSSMERR_TP_REQUEST_LOST: 1042 return errSecRequestLost; 1043 case CSSMERR_TP_REQUEST_REJECTED: 1044 return errSecRequestRejected; 1045 case CSSMERR_TP_UNSUPPORTED_ADDR_TYPE: 1046 return errSecUnsupportedAddressType; 1047 case CSSMERR_TP_UNSUPPORTED_SERVICE: 1048 return errSecUnsupportedService; 1049 case CSSMERR_TP_INVALID_TUPLEGROUP: 1050 return errSecInvalidTupleGroup; 1051 case CSSMERR_AC_INVALID_BASE_ACLS: 1052 return errSecInvalidBaseACLs; 1053 case CSSMERR_AC_INVALID_TUPLE_CREDENTIALS: 1054 return errSecInvalidTupleCredendtials; 1055 case CSSMERR_AC_INVALID_ENCODING: 1056 return errSecInvalidEncoding; 1057 case CSSMERR_AC_INVALID_VALIDITY_PERIOD: 1058 return errSecInvalidValidityPeriod; 1059 case CSSMERR_AC_INVALID_REQUESTOR: 1060 return errSecInvalidRequestor; 1061 case CSSMERR_AC_INVALID_REQUEST_DESCRIPTOR: 1062 return errSecRequestDescriptor; 1063 case CSSMERR_CL_INVALID_BUNDLE_INFO: 1064 return errSecInvalidBundleInfo; 1065 case CSSMERR_CL_INVALID_CRL_INDEX: 1066 return errSecInvalidCRLIndex; 1067 case CSSMERR_CL_NO_FIELD_VALUES: 1068 return errSecNoFieldValues; 1069 case CSSMERR_DL_UNSUPPORTED_FIELD_FORMAT: 1070 return errSecUnsupportedFieldFormat; 1071 case CSSMERR_DL_UNSUPPORTED_INDEX_INFO: 1072 return errSecUnsupportedIndexInfo; 1073 case CSSMERR_DL_UNSUPPORTED_LOCALITY: 1074 return errSecUnsupportedLocality; 1075 case CSSMERR_DL_UNSUPPORTED_NUM_ATTRIBUTES: 1076 return errSecUnsupportedNumAttributes; 1077 case CSSMERR_DL_UNSUPPORTED_NUM_INDEXES: 1078 return errSecUnsupportedNumIndexes; 1079 case CSSMERR_DL_UNSUPPORTED_NUM_RECORDTYPES: 1080 return errSecUnsupportedNumRecordTypes; 1081 case CSSMERR_DL_FIELD_SPECIFIED_MULTIPLE: 1082 return errSecFieldSpecifiedMultiple; 1083 case CSSMERR_DL_INCOMPATIBLE_FIELD_FORMAT: 1084 return errSecIncompatibleFieldFormat; 1085 case CSSMERR_DL_INVALID_PARSING_MODULE: 1086 return errSecInvalidParsingModule; 1087 case CSSMERR_DL_DB_LOCKED: 1088 return errSecDatabaseLocked; 1089 case CSSMERR_DL_DATASTORE_IS_OPEN: 1090 return errSecDatastoreIsOpen; 1091 case CSSMERR_DL_MISSING_VALUE: 1092 return errSecMissingValue; 1093 case CSSMERR_DL_UNSUPPORTED_QUERY_LIMITS: 1094 return errSecUnsupportedQueryLimits; 1095 case CSSMERR_DL_UNSUPPORTED_NUM_SELECTION_PREDS: 1096 return errSecUnsupportedNumSelectionPreds; 1097 case CSSMERR_DL_UNSUPPORTED_OPERATOR: 1098 return errSecUnsupportedOperator; 1099 case CSSMERR_DL_INVALID_DB_LOCATION: 1100 return errSecInvalidDBLocation; 1101 case CSSMERR_DL_INVALID_ACCESS_REQUEST: 1102 return errSecInvalidAccessRequest; 1103 case CSSMERR_DL_INVALID_INDEX_INFO: 1104 return errSecInvalidIndexInfo; 1105 case CSSMERR_DL_INVALID_NEW_OWNER: 1106 return errSecInvalidNewOwner; 1107 case CSSMERR_DL_INVALID_MODIFY_MODE: 1108 return errSecInvalidModifyMode; 1109 case CSSMERR_DL_RECORD_MODIFIED: 1110 return errSecRecordModified; 1111 case CSSMERR_DL_ENDOFDATA: 1112 return errSecEndOfData; 1113 case CSSMERR_DL_INVALID_VALUE: 1114 return errSecInvalidValue; 1115 case CSSMERR_DL_MULTIPLE_VALUES_UNSUPPORTED: 1116 return errSecMultipleValuesUnsupported; 1117 default: 1118 return osStatus; 1119 } 1120} 1121