{
 * 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@
 }
{  Pascal Translation:  Jonas Maebe, <jonas@freepascal.org>, October 2009 }
{  Pascal Translation Update: Jonas Maebe <jonas@freepascal.org>, October 2012 }
{
    Modified for use with Free Pascal
    Version 308
    Please report any bugs to <gpc@microbizz.nl>
}

{$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
{$mode macpas}
{$packenum 1}
{$macro on}
{$inline on}
{$calling mwpascal}

unit SecBase;
interface
{$setc UNIVERSAL_INTERFACES_VERSION := $0400}
{$setc GAP_INTERFACES_VERSION := $0308}

{$ifc not defined USE_CFSTR_CONSTANT_MACROS}
    {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
{$endc}

{$ifc defined CPUPOWERPC and defined CPUI386}
	{$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
{$endc}
{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
	{$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
{$endc}

{$ifc not defined __ppc__ and defined CPUPOWERPC32}
	{$setc __ppc__ := 1}
{$elsec}
	{$setc __ppc__ := 0}
{$endc}
{$ifc not defined __ppc64__ and defined CPUPOWERPC64}
	{$setc __ppc64__ := 1}
{$elsec}
	{$setc __ppc64__ := 0}
{$endc}
{$ifc not defined __i386__ and defined CPUI386}
	{$setc __i386__ := 1}
{$elsec}
	{$setc __i386__ := 0}
{$endc}
{$ifc not defined __x86_64__ and defined CPUX86_64}
	{$setc __x86_64__ := 1}
{$elsec}
	{$setc __x86_64__ := 0}
{$endc}
{$ifc not defined __arm__ and defined CPUARM}
	{$setc __arm__ := 1}
{$elsec}
	{$setc __arm__ := 0}
{$endc}

{$ifc defined cpu64}
  {$setc __LP64__ := 1}
{$elsec}
  {$setc __LP64__ := 0}
{$endc}


{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
	{$error Conflicting definitions for __ppc__ and __i386__}
{$endc}

{$ifc defined __ppc__ and __ppc__}
	{$setc TARGET_CPU_PPC := TRUE}
	{$setc TARGET_CPU_PPC64 := FALSE}
	{$setc TARGET_CPU_X86 := FALSE}
	{$setc TARGET_CPU_X86_64 := FALSE}
	{$setc TARGET_CPU_ARM := FALSE}
	{$setc TARGET_OS_MAC := TRUE}
	{$setc TARGET_OS_IPHONE := FALSE}
	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
	{$setc TARGET_OS_EMBEDDED := FALSE}
{$elifc defined __ppc64__ and __ppc64__}
	{$setc TARGET_CPU_PPC := FALSE}
	{$setc TARGET_CPU_PPC64 := TRUE}
	{$setc TARGET_CPU_X86 := FALSE}
	{$setc TARGET_CPU_X86_64 := FALSE}
	{$setc TARGET_CPU_ARM := FALSE}
	{$setc TARGET_OS_MAC := TRUE}
	{$setc TARGET_OS_IPHONE := FALSE}
	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
	{$setc TARGET_OS_EMBEDDED := FALSE}
{$elifc defined __i386__ and __i386__}
	{$setc TARGET_CPU_PPC := FALSE}
	{$setc TARGET_CPU_PPC64 := FALSE}
	{$setc TARGET_CPU_X86 := TRUE}
	{$setc TARGET_CPU_X86_64 := FALSE}
	{$setc TARGET_CPU_ARM := FALSE}
{$ifc defined(iphonesim)}
 	{$setc TARGET_OS_MAC := FALSE}
	{$setc TARGET_OS_IPHONE := TRUE}
	{$setc TARGET_IPHONE_SIMULATOR := TRUE}
{$elsec}
	{$setc TARGET_OS_MAC := TRUE}
	{$setc TARGET_OS_IPHONE := FALSE}
	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
{$endc}
	{$setc TARGET_OS_EMBEDDED := FALSE}
{$elifc defined __x86_64__ and __x86_64__}
	{$setc TARGET_CPU_PPC := FALSE}
	{$setc TARGET_CPU_PPC64 := FALSE}
	{$setc TARGET_CPU_X86 := FALSE}
	{$setc TARGET_CPU_X86_64 := TRUE}
	{$setc TARGET_CPU_ARM := FALSE}
	{$setc TARGET_OS_MAC := TRUE}
	{$setc TARGET_OS_IPHONE := FALSE}
	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
	{$setc TARGET_OS_EMBEDDED := FALSE}
{$elifc defined __arm__ and __arm__}
	{$setc TARGET_CPU_PPC := FALSE}
	{$setc TARGET_CPU_PPC64 := FALSE}
	{$setc TARGET_CPU_X86 := FALSE}
	{$setc TARGET_CPU_X86_64 := FALSE}
	{$setc TARGET_CPU_ARM := TRUE}
	{ will require compiler define when/if other Apple devices with ARM cpus ship }
	{$setc TARGET_OS_MAC := FALSE}
	{$setc TARGET_OS_IPHONE := TRUE}
	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
	{$setc TARGET_OS_EMBEDDED := TRUE}
{$elsec}
	{$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ is defined.}
{$endc}

{$ifc defined __LP64__ and __LP64__ }
  {$setc TARGET_CPU_64 := TRUE}
{$elsec}
  {$setc TARGET_CPU_64 := FALSE}
{$endc}

{$ifc defined FPC_BIG_ENDIAN}
	{$setc TARGET_RT_BIG_ENDIAN := TRUE}
	{$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
{$elifc defined FPC_LITTLE_ENDIAN}
	{$setc TARGET_RT_BIG_ENDIAN := FALSE}
	{$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
{$elsec}
	{$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
{$endc}
{$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
{$setc CALL_NOT_IN_CARBON := FALSE}
{$setc OLDROUTINENAMES := FALSE}
{$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
{$setc OPAQUE_UPP_TYPES := TRUE}
{$setc OTCARBONAPPLICATION := TRUE}
{$setc OTKERNEL := FALSE}
{$setc PM_USE_SESSION_APIS := TRUE}
{$setc TARGET_API_MAC_CARBON := TRUE}
{$setc TARGET_API_MAC_OS8 := FALSE}
{$setc TARGET_API_MAC_OSX := TRUE}
{$setc TARGET_CARBON := TRUE}
{$setc TARGET_CPU_68K := FALSE}
{$setc TARGET_CPU_MIPS := FALSE}
{$setc TARGET_CPU_SPARC := FALSE}
{$setc TARGET_OS_UNIX := FALSE}
{$setc TARGET_OS_WIN32 := FALSE}
{$setc TARGET_RT_MAC_68881 := FALSE}
{$setc TARGET_RT_MAC_CFM := FALSE}
{$setc TARGET_RT_MAC_MACHO := TRUE}
{$setc TYPED_FUNCTION_POINTERS := TRUE}
{$setc TYPE_BOOL := FALSE}
{$setc TYPE_EXTENDED := FALSE}
{$setc TYPE_LONGLONG := TRUE}
uses MacTypes,CFBase;
{$endc} {not MACOSALLINCLUDE}


{$ifc TARGET_CPU_64 or TARGET_CPU_ARM}
{$packrecords C}
{$elsec}
{$ALIGN POWER}
{$endc} {TARGET_CPU_64}

{!
	@header SecBase
	SecBase contains common declarations for the Security functions. 
}


{!
    @typedef SecKeychainRef
    @abstract Contains information about a keychain.
}
type
	SecKeychainRef = ^OpaqueSecKeychainRef; { an opaque type }
	OpaqueSecKeychainRef = record end;
	SecKeychainRefPtr = ^SecKeychainRef;  { when a var xx:SecKeychainRef parameter can be nil, it is changed to xx: SecKeychainRefPtr }

{!
    @typedef SecKeychainItemRef
    @abstract Contains information about a keychain item.
}
type
	SecKeychainItemRef = ^OpaqueSecKeychainItemRef; { an opaque type }
	OpaqueSecKeychainItemRef = record end;
	SecKeychainItemRefPtr = ^SecKeychainItemRef;  { when a var xx:SecKeychainItemRef parameter can be nil, it is changed to xx: SecKeychainItemRefPtr }

{!
    @typedef SecKeychainSearchRef
    @abstract Contains information about a keychain search.
}
type
	SecKeychainSearchRef = ^OpaqueSecKeychainSearchRef; { an opaque type }
	OpaqueSecKeychainSearchRef = record end;
	SecKeychainSearchRefPtr = ^SecKeychainSearchRef;  { when a var xx:SecKeychainSearchRef parameter can be nil, it is changed to xx: SecKeychainSearchRefPtr }

{!
    @typedef SecKeychainAttrType
    @abstract Represents a keychain attribute type.
}
type
	SecKeychainAttrType = OSType;

{!
    @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.
}
type
	SecKeychainAttribute = record
		tag: SecKeychainAttrType;
		length: UInt32;
		data: UnivPtr;
	end;

{!
    @typedef SecKeychainAttributePtr
    @abstract Represents a pointer to a keychain attribute structure.
}
	SecKeychainAttributePtr = ^SecKeychainAttribute;

{!
    @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.
}
type
	SecKeychainAttributeListPtr = ^SecKeychainAttributeList;
	SecKeychainAttributeList = record
		count: UInt32;
		attr: SecKeychainAttributePtr;
	end;

{!
    @typedef SecKeychainStatus
    @abstract Represents the status of a keychain.
}
type
	SecKeychainStatus = UInt32;

{!
    @typedef SecTrustedApplicationRef
    @abstract Contains information about a trusted application.
}
type
	SecTrustedApplicationRef = ^OpaqueSecTrustedApplicationRef; { an opaque type }
	OpaqueSecTrustedApplicationRef = record end;

{!
    @typedef SecPolicyRef
    @abstract Contains information about a policy.
}
type
	SecPolicyRef = ^OpaqueSecPolicyRef; { an opaque type }
	OpaqueSecPolicyRef = record end;

{!
    @typedef SecCertificateRef
    @abstract Contains information about a certificate.
}
type
	SecCertificateRef = ^OpaqueSecCertificateRef; { an opaque type }
	OpaqueSecCertificateRef = record end;

{!
    @typedef SecAccessRef
    @abstract Contains information about an access.
}
type
	SecAccessRef = ^OpaqueSecAccessRef; { an opaque type }
	OpaqueSecAccessRef = record end;

{!
    @typedef SecIdentityRef
    @abstract Contains information about an identity.
}
type
	SecIdentityRef = ^OpaqueSecIdentityRef; { an opaque type }
	OpaqueSecIdentityRef = record end;

{!
    @typedef SecKeyRef
    @abstract Contains information about a key.
}
type
	SecKeyRef = ^OpaqueSecKeyRef; { an opaque type }
	OpaqueSecKeyRef = record end;

{!
    @typedef SecACLRef
    @abstract Contains information about an access control list (ACL) entry.
}
type
	SecACLRef = ^OpaqueSecTrustRef; { an opaque type }
	OpaqueSecTrustRef = record end;

{!
    @typedef SecPasswordRef
    @abstract Contains information about a password.
}
type
	SecPasswordRef = ^OpaqueSecPasswordRef; { an opaque type }
	OpaqueSecPasswordRef = record end;

{!
    @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.  
}
type
	SecKeychainAttributeInfoPtr = ^SecKeychainAttributeInfo;
	SecKeychainAttributeInfo = record
		count: UInt32;
		tag: UInt32Ptr;
		format: UInt32Ptr;
	end;

{!
    @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.
}
function SecCopyErrorMessageString( status: OSStatus; reserved: UnivPtr ): CFStringRef; external name '_SecCopyErrorMessageString';

{!
@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.
}

const
	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. }

{$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}

end.
{$endc} {not MACOSALLINCLUDE}
