]> git.saurik.com Git - apple/security.git/blob - base/SecBase.h
Security-59306.101.1.tar.gz
[apple/security.git] / base / SecBase.h
1 /*
2 * Copyright (c) 2000-2016 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 #ifndef _SECURITY_SECBASE_H_
25 #define _SECURITY_SECBASE_H_
26
27 #include <TargetConditionals.h>
28 #include <CoreFoundation/CFBase.h>
29 #include <Availability.h>
30
31 // Truth table for following declarations:
32 //
33 // TARGET_OS_OSX TARGET_OS_OSX TARGET_OS_IPHONE TARGET_OS_IPHONE TARGET_OS_IOSMAC
34 // SEC_IOS_ON_OSX SEC_IOS_ON_OSX
35 // =================================================================================================================
36 // SEC_OS_IPHONE 0 1 1 1 1
37 // SEC_OS_OSX 1 0 0 0 0
38 // SEC_OS_OSX_INCLUDES 1 1 0 0 0
39
40 #if TARGET_OS_OSX
41 #ifdef SEC_IOS_ON_OSX
42 #define SEC_OS_IPHONE 1
43
44 #define SEC_OS_OSX 0
45 #define SEC_OS_OSX_INCLUDES 1
46 #endif // SEC_IOS_ON_OSX
47 #endif // TARGET_OS_OSX
48
49 #if TARGET_OS_IOSMAC
50 #define SEC_OS_IPHONE 1
51
52 #define SEC_OS_OSX 0
53 #define SEC_OS_OSX_INCLUDES 0
54 #endif // TARGET_OS_IOSMAC
55
56 #ifndef SEC_OS_IPHONE
57 // block above did not fire; set flags to current platform
58 #define SEC_OS_IPHONE TARGET_OS_IPHONE
59
60 #define SEC_OS_OSX TARGET_OS_OSX
61 #define SEC_OS_OSX_INCLUDES TARGET_OS_OSX
62 #endif
63
64 #if SEC_OS_IPHONE
65 #include <sys/cdefs.h>
66 #endif
67
68 #if defined(__clang__)
69 #define SEC_DEPRECATED_ATTRIBUTE DEPRECATED_ATTRIBUTE
70 #else
71 #define SEC_DEPRECATED_ATTRIBUTE
72 #endif
73
74 #define CSSM_DEPRECATED API_DEPRECATED("CSSM is not supported", macos(10.0, 10.7)) API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac)
75
76 __BEGIN_DECLS
77
78 CF_ASSUME_NONNULL_BEGIN
79 CF_IMPLICIT_BRIDGING_ENABLED
80
81 #define SECURITY_TYPE_UNIFICATION 1
82
83 /*!
84 @typedef SecCertificateRef
85 @abstract CFType representing a X.509 certificate.
86 See SecCertificate.h for details.
87 */
88 typedef struct CF_BRIDGED_TYPE(id) __SecCertificate *SecCertificateRef;
89
90 #if TARGET_OS_OSX
91 typedef struct __SecCertificate OpaqueSecCertificateRef;
92 #endif
93
94 /*!
95 @typedef SecIdentityRef
96 @abstract CFType representing an identity, which contains
97 a SecKeyRef and an associated SecCertificateRef. See
98 SecIdentity.h for details.
99 */
100 typedef struct CF_BRIDGED_TYPE(id) __SecIdentity *SecIdentityRef;
101
102 #if TARGET_OS_OSX
103 typedef struct __SecIdentity OpaqueSecIdentityRef;
104 #endif
105
106 /*!
107 @typedef SecKeyRef
108 @abstract CFType representing a cryptographic key. See
109 SecKey.h for details.
110 */
111 typedef struct CF_BRIDGED_TYPE(id) __SecKey *SecKeyRef;
112
113 #if TARGET_OS_OSX
114 typedef struct __SecKey OpaqueSecKeyRef;
115 #endif
116
117 /*!
118 @typedef SecPolicyRef
119 @abstract CFType representing a X.509 certificate trust policy.
120 See SecPolicy.h for details.
121 */
122 typedef struct CF_BRIDGED_TYPE(id) __SecPolicy *SecPolicyRef;
123
124 /*!
125 @typedef SecAccessControl
126 @abstract CFType representing access control for an item.
127 SecAccessControl.h for details.
128 */
129 typedef struct CF_BRIDGED_TYPE(id) __SecAccessControl *SecAccessControlRef;
130
131 /*!
132 @typedef SecKeychainRef
133 @abstract Contains information about a keychain.
134 */
135 typedef struct CF_BRIDGED_TYPE(id) __SecKeychain *SecKeychainRef
136 API_AVAILABLE(macos(10.0)) SPI_AVAILABLE(ios(1.0), tvos(9.0), watchos(1.0));
137
138 /*!
139 @typedef SecKeychainItemRef
140 @abstract Contains information about a keychain item.
141 */
142 typedef struct CF_BRIDGED_TYPE(id) __SecKeychainItem *SecKeychainItemRef API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
143
144 /*!
145 @typedef SecKeychainSearchRef
146 @abstract Contains information about a keychain search.
147 */
148 typedef struct CF_BRIDGED_TYPE(id) __SecKeychainSearch *SecKeychainSearchRef API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
149
150 /*!
151 @typedef SecKeychainAttrType
152 @abstract Represents a keychain attribute type.
153 */
154 typedef OSType SecKeychainAttrType API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
155
156 /*!
157 @struct SecKeychainAttribute
158 @abstract Contains keychain attributes.
159 @field tag A 4-byte attribute tag.
160 @field length The length of the buffer pointed to by data.
161 @field data A pointer to the attribute data.
162 */
163 struct API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac) SecKeychainAttribute
164 {
165 SecKeychainAttrType tag;
166 UInt32 length;
167 void * __nullable data;
168 };
169 typedef struct SecKeychainAttribute SecKeychainAttribute API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
170
171 /*!
172 @typedef SecKeychainAttributePtr
173 @abstract Represents a pointer to a keychain attribute structure.
174 */
175 typedef SecKeychainAttribute *SecKeychainAttributePtr API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
176
177 /*!
178 @typedef SecKeychainAttributeList
179 @abstract Represents a list of keychain attributes.
180 @field count An unsigned 32-bit integer that represents the number of keychain attributes in the array.
181 @field attr A pointer to the first keychain attribute in the array.
182 */
183 struct API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac) SecKeychainAttributeList
184 {
185 UInt32 count;
186 SecKeychainAttribute * __nullable attr;
187 };
188 typedef struct SecKeychainAttributeList SecKeychainAttributeList API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
189
190 /*!
191 @typedef SecKeychainStatus
192 @abstract Represents the status of a keychain.
193 */
194 typedef UInt32 SecKeychainStatus API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
195
196 /*!
197 @typedef SecTrustedApplicationRef
198 @abstract Contains information about a trusted application.
199 */
200 typedef struct CF_BRIDGED_TYPE(id) __SecTrustedApplication *SecTrustedApplicationRef API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
201
202 /*!
203 @typedef SecAccessRef
204 @abstract Contains information about an access.
205 */
206 typedef struct CF_BRIDGED_TYPE(id) __SecAccess *SecAccessRef API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
207
208 #if TARGET_OS_OSX
209 typedef struct __SecAccess OpaqueSecAccessRef;
210 #endif
211
212 /*!
213 @typedef SecACLRef
214 @abstract Contains information about an access control list (ACL) entry.
215 */
216 typedef struct CF_BRIDGED_TYPE(id) __SecACL *SecACLRef API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
217
218 /*!
219 @typedef SecPasswordRef
220 @abstract Contains information about a password.
221 */
222 typedef struct CF_BRIDGED_TYPE(id) __SecPassword *SecPasswordRef API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
223
224 /*!
225 @typedef SecKeychainAttributeInfo
226 @abstract Represents an attribute.
227 @field count The number of tag-format pairs in the respective arrays.
228 @field tag A pointer to the first attribute tag in the array.
229 @field format A pointer to the first CSSM_DB_ATTRIBUTE_FORMAT in the array.
230 @discussion Each tag and format item form a pair.
231 */
232 struct API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac) SecKeychainAttributeInfo
233 {
234 UInt32 count;
235 UInt32 *tag;
236 UInt32 * __nullable format;
237 };
238 typedef struct SecKeychainAttributeInfo SecKeychainAttributeInfo API_UNAVAILABLE(ios, watchos, tvos, bridgeos, iosmac);
239
240 /*!
241 @function SecCopyErrorMessageString
242 @abstract Returns a string describing the specified error result code.
243 @param status An error result code of type OSStatus or CSSM_RETURN, as returned by a Security or CSSM function.
244 @reserved Reserved for future use. Your code should pass NULL in this parameter.
245 @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.
246 */
247 __nullable
248 CFStringRef SecCopyErrorMessageString(OSStatus status, void * __nullable reserved)
249 __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_11_3);
250
251
252 /*!
253 @enum Security Error Codes
254 @abstract Result codes returned from Security framework functions.
255 @constant errSecSuccess No error.
256 @constant errSecUnimplemented Function or operation not implemented.
257 @constant errSecDiskFull Disk Full error.
258 @constant errSecIO I/O error.
259 @constant errSecParam One or more parameters passed to a function were not valid.
260 @constant errSecWrPerm Write permissions error.
261 @constant errSecAllocate Failed to allocate memory.
262 @constant errSecUserCanceled User canceled the operation.
263 @constant errSecBadReq Bad parameter or invalid state for operation.
264 @constant errSecInternalComponent
265 @constant errSecCoreFoundationUnknown
266 @constant errSecNotAvailable No keychain is available.
267 @constant errSecReadOnly Read only error.
268 @constant errSecAuthFailed Authorization/Authentication failed.
269 @constant errSecNoSuchKeychain The keychain does not exist.
270 @constant errSecInvalidKeychain The keychain is not valid.
271 @constant errSecDuplicateKeychain A keychain with the same name already exists.
272 @constant errSecDuplicateCallback The specified callback is already installed.
273 @constant errSecInvalidCallback The specified callback is not valid.
274 @constant errSecDuplicateItem The item already exists.
275 @constant errSecItemNotFound The item cannot be found.
276 @constant errSecBufferTooSmall The buffer is too small.
277 @constant errSecDataTooLarge The data is too large.
278 @constant errSecNoSuchAttr The attribute does not exist.
279 @constant errSecInvalidItemRef The item reference is invalid.
280 @constant errSecInvalidSearchRef The search reference is invalid.
281 @constant errSecNoSuchClass The keychain item class does not exist.
282 @constant errSecNoDefaultKeychain A default keychain does not exist.
283 @constant errSecInteractionNotAllowed User interaction is not allowed.
284 @constant errSecReadOnlyAttr The attribute is read only.
285 @constant errSecWrongSecVersion The version is incorrect.
286 @constant errSecKeySizeNotAllowed The key size is not allowed.
287 @constant errSecNoStorageModule There is no storage module available.
288 @constant errSecNoCertificateModule There is no certificate module available.
289 @constant errSecNoPolicyModule There is no policy module available.
290 @constant errSecInteractionRequired User interaction is required.
291 @constant errSecDataNotAvailable The data is not available.
292 @constant errSecDataNotModifiable The data is not modifiable.
293 @constant errSecCreateChainFailed The attempt to create a certificate chain failed.
294 @constant errSecACLNotSimple The access control list is not in standard simple form.
295 @constant errSecPolicyNotFound The policy specified cannot be found.
296 @constant errSecInvalidTrustSetting The specified trust setting is invalid.
297 @constant errSecNoAccessForItem The specified item has no access control.
298 @constant errSecInvalidOwnerEdit Invalid attempt to change the owner of this item.
299 @constant errSecTrustNotAvailable No trust results are available.
300 @constant errSecUnsupportedFormat Import/Export format unsupported.
301 @constant errSecUnknownFormat Unknown format in import.
302 @constant errSecKeyIsSensitive Key material must be wrapped for export.
303 @constant errSecMultiplePrivKeys An attempt was made to import multiple private keys.
304 @constant errSecPassphraseRequired Passphrase is required for import/export.
305 @constant errSecInvalidPasswordRef The password reference was invalid.
306 @constant errSecInvalidTrustSettings The Trust Settings Record was corrupted.
307 @constant errSecNoTrustSettings No Trust Settings were found.
308 @constant errSecPkcs12VerifyFailure MAC verification failed during PKCS12 Import.
309 @constant errSecDecode Unable to decode the provided data.
310
311 @discussion The assigned error space is discontinuous: e.g. -25240..-25279, -25290..-25329, -68608..-67585, and so on.
312 */
313
314 /*
315 Note: the comments that appear after these errors are used to create SecErrorMessages.strings.
316 The comments must not be multi-line, and should be in a form meaningful to an end user. If
317 a different or additional comment is needed, it can be put in the header doc format, or on a
318 line that does not start with errZZZ.
319 */
320
321 CF_ENUM(OSStatus)
322 {
323 errSecSuccess = 0, /* No error. */
324 errSecUnimplemented = -4, /* Function or operation not implemented. */
325 errSecDiskFull = -34, /* The disk is full. */
326 errSecDskFull __attribute__((deprecated("use errSecDiskFull"))) = errSecDiskFull,
327 errSecIO = -36, /* I/O error. */
328 errSecOpWr = -49, /* File already open with write permission. */
329 errSecParam = -50, /* One or more parameters passed to a function were not valid. */
330 errSecWrPerm = -61, /* Write permissions error. */
331 errSecAllocate = -108, /* Failed to allocate memory. */
332 errSecUserCanceled = -128, /* User canceled the operation. */
333 errSecBadReq = -909, /* Bad parameter or invalid state for operation. */
334
335 errSecInternalComponent = -2070,
336 errSecCoreFoundationUnknown = -4960,
337
338 errSecMissingEntitlement = -34018, /* A required entitlement isn't present. */
339
340 errSecNotAvailable = -25291, /* No keychain is available. You may need to restart your computer. */
341 errSecReadOnly = -25292, /* This keychain cannot be modified. */
342 errSecAuthFailed = -25293, /* The user name or passphrase you entered is not correct. */
343 errSecNoSuchKeychain = -25294, /* The specified keychain could not be found. */
344 errSecInvalidKeychain = -25295, /* The specified keychain is not a valid keychain file. */
345 errSecDuplicateKeychain = -25296, /* A keychain with the same name already exists. */
346 errSecDuplicateCallback = -25297, /* The specified callback function is already installed. */
347 errSecInvalidCallback = -25298, /* The specified callback function is not valid. */
348 errSecDuplicateItem = -25299, /* The specified item already exists in the keychain. */
349 errSecItemNotFound = -25300, /* The specified item could not be found in the keychain. */
350 errSecBufferTooSmall = -25301, /* There is not enough memory available to use the specified item. */
351 errSecDataTooLarge = -25302, /* This item contains information which is too large or in a format that cannot be displayed. */
352 errSecNoSuchAttr = -25303, /* The specified attribute does not exist. */
353 errSecInvalidItemRef = -25304, /* The specified item is no longer valid. It may have been deleted from the keychain. */
354 errSecInvalidSearchRef = -25305, /* Unable to search the current keychain. */
355 errSecNoSuchClass = -25306, /* The specified item does not appear to be a valid keychain item. */
356 errSecNoDefaultKeychain = -25307, /* A default keychain could not be found. */
357 errSecInteractionNotAllowed = -25308, /* User interaction is not allowed. */
358 errSecReadOnlyAttr = -25309, /* The specified attribute could not be modified. */
359 errSecWrongSecVersion = -25310, /* This keychain was created by a different version of the system software and cannot be opened. */
360 errSecKeySizeNotAllowed = -25311, /* This item specifies a key size which is too large or too small. */
361 errSecNoStorageModule = -25312, /* A required component (data storage module) could not be loaded. You may need to restart your computer. */
362 errSecNoCertificateModule = -25313, /* A required component (certificate module) could not be loaded. You may need to restart your computer. */
363 errSecNoPolicyModule = -25314, /* A required component (policy module) could not be loaded. You may need to restart your computer. */
364 errSecInteractionRequired = -25315, /* User interaction is required, but is currently not allowed. */
365 errSecDataNotAvailable = -25316, /* The contents of this item cannot be retrieved. */
366 errSecDataNotModifiable = -25317, /* The contents of this item cannot be modified. */
367 errSecCreateChainFailed = -25318, /* One or more certificates required to validate this certificate cannot be found. */
368 errSecInvalidPrefsDomain = -25319, /* The specified preferences domain is not valid. */
369 errSecInDarkWake = -25320, /* In dark wake, no UI possible */
370
371 errSecACLNotSimple = -25240, /* The specified access control list is not in standard (simple) form. */
372 errSecPolicyNotFound = -25241, /* The specified policy cannot be found. */
373 errSecInvalidTrustSetting = -25242, /* The specified trust setting is invalid. */
374 errSecNoAccessForItem = -25243, /* The specified item has no access control. */
375 errSecInvalidOwnerEdit = -25244, /* Invalid attempt to change the owner of this item. */
376 errSecTrustNotAvailable = -25245, /* No trust results are available. */
377 errSecUnsupportedFormat = -25256, /* Import/Export format unsupported. */
378 errSecUnknownFormat = -25257, /* Unknown format in import. */
379 errSecKeyIsSensitive = -25258, /* Key material must be wrapped for export. */
380 errSecMultiplePrivKeys = -25259, /* An attempt was made to import multiple private keys. */
381 errSecPassphraseRequired = -25260, /* Passphrase is required for import/export. */
382 errSecInvalidPasswordRef = -25261, /* The password reference was invalid. */
383 errSecInvalidTrustSettings = -25262, /* The Trust Settings Record was corrupted. */
384 errSecNoTrustSettings = -25263, /* No Trust Settings were found. */
385 errSecPkcs12VerifyFailure = -25264, /* MAC verification failed during PKCS12 import (wrong password?) */
386 errSecNotSigner = -26267, /* A certificate was not signed by its proposed parent. */
387
388 errSecDecode = -26275, /* Unable to decode the provided data. */
389
390 errSecServiceNotAvailable = -67585, /* The required service is not available. */
391 errSecInsufficientClientID = -67586, /* The client ID is not correct. */
392 errSecDeviceReset = -67587, /* A device reset has occurred. */
393 errSecDeviceFailed = -67588, /* A device failure has occurred. */
394 errSecAppleAddAppACLSubject = -67589, /* Adding an application ACL subject failed. */
395 errSecApplePublicKeyIncomplete = -67590, /* The public key is incomplete. */
396 errSecAppleSignatureMismatch = -67591, /* A signature mismatch has occurred. */
397 errSecAppleInvalidKeyStartDate = -67592, /* The specified key has an invalid start date. */
398 errSecAppleInvalidKeyEndDate = -67593, /* The specified key has an invalid end date. */
399 errSecConversionError = -67594, /* A conversion error has occurred. */
400 errSecAppleSSLv2Rollback = -67595, /* A SSLv2 rollback error has occurred. */
401 errSecQuotaExceeded = -67596, /* The quota was exceeded. */
402 errSecFileTooBig = -67597, /* The file is too big. */
403 errSecInvalidDatabaseBlob = -67598, /* The specified database has an invalid blob. */
404 errSecInvalidKeyBlob = -67599, /* The specified database has an invalid key blob. */
405 errSecIncompatibleDatabaseBlob = -67600, /* The specified database has an incompatible blob. */
406 errSecIncompatibleKeyBlob = -67601, /* The specified database has an incompatible key blob. */
407 errSecHostNameMismatch = -67602, /* A host name mismatch has occurred. */
408 errSecUnknownCriticalExtensionFlag = -67603, /* There is an unknown critical extension flag. */
409 errSecNoBasicConstraints = -67604, /* No basic constraints were found. */
410 errSecNoBasicConstraintsCA = -67605, /* No basic CA constraints were found. */
411 errSecInvalidAuthorityKeyID = -67606, /* The authority key ID is not valid. */
412 errSecInvalidSubjectKeyID = -67607, /* The subject key ID is not valid. */
413 errSecInvalidKeyUsageForPolicy = -67608, /* The key usage is not valid for the specified policy. */
414 errSecInvalidExtendedKeyUsage = -67609, /* The extended key usage is not valid. */
415 errSecInvalidIDLinkage = -67610, /* The ID linkage is not valid. */
416 errSecPathLengthConstraintExceeded = -67611, /* The path length constraint was exceeded. */
417 errSecInvalidRoot = -67612, /* The root or anchor certificate is not valid. */
418 errSecCRLExpired = -67613, /* The CRL has expired. */
419 errSecCRLNotValidYet = -67614, /* The CRL is not yet valid. */
420 errSecCRLNotFound = -67615, /* The CRL was not found. */
421 errSecCRLServerDown = -67616, /* The CRL server is down. */
422 errSecCRLBadURI = -67617, /* The CRL has a bad Uniform Resource Identifier. */
423 errSecUnknownCertExtension = -67618, /* An unknown certificate extension was encountered. */
424 errSecUnknownCRLExtension = -67619, /* An unknown CRL extension was encountered. */
425 errSecCRLNotTrusted = -67620, /* The CRL is not trusted. */
426 errSecCRLPolicyFailed = -67621, /* The CRL policy failed. */
427 errSecIDPFailure = -67622, /* The issuing distribution point was not valid. */
428 errSecSMIMEEmailAddressesNotFound = -67623, /* An email address mismatch was encountered. */
429 errSecSMIMEBadExtendedKeyUsage = -67624, /* The appropriate extended key usage for SMIME was not found. */
430 errSecSMIMEBadKeyUsage = -67625, /* The key usage is not compatible with SMIME. */
431 errSecSMIMEKeyUsageNotCritical = -67626, /* The key usage extension is not marked as critical. */
432 errSecSMIMENoEmailAddress = -67627, /* No email address was found in the certificate. */
433 errSecSMIMESubjAltNameNotCritical = -67628, /* The subject alternative name extension is not marked as critical. */
434 errSecSSLBadExtendedKeyUsage = -67629, /* The appropriate extended key usage for SSL was not found. */
435 errSecOCSPBadResponse = -67630, /* The OCSP response was incorrect or could not be parsed. */
436 errSecOCSPBadRequest = -67631, /* The OCSP request was incorrect or could not be parsed. */
437 errSecOCSPUnavailable = -67632, /* OCSP service is unavailable. */
438 errSecOCSPStatusUnrecognized = -67633, /* The OCSP server did not recognize this certificate. */
439 errSecEndOfData = -67634, /* An end-of-data was detected. */
440 errSecIncompleteCertRevocationCheck = -67635, /* An incomplete certificate revocation check occurred. */
441 errSecNetworkFailure = -67636, /* A network failure occurred. */
442 errSecOCSPNotTrustedToAnchor = -67637, /* The OCSP response was not trusted to a root or anchor certificate. */
443 errSecRecordModified = -67638, /* The record was modified. */
444 errSecOCSPSignatureError = -67639, /* The OCSP response had an invalid signature. */
445 errSecOCSPNoSigner = -67640, /* The OCSP response had no signer. */
446 errSecOCSPResponderMalformedReq = -67641, /* The OCSP responder was given a malformed request. */
447 errSecOCSPResponderInternalError = -67642, /* The OCSP responder encountered an internal error. */
448 errSecOCSPResponderTryLater = -67643, /* The OCSP responder is busy, try again later. */
449 errSecOCSPResponderSignatureRequired = -67644, /* The OCSP responder requires a signature. */
450 errSecOCSPResponderUnauthorized = -67645, /* The OCSP responder rejected this request as unauthorized. */
451 errSecOCSPResponseNonceMismatch = -67646, /* The OCSP response nonce did not match the request. */
452 errSecCodeSigningBadCertChainLength = -67647, /* Code signing encountered an incorrect certificate chain length. */
453 errSecCodeSigningNoBasicConstraints = -67648, /* Code signing found no basic constraints. */
454 errSecCodeSigningBadPathLengthConstraint = -67649, /* Code signing encountered an incorrect path length constraint. */
455 errSecCodeSigningNoExtendedKeyUsage = -67650, /* Code signing found no extended key usage. */
456 errSecCodeSigningDevelopment = -67651, /* Code signing indicated use of a development-only certificate. */
457 errSecResourceSignBadCertChainLength = -67652, /* Resource signing has encountered an incorrect certificate chain length. */
458 errSecResourceSignBadExtKeyUsage = -67653, /* Resource signing has encountered an error in the extended key usage. */
459 errSecTrustSettingDeny = -67654, /* The trust setting for this policy was set to Deny. */
460 errSecInvalidSubjectName = -67655, /* An invalid certificate subject name was encountered. */
461 errSecUnknownQualifiedCertStatement = -67656, /* An unknown qualified certificate statement was encountered. */
462 errSecMobileMeRequestQueued = -67657,
463 errSecMobileMeRequestRedirected = -67658,
464 errSecMobileMeServerError = -67659,
465 errSecMobileMeServerNotAvailable = -67660,
466 errSecMobileMeServerAlreadyExists = -67661,
467 errSecMobileMeServerServiceErr = -67662,
468 errSecMobileMeRequestAlreadyPending = -67663,
469 errSecMobileMeNoRequestPending = -67664,
470 errSecMobileMeCSRVerifyFailure = -67665,
471 errSecMobileMeFailedConsistencyCheck = -67666,
472 errSecNotInitialized = -67667, /* A function was called without initializing CSSM. */
473 errSecInvalidHandleUsage = -67668, /* The CSSM handle does not match with the service type. */
474 errSecPVCReferentNotFound = -67669, /* A reference to the calling module was not found in the list of authorized callers. */
475 errSecFunctionIntegrityFail = -67670, /* A function address was not within the verified module. */
476 errSecInternalError = -67671, /* An internal error has occurred. */
477 errSecMemoryError = -67672, /* A memory error has occurred. */
478 errSecInvalidData = -67673, /* Invalid data was encountered. */
479 errSecMDSError = -67674, /* A Module Directory Service error has occurred. */
480 errSecInvalidPointer = -67675, /* An invalid pointer was encountered. */
481 errSecSelfCheckFailed = -67676, /* Self-check has failed. */
482 errSecFunctionFailed = -67677, /* A function has failed. */
483 errSecModuleManifestVerifyFailed = -67678, /* A module manifest verification failure has occurred. */
484 errSecInvalidGUID = -67679, /* An invalid GUID was encountered. */
485 errSecInvalidHandle = -67680, /* An invalid handle was encountered. */
486 errSecInvalidDBList = -67681, /* An invalid DB list was encountered. */
487 errSecInvalidPassthroughID = -67682, /* An invalid passthrough ID was encountered. */
488 errSecInvalidNetworkAddress = -67683, /* An invalid network address was encountered. */
489 errSecCRLAlreadySigned = -67684, /* The certificate revocation list is already signed. */
490 errSecInvalidNumberOfFields = -67685, /* An invalid number of fields were encountered. */
491 errSecVerificationFailure = -67686, /* A verification failure occurred. */
492 errSecUnknownTag = -67687, /* An unknown tag was encountered. */
493 errSecInvalidSignature = -67688, /* An invalid signature was encountered. */
494 errSecInvalidName = -67689, /* An invalid name was encountered. */
495 errSecInvalidCertificateRef = -67690, /* An invalid certificate reference was encountered. */
496 errSecInvalidCertificateGroup = -67691, /* An invalid certificate group was encountered. */
497 errSecTagNotFound = -67692, /* The specified tag was not found. */
498 errSecInvalidQuery = -67693, /* The specified query was not valid. */
499 errSecInvalidValue = -67694, /* An invalid value was detected. */
500 errSecCallbackFailed = -67695, /* A callback has failed. */
501 errSecACLDeleteFailed = -67696, /* An ACL delete operation has failed. */
502 errSecACLReplaceFailed = -67697, /* An ACL replace operation has failed. */
503 errSecACLAddFailed = -67698, /* An ACL add operation has failed. */
504 errSecACLChangeFailed = -67699, /* An ACL change operation has failed. */
505 errSecInvalidAccessCredentials = -67700, /* Invalid access credentials were encountered. */
506 errSecInvalidRecord = -67701, /* An invalid record was encountered. */
507 errSecInvalidACL = -67702, /* An invalid ACL was encountered. */
508 errSecInvalidSampleValue = -67703, /* An invalid sample value was encountered. */
509 errSecIncompatibleVersion = -67704, /* An incompatible version was encountered. */
510 errSecPrivilegeNotGranted = -67705, /* The privilege was not granted. */
511 errSecInvalidScope = -67706, /* An invalid scope was encountered. */
512 errSecPVCAlreadyConfigured = -67707, /* The PVC is already configured. */
513 errSecInvalidPVC = -67708, /* An invalid PVC was encountered. */
514 errSecEMMLoadFailed = -67709, /* The EMM load has failed. */
515 errSecEMMUnloadFailed = -67710, /* The EMM unload has failed. */
516 errSecAddinLoadFailed = -67711, /* The add-in load operation has failed. */
517 errSecInvalidKeyRef = -67712, /* An invalid key was encountered. */
518 errSecInvalidKeyHierarchy = -67713, /* An invalid key hierarchy was encountered. */
519 errSecAddinUnloadFailed = -67714, /* The add-in unload operation has failed. */
520 errSecLibraryReferenceNotFound = -67715, /* A library reference was not found. */
521 errSecInvalidAddinFunctionTable = -67716, /* An invalid add-in function table was encountered. */
522 errSecInvalidServiceMask = -67717, /* An invalid service mask was encountered. */
523 errSecModuleNotLoaded = -67718, /* A module was not loaded. */
524 errSecInvalidSubServiceID = -67719, /* An invalid subservice ID was encountered. */
525 errSecAttributeNotInContext = -67720, /* An attribute was not in the context. */
526 errSecModuleManagerInitializeFailed = -67721, /* A module failed to initialize. */
527 errSecModuleManagerNotFound = -67722, /* A module was not found. */
528 errSecEventNotificationCallbackNotFound = -67723, /* An event notification callback was not found. */
529 errSecInputLengthError = -67724, /* An input length error was encountered. */
530 errSecOutputLengthError = -67725, /* An output length error was encountered. */
531 errSecPrivilegeNotSupported = -67726, /* The privilege is not supported. */
532 errSecDeviceError = -67727, /* A device error was encountered. */
533 errSecAttachHandleBusy = -67728, /* The CSP handle was busy. */
534 errSecNotLoggedIn = -67729, /* You are not logged in. */
535 errSecAlgorithmMismatch = -67730, /* An algorithm mismatch was encountered. */
536 errSecKeyUsageIncorrect = -67731, /* The key usage is incorrect. */
537 errSecKeyBlobTypeIncorrect = -67732, /* The key blob type is incorrect. */
538 errSecKeyHeaderInconsistent = -67733, /* The key header is inconsistent. */
539 errSecUnsupportedKeyFormat = -67734, /* The key header format is not supported. */
540 errSecUnsupportedKeySize = -67735, /* The key size is not supported. */
541 errSecInvalidKeyUsageMask = -67736, /* The key usage mask is not valid. */
542 errSecUnsupportedKeyUsageMask = -67737, /* The key usage mask is not supported. */
543 errSecInvalidKeyAttributeMask = -67738, /* The key attribute mask is not valid. */
544 errSecUnsupportedKeyAttributeMask = -67739, /* The key attribute mask is not supported. */
545 errSecInvalidKeyLabel = -67740, /* The key label is not valid. */
546 errSecUnsupportedKeyLabel = -67741, /* The key label is not supported. */
547 errSecInvalidKeyFormat = -67742, /* The key format is not valid. */
548 errSecUnsupportedVectorOfBuffers = -67743, /* The vector of buffers is not supported. */
549 errSecInvalidInputVector = -67744, /* The input vector is not valid. */
550 errSecInvalidOutputVector = -67745, /* The output vector is not valid. */
551 errSecInvalidContext = -67746, /* An invalid context was encountered. */
552 errSecInvalidAlgorithm = -67747, /* An invalid algorithm was encountered. */
553 errSecInvalidAttributeKey = -67748, /* A key attribute was not valid. */
554 errSecMissingAttributeKey = -67749, /* A key attribute was missing. */
555 errSecInvalidAttributeInitVector = -67750, /* An init vector attribute was not valid. */
556 errSecMissingAttributeInitVector = -67751, /* An init vector attribute was missing. */
557 errSecInvalidAttributeSalt = -67752, /* A salt attribute was not valid. */
558 errSecMissingAttributeSalt = -67753, /* A salt attribute was missing. */
559 errSecInvalidAttributePadding = -67754, /* A padding attribute was not valid. */
560 errSecMissingAttributePadding = -67755, /* A padding attribute was missing. */
561 errSecInvalidAttributeRandom = -67756, /* A random number attribute was not valid. */
562 errSecMissingAttributeRandom = -67757, /* A random number attribute was missing. */
563 errSecInvalidAttributeSeed = -67758, /* A seed attribute was not valid. */
564 errSecMissingAttributeSeed = -67759, /* A seed attribute was missing. */
565 errSecInvalidAttributePassphrase = -67760, /* A passphrase attribute was not valid. */
566 errSecMissingAttributePassphrase = -67761, /* A passphrase attribute was missing. */
567 errSecInvalidAttributeKeyLength = -67762, /* A key length attribute was not valid. */
568 errSecMissingAttributeKeyLength = -67763, /* A key length attribute was missing. */
569 errSecInvalidAttributeBlockSize = -67764, /* A block size attribute was not valid. */
570 errSecMissingAttributeBlockSize = -67765, /* A block size attribute was missing. */
571 errSecInvalidAttributeOutputSize = -67766, /* An output size attribute was not valid. */
572 errSecMissingAttributeOutputSize = -67767, /* An output size attribute was missing. */
573 errSecInvalidAttributeRounds = -67768, /* The number of rounds attribute was not valid. */
574 errSecMissingAttributeRounds = -67769, /* The number of rounds attribute was missing. */
575 errSecInvalidAlgorithmParms = -67770, /* An algorithm parameters attribute was not valid. */
576 errSecMissingAlgorithmParms = -67771, /* An algorithm parameters attribute was missing. */
577 errSecInvalidAttributeLabel = -67772, /* A label attribute was not valid. */
578 errSecMissingAttributeLabel = -67773, /* A label attribute was missing. */
579 errSecInvalidAttributeKeyType = -67774, /* A key type attribute was not valid. */
580 errSecMissingAttributeKeyType = -67775, /* A key type attribute was missing. */
581 errSecInvalidAttributeMode = -67776, /* A mode attribute was not valid. */
582 errSecMissingAttributeMode = -67777, /* A mode attribute was missing. */
583 errSecInvalidAttributeEffectiveBits = -67778, /* An effective bits attribute was not valid. */
584 errSecMissingAttributeEffectiveBits = -67779, /* An effective bits attribute was missing. */
585 errSecInvalidAttributeStartDate = -67780, /* A start date attribute was not valid. */
586 errSecMissingAttributeStartDate = -67781, /* A start date attribute was missing. */
587 errSecInvalidAttributeEndDate = -67782, /* An end date attribute was not valid. */
588 errSecMissingAttributeEndDate = -67783, /* An end date attribute was missing. */
589 errSecInvalidAttributeVersion = -67784, /* A version attribute was not valid. */
590 errSecMissingAttributeVersion = -67785, /* A version attribute was missing. */
591 errSecInvalidAttributePrime = -67786, /* A prime attribute was not valid. */
592 errSecMissingAttributePrime = -67787, /* A prime attribute was missing. */
593 errSecInvalidAttributeBase = -67788, /* A base attribute was not valid. */
594 errSecMissingAttributeBase = -67789, /* A base attribute was missing. */
595 errSecInvalidAttributeSubprime = -67790, /* A subprime attribute was not valid. */
596 errSecMissingAttributeSubprime = -67791, /* A subprime attribute was missing. */
597 errSecInvalidAttributeIterationCount = -67792, /* An iteration count attribute was not valid. */
598 errSecMissingAttributeIterationCount = -67793, /* An iteration count attribute was missing. */
599 errSecInvalidAttributeDLDBHandle = -67794, /* A database handle attribute was not valid. */
600 errSecMissingAttributeDLDBHandle = -67795, /* A database handle attribute was missing. */
601 errSecInvalidAttributeAccessCredentials = -67796, /* An access credentials attribute was not valid. */
602 errSecMissingAttributeAccessCredentials = -67797, /* An access credentials attribute was missing. */
603 errSecInvalidAttributePublicKeyFormat = -67798, /* A public key format attribute was not valid. */
604 errSecMissingAttributePublicKeyFormat = -67799, /* A public key format attribute was missing. */
605 errSecInvalidAttributePrivateKeyFormat = -67800, /* A private key format attribute was not valid. */
606 errSecMissingAttributePrivateKeyFormat = -67801, /* A private key format attribute was missing. */
607 errSecInvalidAttributeSymmetricKeyFormat = -67802, /* A symmetric key format attribute was not valid. */
608 errSecMissingAttributeSymmetricKeyFormat = -67803, /* A symmetric key format attribute was missing. */
609 errSecInvalidAttributeWrappedKeyFormat = -67804, /* A wrapped key format attribute was not valid. */
610 errSecMissingAttributeWrappedKeyFormat = -67805, /* A wrapped key format attribute was missing. */
611 errSecStagedOperationInProgress = -67806, /* A staged operation is in progress. */
612 errSecStagedOperationNotStarted = -67807, /* A staged operation was not started. */
613 errSecVerifyFailed = -67808, /* A cryptographic verification failure has occurred. */
614 errSecQuerySizeUnknown = -67809, /* The query size is unknown. */
615 errSecBlockSizeMismatch = -67810, /* A block size mismatch occurred. */
616 errSecPublicKeyInconsistent = -67811, /* The public key was inconsistent. */
617 errSecDeviceVerifyFailed = -67812, /* A device verification failure has occurred. */
618 errSecInvalidLoginName = -67813, /* An invalid login name was detected. */
619 errSecAlreadyLoggedIn = -67814, /* The user is already logged in. */
620 errSecInvalidDigestAlgorithm = -67815, /* An invalid digest algorithm was detected. */
621 errSecInvalidCRLGroup = -67816, /* An invalid CRL group was detected. */
622 errSecCertificateCannotOperate = -67817, /* The certificate cannot operate. */
623 errSecCertificateExpired = -67818, /* An expired certificate was detected. */
624 errSecCertificateNotValidYet = -67819, /* The certificate is not yet valid. */
625 errSecCertificateRevoked = -67820, /* The certificate was revoked. */
626 errSecCertificateSuspended = -67821, /* The certificate was suspended. */
627 errSecInsufficientCredentials = -67822, /* Insufficient credentials were detected. */
628 errSecInvalidAction = -67823, /* The action was not valid. */
629 errSecInvalidAuthority = -67824, /* The authority was not valid. */
630 errSecVerifyActionFailed = -67825, /* A verify action has failed. */
631 errSecInvalidCertAuthority = -67826, /* The certificate authority was not valid. */
632 errSecInvaldCRLAuthority = -67827, /* The CRL authority was not valid. */
633 errSecInvalidCRLEncoding = -67828, /* The CRL encoding was not valid. */
634 errSecInvalidCRLType = -67829, /* The CRL type was not valid. */
635 errSecInvalidCRL = -67830, /* The CRL was not valid. */
636 errSecInvalidFormType = -67831, /* The form type was not valid. */
637 errSecInvalidID = -67832, /* The ID was not valid. */
638 errSecInvalidIdentifier = -67833, /* The identifier was not valid. */
639 errSecInvalidIndex = -67834, /* The index was not valid. */
640 errSecInvalidPolicyIdentifiers = -67835, /* The policy identifiers are not valid. */
641 errSecInvalidTimeString = -67836, /* The time specified was not valid. */
642 errSecInvalidReason = -67837, /* The trust policy reason was not valid. */
643 errSecInvalidRequestInputs = -67838, /* The request inputs are not valid. */
644 errSecInvalidResponseVector = -67839, /* The response vector was not valid. */
645 errSecInvalidStopOnPolicy = -67840, /* The stop-on policy was not valid. */
646 errSecInvalidTuple = -67841, /* The tuple was not valid. */
647 errSecMultipleValuesUnsupported = -67842, /* Multiple values are not supported. */
648 errSecNotTrusted = -67843, /* The certificate was not trusted. */
649 errSecNoDefaultAuthority = -67844, /* No default authority was detected. */
650 errSecRejectedForm = -67845, /* The trust policy had a rejected form. */
651 errSecRequestLost = -67846, /* The request was lost. */
652 errSecRequestRejected = -67847, /* The request was rejected. */
653 errSecUnsupportedAddressType = -67848, /* The address type is not supported. */
654 errSecUnsupportedService = -67849, /* The service is not supported. */
655 errSecInvalidTupleGroup = -67850, /* The tuple group was not valid. */
656 errSecInvalidBaseACLs = -67851, /* The base ACLs are not valid. */
657 errSecInvalidTupleCredendtials = -67852, /* The tuple credentials are not valid. */
658 errSecInvalidEncoding = -67853, /* The encoding was not valid. */
659 errSecInvalidValidityPeriod = -67854, /* The validity period was not valid. */
660 errSecInvalidRequestor = -67855, /* The requestor was not valid. */
661 errSecRequestDescriptor = -67856, /* The request descriptor was not valid. */
662 errSecInvalidBundleInfo = -67857, /* The bundle information was not valid. */
663 errSecInvalidCRLIndex = -67858, /* The CRL index was not valid. */
664 errSecNoFieldValues = -67859, /* No field values were detected. */
665 errSecUnsupportedFieldFormat = -67860, /* The field format is not supported. */
666 errSecUnsupportedIndexInfo = -67861, /* The index information is not supported. */
667 errSecUnsupportedLocality = -67862, /* The locality is not supported. */
668 errSecUnsupportedNumAttributes = -67863, /* The number of attributes is not supported. */
669 errSecUnsupportedNumIndexes = -67864, /* The number of indexes is not supported. */
670 errSecUnsupportedNumRecordTypes = -67865, /* The number of record types is not supported. */
671 errSecFieldSpecifiedMultiple = -67866, /* Too many fields were specified. */
672 errSecIncompatibleFieldFormat = -67867, /* The field format was incompatible. */
673 errSecInvalidParsingModule = -67868, /* The parsing module was not valid. */
674 errSecDatabaseLocked = -67869, /* The database is locked. */
675 errSecDatastoreIsOpen = -67870, /* The data store is open. */
676 errSecMissingValue = -67871, /* A missing value was detected. */
677 errSecUnsupportedQueryLimits = -67872, /* The query limits are not supported. */
678 errSecUnsupportedNumSelectionPreds = -67873, /* The number of selection predicates is not supported. */
679 errSecUnsupportedOperator = -67874, /* The operator is not supported. */
680 errSecInvalidDBLocation = -67875, /* The database location is not valid. */
681 errSecInvalidAccessRequest = -67876, /* The access request is not valid. */
682 errSecInvalidIndexInfo = -67877, /* The index information is not valid. */
683 errSecInvalidNewOwner = -67878, /* The new owner is not valid. */
684 errSecInvalidModifyMode = -67879, /* The modify mode is not valid. */
685 errSecMissingRequiredExtension = -67880, /* A required certificate extension is missing. */
686 errSecExtendedKeyUsageNotCritical = -67881, /* The extended key usage extension was not marked critical. */
687 errSecTimestampMissing = -67882, /* A timestamp was expected but was not found. */
688 errSecTimestampInvalid = -67883, /* The timestamp was not valid. */
689 errSecTimestampNotTrusted = -67884, /* The timestamp was not trusted. */
690 errSecTimestampServiceNotAvailable = -67885, /* The timestamp service is not available. */
691 errSecTimestampBadAlg = -67886, /* An unrecognized or unsupported Algorithm Identifier in timestamp. */
692 errSecTimestampBadRequest = -67887, /* The timestamp transaction is not permitted or supported. */
693 errSecTimestampBadDataFormat = -67888, /* The timestamp data submitted has the wrong format. */
694 errSecTimestampTimeNotAvailable = -67889, /* The time source for the Timestamp Authority is not available. */
695 errSecTimestampUnacceptedPolicy = -67890, /* The requested policy is not supported by the Timestamp Authority. */
696 errSecTimestampUnacceptedExtension = -67891, /* The requested extension is not supported by the Timestamp Authority. */
697 errSecTimestampAddInfoNotAvailable = -67892, /* The additional information requested is not available. */
698 errSecTimestampSystemFailure = -67893, /* The timestamp request cannot be handled due to system failure. */
699 errSecSigningTimeMissing = -67894, /* A signing time was expected but was not found. */
700 errSecTimestampRejection = -67895, /* A timestamp transaction was rejected. */
701 errSecTimestampWaiting = -67896, /* A timestamp transaction is waiting. */
702 errSecTimestampRevocationWarning = -67897, /* A timestamp authority revocation warning was issued. */
703 errSecTimestampRevocationNotification = -67898, /* A timestamp authority revocation notification was issued. */
704 errSecCertificatePolicyNotAllowed = -67899, /* The requested policy is not allowed for this certificate. */
705 errSecCertificateNameNotAllowed = -67900, /* The requested name is not allowed for this certificate. */
706 errSecCertificateValidityPeriodTooLong = -67901, /* The validity period in the certificate exceeds the maximum allowed. */
707 };
708
709
710 /*!
711 @enum SecureTransport Error Codes
712 @abstract Result codes returned from SecureTransport and SecProtocol functions. This is also the domain
713 for TLS errors in the network stack.
714
715 @constant errSSLProtocol SSL protocol error
716 @constant errSSLNegotiation Cipher Suite negotiation failure
717 @constant errSSLFatalAlert Fatal alert
718 @constant errSSLWouldBlock I/O would block (not fatal)
719 @constant errSSLSessionNotFound attempt to restore an unknown session
720 @constant errSSLClosedGraceful connection closed gracefully
721 @constant errSSLClosedAbort connection closed via error
722 @constant errSSLXCertChainInvalid invalid certificate chain
723 @constant errSSLBadCert bad certificate format
724 @constant errSSLCrypto underlying cryptographic error
725 @constant errSSLInternal Internal error
726 @constant errSSLModuleAttach module attach failure
727 @constant errSSLUnknownRootCert valid cert chain, untrusted root
728 @constant errSSLNoRootCert cert chain not verified by root
729 @constant errSSLCertExpired chain had an expired cert
730 @constant errSSLCertNotYetValid chain had a cert not yet valid
731 @constant errSSLClosedNoNotify server closed session with no notification
732 @constant errSSLBufferOverflow insufficient buffer provided
733 @constant errSSLBadCipherSuite bad SSLCipherSuite
734 @constant errSSLPeerUnexpectedMsg unexpected message received
735 @constant errSSLPeerBadRecordMac bad MAC
736 @constant errSSLPeerDecryptionFail decryption failed
737 @constant errSSLPeerRecordOverflow record overflow
738 @constant errSSLPeerDecompressFail decompression failure
739 @constant errSSLPeerHandshakeFail handshake failure
740 @constant errSSLPeerBadCert misc. bad certificate
741 @constant errSSLPeerUnsupportedCert bad unsupported cert format
742 @constant errSSLPeerCertRevoked certificate revoked
743 @constant errSSLPeerCertExpired certificate expired
744 @constant errSSLPeerCertUnknown unknown certificate
745 @constant errSSLIllegalParam illegal parameter
746 @constant errSSLPeerUnknownCA unknown Cert Authority
747 @constant errSSLPeerAccessDenied access denied
748 @constant errSSLPeerDecodeError decoding error
749 @constant errSSLPeerDecryptError decryption error
750 @constant errSSLPeerExportRestriction export restriction
751 @constant errSSLPeerProtocolVersion bad protocol version
752 @constant errSSLPeerInsufficientSecurity insufficient security
753 @constant errSSLPeerInternalError internal error
754 @constant errSSLPeerUserCancelled user canceled
755 @constant errSSLPeerNoRenegotiation no renegotiation allowed
756 @constant errSSLPeerAuthCompleted peer cert is valid, or was ignored if verification disabled
757 @constant errSSLClientCertRequested server has requested a client cert
758 @constant errSSLHostNameMismatch peer host name mismatch
759 @constant errSSLConnectionRefused peer dropped connection before responding
760 @constant errSSLDecryptionFail decryption failure
761 @constant errSSLBadRecordMac bad MAC
762 @constant errSSLRecordOverflow record overflow
763 @constant errSSLBadConfiguration configuration error
764 @constant errSSLUnexpectedRecord unexpected (skipped) record in DTLS
765 @constant errSSLWeakPeerEphemeralDHKey weak ephemeral dh key
766 @constant errSSLClientHelloReceived SNI
767 @constant errSSLTransportReset transport (socket) shutdown, e.g., TCP RST or FIN.
768 @constant errSSLNetworkTimeout network timeout triggered
769 @constant errSSLConfigurationFailed TLS configuration failed
770 @constant errSSLUnsupportedExtension unsupported TLS extension
771 @constant errSSLUnexpectedMessage peer rejected unexpected message
772 @constant errSSLDecompressFail decompression failed
773 @constant errSSLHandshakeFail handshake failed
774 @constant errSSLDecodeError decode failed
775 @constant errSSLInappropriateFallback inappropriate fallback
776 @constant errSSLMissingExtension missing extension
777 @constant errSSLBadCertificateStatusResponse bad OCSP response
778 @constant errSSLCertificateRequired certificate required
779 @constant errSSLUnknownPSKIdentity unknown PSK identity
780 @constant errSSLUnrecognizedName unknown or unrecognized name
781 @constant errSSLATSViolation ATS violation
782 @constant errSSLATSMinimumVersionViolation ATS violation: minimum protocol version is not ATS compliant
783 @constant errSSLATSCiphersuiteViolation ATS violation: selected ciphersuite is not ATS compliant
784 @constant errSSLATSMinimumKeySizeViolation ATS violation: peer key size is not ATS compliant
785 @constant errSSLATSLeafCertificateHashAlgorithmViolation ATS violation: peer leaf certificate hash algorithm is not ATS compliant
786 @constant errSSLATSCertificateHashAlgorithmViolation ATS violation: peer certificate hash algorithm is not ATS compliant
787 @constant errSSLATSCertificateTrustViolation ATS violation: peer certificate is not issued by trusted peer
788 */
789
790 /*
791 Note: the comments that appear after these errors are used to create SecErrorMessages.strings.
792 The comments must not be multi-line, and should be in a form meaningful to an end user. If
793 a different or additional comment is needed, it can be put in the header doc format, or on a
794 line that does not start with errZZZ.
795 */
796 CF_ENUM(OSStatus) {
797 errSSLProtocol = -9800, /* SSL protocol error */
798 errSSLNegotiation = -9801, /* Cipher Suite negotiation failure */
799 errSSLFatalAlert = -9802, /* Fatal alert */
800 errSSLWouldBlock = -9803, /* I/O would block (not fatal) */
801 errSSLSessionNotFound = -9804, /* attempt to restore an unknown session */
802 errSSLClosedGraceful = -9805, /* connection closed gracefully */
803 errSSLClosedAbort = -9806, /* connection closed via error */
804 errSSLXCertChainInvalid = -9807, /* invalid certificate chain */
805 errSSLBadCert = -9808, /* bad certificate format */
806 errSSLCrypto = -9809, /* underlying cryptographic error */
807 errSSLInternal = -9810, /* Internal error */
808 errSSLModuleAttach = -9811, /* module attach failure */
809 errSSLUnknownRootCert = -9812, /* valid cert chain, untrusted root */
810 errSSLNoRootCert = -9813, /* cert chain not verified by root */
811 errSSLCertExpired = -9814, /* chain had an expired cert */
812 errSSLCertNotYetValid = -9815, /* chain had a cert not yet valid */
813 errSSLClosedNoNotify = -9816, /* server closed session with no notification */
814 errSSLBufferOverflow = -9817, /* insufficient buffer provided */
815 errSSLBadCipherSuite = -9818, /* bad SSLCipherSuite */
816
817 /* fatal errors detected by peer */
818 errSSLPeerUnexpectedMsg = -9819, /* unexpected message received */
819 errSSLPeerBadRecordMac = -9820, /* bad MAC */
820 errSSLPeerDecryptionFail = -9821, /* decryption failed */
821 errSSLPeerRecordOverflow = -9822, /* record overflow */
822 errSSLPeerDecompressFail = -9823, /* decompression failure */
823 errSSLPeerHandshakeFail = -9824, /* handshake failure */
824 errSSLPeerBadCert = -9825, /* misc. bad certificate */
825 errSSLPeerUnsupportedCert = -9826, /* bad unsupported cert format */
826 errSSLPeerCertRevoked = -9827, /* certificate revoked */
827 errSSLPeerCertExpired = -9828, /* certificate expired */
828 errSSLPeerCertUnknown = -9829, /* unknown certificate */
829 errSSLIllegalParam = -9830, /* illegal parameter */
830 errSSLPeerUnknownCA = -9831, /* unknown Cert Authority */
831 errSSLPeerAccessDenied = -9832, /* access denied */
832 errSSLPeerDecodeError = -9833, /* decoding error */
833 errSSLPeerDecryptError = -9834, /* decryption error */
834 errSSLPeerExportRestriction = -9835, /* export restriction */
835 errSSLPeerProtocolVersion = -9836, /* bad protocol version */
836 errSSLPeerInsufficientSecurity = -9837, /* insufficient security */
837 errSSLPeerInternalError = -9838, /* internal error */
838 errSSLPeerUserCancelled = -9839, /* user canceled */
839 errSSLPeerNoRenegotiation = -9840, /* no renegotiation allowed */
840
841 /* non-fatal result codes */
842 errSSLPeerAuthCompleted = -9841, /* peer cert is valid, or was ignored if verification disabled */
843 errSSLClientCertRequested = -9842, /* server has requested a client cert */
844
845 /* more errors detected by us */
846 errSSLHostNameMismatch = -9843, /* peer host name mismatch */
847 errSSLConnectionRefused = -9844, /* peer dropped connection before responding */
848 errSSLDecryptionFail = -9845, /* decryption failure */
849 errSSLBadRecordMac = -9846, /* bad MAC */
850 errSSLRecordOverflow = -9847, /* record overflow */
851 errSSLBadConfiguration = -9848, /* configuration error */
852 errSSLUnexpectedRecord = -9849, /* unexpected (skipped) record in DTLS */
853 errSSLWeakPeerEphemeralDHKey = -9850, /* weak ephemeral dh key */
854
855 /* non-fatal result codes */
856 errSSLClientHelloReceived = -9851, /* SNI */
857
858 /* fatal errors resulting from transport or networking errors */
859 errSSLTransportReset = -9852, /* transport (socket) shutdown, e.g., TCP RST or FIN. */
860 errSSLNetworkTimeout = -9853, /* network timeout triggered */
861
862 /* fatal errors resulting from software misconfiguration */
863 errSSLConfigurationFailed = -9854, /* TLS configuration failed */
864
865 /* additional errors */
866 errSSLUnsupportedExtension = -9855, /* unsupported TLS extension */
867 errSSLUnexpectedMessage = -9856, /* peer rejected unexpected message */
868 errSSLDecompressFail = -9857, /* decompression failed */
869 errSSLHandshakeFail = -9858, /* handshake failed */
870 errSSLDecodeError = -9859, /* decode failed */
871 errSSLInappropriateFallback = -9860, /* inappropriate fallback */
872 errSSLMissingExtension = -9861, /* missing extension */
873 errSSLBadCertificateStatusResponse = -9862, /* bad OCSP response */
874 errSSLCertificateRequired = -9863, /* certificate required */
875 errSSLUnknownPSKIdentity = -9864, /* unknown PSK identity */
876 errSSLUnrecognizedName = -9865, /* unknown or unrecognized name */
877
878 /* ATS compliance violation errors */
879 errSSLATSViolation = -9880, /* ATS violation */
880 errSSLATSMinimumVersionViolation = -9881, /* ATS violation: minimum protocol version is not ATS compliant */
881 errSSLATSCiphersuiteViolation = -9882, /* ATS violation: selected ciphersuite is not ATS compliant */
882 errSSLATSMinimumKeySizeViolation = -9883, /* ATS violation: peer key size is not ATS compliant */
883 errSSLATSLeafCertificateHashAlgorithmViolation = -9884, /* ATS violation: peer leaf certificate hash algorithm is not ATS compliant */
884 errSSLATSCertificateHashAlgorithmViolation = -9885, /* ATS violation: peer certificate hash algorithm is not ATS compliant */
885 errSSLATSCertificateTrustViolation = -9886, /* ATS violation: peer certificate is not issued by trusted peer */
886 };
887
888 CF_IMPLICIT_BRIDGING_DISABLED
889 CF_ASSUME_NONNULL_END
890
891 __END_DECLS
892
893 #endif /* _SECURITY_SECBASE_H_ */