SecBase.h   [plain text]


/*
 * Copyright (c) 2000-2010 Apple Inc. All Rights Reserved.
 * 
 * @APPLE_LICENSE_HEADER_START@
 * 
 * This file contains Original Code and/or Modifications of Original Code
 * as defined in and that are subject to the Apple Public Source License
 * Version 2.0 (the 'License'). You may not use this file except in
 * compliance with the License. Please obtain a copy of the License at
 * http://www.opensource.apple.com/apsl/ and read it before using this
 * file.
 * 
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 * 
 * @APPLE_LICENSE_HEADER_END@
 */

/*!
	@header SecBase
	SecBase contains common declarations for the Security functions. 
*/

#ifndef _SECURITY_SECBASE_H_
#define _SECURITY_SECBASE_H_

#include <CoreFoundation/CFBase.h>

#if defined(__cplusplus)
extern "C" {
#endif

#ifndef __SEC_TYPES__
#define __SEC_TYPES__

/*!
    @typedef SecKeychainRef
    @abstract Contains information about a keychain.
*/
typedef struct OpaqueSecKeychainRef *SecKeychainRef;

/*!
    @typedef SecKeychainItemRef
    @abstract Contains information about a keychain item.
*/
typedef struct OpaqueSecKeychainItemRef *SecKeychainItemRef;

/*!
    @typedef SecKeychainSearchRef
    @abstract Contains information about a keychain search.
*/
typedef struct OpaqueSecKeychainSearchRef *SecKeychainSearchRef;

/*!
    @typedef SecKeychainAttrType
    @abstract Represents a keychain attribute type.
*/
typedef OSType SecKeychainAttrType;

/*!
    @struct SecKeychainAttribute
    @abstract Contains keychain attributes. 
    @field tag A 4-byte attribute tag.
    @field length The length of the buffer pointed to by data.
    @field data A pointer to the attribute data.
*/
struct SecKeychainAttribute 
{
    SecKeychainAttrType	tag;
    UInt32 length;
    void *data;
};
typedef struct SecKeychainAttribute SecKeychainAttribute;

/*!
    @typedef SecKeychainAttributePtr
    @abstract Represents a pointer to a keychain attribute structure.
*/
typedef SecKeychainAttribute *SecKeychainAttributePtr;

/*!
    @typedef SecKeychainAttributeList
    @abstract Represents a list of keychain attributes.
    @field count An unsigned 32-bit integer that represents the number of keychain attributes in the array.
    @field attr A pointer to the first keychain attribute in the array.
*/
struct SecKeychainAttributeList 
{
    UInt32 count;
    SecKeychainAttribute *attr;
};
typedef struct SecKeychainAttributeList  SecKeychainAttributeList;

/*!
    @typedef SecKeychainStatus
    @abstract Represents the status of a keychain.
*/
typedef UInt32 SecKeychainStatus;
#endif

/*!
    @typedef SecTrustedApplicationRef
    @abstract Contains information about a trusted application.
*/
typedef struct OpaqueSecTrustedApplicationRef *SecTrustedApplicationRef;

/*!
    @typedef SecPolicyRef
    @abstract Contains information about a policy.
*/
typedef struct OpaqueSecPolicyRef *SecPolicyRef;

/*!
    @typedef SecCertificateRef
    @abstract Contains information about a certificate.
*/
typedef struct OpaqueSecCertificateRef *SecCertificateRef;

/*!
    @typedef SecAccessRef
    @abstract Contains information about an access.
*/
typedef struct OpaqueSecAccessRef *SecAccessRef;

/*!
    @typedef SecIdentityRef
    @abstract Contains information about an identity.
*/
typedef struct OpaqueSecIdentityRef *SecIdentityRef;

/*!
    @typedef SecKeyRef
    @abstract Contains information about a key.
*/
typedef struct OpaqueSecKeyRef *SecKeyRef;

/*!
    @typedef SecACLRef
    @abstract Contains information about an access control list (ACL) entry.
*/
typedef struct OpaqueSecTrustRef *SecACLRef;

/*!
    @typedef SecPasswordRef
    @abstract Contains information about a password.
*/
typedef struct OpaqueSecPasswordRef *SecPasswordRef;

/*!
    @typedef SecKeychainAttributeInfo
    @abstract Represents an attribute. 
    @field count The number of tag-format pairs in the respective arrays. 
    @field tag A pointer to the first attribute tag in the array.
    @field format A pointer to the first CSSM_DB_ATTRIBUTE_FORMAT in the array.
    @discussion Each tag and format item form a pair.  
*/
struct SecKeychainAttributeInfo
{
    UInt32 count;
    UInt32 *tag;
	UInt32 *format;
};
typedef struct SecKeychainAttributeInfo  SecKeychainAttributeInfo;

/*!
    @function SecCopyErrorMessageString
    @abstract Returns a string describing the specified error result code.
    @param status An error result code of type OSStatus or CSSM_RETURN, as returned by a Security or CSSM function.
    @reserved Reserved for future use. Your code should pass NULL in this parameter.
    @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.
*/
CFStringRef SecCopyErrorMessageString(OSStatus status, void *reserved);

/*!
@enum Security Error Codes 
@abstract Result codes returned from Security framework functions.
@constant errSecSuccess No error.
@constant errSecUnimplemented Function or operation not implemented.
@constant errSecParam One or more parameters passed to a function were not valid.
@constant errSecAllocate Failed to allocate memory.
@constant errSecNotAvailable No keychain is available.
@constant errSecReadOnly Read only error.
@constant errSecAuthFailed Authorization/Authentication failed.
@constant errSecNoSuchKeychain The keychain does not exist.
@constant errSecInvalidKeychain The keychain is not valid.
@constant errSecDuplicateKeychain A keychain with the same name already exists.
@constant errSecDuplicateCallback The specified callback is already installed.
@constant errSecInvalidCallback The specified callback is not valid.
@constant errSecDuplicateItem The item already exists.
@constant errSecItemNotFound The item cannot be found.
@constant errSecBufferTooSmall The buffer is too small.
@constant errSecDataTooLarge The data is too large.
@constant errSecNoSuchAttr The attribute does not exist.
@constant errSecInvalidItemRef The item reference is invalid.
@constant errSecInvalidSearchRef The search reference is invalid.
@constant errSecNoSuchClass The keychain item class does not exist.
@constant errSecNoDefaultKeychain A default keychain does not exist.
@constant errSecInteractionNotAllowed User interaction is not allowed.
@constant errSecReadOnlyAttr The attribute is read only.
@constant errSecWrongSecVersion The version is incorrect.
@constant errSecKeySizeNotAllowed The key size is not allowed.
@constant errSecNoStorageModule There is no storage module available.
@constant errSecNoCertificateModule There is no certificate module available.
@constant errSecNoPolicyModule There is no policy module available.
@constant errSecInteractionRequired User interaction is required.
@constant errSecDataNotAvailable The data is not available.
@constant errSecDataNotModifiable The data is not modifiable.
@constant errSecCreateChainFailed The attempt to create a certificate chain failed.
@constant errSecACLNotSimple The access control list is not in standard simple form.
@constant errSecPolicyNotFound The policy specified cannot be found.
@constant errSecInvalidTrustSetting The specified trust setting is invalid.
@constant errSecNoAccessForItem The specified item has no access control.
@constant errSecInvalidOwnerEdit Invalid attempt to change the owner of this item.
@constant errSecTrustNotAvailable No trust results are available.
@constant errSecUnsupportedFormat Import/Export format unsupported.
@constant errSecUnknownFormat Unknown format in import.
@constant errSecKeyIsSensitive Key material must be wrapped for export.
@constant errSecMultiplePrivKeys An attempt was made to import multiple private keys.
@constant errSecPassphraseRequired Passphrase is required for import/export.
@constant errSecInvalidPasswordRef The password reference was invalid.
@constant errSecInvalidTrustSettings The Trust Settings Record was corrupted.
@constant errSecNoTrustSettings No Trust Settings were found. 
@constant errSecPkcs12VerifyFailure MAC verification failed during PKCS12 Import.
@constant errSecDecode Unable to decode the provided data.

@discussion The assigned error space is discontinuous: e.g. -25240..-25279, -25290..-25329, -68608..-67585, and so on.
*/

/*
    Note: the comments that appear after these errors are used to create SecErrorMessages.strings.
    The comments must not be multi-line, and should be in a form meaningful to an end user. If
    a different or additional comment is needed, it can be put in the header doc format, or on a
    line that does not start with errZZZ.
*/

enum
{
    errSecSuccess                = 0,       /* No error. */
    errSecUnimplemented          = -4,      /* Function or operation not implemented. */
    errSecParam                  = -50,     /* One or more parameters passed to a function were not valid. */
    errSecAllocate               = -108,    /* Failed to allocate memory. */

    errSecNotAvailable           = -25291,	/* No keychain is available. You may need to restart your computer. */
    errSecReadOnly               = -25292,	/* This keychain cannot be modified. */
    errSecAuthFailed             = -25293,	/* The user name or passphrase you entered is not correct. */
    errSecNoSuchKeychain         = -25294,	/* The specified keychain could not be found. */
    errSecInvalidKeychain        = -25295,	/* The specified keychain is not a valid keychain file. */
    errSecDuplicateKeychain      = -25296,	/* A keychain with the same name already exists. */
    errSecDuplicateCallback      = -25297,	/* The specified callback function is already installed. */
    errSecInvalidCallback        = -25298,	/* The specified callback function is not valid. */
    errSecDuplicateItem          = -25299,	/* The specified item already exists in the keychain. */
    errSecItemNotFound           = -25300,	/* The specified item could not be found in the keychain. */
    errSecBufferTooSmall         = -25301,	/* There is not enough memory available to use the specified item. */
    errSecDataTooLarge           = -25302,	/* This item contains information which is too large or in a format that cannot be displayed. */
    errSecNoSuchAttr             = -25303,	/* The specified attribute does not exist. */
    errSecInvalidItemRef         = -25304,	/* The specified item is no longer valid. It may have been deleted from the keychain. */
    errSecInvalidSearchRef       = -25305,	/* Unable to search the current keychain. */
    errSecNoSuchClass            = -25306,	/* The specified item does not appear to be a valid keychain item. */
    errSecNoDefaultKeychain      = -25307,	/* A default keychain could not be found. */
    errSecInteractionNotAllowed  = -25308,	/* User interaction is not allowed. */
    errSecReadOnlyAttr           = -25309,	/* The specified attribute could not be modified. */
    errSecWrongSecVersion        = -25310,	/* This keychain was created by a different version of the system software and cannot be opened. */
    errSecKeySizeNotAllowed      = -25311,	/* This item specifies a key size which is too large. */
    errSecNoStorageModule        = -25312,	/* A required component (data storage module) could not be loaded. You may need to restart your computer. */
    errSecNoCertificateModule    = -25313,	/* A required component (certificate module) could not be loaded. You may need to restart your computer. */
    errSecNoPolicyModule         = -25314,	/* A required component (policy module) could not be loaded. You may need to restart your computer. */
    errSecInteractionRequired    = -25315,	/* User interaction is required, but is currently not allowed. */
    errSecDataNotAvailable       = -25316,	/* The contents of this item cannot be retrieved. */
    errSecDataNotModifiable      = -25317,	/* The contents of this item cannot be modified. */
    errSecCreateChainFailed      = -25318,	/* One or more certificates required to validate this certificate cannot be found. */
    errSecInvalidPrefsDomain     = -25319,	/* The specified preferences domain is not valid. */
    errSecInDarkWake		 = -25320,	/* In dark wake, no UI possible */
	
	errSecACLNotSimple           = -25240,	/* The specified access control list is not in standard (simple) form. */
	errSecPolicyNotFound         = -25241,	/* The specified policy cannot be found. */
	errSecInvalidTrustSetting    = -25242,	/* The specified trust setting is invalid. */
	errSecNoAccessForItem        = -25243,	/* The specified item has no access control. */
	errSecInvalidOwnerEdit       = -25244,	/* Invalid attempt to change the owner of this item. */
	errSecTrustNotAvailable      = -25245,	/* No trust results are available. */
	errSecUnsupportedFormat      = -25256,	/* Import/Export format unsupported. */
	errSecUnknownFormat          = -25257,	/* Unknown format in import. */
	errSecKeyIsSensitive         = -25258,	/* Key material must be wrapped for export. */
	errSecMultiplePrivKeys       = -25259,	/* An attempt was made to import multiple private keys. */
	errSecPassphraseRequired     = -25260,	/* Passphrase is required for import/export. */
	errSecInvalidPasswordRef     = -25261,	/* The password reference was invalid. */
	errSecInvalidTrustSettings   = -25262,	/* The Trust Settings Record was corrupted. */
	errSecNoTrustSettings        = -25263,	/* No Trust Settings were found. */
	errSecPkcs12VerifyFailure    = -25264,	/* MAC verification failed during PKCS12 import (wrong password?) */
	errSecNotSigner              = -26267,	/* A certificate was not signed by its proposed parent. */
	
	errSecDecode                 = -26275,	/* Unable to decode the provided data. */

	errSecServiceNotAvailable			= -67585,	/* The required service is not available. */
	errSecInsufficientClientID			= -67586,	/* The client ID is not correct. */
	errSecDeviceReset						= -67587,	/* A device reset has occurred. */
	errSecDeviceFailed					= -67588,	/* A device failure has occurred. */
	errSecAppleAddAppACLSubject			= -67589,	/* Adding an application ACL subject failed. */
	errSecApplePublicKeyIncomplete		= -67590,	/* The public key is incomplete. */
	errSecAppleSignatureMismatch		= -67591,	/* A signature mismatch has occurred. */
	errSecAppleInvalidKeyStartDate		= -67592,	/* The specified key has an invalid start date. */
	errSecAppleInvalidKeyEndDate		= -67593,	/* The specified key has an invalid end date. */
	errSecConversionError				= -67594,	/* A conversion error has occurred. */
	errSecAppleSSLv2Rollback			= -67595,	/* A SSLv2 rollback error has occurred. */
	errSecDiskFull						= -34,		/* The disk is full. */
	errSecQuotaExceeded					= -67596,	/* The quota was exceeded. */
	errSecFileTooBig						= -67597,	/* The file is too big. */
	errSecInvalidDatabaseBlob			= -67598,	/* The specified database has an invalid blob. */
	errSecInvalidKeyBlob					= -67599,	/* The specified database has an invalid key blob. */
	errSecIncompatibleDatabaseBlob		= -67600,	/* The specified database has an incompatible blob. */ 
	errSecIncompatibleKeyBlob			= -67601,	/* The specified database has an incompatible key blob. */   
	errSecHostNameMismatch				= -67602,	/* A host name mismatch has occurred. */
	errSecUnknownCriticalExtensionFlag	= -67603,	/* There is an unknown critical extension flag. */
	errSecNoBasicConstraints			= -67604,	/* No basic constraints were found. */
	errSecNoBasicConstraintsCA			= -67605,	/* No basic CA constraints were found. */
	errSecInvalidAuthorityKeyID			= -67606,	/* The authority key ID is not valid. */
	errSecInvalidSubjectKeyID			= -67607,	/* The subject key ID is not valid. */
	errSecInvalidKeyUsageForPolicy		= -67608,	/* The key usage is not valid for the specified policy. */
	errSecInvalidExtendedKeyUsage		= -67609,	/* The extended key usage is not valid. */
	errSecInvalidIDLinkage				= -67610,	/* The ID linkage is not valid. */
	errSecPathLengthConstraintExceeded	= -67611,	/* The path length constraint was exceeded. */
	errSecInvalidRoot						= -67612,	/* The root or anchor certificate is not valid. */
	errSecCRLExpired						= -67613,	/* The CRL has expired. */
	errSecCRLNotValidYet					= -67614,	/* The CRL is not yet valid. */
	errSecCRLNotFound						= -67615,	/* The CRL was not found. */
	errSecCRLServerDown					= -67616,	/* The CRL server is down. */
	errSecCRLBadURI						= -67617,	/* The CRL has a bad Uniform Resource Identifier. */
	errSecUnknownCertExtension			= -67618,	/* An unknown certificate extension was encountered. */
	errSecUnknownCRLExtension			= -67619,	/* An unknown CRL extension was encountered. */
	errSecCRLNotTrusted					= -67620,	/* The CRL is not trusted. */
	errSecCRLPolicyFailed				= -67621,	/* The CRL policy failed. */
	errSecIDPFailure						= -67622,	/* The issuing distribution point was not valid. */
	errSecSMIMEEmailAddressesNotFound	= -67623,	/* An email address mismatch was encountered. */
	errSecSMIMEBadExtendedKeyUsage		= -67624,	/* The appropriate extended key usage for SMIME was not found. */
	errSecSMIMEBadKeyUsage				= -67625,	/* The key usage is not compatible with SMIME. */
	errSecSMIMEKeyUsageNotCritical		= -67626,	/* The key usage extension is not marked as critical. */
	errSecSMIMENoEmailAddress			= -67627,	/* No email address was found in the certificate. */
	errSecSMIMESubjAltNameNotCritical	= -67628,	/* The subject alternative name extension is not marked as critical. */
	errSecSSLBadExtendedKeyUsage		= -67629,	/* The appropriate extended key usage for SSL was not found. */
	errSecOCSPBadResponse				= -67630,	/* The OCSP response was incorrect or could not be parsed. */
	errSecOCSPBadRequest					= -67631,	/* The OCSP request was incorrect or could not be parsed. */
	errSecOCSPUnavailable				= -67632,	/* OCSP service is unavailable. */
	errSecOCSPStatusUnrecognized		= -67633,	/* The OCSP server did not recognize this certificate. */
	errSecEndOfData							= -67634,	/* An end-of-data was detected. */
	errSecIncompleteCertRevocationCheck	= -67635,	/* An incomplete certificate revocation check occurred. */
	errSecNetworkFailure						= -67636,	/* A network failure occurred. */
	errSecOCSPNotTrustedToAnchor			= -67637,	/* The OCSP response was not trusted to a root or anchor certificate. */
	errSecRecordModified						= -67638,	/* The record was modified. */
	errSecOCSPSignatureError				= -67639,	/* The OCSP response had an invalid signature. */
	errSecOCSPNoSigner						= -67640,	/* The OCSP response had no signer. */
	errSecOCSPResponderMalformedReq		= -67641,	/* The OCSP responder was given a malformed request. */
	errSecOCSPResponderInternalError		= -67642,	/* The OCSP responder encountered an internal error. */
	errSecOCSPResponderTryLater				= -67643,	/* The OCSP responder is busy, try again later. */
	errSecOCSPResponderSignatureRequired	= -67644,	/* The OCSP responder requires a signature. */
	errSecOCSPResponderUnauthorized		= -67645,	/* The OCSP responder rejected this request as unauthorized. */
	errSecOCSPResponseNonceMismatch		= -67646,	/* The OCSP response nonce did not match the request. */
	errSecCodeSigningBadCertChainLength	= -67647,	/* Code signing encountered an incorrect certificate chain length. */
	errSecCodeSigningNoBasicConstraints	= -67648,	/* Code signing found no basic constraints. */
	errSecCodeSigningBadPathLengthConstraint= -67649,	/* Code signing encountered an incorrect path length constraint. */
	errSecCodeSigningNoExtendedKeyUsage		= -67650,	/* Code signing found no extended key usage. */
	errSecCodeSigningDevelopment			= -67651,	/* Code signing indicated use of a development-only certificate. */
	errSecResourceSignBadCertChainLength	= -67652,	/* Resource signing has encountered an incorrect certificate chain length. */
	errSecResourceSignBadExtKeyUsage		= -67653,	/* Resource signing has encountered an error in the extended key usage. */
	errSecTrustSettingDeny					= -67654,	/* The trust setting for this policy was set to Deny. */
	errSecInvalidSubjectName				= -67655,	/* An invalid certificate subject name was encountered. */
	errSecUnknownQualifiedCertStatement	= -67656,	/* An unknown qualified certificate statement was encountered. */
	errSecMobileMeRequestQueued				= -67657,	/* The MobileMe request will be sent during the next connection. */
	errSecMobileMeRequestRedirected		= -67658,	/* The MobileMe request was redirected. */
	errSecMobileMeServerError				= -67659,	/* A MobileMe server error occurred. */
	errSecMobileMeServerNotAvailable		= -67660,	/* The MobileMe server is not available. */
	errSecMobileMeServerAlreadyExists		= -67661,	/* The MobileMe server reported that the item already exists. */
	errSecMobileMeServerServiceErr			= -67662,	/* A MobileMe service error has occurred. */
	errSecMobileMeRequestAlreadyPending	= -67663,	/* A MobileMe request is already pending. */
	errSecMobileMeNoRequestPending			= -67664,	/* MobileMe has no request pending. */
	errSecMobileMeCSRVerifyFailure			= -67665,	/* A MobileMe CSR verification failure has occurred. */
	errSecMobileMeFailedConsistencyCheck	= -67666,	/* MobileMe has found a failed consistency check. */
	errSecNotInitialized						= -67667,	/* A function was called without initializing CSSM. */
	errSecInvalidHandleUsage				= -67668,	/* The CSSM handle does not match with the service type. */
	errSecPVCReferentNotFound				= -67669,	/* A reference to the calling module was not found in the list of authorized callers. */
	errSecFunctionIntegrityFail				= -67670,	/* A function address was not within the verified module. */	
	errSecInternalError						= -67671,	/* An internal error has occurred. */
	errSecMemoryError							= -67672,	/* A memory error has occurred. */
	errSecInvalidData							= -67673,	/* Invalid data was encountered. */
	errSecMDSError							= -67674,	/* A Module Directory Service error has occurred. */
	errSecInvalidPointer						= -67675,	/* An invalid pointer was encountered. */
	errSecSelfCheckFailed					= -67676,	/* Self-check has failed. */
	errSecFunctionFailed						= -67677,	/* A function has failed. */
	errSecModuleManifestVerifyFailed		= -67678,	/* A module manifest verification failure has occurred. */
	errSecInvalidGUID							= -67679,	/* An invalid GUID was encountered. */
	errSecInvalidHandle						= -67680,	/* An invalid handle was encountered. */
	errSecInvalidDBList						= -67681,	/* An invalid DB list was encountered. */
	errSecInvalidPassthroughID				= -67682,	/* An invalid passthrough ID was encountered. */
	errSecInvalidNetworkAddress				= -67683,	/* An invalid network address was encountered. */
	errSecCRLAlreadySigned					= -67684,	/* The certificate revocation list is already signed. */
	errSecInvalidNumberOfFields				= -67685,	/* An invalid number of fields were encountered. */
	errSecVerificationFailure				= -67686,	/* A verification failure occurred. */
	errSecUnknownTag							= -67687,	/* An unknown tag was encountered. */
	errSecInvalidSignature					= -67688,	/* An invalid signature was encountered. */
	errSecInvalidName							= -67689,	/* An invalid name was encountered. */
	errSecInvalidCertificateRef				= -67690,	/* An invalid certificate reference was encountered. */
	errSecInvalidCertificateGroup			= -67691,	/* An invalid certificate group was encountered. */
	errSecTagNotFound							= -67692,	/* The specified tag was not found. */
	errSecInvalidQuery						= -67693,	/* The specified query was not valid. */
	errSecInvalidValue						= -67694,	/* An invalid value was detected. */
	errSecCallbackFailed						= -67695,	/* A callback has failed. */
	errSecACLDeleteFailed					= -67696,	/* An ACL delete operation has failed. */
	errSecACLReplaceFailed					= -67697,	/* An ACL replace operation has failed. */
	errSecACLAddFailed						= -67698,	/* An ACL add operation has failed. */
	errSecACLChangeFailed					= -67699,	/* An ACL change operation has failed. */
	errSecInvalidAccessCredentials			= -67700,	/* Invalid access credentials were encountered. */
	errSecInvalidRecord						= -67701,	/* An invalid record was encountered. */
	errSecInvalidACL							= -67702,	/* An invalid ACL was encountered. */
	errSecInvalidSampleValue				= -67703,	/* An invalid sample value was encountered. */
	errSecIncompatibleVersion				= -67704,	/* An incompatible version was encountered. */
	errSecPrivilegeNotGranted				= -67705,	/* The privilege was not granted. */
	errSecInvalidScope						= -67706,	/* An invalid scope was encountered. */
	errSecPVCAlreadyConfigured				= -67707,	/* The PVC is already configured. */
	errSecInvalidPVC							= -67708,	/* An invalid PVC was encountered. */
	errSecEMMLoadFailed						= -67709,	/* The EMM load has failed. */
	errSecEMMUnloadFailed					= -67710,	/* The EMM unload has failed. */
	errSecAddinLoadFailed					= -67711,	/* The add-in load operation has failed. */
	errSecInvalidKeyRef						= -67712,	/* An invalid key was encountered. */
	errSecInvalidKeyHierarchy				= -67713,	/* An invalid key hierarchy was encountered. */
	errSecAddinUnloadFailed					= -67714,	/* The add-in unload operation has failed. */
	errSecLibraryReferenceNotFound			= -67715,	/* A library reference was not found. */
	errSecInvalidAddinFunctionTable		= -67716,	/* An invalid add-in function table was encountered. */
	errSecInvalidServiceMask				= -67717,	/* An invalid service mask was encountered. */
	errSecModuleNotLoaded					= -67718,	/* A module was not loaded. */
	errSecInvalidSubServiceID				= -67719,	/* An invalid subservice ID was encountered. */
	errSecAttributeNotInContext				= -67720,	/* An attribute was not in the context. */
	errSecModuleManagerInitializeFailed	= -67721,	/* A module failed to initialize. */
	errSecModuleManagerNotFound				= -67722,	/* A module was not found. */
	errSecEventNotificationCallbackNotFound	= -67723,	/* An event notification callback was not found. */
	errSecInputLengthError					= -67724,	/* An input length error was encountered. */
	errSecOutputLengthError					= -67725,	/* An output length error was encountered. */
	errSecPrivilegeNotSupported				= -67726,	/* The privilege is not supported. */
	errSecDeviceError							= -67727,	/* A device error was encountered. */
	errSecAttachHandleBusy					= -67728,	/* The CSP handle was busy. */
	errSecNotLoggedIn							= -67729,	/* You are not logged in. */
	errSecAlgorithmMismatch					= -67730,	/* An algorithm mismatch was encountered. */
	errSecKeyUsageIncorrect					= -67731,	/* The key usage is incorrect. */
	errSecKeyBlobTypeIncorrect				= -67732,	/* The key blob type is incorrect. */
	errSecKeyHeaderInconsistent				= -67733,	/* The key header is inconsistent. */
	errSecUnsupportedKeyFormat				= -67734,	/* The key header format is not supported. */
	errSecUnsupportedKeySize				= -67735,	/* The key size is not supported. */
	errSecInvalidKeyUsageMask				= -67736,	/* The key usage mask is not valid. */
	errSecUnsupportedKeyUsageMask			= -67737,	/* The key usage mask is not supported. */
	errSecInvalidKeyAttributeMask			= -67738,	/* The key attribute mask is not valid. */
	errSecUnsupportedKeyAttributeMask		= -67739,	/* The key attribute mask is not supported. */
	errSecInvalidKeyLabel					= -67740,	/* The key label is not valid. */
	errSecUnsupportedKeyLabel				= -67741,	/* The key label is not supported. */
	errSecInvalidKeyFormat					= -67742,	/* The key format is not valid. */
	errSecUnsupportedVectorOfBuffers		= -67743,	/* The vector of buffers is not supported. */
	errSecInvalidInputVector				= -67744,	/* The input vector is not valid. */
	errSecInvalidOutputVector				= -67745,	/* The output vector is not valid. */
	errSecInvalidContext						= -67746,	/* An invalid context was encountered. */
	errSecInvalidAlgorithm					= -67747,	/* An invalid algorithm was encountered. */
	errSecInvalidAttributeKey				= -67748,	/* A key attribute was not valid. */
	errSecMissingAttributeKey				= -67749,	/* A key attribute was missing. */
	errSecInvalidAttributeInitVector		= -67750,	/* An init vector attribute was not valid. */
	errSecMissingAttributeInitVector		= -67751,	/* An init vector attribute was missing. */
	errSecInvalidAttributeSalt				= -67752,	/* A salt attribute was not valid. */
	errSecMissingAttributeSalt				= -67753,	/* A salt attribute was missing. */
	errSecInvalidAttributePadding			= -67754,	/* A padding attribute was not valid. */
	errSecMissingAttributePadding			= -67755,	/* A padding attribute was missing. */
	errSecInvalidAttributeRandom			= -67756,	/* A random number attribute was not valid. */
	errSecMissingAttributeRandom			= -67757,	/* A random number attribute was missing. */
	errSecInvalidAttributeSeed				= -67758,	/* A seed attribute was not valid. */
	errSecMissingAttributeSeed				= -67759,	/* A seed attribute was missing. */
	errSecInvalidAttributePassphrase		= -67760,	/* A passphrase attribute was not valid. */
	errSecMissingAttributePassphrase		= -67761,	/* A passphrase attribute was missing. */
	errSecInvalidAttributeKeyLength		= -67762,	/* A key length attribute was not valid. */
	errSecMissingAttributeKeyLength		= -67763,	/* A key length attribute was missing. */
	errSecInvalidAttributeBlockSize		= -67764,	/* A block size attribute was not valid. */
	errSecMissingAttributeBlockSize		= -67765,	/* A block size attribute was missing. */
	errSecInvalidAttributeOutputSize		= -67766,	/* An output size attribute was not valid. */
	errSecMissingAttributeOutputSize		= -67767,	/* An output size attribute was missing. */
	errSecInvalidAttributeRounds			= -67768,	/* The number of rounds attribute was not valid. */
	errSecMissingAttributeRounds			= -67769,	/* The number of rounds attribute was missing. */
	errSecInvalidAlgorithmParms				= -67770,	/* An algorithm parameters attribute was not valid. */
	errSecMissingAlgorithmParms				= -67771,	/* An algorithm parameters attribute was missing. */
	errSecInvalidAttributeLabel				= -67772,	/* A label attribute was not valid. */
	errSecMissingAttributeLabel				= -67773,	/* A label attribute was missing. */
	errSecInvalidAttributeKeyType			= -67774,	/* A key type attribute was not valid. */
	errSecMissingAttributeKeyType			= -67775,	/* A key type attribute was missing. */
	errSecInvalidAttributeMode				= -67776,	/* A mode attribute was not valid. */
	errSecMissingAttributeMode				= -67777,	/* A mode attribute was missing. */
	errSecInvalidAttributeEffectiveBits	= -67778,	/* An effective bits attribute was not valid. */
	errSecMissingAttributeEffectiveBits	= -67779,	/* An effective bits attribute was missing. */
	errSecInvalidAttributeStartDate		= -67780,	/* A start date attribute was not valid. */
	errSecMissingAttributeStartDate		= -67781,	/* A start date attribute was missing. */
	errSecInvalidAttributeEndDate			= -67782,	/* An end date attribute was not valid. */
	errSecMissingAttributeEndDate			= -67783,	/* An end date attribute was missing. */
	errSecInvalidAttributeVersion			= -67784,	/* A version attribute was not valid. */
	errSecMissingAttributeVersion			= -67785,	/* A version attribute was missing. */
	errSecInvalidAttributePrime				= -67786,	/* A prime attribute was not valid. */
	errSecMissingAttributePrime				= -67787,	/* A prime attribute was missing. */
	errSecInvalidAttributeBase				= -67788,	/* A base attribute was not valid. */
	errSecMissingAttributeBase				= -67789,	/* A base attribute was missing. */
	errSecInvalidAttributeSubprime			= -67790,	/* A subprime attribute was not valid. */
	errSecMissingAttributeSubprime			= -67791,	/* A subprime attribute was missing. */
	errSecInvalidAttributeIterationCount	= -67792,	/* An iteration count attribute was not valid. */
	errSecMissingAttributeIterationCount	= -67793,	/* An iteration count attribute was missing. */
	errSecInvalidAttributeDLDBHandle		= -67794,	/* A database handle attribute was not valid. */
	errSecMissingAttributeDLDBHandle		= -67795,	/* A database handle attribute was missing. */
	errSecInvalidAttributeAccessCredentials	= -67796,	/* An access credentials attribute was not valid. */
	errSecMissingAttributeAccessCredentials	= -67797,	/* An access credentials attribute was missing. */
	errSecInvalidAttributePublicKeyFormat		= -67798,	/* A public key format attribute was not valid. */
	errSecMissingAttributePublicKeyFormat		= -67799,	/* A public key format attribute was missing. */
	errSecInvalidAttributePrivateKeyFormat	= -67800,	/* A private key format attribute was not valid. */
	errSecMissingAttributePrivateKeyFormat	= -67801,	/* A private key format attribute was missing. */
	errSecInvalidAttributeSymmetricKeyFormat	= -67802,	/* A symmetric key format attribute was not valid. */
	errSecMissingAttributeSymmetricKeyFormat	= -67803,	/* A symmetric key format attribute was missing. */
	errSecInvalidAttributeWrappedKeyFormat	= -67804,	/* A wrapped key format attribute was not valid. */
	errSecMissingAttributeWrappedKeyFormat	= -67805,	/* A wrapped key format attribute was missing. */
	errSecStagedOperationInProgress			= -67806,	/* A staged operation is in progress. */
	errSecStagedOperationNotStarted			= -67807,	/* A staged operation was not started. */
	errSecVerifyFailed							= -67808,	/* A cryptographic verification failure has occurred. */
	errSecQuerySizeUnknown						= -67809,	/* The query size is unknown. */
	errSecBlockSizeMismatch						= -67810,	/* A block size mismatch occurred. */
	errSecPublicKeyInconsistent					= -67811,	/* The public key was inconsistent. */
	errSecDeviceVerifyFailed					= -67812,	/* A device verification failure has occurred. */
	errSecInvalidLoginName						= -67813,	/* An invalid login name was detected. */
	errSecAlreadyLoggedIn						= -67814,	/* The user is already logged in. */
	errSecInvalidDigestAlgorithm				= -67815,	/* An invalid digest algorithm was detected. */
	errSecInvalidCRLGroup						= -67816,	/* An invalid CRL group was detected. */
	errSecCertificateCannotOperate				= -67817,	/* The certificate cannot operate. */
	errSecCertificateExpired					= -67818,	/* An expired certificate was detected. */
	errSecCertificateNotValidYet				= -67819,	/* The certificate is not yet valid. */
	errSecCertificateRevoked					= -67820,	/* The certificate was revoked. */
	errSecCertificateSuspended					= -67821,	/* The certificate was suspended. */
	errSecInsufficientCredentials				= -67822,	/* Insufficient credentials were detected. */
	errSecInvalidAction							= -67823,	/* The action was not valid. */
	errSecInvalidAuthority						= -67824,	/* The authority was not valid. */
	errSecVerifyActionFailed					= -67825,	/* A verify action has failed. */
	errSecInvalidCertAuthority					= -67826,	/* The certificate authority was not valid. */
	errSecInvaldCRLAuthority					= -67827,	/* The CRL authority was not valid. */
	errSecInvalidCRLEncoding					= -67828,	/* The CRL encoding was not valid. */
	errSecInvalidCRLType							= -67829,	/* The CRL type was not valid. */
	errSecInvalidCRL								= -67830,	/* The CRL was not valid. */
	errSecInvalidFormType						= -67831,	/* The form type was not valid. */
	errSecInvalidID								= -67832,	/* The ID was not valid. */
	errSecInvalidIdentifier						= -67833,	/* The identifier was not valid. */
	errSecInvalidIndex							= -67834,	/* The index was not valid. */
	errSecInvalidPolicyIdentifiers				= -67835,	/* The policy identifiers are not valid. */
	errSecInvalidTimeString						= -67836,	/* The time specified was not valid. */
	errSecInvalidReason							= -67837,	/* The trust policy reason was not valid. */
	errSecInvalidRequestInputs					= -67838,	/* The request inputs are not valid. */
	errSecInvalidResponseVector					= -67839,	/* The response vector was not valid. */
	errSecInvalidStopOnPolicy					= -67840,	/* The stop-on policy was not valid. */
	errSecInvalidTuple							= -67841,	/* The tuple was not valid. */
	errSecMultipleValuesUnsupported			= -67842,	/* Multiple values are not supported. */
	errSecNotTrusted								= -67843,	/* The trust policy was not trusted. */
	errSecNoDefaultAuthority					= -67844,	/* No default authority was detected. */
	errSecRejectedForm							= -67845,	/* The trust policy had a rejected form. */
	errSecRequestLost								= -67846,	/* The request was lost. */
	errSecRequestRejected						= -67847,	/* The request was rejected. */
	errSecUnsupportedAddressType				= -67848,	/* The address type is not supported. */
	errSecUnsupportedService					= -67849,	/* The service is not supported. */
	errSecInvalidTupleGroup						= -67850,	/* The tuple group was not valid. */
	errSecInvalidBaseACLs						= -67851,	/* The base ACLs are not valid. */
	errSecInvalidTupleCredendtials				= -67852,	/* The tuple credentials are not valid. */
	errSecInvalidEncoding						= -67853,	/* The encoding was not valid. */
	errSecInvalidValidityPeriod					= -67854,	/* The validity period was not valid. */
	errSecInvalidRequestor						= -67855,	/* The requestor was not valid. */
	errSecRequestDescriptor						= -67856,	/* The request descriptor was not valid. */
	errSecInvalidBundleInfo						= -67857,	/* The bundle information was not valid. */
	errSecInvalidCRLIndex						= -67858,	/* The CRL index was not valid. */
	errSecNoFieldValues							= -67859,	/* No field values were detected. */
	errSecUnsupportedFieldFormat				= -67860,	/* The field format is not supported. */
	errSecUnsupportedIndexInfo					= -67861,	/* The index information is not supported. */
	errSecUnsupportedLocality					= -67862,	/* The locality is not supported. */
	errSecUnsupportedNumAttributes				= -67863,	/* The number of attributes is not supported. */
	errSecUnsupportedNumIndexes					= -67864,	/* The number of indexes is not supported. */
	errSecUnsupportedNumRecordTypes			= -67865,	/* The number of record types is not supported. */
	errSecFieldSpecifiedMultiple				= -67866,	/* Too many fields were specified. */
	errSecIncompatibleFieldFormat				= -67867,	/* The field format was incompatible. */
	errSecInvalidParsingModule					= -67868,	/* The parsing module was not valid. */
	errSecDatabaseLocked							= -67869,	/* The database is locked. */
	errSecDatastoreIsOpen						= -67870,	/* The data store is open. */
	errSecMissingValue							= -67871,	/* A missing value was detected. */
	errSecUnsupportedQueryLimits				= -67872,	/* The query limits are not supported. */
	errSecUnsupportedNumSelectionPreds			= -67873,	/* The number of selection predicates is not supported. */
	errSecUnsupportedOperator					= -67874,	/* The operator is not supported. */
	errSecInvalidDBLocation						= -67875,	/* The database location is not valid. */
	errSecInvalidAccessRequest					= -67876,	/* The access request is not valid. */
	errSecInvalidIndexInfo						= -67877,	/* The index information is not valid. */
	errSecInvalidNewOwner						= -67878,	/* The new owner is not valid. */
	errSecInvalidModifyMode						= -67879,	/* The modify mode is not valid. */
	errSecMissingRequiredExtension					= -67880,	/* A required certificate extension is missing. */
	errSecExtendedKeyUsageNotCritical				= -67881,	/* The extended key usage extension was not marked critical. */
	errSecTimestampMissing						= -67882,	/* A timestamp was expected but was not found. */
	errSecTimestampInvalid						= -67883,	/* The timestamp was not valid. */
	errSecTimestampNotTrusted					= -67884,	/* The timestamp was not trusted. */
	errSecTimestampServiceNotAvailable			= -67885,	/* The timestamp service is not available. */
	errSecTimestampBadAlg						= -67886,	/* An unrecognized or unsupported Algorithm Identifier in timestamp. */
	errSecTimestampBadRequest					= -67887,	/* The timestamp transaction is not permitted or supported. */
	errSecTimestampBadDataFormat				= -67888,	/* The timestamp data submitted has the wrong format. */
	errSecTimestampTimeNotAvailable			= -67889,	/* The time source for the Timestamp Authority is not available. */
	errSecTimestampUnacceptedPolicy			= -67890,	/* The requested policy is not supported by the Timestamp Authority. */
	errSecTimestampUnacceptedExtension			= -67891,	/* The requested extension is not supported by the Timestamp Authority. */
	errSecTimestampAddInfoNotAvailable			= -67892,	/* The additional information requested is not available. */
	errSecTimestampSystemFailure				= -67893,	/* The timestamp request cannot be handled due to system failure . */
	errSecSigningTimeMissing					= -67894,	/* A signing time was expected but was not found. */
	errSecTimestampRejection					= -67895,	/* A timestamp transaction was rejected. */
	errSecTimestampWaiting                      = -67896,	/* A timestamp transaction is waiting. */
	errSecTimestampRevocationWarning            = -67897,	/* A timestamp authority revocation warning was issued. */
	errSecTimestampRevocationNotification       = -67898,	/* A timestamp authority revocation notification was issued. */
};

#if defined(__cplusplus)
}
#endif

#endif /* !_SECURITY_SECBASE_H_ */