2 * Copyright (c) 2000-2016 Apple Inc. All Rights Reserved.
4 * @APPLE_LICENSE_HEADER_START@
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
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.
21 * @APPLE_LICENSE_HEADER_END@
24 #ifndef _SECURITY_SECBASE_H_
25 #define _SECURITY_SECBASE_H_
27 #include <TargetConditionals.h>
28 #include <CoreFoundation/CFBase.h>
29 #include <AvailabilityMacros.h>
31 // Truth table for following declarations:
33 // TARGET_OS_OSX TARGET_OS_OSX TARGET_OS_IPHONE TARGET_OS_IPHONE
34 // SEC_IOS_ON_OSX SEC_IOS_ON_OSX
35 // ===================================================================================================
36 // SEC_OS_IPHONE 0 1 1 1
37 // SEC_OS_IPHONE_INCLUDES 0 0 1 1
39 // SEC_OS_OSX_INCLUDES 1 1 0 0
43 #define SEC_OS_IPHONE 1
44 #define SEC_OS_IPHONE_INCLUDES 0
47 #define SEC_OS_OSX_INCLUDES 1
48 #endif // SEC_IOS_ON_OSX
49 #endif // TARGET_OS_OSX
52 // block above did not fire; set flags to current platform
53 #define SEC_OS_IPHONE TARGET_OS_IPHONE
54 #define SEC_OS_IPHONE_INCLUDES TARGET_OS_IPHONE
56 #define SEC_OS_OSX TARGET_OS_OSX
57 #define SEC_OS_OSX_INCLUDES TARGET_OS_OSX
61 #include <sys/cdefs.h>
64 #if defined(__clang__)
65 #define SEC_DEPRECATED_ATTRIBUTE DEPRECATED_ATTRIBUTE
67 #define SEC_DEPRECATED_ATTRIBUTE
72 CF_ASSUME_NONNULL_BEGIN
73 CF_IMPLICIT_BRIDGING_ENABLED
77 #define SECTYPE(a) __##a
79 #define SECTYPE(a) Opaque##a##Ref
83 @typedef SecCertificateRef
84 @abstract CFType representing a X.509 certificate.
85 See SecCertificate.h for details.
87 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecCertificate
) *SecCertificateRef
;
90 @typedef SecIdentityRef
91 @abstract CFType representing an identity, which contains
92 a SecKeyRef and an associated SecCertificateRef. See
93 SecIdentity.h for details.
95 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecIdentity
) *SecIdentityRef
;
99 @abstract CFType representing a cryptographic key. See
100 SecKey.h for details.
102 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecKey
) *SecKeyRef
;
105 @typedef SecPolicyRef
106 @abstract CFType representing a X.509 certificate trust policy.
107 See SecPolicy.h for details.
109 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecPolicy
) *SecPolicyRef
;
112 @typedef SecAccessControl
113 @abstract CFType representing access control for an item.
114 SecAccessControl.h for details.
116 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecAccessControl
) *SecAccessControlRef
;
118 #if SEC_OS_OSX_INCLUDES
121 @typedef SecKeychainRef
122 @abstract Contains information about a keychain.
124 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecKeychain
) *SecKeychainRef
;
127 @typedef SecKeychainItemRef
128 @abstract Contains information about a keychain item.
130 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecKeychainItem
) *SecKeychainItemRef
;
133 @typedef SecKeychainSearchRef
134 @abstract Contains information about a keychain search.
136 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecKeychainSearch
) *SecKeychainSearchRef
;
139 @typedef SecKeychainAttrType
140 @abstract Represents a keychain attribute type.
142 typedef OSType SecKeychainAttrType
;
145 @struct SecKeychainAttribute
146 @abstract Contains keychain attributes.
147 @field tag A 4-byte attribute tag.
148 @field length The length of the buffer pointed to by data.
149 @field data A pointer to the attribute data.
151 struct SecKeychainAttribute
153 SecKeychainAttrType tag
;
155 void * __nullable data
;
157 typedef struct SecKeychainAttribute SecKeychainAttribute
;
160 @typedef SecKeychainAttributePtr
161 @abstract Represents a pointer to a keychain attribute structure.
163 typedef SecKeychainAttribute
*SecKeychainAttributePtr
;
166 @typedef SecKeychainAttributeList
167 @abstract Represents a list of keychain attributes.
168 @field count An unsigned 32-bit integer that represents the number of keychain attributes in the array.
169 @field attr A pointer to the first keychain attribute in the array.
171 struct SecKeychainAttributeList
174 SecKeychainAttribute
* __nullable attr
;
176 typedef struct SecKeychainAttributeList SecKeychainAttributeList
;
179 @typedef SecKeychainStatus
180 @abstract Represents the status of a keychain.
182 typedef UInt32 SecKeychainStatus
;
185 @typedef SecTrustedApplicationRef
186 @abstract Contains information about a trusted application.
188 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecTrustedApplication
) *SecTrustedApplicationRef
;
191 @typedef SecAccessRef
192 @abstract Contains information about an access.
194 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecAccess
) *SecAccessRef
;
198 @abstract Contains information about an access control list (ACL) entry.
200 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecTrust
) *SecACLRef
;
203 @typedef SecPasswordRef
204 @abstract Contains information about a password.
206 typedef struct CF_BRIDGED_TYPE(id
) SECTYPE(SecPassword
) *SecPasswordRef
;
209 @typedef SecKeychainAttributeInfo
210 @abstract Represents an attribute.
211 @field count The number of tag-format pairs in the respective arrays.
212 @field tag A pointer to the first attribute tag in the array.
213 @field format A pointer to the first CSSM_DB_ATTRIBUTE_FORMAT in the array.
214 @discussion Each tag and format item form a pair.
216 struct SecKeychainAttributeInfo
220 UInt32
* __nullable format
;
222 typedef struct SecKeychainAttributeInfo SecKeychainAttributeInfo
;
224 #endif // SEC_OS_OSX_INCLUDES
227 @function SecCopyErrorMessageString
228 @abstract Returns a string describing the specified error result code.
229 @param status An error result code of type OSStatus or CSSM_RETURN, as returned by a Security or CSSM function.
230 @reserved Reserved for future use. Your code should pass NULL in this parameter.
231 @result A reference to an error string, or NULL if no error string is available for the specified result code. Your code must release this reference by calling the CFRelease function.
234 CFStringRef
SecCopyErrorMessageString(OSStatus status
, void * __nullable reserved
)
235 __OSX_AVAILABLE_STARTING(__MAC_10_3
, __IPHONE_11_3
);
241 @enum Security Error Codes
242 @abstract Result codes returned from Security framework functions.
243 @constant errSecSuccess No error.
244 @constant errSecUnimplemented Function or operation not implemented.
245 @constant errSecDskFull Disk Full error.
246 @constant errSecIO I/O error.
247 @constant errSecParam One or more parameters passed to a function were not valid.
248 @constant errSecWrPerm Write permissions error.
249 @constant errSecAllocate Failed to allocate memory.
250 @constant errSecUserCanceled User canceled the operation.
251 @constant errSecBadReq Bad parameter or invalid state for operation.
252 @constant errSecInternalComponent
253 @constant errSecCoreFoundationUnknown
254 @constant errSecNotAvailable No keychain is available.
255 @constant errSecReadOnly Read only error.
256 @constant errSecAuthFailed Authorization/Authentication failed.
257 @constant errSecNoSuchKeychain The keychain does not exist.
258 @constant errSecInvalidKeychain The keychain is not valid.
259 @constant errSecDuplicateKeychain A keychain with the same name already exists.
260 @constant errSecDuplicateCallback The specified callback is already installed.
261 @constant errSecInvalidCallback The specified callback is not valid.
262 @constant errSecDuplicateItem The item already exists.
263 @constant errSecItemNotFound The item cannot be found.
264 @constant errSecBufferTooSmall The buffer is too small.
265 @constant errSecDataTooLarge The data is too large.
266 @constant errSecNoSuchAttr The attribute does not exist.
267 @constant errSecInvalidItemRef The item reference is invalid.
268 @constant errSecInvalidSearchRef The search reference is invalid.
269 @constant errSecNoSuchClass The keychain item class does not exist.
270 @constant errSecNoDefaultKeychain A default keychain does not exist.
271 @constant errSecInteractionNotAllowed User interaction is not allowed.
272 @constant errSecReadOnlyAttr The attribute is read only.
273 @constant errSecWrongSecVersion The version is incorrect.
274 @constant errSecKeySizeNotAllowed The key size is not allowed.
275 @constant errSecNoStorageModule There is no storage module available.
276 @constant errSecNoCertificateModule There is no certificate module available.
277 @constant errSecNoPolicyModule There is no policy module available.
278 @constant errSecInteractionRequired User interaction is required.
279 @constant errSecDataNotAvailable The data is not available.
280 @constant errSecDataNotModifiable The data is not modifiable.
281 @constant errSecCreateChainFailed The attempt to create a certificate chain failed.
282 @constant errSecACLNotSimple The access control list is not in standard simple form.
283 @constant errSecPolicyNotFound The policy specified cannot be found.
284 @constant errSecInvalidTrustSetting The specified trust setting is invalid.
285 @constant errSecNoAccessForItem The specified item has no access control.
286 @constant errSecInvalidOwnerEdit Invalid attempt to change the owner of this item.
287 @constant errSecTrustNotAvailable No trust results are available.
288 @constant errSecUnsupportedFormat Import/Export format unsupported.
289 @constant errSecUnknownFormat Unknown format in import.
290 @constant errSecKeyIsSensitive Key material must be wrapped for export.
291 @constant errSecMultiplePrivKeys An attempt was made to import multiple private keys.
292 @constant errSecPassphraseRequired Passphrase is required for import/export.
293 @constant errSecInvalidPasswordRef The password reference was invalid.
294 @constant errSecInvalidTrustSettings The Trust Settings Record was corrupted.
295 @constant errSecNoTrustSettings No Trust Settings were found.
296 @constant errSecPkcs12VerifyFailure MAC verification failed during PKCS12 Import.
297 @constant errSecDecode Unable to decode the provided data.
299 @discussion The assigned error space is discontinuous: e.g. -25240..-25279, -25290..-25329, -68608..-67585, and so on.
303 Note: the comments that appear after these errors are used to create SecErrorMessages.strings.
304 The comments must not be multi-line, and should be in a form meaningful to an end user. If
305 a different or additional comment is needed, it can be put in the header doc format, or on a
306 line that does not start with errZZZ.
311 errSecSuccess
= 0, /* No error. */
312 errSecUnimplemented
= -4, /* Function or operation not implemented. */
313 errSecDiskFull
= -34, /* The disk is full. */
315 errSecIO
= -36, /* I/O error. */
316 errSecOpWr
= -49, /* File already open with write permission. */
317 errSecParam
= -50, /* One or more parameters passed to a function were not valid. */
318 errSecWrPerm
= -61, /* Write permissions error. */
319 errSecAllocate
= -108, /* Failed to allocate memory. */
320 errSecUserCanceled
= -128, /* User canceled the operation. */
321 errSecBadReq
= -909, /* Bad parameter or invalid state for operation. */
323 errSecInternalComponent
= -2070,
324 errSecCoreFoundationUnknown
= -4960,
326 errSecMissingEntitlement
= -34018, /* A required entitlement isn't present. */
328 errSecNotAvailable
= -25291, /* No keychain is available. You may need to restart your computer. */
329 errSecReadOnly
= -25292, /* This keychain cannot be modified. */
330 errSecAuthFailed
= -25293, /* The user name or passphrase you entered is not correct. */
331 errSecNoSuchKeychain
= -25294, /* The specified keychain could not be found. */
332 errSecInvalidKeychain
= -25295, /* The specified keychain is not a valid keychain file. */
333 errSecDuplicateKeychain
= -25296, /* A keychain with the same name already exists. */
334 errSecDuplicateCallback
= -25297, /* The specified callback function is already installed. */
335 errSecInvalidCallback
= -25298, /* The specified callback function is not valid. */
336 errSecDuplicateItem
= -25299, /* The specified item already exists in the keychain. */
337 errSecItemNotFound
= -25300, /* The specified item could not be found in the keychain. */
338 errSecBufferTooSmall
= -25301, /* There is not enough memory available to use the specified item. */
339 errSecDataTooLarge
= -25302, /* This item contains information which is too large or in a format that cannot be displayed. */
340 errSecNoSuchAttr
= -25303, /* The specified attribute does not exist. */
341 errSecInvalidItemRef
= -25304, /* The specified item is no longer valid. It may have been deleted from the keychain. */
342 errSecInvalidSearchRef
= -25305, /* Unable to search the current keychain. */
343 errSecNoSuchClass
= -25306, /* The specified item does not appear to be a valid keychain item. */
344 errSecNoDefaultKeychain
= -25307, /* A default keychain could not be found. */
345 errSecInteractionNotAllowed
= -25308, /* User interaction is not allowed. */
346 errSecReadOnlyAttr
= -25309, /* The specified attribute could not be modified. */
347 errSecWrongSecVersion
= -25310, /* This keychain was created by a different version of the system software and cannot be opened. */
348 errSecKeySizeNotAllowed
= -25311, /* This item specifies a key size which is too large or too small. */
349 errSecNoStorageModule
= -25312, /* A required component (data storage module) could not be loaded. You may need to restart your computer. */
350 errSecNoCertificateModule
= -25313, /* A required component (certificate module) could not be loaded. You may need to restart your computer. */
351 errSecNoPolicyModule
= -25314, /* A required component (policy module) could not be loaded. You may need to restart your computer. */
352 errSecInteractionRequired
= -25315, /* User interaction is required, but is currently not allowed. */
353 errSecDataNotAvailable
= -25316, /* The contents of this item cannot be retrieved. */
354 errSecDataNotModifiable
= -25317, /* The contents of this item cannot be modified. */
355 errSecCreateChainFailed
= -25318, /* One or more certificates required to validate this certificate cannot be found. */
356 errSecInvalidPrefsDomain
= -25319, /* The specified preferences domain is not valid. */
357 errSecInDarkWake
= -25320, /* In dark wake, no UI possible */
359 errSecACLNotSimple
= -25240, /* The specified access control list is not in standard (simple) form. */
360 errSecPolicyNotFound
= -25241, /* The specified policy cannot be found. */
361 errSecInvalidTrustSetting
= -25242, /* The specified trust setting is invalid. */
362 errSecNoAccessForItem
= -25243, /* The specified item has no access control. */
363 errSecInvalidOwnerEdit
= -25244, /* Invalid attempt to change the owner of this item. */
364 errSecTrustNotAvailable
= -25245, /* No trust results are available. */
365 errSecUnsupportedFormat
= -25256, /* Import/Export format unsupported. */
366 errSecUnknownFormat
= -25257, /* Unknown format in import. */
367 errSecKeyIsSensitive
= -25258, /* Key material must be wrapped for export. */
368 errSecMultiplePrivKeys
= -25259, /* An attempt was made to import multiple private keys. */
369 errSecPassphraseRequired
= -25260, /* Passphrase is required for import/export. */
370 errSecInvalidPasswordRef
= -25261, /* The password reference was invalid. */
371 errSecInvalidTrustSettings
= -25262, /* The Trust Settings Record was corrupted. */
372 errSecNoTrustSettings
= -25263, /* No Trust Settings were found. */
373 errSecPkcs12VerifyFailure
= -25264, /* MAC verification failed during PKCS12 import (wrong password?) */
374 errSecNotSigner
= -26267, /* A certificate was not signed by its proposed parent. */
376 errSecDecode
= -26275, /* Unable to decode the provided data. */
378 errSecServiceNotAvailable
= -67585, /* The required service is not available. */
379 errSecInsufficientClientID
= -67586, /* The client ID is not correct. */
380 errSecDeviceReset
= -67587, /* A device reset has occurred. */
381 errSecDeviceFailed
= -67588, /* A device failure has occurred. */
382 errSecAppleAddAppACLSubject
= -67589, /* Adding an application ACL subject failed. */
383 errSecApplePublicKeyIncomplete
= -67590, /* The public key is incomplete. */
384 errSecAppleSignatureMismatch
= -67591, /* A signature mismatch has occurred. */
385 errSecAppleInvalidKeyStartDate
= -67592, /* The specified key has an invalid start date. */
386 errSecAppleInvalidKeyEndDate
= -67593, /* The specified key has an invalid end date. */
387 errSecConversionError
= -67594, /* A conversion error has occurred. */
388 errSecAppleSSLv2Rollback
= -67595, /* A SSLv2 rollback error has occurred. */
389 errSecQuotaExceeded
= -67596, /* The quota was exceeded. */
390 errSecFileTooBig
= -67597, /* The file is too big. */
391 errSecInvalidDatabaseBlob
= -67598, /* The specified database has an invalid blob. */
392 errSecInvalidKeyBlob
= -67599, /* The specified database has an invalid key blob. */
393 errSecIncompatibleDatabaseBlob
= -67600, /* The specified database has an incompatible blob. */
394 errSecIncompatibleKeyBlob
= -67601, /* The specified database has an incompatible key blob. */
395 errSecHostNameMismatch
= -67602, /* A host name mismatch has occurred. */
396 errSecUnknownCriticalExtensionFlag
= -67603, /* There is an unknown critical extension flag. */
397 errSecNoBasicConstraints
= -67604, /* No basic constraints were found. */
398 errSecNoBasicConstraintsCA
= -67605, /* No basic CA constraints were found. */
399 errSecInvalidAuthorityKeyID
= -67606, /* The authority key ID is not valid. */
400 errSecInvalidSubjectKeyID
= -67607, /* The subject key ID is not valid. */
401 errSecInvalidKeyUsageForPolicy
= -67608, /* The key usage is not valid for the specified policy. */
402 errSecInvalidExtendedKeyUsage
= -67609, /* The extended key usage is not valid. */
403 errSecInvalidIDLinkage
= -67610, /* The ID linkage is not valid. */
404 errSecPathLengthConstraintExceeded
= -67611, /* The path length constraint was exceeded. */
405 errSecInvalidRoot
= -67612, /* The root or anchor certificate is not valid. */
406 errSecCRLExpired
= -67613, /* The CRL has expired. */
407 errSecCRLNotValidYet
= -67614, /* The CRL is not yet valid. */
408 errSecCRLNotFound
= -67615, /* The CRL was not found. */
409 errSecCRLServerDown
= -67616, /* The CRL server is down. */
410 errSecCRLBadURI
= -67617, /* The CRL has a bad Uniform Resource Identifier. */
411 errSecUnknownCertExtension
= -67618, /* An unknown certificate extension was encountered. */
412 errSecUnknownCRLExtension
= -67619, /* An unknown CRL extension was encountered. */
413 errSecCRLNotTrusted
= -67620, /* The CRL is not trusted. */
414 errSecCRLPolicyFailed
= -67621, /* The CRL policy failed. */
415 errSecIDPFailure
= -67622, /* The issuing distribution point was not valid. */
416 errSecSMIMEEmailAddressesNotFound
= -67623, /* An email address mismatch was encountered. */
417 errSecSMIMEBadExtendedKeyUsage
= -67624, /* The appropriate extended key usage for SMIME was not found. */
418 errSecSMIMEBadKeyUsage
= -67625, /* The key usage is not compatible with SMIME. */
419 errSecSMIMEKeyUsageNotCritical
= -67626, /* The key usage extension is not marked as critical. */
420 errSecSMIMENoEmailAddress
= -67627, /* No email address was found in the certificate. */
421 errSecSMIMESubjAltNameNotCritical
= -67628, /* The subject alternative name extension is not marked as critical. */
422 errSecSSLBadExtendedKeyUsage
= -67629, /* The appropriate extended key usage for SSL was not found. */
423 errSecOCSPBadResponse
= -67630, /* The OCSP response was incorrect or could not be parsed. */
424 errSecOCSPBadRequest
= -67631, /* The OCSP request was incorrect or could not be parsed. */
425 errSecOCSPUnavailable
= -67632, /* OCSP service is unavailable. */
426 errSecOCSPStatusUnrecognized
= -67633, /* The OCSP server did not recognize this certificate. */
427 errSecEndOfData
= -67634, /* An end-of-data was detected. */
428 errSecIncompleteCertRevocationCheck
= -67635, /* An incomplete certificate revocation check occurred. */
429 errSecNetworkFailure
= -67636, /* A network failure occurred. */
430 errSecOCSPNotTrustedToAnchor
= -67637, /* The OCSP response was not trusted to a root or anchor certificate. */
431 errSecRecordModified
= -67638, /* The record was modified. */
432 errSecOCSPSignatureError
= -67639, /* The OCSP response had an invalid signature. */
433 errSecOCSPNoSigner
= -67640, /* The OCSP response had no signer. */
434 errSecOCSPResponderMalformedReq
= -67641, /* The OCSP responder was given a malformed request. */
435 errSecOCSPResponderInternalError
= -67642, /* The OCSP responder encountered an internal error. */
436 errSecOCSPResponderTryLater
= -67643, /* The OCSP responder is busy, try again later. */
437 errSecOCSPResponderSignatureRequired
= -67644, /* The OCSP responder requires a signature. */
438 errSecOCSPResponderUnauthorized
= -67645, /* The OCSP responder rejected this request as unauthorized. */
439 errSecOCSPResponseNonceMismatch
= -67646, /* The OCSP response nonce did not match the request. */
440 errSecCodeSigningBadCertChainLength
= -67647, /* Code signing encountered an incorrect certificate chain length. */
441 errSecCodeSigningNoBasicConstraints
= -67648, /* Code signing found no basic constraints. */
442 errSecCodeSigningBadPathLengthConstraint
= -67649, /* Code signing encountered an incorrect path length constraint. */
443 errSecCodeSigningNoExtendedKeyUsage
= -67650, /* Code signing found no extended key usage. */
444 errSecCodeSigningDevelopment
= -67651, /* Code signing indicated use of a development-only certificate. */
445 errSecResourceSignBadCertChainLength
= -67652, /* Resource signing has encountered an incorrect certificate chain length. */
446 errSecResourceSignBadExtKeyUsage
= -67653, /* Resource signing has encountered an error in the extended key usage. */
447 errSecTrustSettingDeny
= -67654, /* The trust setting for this policy was set to Deny. */
448 errSecInvalidSubjectName
= -67655, /* An invalid certificate subject name was encountered. */
449 errSecUnknownQualifiedCertStatement
= -67656, /* An unknown qualified certificate statement was encountered. */
450 errSecMobileMeRequestQueued
= -67657,
451 errSecMobileMeRequestRedirected
= -67658,
452 errSecMobileMeServerError
= -67659,
453 errSecMobileMeServerNotAvailable
= -67660,
454 errSecMobileMeServerAlreadyExists
= -67661,
455 errSecMobileMeServerServiceErr
= -67662,
456 errSecMobileMeRequestAlreadyPending
= -67663,
457 errSecMobileMeNoRequestPending
= -67664,
458 errSecMobileMeCSRVerifyFailure
= -67665,
459 errSecMobileMeFailedConsistencyCheck
= -67666,
460 errSecNotInitialized
= -67667, /* A function was called without initializing CSSM. */
461 errSecInvalidHandleUsage
= -67668, /* The CSSM handle does not match with the service type. */
462 errSecPVCReferentNotFound
= -67669, /* A reference to the calling module was not found in the list of authorized callers. */
463 errSecFunctionIntegrityFail
= -67670, /* A function address was not within the verified module. */
464 errSecInternalError
= -67671, /* An internal error has occurred. */
465 errSecMemoryError
= -67672, /* A memory error has occurred. */
466 errSecInvalidData
= -67673, /* Invalid data was encountered. */
467 errSecMDSError
= -67674, /* A Module Directory Service error has occurred. */
468 errSecInvalidPointer
= -67675, /* An invalid pointer was encountered. */
469 errSecSelfCheckFailed
= -67676, /* Self-check has failed. */
470 errSecFunctionFailed
= -67677, /* A function has failed. */
471 errSecModuleManifestVerifyFailed
= -67678, /* A module manifest verification failure has occurred. */
472 errSecInvalidGUID
= -67679, /* An invalid GUID was encountered. */
473 errSecInvalidHandle
= -67680, /* An invalid handle was encountered. */
474 errSecInvalidDBList
= -67681, /* An invalid DB list was encountered. */
475 errSecInvalidPassthroughID
= -67682, /* An invalid passthrough ID was encountered. */
476 errSecInvalidNetworkAddress
= -67683, /* An invalid network address was encountered. */
477 errSecCRLAlreadySigned
= -67684, /* The certificate revocation list is already signed. */
478 errSecInvalidNumberOfFields
= -67685, /* An invalid number of fields were encountered. */
479 errSecVerificationFailure
= -67686, /* A verification failure occurred. */
480 errSecUnknownTag
= -67687, /* An unknown tag was encountered. */
481 errSecInvalidSignature
= -67688, /* An invalid signature was encountered. */
482 errSecInvalidName
= -67689, /* An invalid name was encountered. */
483 errSecInvalidCertificateRef
= -67690, /* An invalid certificate reference was encountered. */
484 errSecInvalidCertificateGroup
= -67691, /* An invalid certificate group was encountered. */
485 errSecTagNotFound
= -67692, /* The specified tag was not found. */
486 errSecInvalidQuery
= -67693, /* The specified query was not valid. */
487 errSecInvalidValue
= -67694, /* An invalid value was detected. */
488 errSecCallbackFailed
= -67695, /* A callback has failed. */
489 errSecACLDeleteFailed
= -67696, /* An ACL delete operation has failed. */
490 errSecACLReplaceFailed
= -67697, /* An ACL replace operation has failed. */
491 errSecACLAddFailed
= -67698, /* An ACL add operation has failed. */
492 errSecACLChangeFailed
= -67699, /* An ACL change operation has failed. */
493 errSecInvalidAccessCredentials
= -67700, /* Invalid access credentials were encountered. */
494 errSecInvalidRecord
= -67701, /* An invalid record was encountered. */
495 errSecInvalidACL
= -67702, /* An invalid ACL was encountered. */
496 errSecInvalidSampleValue
= -67703, /* An invalid sample value was encountered. */
497 errSecIncompatibleVersion
= -67704, /* An incompatible version was encountered. */
498 errSecPrivilegeNotGranted
= -67705, /* The privilege was not granted. */
499 errSecInvalidScope
= -67706, /* An invalid scope was encountered. */
500 errSecPVCAlreadyConfigured
= -67707, /* The PVC is already configured. */
501 errSecInvalidPVC
= -67708, /* An invalid PVC was encountered. */
502 errSecEMMLoadFailed
= -67709, /* The EMM load has failed. */
503 errSecEMMUnloadFailed
= -67710, /* The EMM unload has failed. */
504 errSecAddinLoadFailed
= -67711, /* The add-in load operation has failed. */
505 errSecInvalidKeyRef
= -67712, /* An invalid key was encountered. */
506 errSecInvalidKeyHierarchy
= -67713, /* An invalid key hierarchy was encountered. */
507 errSecAddinUnloadFailed
= -67714, /* The add-in unload operation has failed. */
508 errSecLibraryReferenceNotFound
= -67715, /* A library reference was not found. */
509 errSecInvalidAddinFunctionTable
= -67716, /* An invalid add-in function table was encountered. */
510 errSecInvalidServiceMask
= -67717, /* An invalid service mask was encountered. */
511 errSecModuleNotLoaded
= -67718, /* A module was not loaded. */
512 errSecInvalidSubServiceID
= -67719, /* An invalid subservice ID was encountered. */
513 errSecAttributeNotInContext
= -67720, /* An attribute was not in the context. */
514 errSecModuleManagerInitializeFailed
= -67721, /* A module failed to initialize. */
515 errSecModuleManagerNotFound
= -67722, /* A module was not found. */
516 errSecEventNotificationCallbackNotFound
= -67723, /* An event notification callback was not found. */
517 errSecInputLengthError
= -67724, /* An input length error was encountered. */
518 errSecOutputLengthError
= -67725, /* An output length error was encountered. */
519 errSecPrivilegeNotSupported
= -67726, /* The privilege is not supported. */
520 errSecDeviceError
= -67727, /* A device error was encountered. */
521 errSecAttachHandleBusy
= -67728, /* The CSP handle was busy. */
522 errSecNotLoggedIn
= -67729, /* You are not logged in. */
523 errSecAlgorithmMismatch
= -67730, /* An algorithm mismatch was encountered. */
524 errSecKeyUsageIncorrect
= -67731, /* The key usage is incorrect. */
525 errSecKeyBlobTypeIncorrect
= -67732, /* The key blob type is incorrect. */
526 errSecKeyHeaderInconsistent
= -67733, /* The key header is inconsistent. */
527 errSecUnsupportedKeyFormat
= -67734, /* The key header format is not supported. */
528 errSecUnsupportedKeySize
= -67735, /* The key size is not supported. */
529 errSecInvalidKeyUsageMask
= -67736, /* The key usage mask is not valid. */
530 errSecUnsupportedKeyUsageMask
= -67737, /* The key usage mask is not supported. */
531 errSecInvalidKeyAttributeMask
= -67738, /* The key attribute mask is not valid. */
532 errSecUnsupportedKeyAttributeMask
= -67739, /* The key attribute mask is not supported. */
533 errSecInvalidKeyLabel
= -67740, /* The key label is not valid. */
534 errSecUnsupportedKeyLabel
= -67741, /* The key label is not supported. */
535 errSecInvalidKeyFormat
= -67742, /* The key format is not valid. */
536 errSecUnsupportedVectorOfBuffers
= -67743, /* The vector of buffers is not supported. */
537 errSecInvalidInputVector
= -67744, /* The input vector is not valid. */
538 errSecInvalidOutputVector
= -67745, /* The output vector is not valid. */
539 errSecInvalidContext
= -67746, /* An invalid context was encountered. */
540 errSecInvalidAlgorithm
= -67747, /* An invalid algorithm was encountered. */
541 errSecInvalidAttributeKey
= -67748, /* A key attribute was not valid. */
542 errSecMissingAttributeKey
= -67749, /* A key attribute was missing. */
543 errSecInvalidAttributeInitVector
= -67750, /* An init vector attribute was not valid. */
544 errSecMissingAttributeInitVector
= -67751, /* An init vector attribute was missing. */
545 errSecInvalidAttributeSalt
= -67752, /* A salt attribute was not valid. */
546 errSecMissingAttributeSalt
= -67753, /* A salt attribute was missing. */
547 errSecInvalidAttributePadding
= -67754, /* A padding attribute was not valid. */
548 errSecMissingAttributePadding
= -67755, /* A padding attribute was missing. */
549 errSecInvalidAttributeRandom
= -67756, /* A random number attribute was not valid. */
550 errSecMissingAttributeRandom
= -67757, /* A random number attribute was missing. */
551 errSecInvalidAttributeSeed
= -67758, /* A seed attribute was not valid. */
552 errSecMissingAttributeSeed
= -67759, /* A seed attribute was missing. */
553 errSecInvalidAttributePassphrase
= -67760, /* A passphrase attribute was not valid. */
554 errSecMissingAttributePassphrase
= -67761, /* A passphrase attribute was missing. */
555 errSecInvalidAttributeKeyLength
= -67762, /* A key length attribute was not valid. */
556 errSecMissingAttributeKeyLength
= -67763, /* A key length attribute was missing. */
557 errSecInvalidAttributeBlockSize
= -67764, /* A block size attribute was not valid. */
558 errSecMissingAttributeBlockSize
= -67765, /* A block size attribute was missing. */
559 errSecInvalidAttributeOutputSize
= -67766, /* An output size attribute was not valid. */
560 errSecMissingAttributeOutputSize
= -67767, /* An output size attribute was missing. */
561 errSecInvalidAttributeRounds
= -67768, /* The number of rounds attribute was not valid. */
562 errSecMissingAttributeRounds
= -67769, /* The number of rounds attribute was missing. */
563 errSecInvalidAlgorithmParms
= -67770, /* An algorithm parameters attribute was not valid. */
564 errSecMissingAlgorithmParms
= -67771, /* An algorithm parameters attribute was missing. */
565 errSecInvalidAttributeLabel
= -67772, /* A label attribute was not valid. */
566 errSecMissingAttributeLabel
= -67773, /* A label attribute was missing. */
567 errSecInvalidAttributeKeyType
= -67774, /* A key type attribute was not valid. */
568 errSecMissingAttributeKeyType
= -67775, /* A key type attribute was missing. */
569 errSecInvalidAttributeMode
= -67776, /* A mode attribute was not valid. */
570 errSecMissingAttributeMode
= -67777, /* A mode attribute was missing. */
571 errSecInvalidAttributeEffectiveBits
= -67778, /* An effective bits attribute was not valid. */
572 errSecMissingAttributeEffectiveBits
= -67779, /* An effective bits attribute was missing. */
573 errSecInvalidAttributeStartDate
= -67780, /* A start date attribute was not valid. */
574 errSecMissingAttributeStartDate
= -67781, /* A start date attribute was missing. */
575 errSecInvalidAttributeEndDate
= -67782, /* An end date attribute was not valid. */
576 errSecMissingAttributeEndDate
= -67783, /* An end date attribute was missing. */
577 errSecInvalidAttributeVersion
= -67784, /* A version attribute was not valid. */
578 errSecMissingAttributeVersion
= -67785, /* A version attribute was missing. */
579 errSecInvalidAttributePrime
= -67786, /* A prime attribute was not valid. */
580 errSecMissingAttributePrime
= -67787, /* A prime attribute was missing. */
581 errSecInvalidAttributeBase
= -67788, /* A base attribute was not valid. */
582 errSecMissingAttributeBase
= -67789, /* A base attribute was missing. */
583 errSecInvalidAttributeSubprime
= -67790, /* A subprime attribute was not valid. */
584 errSecMissingAttributeSubprime
= -67791, /* A subprime attribute was missing. */
585 errSecInvalidAttributeIterationCount
= -67792, /* An iteration count attribute was not valid. */
586 errSecMissingAttributeIterationCount
= -67793, /* An iteration count attribute was missing. */
587 errSecInvalidAttributeDLDBHandle
= -67794, /* A database handle attribute was not valid. */
588 errSecMissingAttributeDLDBHandle
= -67795, /* A database handle attribute was missing. */
589 errSecInvalidAttributeAccessCredentials
= -67796, /* An access credentials attribute was not valid. */
590 errSecMissingAttributeAccessCredentials
= -67797, /* An access credentials attribute was missing. */
591 errSecInvalidAttributePublicKeyFormat
= -67798, /* A public key format attribute was not valid. */
592 errSecMissingAttributePublicKeyFormat
= -67799, /* A public key format attribute was missing. */
593 errSecInvalidAttributePrivateKeyFormat
= -67800, /* A private key format attribute was not valid. */
594 errSecMissingAttributePrivateKeyFormat
= -67801, /* A private key format attribute was missing. */
595 errSecInvalidAttributeSymmetricKeyFormat
= -67802, /* A symmetric key format attribute was not valid. */
596 errSecMissingAttributeSymmetricKeyFormat
= -67803, /* A symmetric key format attribute was missing. */
597 errSecInvalidAttributeWrappedKeyFormat
= -67804, /* A wrapped key format attribute was not valid. */
598 errSecMissingAttributeWrappedKeyFormat
= -67805, /* A wrapped key format attribute was missing. */
599 errSecStagedOperationInProgress
= -67806, /* A staged operation is in progress. */
600 errSecStagedOperationNotStarted
= -67807, /* A staged operation was not started. */
601 errSecVerifyFailed
= -67808, /* A cryptographic verification failure has occurred. */
602 errSecQuerySizeUnknown
= -67809, /* The query size is unknown. */
603 errSecBlockSizeMismatch
= -67810, /* A block size mismatch occurred. */
604 errSecPublicKeyInconsistent
= -67811, /* The public key was inconsistent. */
605 errSecDeviceVerifyFailed
= -67812, /* A device verification failure has occurred. */
606 errSecInvalidLoginName
= -67813, /* An invalid login name was detected. */
607 errSecAlreadyLoggedIn
= -67814, /* The user is already logged in. */
608 errSecInvalidDigestAlgorithm
= -67815, /* An invalid digest algorithm was detected. */
609 errSecInvalidCRLGroup
= -67816, /* An invalid CRL group was detected. */
610 errSecCertificateCannotOperate
= -67817, /* The certificate cannot operate. */
611 errSecCertificateExpired
= -67818, /* An expired certificate was detected. */
612 errSecCertificateNotValidYet
= -67819, /* The certificate is not yet valid. */
613 errSecCertificateRevoked
= -67820, /* The certificate was revoked. */
614 errSecCertificateSuspended
= -67821, /* The certificate was suspended. */
615 errSecInsufficientCredentials
= -67822, /* Insufficient credentials were detected. */
616 errSecInvalidAction
= -67823, /* The action was not valid. */
617 errSecInvalidAuthority
= -67824, /* The authority was not valid. */
618 errSecVerifyActionFailed
= -67825, /* A verify action has failed. */
619 errSecInvalidCertAuthority
= -67826, /* The certificate authority was not valid. */
620 errSecInvaldCRLAuthority
= -67827, /* The CRL authority was not valid. */
621 errSecInvalidCRLEncoding
= -67828, /* The CRL encoding was not valid. */
622 errSecInvalidCRLType
= -67829, /* The CRL type was not valid. */
623 errSecInvalidCRL
= -67830, /* The CRL was not valid. */
624 errSecInvalidFormType
= -67831, /* The form type was not valid. */
625 errSecInvalidID
= -67832, /* The ID was not valid. */
626 errSecInvalidIdentifier
= -67833, /* The identifier was not valid. */
627 errSecInvalidIndex
= -67834, /* The index was not valid. */
628 errSecInvalidPolicyIdentifiers
= -67835, /* The policy identifiers are not valid. */
629 errSecInvalidTimeString
= -67836, /* The time specified was not valid. */
630 errSecInvalidReason
= -67837, /* The trust policy reason was not valid. */
631 errSecInvalidRequestInputs
= -67838, /* The request inputs are not valid. */
632 errSecInvalidResponseVector
= -67839, /* The response vector was not valid. */
633 errSecInvalidStopOnPolicy
= -67840, /* The stop-on policy was not valid. */
634 errSecInvalidTuple
= -67841, /* The tuple was not valid. */
635 errSecMultipleValuesUnsupported
= -67842, /* Multiple values are not supported. */
636 errSecNotTrusted
= -67843, /* The certificate was not trusted. */
637 errSecNoDefaultAuthority
= -67844, /* No default authority was detected. */
638 errSecRejectedForm
= -67845, /* The trust policy had a rejected form. */
639 errSecRequestLost
= -67846, /* The request was lost. */
640 errSecRequestRejected
= -67847, /* The request was rejected. */
641 errSecUnsupportedAddressType
= -67848, /* The address type is not supported. */
642 errSecUnsupportedService
= -67849, /* The service is not supported. */
643 errSecInvalidTupleGroup
= -67850, /* The tuple group was not valid. */
644 errSecInvalidBaseACLs
= -67851, /* The base ACLs are not valid. */
645 errSecInvalidTupleCredendtials
= -67852, /* The tuple credentials are not valid. */
646 errSecInvalidEncoding
= -67853, /* The encoding was not valid. */
647 errSecInvalidValidityPeriod
= -67854, /* The validity period was not valid. */
648 errSecInvalidRequestor
= -67855, /* The requestor was not valid. */
649 errSecRequestDescriptor
= -67856, /* The request descriptor was not valid. */
650 errSecInvalidBundleInfo
= -67857, /* The bundle information was not valid. */
651 errSecInvalidCRLIndex
= -67858, /* The CRL index was not valid. */
652 errSecNoFieldValues
= -67859, /* No field values were detected. */
653 errSecUnsupportedFieldFormat
= -67860, /* The field format is not supported. */
654 errSecUnsupportedIndexInfo
= -67861, /* The index information is not supported. */
655 errSecUnsupportedLocality
= -67862, /* The locality is not supported. */
656 errSecUnsupportedNumAttributes
= -67863, /* The number of attributes is not supported. */
657 errSecUnsupportedNumIndexes
= -67864, /* The number of indexes is not supported. */
658 errSecUnsupportedNumRecordTypes
= -67865, /* The number of record types is not supported. */
659 errSecFieldSpecifiedMultiple
= -67866, /* Too many fields were specified. */
660 errSecIncompatibleFieldFormat
= -67867, /* The field format was incompatible. */
661 errSecInvalidParsingModule
= -67868, /* The parsing module was not valid. */
662 errSecDatabaseLocked
= -67869, /* The database is locked. */
663 errSecDatastoreIsOpen
= -67870, /* The data store is open. */
664 errSecMissingValue
= -67871, /* A missing value was detected. */
665 errSecUnsupportedQueryLimits
= -67872, /* The query limits are not supported. */
666 errSecUnsupportedNumSelectionPreds
= -67873, /* The number of selection predicates is not supported. */
667 errSecUnsupportedOperator
= -67874, /* The operator is not supported. */
668 errSecInvalidDBLocation
= -67875, /* The database location is not valid. */
669 errSecInvalidAccessRequest
= -67876, /* The access request is not valid. */
670 errSecInvalidIndexInfo
= -67877, /* The index information is not valid. */
671 errSecInvalidNewOwner
= -67878, /* The new owner is not valid. */
672 errSecInvalidModifyMode
= -67879, /* The modify mode is not valid. */
673 errSecMissingRequiredExtension
= -67880, /* A required certificate extension is missing. */
674 errSecExtendedKeyUsageNotCritical
= -67881, /* The extended key usage extension was not marked critical. */
675 errSecTimestampMissing
= -67882, /* A timestamp was expected but was not found. */
676 errSecTimestampInvalid
= -67883, /* The timestamp was not valid. */
677 errSecTimestampNotTrusted
= -67884, /* The timestamp was not trusted. */
678 errSecTimestampServiceNotAvailable
= -67885, /* The timestamp service is not available. */
679 errSecTimestampBadAlg
= -67886, /* An unrecognized or unsupported Algorithm Identifier in timestamp. */
680 errSecTimestampBadRequest
= -67887, /* The timestamp transaction is not permitted or supported. */
681 errSecTimestampBadDataFormat
= -67888, /* The timestamp data submitted has the wrong format. */
682 errSecTimestampTimeNotAvailable
= -67889, /* The time source for the Timestamp Authority is not available. */
683 errSecTimestampUnacceptedPolicy
= -67890, /* The requested policy is not supported by the Timestamp Authority. */
684 errSecTimestampUnacceptedExtension
= -67891, /* The requested extension is not supported by the Timestamp Authority. */
685 errSecTimestampAddInfoNotAvailable
= -67892, /* The additional information requested is not available. */
686 errSecTimestampSystemFailure
= -67893, /* The timestamp request cannot be handled due to system failure. */
687 errSecSigningTimeMissing
= -67894, /* A signing time was expected but was not found. */
688 errSecTimestampRejection
= -67895, /* A timestamp transaction was rejected. */
689 errSecTimestampWaiting
= -67896, /* A timestamp transaction is waiting. */
690 errSecTimestampRevocationWarning
= -67897, /* A timestamp authority revocation warning was issued. */
691 errSecTimestampRevocationNotification
= -67898, /* A timestamp authority revocation notification was issued. */
695 CF_IMPLICIT_BRIDGING_DISABLED
696 CF_ASSUME_NONNULL_END
700 #endif /* _SECURITY_SECBASE_H_ */