* Added MYErrorUtils
authorsnej@snej.local
Sat Apr 04 20:53:53 2009 -0700 (2009-04-04)
changeset 22a9da6c5d3f7c
parent 21 88d7e2455a7f
child 23 a910102a1c9d
* Added MYErrorUtils
* Added AssertAbstractMethod() to Test
* Added .xcconfig files
MYErrorUtils.h
MYErrorUtils.m
MYError_CSSMErrorDomain.strings
MYUtilities.xcconfig
MYUtilities_Debug.xcconfig
MYUtilities_Release.xcconfig
Test.h
Test.m
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/MYErrorUtils.h	Sat Apr 04 20:53:53 2009 -0700
     1.3 @@ -0,0 +1,45 @@
     1.4 +//
     1.5 +//  MYErrorUtils.h
     1.6 +//  MYCrypto
     1.7 +//
     1.8 +//  Created by Jens Alfke on 2/25/09.
     1.9 +//  Copyright 2009 Jens Alfke. All rights reserved.
    1.10 +//
    1.11 +
    1.12 +#import <Foundation/NSObject.h>
    1.13 +@class NSError, NSString;
    1.14 +
    1.15 +
    1.16 +extern NSString* const MYErrorDomain;
    1.17 +
    1.18 +enum {
    1.19 +    /** "Miscellaneous" error code, set by MYMiscError.
    1.20 +        Handy during development, but before shipping you really should define
    1.21 +        individual error codes for each error condition. */
    1.22 +    kMYErrorMisc = 999999,
    1.23 +};
    1.24 +
    1.25 +
    1.26 +/** Creates an NSError in MYErrorDomain. */
    1.27 +NSError *MYError( int errorCode, NSString *domain, NSString *messageFormat, ... ) 
    1.28 +                                __attribute__ ((format (__NSString__, 3, 4)));
    1.29 +
    1.30 +/** Convenience function for creating NSErrors.
    1.31 +    Stores an NSError into *error, and returns NO.
    1.32 +    Domain will be MYErrorDomain, code will be kMYErrorMisc.
    1.33 +    Handy during development, but before shipping you really should define
    1.34 +    individual error codes for each error condition. */
    1.35 +BOOL MYMiscError( NSError **outError, NSString *messageFormat, ... )
    1.36 +                                __attribute__ ((format (__NSString__, 2, 3)));
    1.37 +
    1.38 +NSString* MYPrintableErrorCode( int code );
    1.39 +NSString* MYErrorName( NSString *domain, int code );
    1.40 +
    1.41 +@interface NSError (MYUtilities)
    1.42 +/** Prepends a message to the beginning of the receiver's existing message,
    1.43 +    and returns the modified NSError. */
    1.44 +- (NSError*) my_errorByPrependingMessage: (NSString*)message;
    1.45 +
    1.46 +- (NSString*) my_nameOfCode;
    1.47 +
    1.48 +@end
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/MYErrorUtils.m	Sat Apr 04 20:53:53 2009 -0700
     2.3 @@ -0,0 +1,218 @@
     2.4 +//
     2.5 +//  MYErrorUtils.m
     2.6 +//  MYCrypto
     2.7 +//
     2.8 +//  Created by Jens Alfke on 2/25/09.
     2.9 +//  Copyright 2009 Jens Alfke. All rights reserved.
    2.10 +//
    2.11 +
    2.12 +#import "MYErrorUtils.h"
    2.13 +#import "Test.h"
    2.14 +#import "CollectionUtils.h"
    2.15 +#import <Foundation/Foundation.h>
    2.16 +
    2.17 +
    2.18 +NSString* const MYErrorDomain = @"MYErrorDomain";
    2.19 +
    2.20 +
    2.21 +static NSError *MYMakeErrorV( int errorCode, NSString *domain, NSString *message, va_list args )
    2.22 +{
    2.23 +    message = [[NSString alloc] initWithFormat: message arguments: args];
    2.24 +    Log(@"MYError #%i: %@",errorCode,message);
    2.25 +    NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
    2.26 +                              message, NSLocalizedDescriptionKey,
    2.27 +                              nil];
    2.28 +    [message release];
    2.29 +    return [NSError errorWithDomain: domain
    2.30 +                               code: errorCode
    2.31 +                           userInfo: userInfo];
    2.32 +}
    2.33 +
    2.34 +
    2.35 +NSError *MYError( int errorCode, NSString *domain, NSString *message, ... )
    2.36 +{
    2.37 +    va_list args;
    2.38 +    va_start(args,message);
    2.39 +    NSError *error = MYMakeErrorV(errorCode,domain,message,args);
    2.40 +    va_end(args);
    2.41 +    return error;
    2.42 +}
    2.43 +
    2.44 +
    2.45 +BOOL MYMiscError( NSError **error, NSString *message, ... )
    2.46 +{
    2.47 +    if (error) {
    2.48 +        va_list args;
    2.49 +        va_start(args,message);
    2.50 +        *error = MYMakeErrorV(kMYErrorMisc,MYErrorDomain, message,args);
    2.51 +        va_end(args);
    2.52 +    }
    2.53 +    return NO;
    2.54 +}
    2.55 +
    2.56 +
    2.57 +static NSString* printableOSType( OSType t ) {
    2.58 +    if (t < 0x20202020 || t > 0x7e7e7e7e)
    2.59 +        return nil;
    2.60 +    union {
    2.61 +        OSType ostype;
    2.62 +        unsigned char ch[4];
    2.63 +    } buf;
    2.64 +    buf.ostype = CFSwapInt32HostToBig(t);
    2.65 +    for (int i=0; i<4; i++)
    2.66 +        if (buf.ch[i] < 0x20 || buf.ch[i] > 0x7E)
    2.67 +            return nil;
    2.68 +    return [[[NSString alloc] initWithBytes: &buf.ch length: 4 encoding: NSMacOSRomanStringEncoding]
    2.69 +            autorelease];
    2.70 +}
    2.71 +
    2.72 +
    2.73 +static NSString* printableErrorCode( NSInteger code ) {
    2.74 +    if (code < -99999)
    2.75 +        return $sprintf(@"%u", code);       // CSSM errors are huge unsigned values > 0x80000000
    2.76 +    NSString *result = printableOSType((OSType)code);
    2.77 +    if (result)
    2.78 +        return result;                      // CoreAudio errors are OSTypes (4-char strings)
    2.79 +    return $sprintf(@"%i", code);           // Default: OSStatus and errno values are signed
    2.80 +}
    2.81 +
    2.82 +static NSString* MYShortErrorDomainName( NSString *domain ) {
    2.83 +    if ([domain hasPrefix: @"kCFErrorDomain"])
    2.84 +        domain = [domain substringFromIndex: 14];
    2.85 +    else {
    2.86 +        if ([domain hasSuffix: @"ErrorDomain"])
    2.87 +            domain = [domain substringToIndex: domain.length - 11];
    2.88 +        if ([domain hasPrefix: @"NS"])
    2.89 +            domain = [domain substringFromIndex: 2];
    2.90 +    }
    2.91 +    return domain;
    2.92 +}
    2.93 +
    2.94 +NSString* MYErrorName( NSString *domain, NSInteger code ) {
    2.95 +    if (code == 0)
    2.96 +        return nil;
    2.97 +    NSString *codeStr = printableErrorCode(code);
    2.98 +    if (!domain)
    2.99 +        return codeStr;
   2.100 +    NSString *result = nil;
   2.101 +    
   2.102 +    if ($equal(domain,NSPOSIXErrorDomain)) {
   2.103 +        // Interpret POSIX errors via strerror
   2.104 +        // (which unfortunately returns a description, not the name of the constant)
   2.105 +        const char *name = strerror(code);
   2.106 +        if (name) {
   2.107 +            result = [NSString stringWithCString: name encoding: NSASCIIStringEncoding];
   2.108 +            if ([result hasPrefix: @"Unknown error"])
   2.109 +                result = nil;
   2.110 +        }
   2.111 +    } 
   2.112 +#if !TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
   2.113 +    else if ($equal(domain,NSOSStatusErrorDomain)) {
   2.114 +        // If it's an OSStatus, check whether CarbonCore knows its name:
   2.115 +        const char *name = NULL;
   2.116 +#if !TARGET_OS_IPHONE
   2.117 +        name = GetMacOSStatusErrorString(code);
   2.118 +#endif
   2.119 +        if (name && *name)
   2.120 +            result = [NSString stringWithCString: name encoding: NSMacOSRomanStringEncoding];
   2.121 +        else {
   2.122 +            result = (id) SecCopyErrorMessageString(code,NULL);
   2.123 +            if (result) {
   2.124 +                [(id)CFMakeCollectable(result) autorelease];
   2.125 +                if ([result hasPrefix: @"OSStatus "])
   2.126 +                    result = nil; // just a generic message
   2.127 +            }
   2.128 +        }
   2.129 +    }
   2.130 +#endif
   2.131 +    
   2.132 +    if (!result) {
   2.133 +        // Look up errors in string files keyed by the domain name:
   2.134 +        NSString *table = [@"MYError_" stringByAppendingString: domain];
   2.135 +        result = [[NSBundle mainBundle] localizedStringForKey: codeStr value: @"?" table: table];
   2.136 +        if ([result isEqualToString: @"?"])
   2.137 +            result = nil;
   2.138 +    }
   2.139 +    
   2.140 +    codeStr = $sprintf(@"%@ %@", MYShortErrorDomainName(domain), codeStr);;
   2.141 +    return result ? $sprintf(@"%@ (%@)", result, codeStr) : codeStr;
   2.142 +}
   2.143 +
   2.144 +
   2.145 +
   2.146 +
   2.147 +@implementation NSError (MYUtils)
   2.148 +
   2.149 +- (NSError*) my_errorByPrependingMessage: (NSString*)message
   2.150 +{
   2.151 +    if( message.length ) {
   2.152 +        NSDictionary *oldUserInfo = self.userInfo;
   2.153 +        NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
   2.154 +        if( oldUserInfo )
   2.155 +            [userInfo addEntriesFromDictionary: oldUserInfo];
   2.156 +        NSString *desc = [oldUserInfo objectForKey: NSLocalizedDescriptionKey];
   2.157 +        if( desc )
   2.158 +            message = $sprintf(@"%@: %@", message, desc);
   2.159 +        [userInfo setObject: message forKey: NSLocalizedDescriptionKey];
   2.160 +        return [NSError errorWithDomain: self.domain
   2.161 +                                   code: self.code
   2.162 +                               userInfo: userInfo];
   2.163 +    } else
   2.164 +        return self;
   2.165 +}
   2.166 +
   2.167 +- (NSString*) my_nameOfCode {
   2.168 +    return MYErrorName(self.domain, self.code);
   2.169 +}
   2.170 +
   2.171 +@end
   2.172 +
   2.173 +
   2.174 +TestCase(MYErrorUtils) {
   2.175 +    CAssertEqual(printableOSType('abcd'), @"abcd");
   2.176 +    CAssertEqual(printableOSType('    '), @"    ");
   2.177 +    CAssertEqual(printableOSType(0x7e7e7e7e), @"~~~~");
   2.178 +    CAssertEqual(printableOSType(0x7e7F7e7e), nil);
   2.179 +    CAssertEqual(printableOSType(0x7e0D7e7e), nil);
   2.180 +    CAssertEqual(printableOSType(0), nil);
   2.181 +    CAssertEqual(printableOSType((OSType)-123456), nil);
   2.182 +
   2.183 +    CAssertEqual(MYErrorName(nil,0),      nil);
   2.184 +    CAssertEqual(MYErrorName(nil,12345),  @"12345");
   2.185 +    CAssertEqual(MYErrorName(nil,1),      @"1");
   2.186 +    CAssertEqual(MYErrorName(nil,-1),     @"-1");
   2.187 +    CAssertEqual(MYErrorName(nil,12345),  @"12345");
   2.188 +    CAssertEqual(MYErrorName(nil,-12345), @"-12345");
   2.189 +    CAssertEqual(MYErrorName(nil,2147549184u), @"2147549184");
   2.190 +    
   2.191 +    CAssertEqual(MYErrorName(@"foobar",0), nil);
   2.192 +    CAssertEqual(MYErrorName(@"foobar",'fmt?'), @"foobar fmt?");
   2.193 +    CAssertEqual(MYErrorName(@"foobar",1), @"foobar 1");
   2.194 +    CAssertEqual(MYErrorName(@"FoobarErrorDomain",-1), @"Foobar -1");
   2.195 +    CAssertEqual(MYErrorName(@"NSFoobarErrorDomain",12345), @"Foobar 12345");
   2.196 +
   2.197 +    NSError *err;
   2.198 +    err = [NSError errorWithDomain: NSPOSIXErrorDomain code: EPERM userInfo: nil];
   2.199 +    CAssertEqual(err.my_nameOfCode, @"Operation not permitted (POSIX 1)");
   2.200 +    err = [NSError errorWithDomain: NSPOSIXErrorDomain code: 12345 userInfo: nil];
   2.201 +    CAssertEqual(err.my_nameOfCode, @"POSIX 12345");
   2.202 +    
   2.203 +#if !TARGET_OS_IPHONE
   2.204 +    err = [NSError errorWithDomain: NSOSStatusErrorDomain code: paramErr userInfo: nil];
   2.205 +    CAssertEqual(err.my_nameOfCode, @"paramErr (OSStatus -50)");
   2.206 +    err = [NSError errorWithDomain: NSOSStatusErrorDomain code: fnfErr userInfo: nil];
   2.207 +    CAssertEqual(err.my_nameOfCode, @"fnfErr (OSStatus -43)");
   2.208 +    err = [NSError errorWithDomain: NSOSStatusErrorDomain code: -25291 userInfo: nil];
   2.209 +    CAssertEqual(err.my_nameOfCode, @"errKCNotAvailable / errSecNotAvailable (OSStatus -25291)");
   2.210 +    err = [NSError errorWithDomain: NSOSStatusErrorDomain code: -25260 userInfo: nil];
   2.211 +    CAssertEqual(err.my_nameOfCode, @"Passphrase is required for import/export. (OSStatus -25260)");
   2.212 +#endif
   2.213 +    err = [NSError errorWithDomain: NSOSStatusErrorDomain code: 12345 userInfo: nil];
   2.214 +    CAssertEqual(err.my_nameOfCode, @"OSStatus 12345");
   2.215 +
   2.216 +    err = [NSError errorWithDomain: @"CSSMErrorDomain" code: 2147549184u userInfo: nil];
   2.217 +    CAssertEqual(err.my_nameOfCode, @"CSSM_CSSM_BASE_ERROR (CSSM 2147549184)");
   2.218 +
   2.219 +    err = [NSError errorWithDomain: (id)kCFErrorDomainCocoa code: 100 userInfo: nil];
   2.220 +    CAssertEqual(err.my_nameOfCode, @"Cocoa 100");
   2.221 +}
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/MYError_CSSMErrorDomain.strings	Sat Apr 04 20:53:53 2009 -0700
     3.3 @@ -0,0 +1,669 @@
     3.4 +/* CSSM Error Constants. */
     3.5 +
     3.6 +/* Copied from Keychain.framework, by Wade Tregaskis. --Jens Alfke, 4/2009 */
     3.7 +
     3.8 +/* The key is the CSSM error name, as defined in various header files. */
     3.9 +/* The value is the constant corresponding to the code. */
    3.10 +
    3.11 +/* "Standard" error codes defined by the CDSA spec., found in cssmerr.h. */
    3.12 +
    3.13 +/* Apple use the private errors as one of their codes... d'oh. */
    3.14 +
    3.15 +2147549184 = "CSSM_CSSM_BASE_ERROR";
    3.16 +2147550208 = "CSSM_CSSM_PRIVATE_ERROR";
    3.17 +2147551232 = "CSSM_CSP_BASE_ERROR";
    3.18 +/* 2147552256 = "CSSM_CSP_PRIVATE_ERROR"; */
    3.19 +2147553280 = "CSSM_DL_BASE_ERROR";
    3.20 +/* 2147554304 = "CSSM_DL_PRIVATE_ERROR"; */
    3.21 +2147555328 = "CSSM_CL_BASE_ERROR";
    3.22 +2147556352 = "CSSM_CL_PRIVATE_ERROR";
    3.23 +2147557376 = "CSSM_TP_BASE_ERROR";
    3.24 +/* 2147558400 = "CSSM_TP_PRIVATE_ERROR"; */
    3.25 +2147559424 = "CSSM_KR_BASE_ERROR";
    3.26 +2147560448 = "CSSM_KR_PRIVATE_ERROR";
    3.27 +2147561472 = "CSSM_AC_BASE_ERROR";
    3.28 +2147562496 = "CSSM_AC_PRIVATE_ERROR";
    3.29 +
    3.30 +2147549441 = "CSSMERR_CSSM_INVALID_ADDIN_HANDLE";
    3.31 +2147549442 = "CSSMERR_CSSM_NOT_INITIALIZED";
    3.32 +2147549443 = "CSSMERR_CSSM_INVALID_HANDLE_USAGE";
    3.33 +2147549444 = "CSSMERR_CSSM_PVC_REFERENT_NOT_FOUND";
    3.34 +2147549445 = "CSSMERR_CSSM_FUNCTION_INTEGRITY_FAIL";
    3.35 +
    3.36 +1 = "CSSM_ERRCODE_INTERNAL_ERROR";
    3.37 +2 = "CSSM_ERRCODE_MEMORY_ERROR";
    3.38 +3 = "CSSM_ERRCODE_MDS_ERROR";
    3.39 +4 = "CSSM_ERRCODE_INVALID_POINTER";
    3.40 +5 = "CSSM_ERRCODE_INVALID_INPUT_POINTER";
    3.41 +6 = "CSSM_ERRCODE_INVALID_OUTPUT_POINTER";
    3.42 +7 = "CSSM_ERRCODE_FUNCTION_NOT_IMPLEMENTED";
    3.43 +8 = "CSSM_ERRCODE_SELF_CHECK_FAILED";
    3.44 +9 = "CSSM_ERRCODE_OS_ACCESS_DENIED";
    3.45 +10 = "CSSM_ERRCODE_FUNCTION_FAILED";
    3.46 +11 = "CSSM_ERRCODE_MODULE_MANIFEST_VERIFY_FAILED";
    3.47 +12 = "CSSM_ERRCODE_INVALID_GUID";
    3.48 +
    3.49 +32 = "CSSM_ERRCODE_OPERATION_AUTH_DENIED";
    3.50 +33 = "CSSM_ERRCODE_OBJECT_USE_AUTH_DENIED";
    3.51 +34 = "CSSM_ERRCODE_OBJECT_MANIP_AUTH_DENIED";
    3.52 +35 = "CSSM_ERRCODE_OBJECT_ACL_NOT_SUPPORTED";
    3.53 +36 = "CSSM_ERRCODE_OBJECT_ACL_REQUIRED";
    3.54 +37 = "CSSM_ERRCODE_INVALID_ACCESS_CREDENTIALS";
    3.55 +38 = "CSSM_ERRCODE_INVALID_ACL_BASE_CERTS";
    3.56 +39 = "CSSM_ERRCODE_ACL_BASE_CERTS_NOT_SUPPORTED";
    3.57 +40 = "CSSM_ERRCODE_INVALID_SAMPLE_VALUE";
    3.58 +41 = "CSSM_ERRCODE_SAMPLE_VALUE_NOT_SUPPORTED";
    3.59 +42 = "CSSM_ERRCODE_INVALID_ACL_SUBJECT_VALUE";
    3.60 +43 = "CSSM_ERRCODE_ACL_SUBJECT_TYPE_NOT_SUPPORTED";
    3.61 +44 = "CSSM_ERRCODE_INVALID_ACL_CHALLENGE_CALLBACK";
    3.62 +45 = "CSSM_ERRCODE_ACL_CHALLENGE_CALLBACK_FAILED";
    3.63 +46 = "CSSM_ERRCODE_INVALID_ACL_ENTRY_TAG";
    3.64 +47 = "CSSM_ERRCODE_ACL_ENTRY_TAG_NOT_FOUND";
    3.65 +48 = "CSSM_ERRCODE_INVALID_ACL_EDIT_MODE";
    3.66 +49 = "CSSM_ERRCODE_ACL_CHANGE_FAILED";
    3.67 +50 = "CSSM_ERRCODE_INVALID_NEW_ACL_ENTRY";
    3.68 +51 = "CSSM_ERRCODE_INVALID_NEW_ACL_OWNER";
    3.69 +52 = "CSSM_ERRCODE_ACL_DELETE_FAILED";
    3.70 +53 = "CSSM_ERRCODE_ACL_REPLACE_FAILED";
    3.71 +54 = "CSSM_ERRCODE_ACL_ADD_FAILED";
    3.72 +
    3.73 +64 = "CSSM_ERRCODE_INVALID_CONTEXT_HANDLE";
    3.74 +65 = "CSSM_ERRCODE_INCOMPATIBLE_VERSION";
    3.75 +66 = "CSSM_ERRCODE_INVALID_CERTGROUP_POINTER";
    3.76 +67 = "CSSM_ERRCODE_INVALID_CERT_POINTER";
    3.77 +68 = "CSSM_ERRCODE_INVALID_CRL_POINTER";
    3.78 +69 = "CSSM_ERRCODE_INVALID_FIELD_POINTER";
    3.79 +70 = "CSSM_ERRCODE_INVALID_DATA";
    3.80 +71 = "CSSM_ERRCODE_CRL_ALREADY_SIGNED";
    3.81 +72 = "CSSM_ERRCODE_INVALID_NUMBER_OF_FIELDS";
    3.82 +73 = "CSSM_ERRCODE_VERIFICATION_FAILURE";
    3.83 +74 = "CSSM_ERRCODE_INVALID_DB_HANDLE";
    3.84 +75 = "CSSM_ERRCODE_PRIVILEGE_NOT_GRANTED";
    3.85 +76 = "CSSM_ERRCODE_INVALID_DB_LIST";
    3.86 +77 = "CSSM_ERRCODE_INVALID_DB_LIST_POINTER";
    3.87 +78 = "CSSM_ERRCODE_UNKNOWN_FORMAT";
    3.88 +79 = "CSSM_ERRCODE_UNKNOWN_TAG";
    3.89 +80 = "CSSM_ERRCODE_INVALID_CSP_HANDLE";
    3.90 +81 = "CSSM_ERRCODE_INVALID_DL_HANDLE";
    3.91 +82 = "CSSM_ERRCODE_INVALID_CL_HANDLE";
    3.92 +83 = "CSSM_ERRCODE_INVALID_TP_HANDLE";
    3.93 +84 = "CSSM_ERRCODE_INVALID_KR_HANDLE";
    3.94 +85 = "CSSM_ERRCODE_INVALID_AC_HANDLE";
    3.95 +86 = "CSSM_ERRCODE_INVALID_PASSTHROUGH_ID";
    3.96 +87 = "CSSM_ERRCODE_INVALID_NETWORK_ADDR";
    3.97 +88 = "CSSM_ERRCODE_INVALID_CRYPTO_DATA";
    3.98 +
    3.99 +2147549185 = "CSSMERR_CSSM_INTERNAL_ERROR";
   3.100 +2147549186 = "CSSMERR_CSSM_MEMORY_ERROR";
   3.101 +2147549187 = "CSSMERR_CSSM_MDS_ERROR";
   3.102 +2147549188 = "CSSMERR_CSSM_INVALID_POINTER";
   3.103 +2147549189 = "CSSMERR_CSSM_INVALID_INPUT_POINTER";
   3.104 +2147549190 = "CSSMERR_CSSM_INVALID_OUTPUT_POINTER";
   3.105 +2147549191 = "CSSMERR_CSSM_FUNCTION_NOT_IMPLEMENTED";
   3.106 +2147549192 = "CSSMERR_CSSM_SELF_CHECK_FAILED";
   3.107 +2147549193 = "CSSMERR_CSSM_OS_ACCESS_DENIED";
   3.108 +2147549194 = "CSSMERR_CSSM_FUNCTION_FAILED";
   3.109 +2147549195 = "CSSMERR_CSSM_MODULE_MANIFEST_VERIFY_FAILED";
   3.110 +2147549196 = "CSSMERR_CSSM_INVALID_GUID";
   3.111 +
   3.112 +2147549248 = "CSSMERR_CSSM_INVALID_CONTEXT_HANDLE";
   3.113 +2147549249 = "CSSMERR_CSSM_INCOMPATIBLE_VERSION";
   3.114 +2147549259 = "CSSMERR_CSSM_PRIVILEGE_NOT_GRANTED";
   3.115 +
   3.116 +2147549456 = "CSSM_CSSM_BASE_CSSM_ERROR";
   3.117 +2147549457 = "CSSMERR_CSSM_SCOPE_NOT_SUPPORTED";
   3.118 +2147549458 = "CSSMERR_CSSM_PVC_ALREADY_CONFIGURED";
   3.119 +2147549459 = "CSSMERR_CSSM_INVALID_PVC";
   3.120 +2147549460 = "CSSMERR_CSSM_EMM_LOAD_FAILED";
   3.121 +2147549461 = "CSSMERR_CSSM_EMM_UNLOAD_FAILED";
   3.122 +2147549462 = "CSSMERR_CSSM_ADDIN_LOAD_FAILED";
   3.123 +2147549463 = "CSSMERR_CSSM_INVALID_KEY_HIERARCHY";
   3.124 +2147549464 = "CSSMERR_CSSM_ADDIN_UNLOAD_FAILED";
   3.125 +2147549465 = "CSSMERR_CSSM_LIB_REF_NOT_FOUND";
   3.126 +2147549466 = "CSSMERR_CSSM_INVALID_ADDIN_FUNCTION_TABLE";
   3.127 +2147549467 = "CSSMERR_CSSM_EMM_AUTHENTICATE_FAILED";
   3.128 +2147549468 = "CSSMERR_CSSM_ADDIN_AUTHENTICATE_FAILED";
   3.129 +2147549469 = "CSSMERR_CSSM_INVALID_SERVICE_MASK";
   3.130 +2147549470 = "CSSMERR_CSSM_MODULE_NOT_LOADED";
   3.131 +2147549471 = "CSSMERR_CSSM_INVALID_SUBSERVICEID";
   3.132 +2147549472 = "CSSMERR_CSSM_BUFFER_TOO_SMALL";
   3.133 +2147549473 = "CSSMERR_CSSM_INVALID_ATTRIBUTE";
   3.134 +2147549474 = "CSSMERR_CSSM_ATTRIBUTE_NOT_IN_CONTEXT";
   3.135 +2147549475 = "CSSMERR_CSSM_MODULE_MANAGER_INITIALIZE_FAIL";
   3.136 +2147549476 = "CSSMERR_CSSM_MODULE_MANAGER_NOT_FOUND";
   3.137 +2147549477 = "CSSMERR_CSSM_EVENT_NOTIFICATION_CALLBACK_NOT_FOUND";
   3.138 +
   3.139 +2147557377 = "CSSMERR_TP_INTERNAL_ERROR";
   3.140 +2147557378 = "CSSMERR_TP_MEMORY_ERROR";
   3.141 +2147557379 = "CSSMERR_TP_MDS_ERROR";
   3.142 +2147557380 = "CSSMERR_TP_INVALID_POINTER";
   3.143 +2147557381 = "CSSMERR_TP_INVALID_INPUT_POINTER";
   3.144 +2147557382 = "CSSMERR_TP_INVALID_OUTPUT_POINTER";
   3.145 +2147557383 = "CSSMERR_TP_FUNCTION_NOT_IMPLEMENTED";
   3.146 +2147557384 = "CSSMERR_TP_SELF_CHECK_FAILED";
   3.147 +2147557385 = "CSSMERR_TP_OS_ACCESS_DENIED";
   3.148 +2147557386 = "CSSMERR_TP_FUNCTION_FAILED";
   3.149 +
   3.150 +/* Proof:
   3.151 +    CSSMERR_TP_FUNCTION_FAILED = CSSM_TP_BASE_ERROR + CSSM_ERRCODE_FUNCTION_FAILED
   3.152 +                               = CSSM_CL_BASE_ERROR + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRCODE_FUNCTION_FAILED
   3.153 +                               = CSSM_DL_BASE_ERROR + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRCODE_FUNCTION_FAILED
   3.154 +                               = CSSM_CSP_BASE_ERROR + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRCODE_FUNCTION_FAILED
   3.155 +                               = CSSM_CSSM_BASE_ERROR + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRCODE_FUNCTION_FAILED
   3.156 +                               = CSSM_BASE_ERROR + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRORCODE_MODULE_EXTENT + CSSM_ERRCODE_FUNCTION_FAILED
   3.157 +                               = 0x80010000 + 0x00000800 + 0x00000800 + 0x00000800 + 0x00000800 + 0x000A
   3.158 +                               = 0x8001200A
   3.159 +                               = 2147557386  (Q.E.D.) */
   3.160 +
   3.161 +2147557440 = "CSSMERR_TP_INVALID_CONTEXT_HANDLE";
   3.162 +2147557442 = "CSSMERR_TP_INVALID_CERTGROUP_POINTER";
   3.163 +2147557443 = "CSSMERR_TP_INVALID_CERT_POINTER";
   3.164 +2147557444 = "CSSMERR_TP_INVALID_CRL_POINTER";
   3.165 +2147557445 = "CSSMERR_TP_INVALID_FIELD_POINTER";
   3.166 +2147557446 = "CSSMERR_TP_INVALID_DATA";
   3.167 +2147557447 = "CSSMERR_TP_CRL_ALREADY_SIGNED";
   3.168 +2147557448 = "CSSMERR_TP_INVALID_NUMBER_OF_FIELDS";
   3.169 +2147557449 = "CSSMERR_TP_VERIFICATION_FAILURE";
   3.170 +2147557450 = "CSSMERR_TP_INVALID_DB_HANDLE";
   3.171 +2147557452 = "CSSMERR_TP_INVALID_DB_LIST";
   3.172 +2147557453 = "CSSMERR_TP_INVALID_DB_LIST_POINTER";
   3.173 +2147557454 = "CSSMERR_TP_UNKNOWN_FORMAT";
   3.174 +2147557455 = "CSSMERR_TP_UNKNOWN_TAG";
   3.175 +2147557456 = "CSSMERR_TP_INVALID_CSP_HANDLE";
   3.176 +2147557457 = "CSSMERR_TP_INVALID_DL_HANDLE";
   3.177 +2147557458 = "CSSMERR_TP_INVALID_CL_HANDLE";
   3.178 +2147557462 = "CSSMERR_TP_INVALID_PASSTHROUGH_ID";
   3.179 +2147557463 = "CSSMERR_TP_INVALID_NETWORK_ADDR";
   3.180 +
   3.181 +2147557632 = "CSSM_TP_BASE_TP_ERROR";
   3.182 +2147557633 = "CSSMERR_TP_INVALID_CALLERAUTH_CONTEXT_POINTER";
   3.183 +2147557634 = "CSSMERR_TP_INVALID_IDENTIFIER_POINTER";
   3.184 +2147557635 = "CSSMERR_TP_INVALID_KEYCACHE_HANDLE";
   3.185 +2147557636 = "CSSMERR_TP_INVALID_CERTGROUP";
   3.186 +2147557637 = "CSSMERR_TP_INVALID_CRLGROUP";
   3.187 +2147557638 = "CSSMERR_TP_INVALID_CRLGROUP_POINTER";
   3.188 +2147557639 = "CSSMERR_TP_AUTHENTICATION_FAILED";
   3.189 +2147557640 = "CSSMERR_TP_CERTGROUP_INCOMPLETE";
   3.190 +2147557641 = "CSSMERR_TP_CERTIFICATE_CANT_OPERATE";
   3.191 +2147557642 = "CSSMERR_TP_CERT_EXPIRED";
   3.192 +2147557643 = "CSSMERR_TP_CERT_NOT_VALID_YET";
   3.193 +2147557644 = "CSSMERR_TP_CERT_REVOKED";
   3.194 +2147557645 = "CSSMERR_TP_CERT_SUSPENDED";
   3.195 +2147557646 = "CSSMERR_TP_INSUFFICIENT_CREDENTIALS";
   3.196 +2147557647 = "CSSMERR_TP_INVALID_ACTION";
   3.197 +2147557648 = "CSSMERR_TP_INVALID_ACTION_DATA";
   3.198 +2147557649 = "CSSMERR_TP_INVALID_NETWORK_ADDR";
   3.199 +2147557650 = "CSSMERR_TP_INVALID_ANCHOR_CERT";
   3.200 +2147557651 = "CSSMERR_TP_INVALID_AUTHORITY";
   3.201 +2147557652 = "CSSMERR_TP_VERIFY_ACTION_FAILED";
   3.202 +2147557653 = "CSSMERR_TP_INVALID_CERTIFICATE";
   3.203 +2147557654 = "CSSMERR_TP_INVALID_CERT_AUTHORITY";
   3.204 +2147557655 = "CSSMERR_TP_INVALID_CRL_AUTHORITY";
   3.205 +2147557656 = "CSSMERR_TP_INVALID_CRL_ENCODING";
   3.206 +2147557657 = "CSSMERR_TP_INVALID_CRL_TYPE";
   3.207 +2147557658 = "CSSMERR_TP_INVALID_CRL";
   3.208 +2147557659 = "CSSMERR_TP_INVALID_FORM_TYPE";
   3.209 +2147557660 = "CSSMERR_TP_INVALID_ID";
   3.210 +2147557661 = "CSSMERR_TP_INVALID_IDENTIFIER";
   3.211 +2147557662 = "CSSMERR_TP_INVALID_INDEX";
   3.212 +2147557663 = "CSSMERR_TP_INVALID_NAME";
   3.213 +2147557664 = "CSSMERR_TP_INVALID_POLICY_IDENTIFIERS";
   3.214 +2147557665 = "CSSMERR_TP_INVALID_TIMESTRING";
   3.215 +2147557666 = "CSSMERR_TP_INVALID_REASON";
   3.216 +2147557667 = "CSSMERR_TP_INVALID_REQUEST_INPUTS";
   3.217 +2147557668 = "CSSMERR_TP_INVALID_RESPONSE_VECTOR";
   3.218 +2147557669 = "CSSMERR_TP_INVALID_SIGNATURE";
   3.219 +2147557670 = "CSSMERR_TP_INVALID_STOP_ON_POLICY";
   3.220 +2147557671 = "CSSMERR_TP_INVALID_CALLBACK";
   3.221 +2147557672 = "CSSMERR_TP_INVALID_TUPLE";
   3.222 +2147557673 = "CSSMERR_TP_NOT_SIGNER";
   3.223 +2147557674 = "CSSMERR_TP_NOT_TRUSTED";
   3.224 +2147557675 = "CSSMERR_TP_NO_DEFAULT_AUTHORITY";
   3.225 +2147557676 = "CSSMERR_TP_REJECTED_FORM";
   3.226 +2147557677 = "CSSMERR_TP_REQUEST_LOST";
   3.227 +2147557678 = "CSSMERR_TP_REQUEST_REJECTED";
   3.228 +2147557679 = "CSSMERR_TP_UNSUPPORTED_ADDR_TYPE";
   3.229 +2147557680 = "CSSMERR_TP_UNSUPPORTED_SERVICE";
   3.230 +2147557681 = "CSSMERR_TP_INVALID_TUPLEGROUP_POINTER";
   3.231 +2147557682 = "CSSMERR_TP_INVALID_TUPLEGROUP";
   3.232 +
   3.233 +2147561473 = "CSSMERR_AC_INTERNAL_ERROR";
   3.234 +2147561474 = "CSSMERR_AC_MEMORY_ERROR";
   3.235 +2147561475 = "CSSMERR_AC_MDS_ERROR";
   3.236 +2147561476 = "CSSMERR_AC_INVALID_POINTER";
   3.237 +2147561477 = "CSSMERR_AC_INVALID_INPUT_POINTER";
   3.238 +2147561478 = "CSSMERR_AC_INVALID_OUTPUT_POINTER";
   3.239 +2147561479 = "CSSMERR_AC_FUNCTION_NOT_IMPLEMENTED";
   3.240 +2147561480 = "CSSMERR_AC_SELF_CHECK_FAILED";
   3.241 +2147561481 = "CSSMERR_AC_OS_ACCESS_DENIED";
   3.242 +2147561482 = "CSSMERR_AC_FUNCTION_FAILED";
   3.243 +
   3.244 +2147561536 = "CSSMERR_AC_INVALID_CONTEXT_HANDLE";
   3.245 +2147561542 = "CSSMERR_AC_INVALID_DATA";
   3.246 +2147561546 = "CSSMERR_AC_INVALID_DB_HANDLE";
   3.247 +2147561548 = "CSSMERR_AC_INVALID_DB_LIST";
   3.248 +2147561549 = "CSSMERR_AC_INVALID_DB_LIST_POINTER";
   3.249 +2147561553 = "CSSMERR_AC_INVALID_DL_HANDLE";
   3.250 +2147561554 = "CSSMERR_AC_INVALID_CL_HANDLE";
   3.251 +2147561555 = "CSSMERR_AC_INVALID_TP_HANDLE";
   3.252 +2147561558 = "CSSMERR_AC_INVALID_PASSTHROUGH_ID";
   3.253 +
   3.254 +2147561728 = "CSSM_AC_BASE_AC_ERROR";
   3.255 +2147561729 = "CSSMERR_AC_INVALID_BASE_ACLS";
   3.256 +2147561730 = "CSSMERR_AC_INVALID_TUPLE_CREDENTIALS";
   3.257 +2147561731 = "CSSMERR_AC_INVALID_ENCODING";
   3.258 +2147561732 = "CSSMERR_AC_INVALID_VALIDITY_PERIOD";
   3.259 +2147561733 = "CSSMERR_AC_INVALID_REQUESTOR";
   3.260 +2147561734 = "CSSMERR_AC_INVALID_REQUEST_DESCRIPTOR";
   3.261 +
   3.262 +2147555329 = "CSSMERR_CL_INTERNAL_ERROR";
   3.263 +2147555330 = "CSSMERR_CL_MEMORY_ERROR";
   3.264 +2147555331 = "CSSMERR_CL_MDS_ERROR";
   3.265 +2147555332 = "CSSMERR_CL_INVALID_POINTER";
   3.266 +2147555333 = "CSSMERR_CL_INVALID_INPUT_POINTER";
   3.267 +2147555334 = "CSSMERR_CL_INVALID_OUTPUT_POINTER";
   3.268 +2147555335 = "CSSMERR_CL_FUNCTION_NOT_IMPLEMENTED";
   3.269 +2147555336 = "CSSMERR_CL_SELF_CHECK_FAILED";
   3.270 +2147555337 = "CSSMERR_CL_OS_ACCESS_DENIED";
   3.271 +2147555338 = "CSSMERR_CL_FUNCTION_FAILED";
   3.272 +
   3.273 +2147555392 = "CSSMERR_CL_INVALID_CONTEXT_HANDLE";
   3.274 +2147555394 = "CSSMERR_CL_INVALID_CERTGROUP_POINTER";
   3.275 +2147555395 = "CSSMERR_CL_INVALID_CERT_POINTER";
   3.276 +2147555396 = "CSSMERR_CL_INVALID_CRL_POINTER";
   3.277 +2147555397 = "CSSMERR_CL_INVALID_FIELD_POINTER";
   3.278 +2147555398 = "CSSMERR_CL_INVALID_DATA";
   3.279 +2147555399 = "CSSMERR_CL_CRL_ALREADY_SIGNED";
   3.280 +2147555400 = "CSSMERR_CL_INVALID_NUMBER_OF_FIELDS";
   3.281 +2147555401 = "CSSMERR_CL_VERIFICATION_FAILURE";
   3.282 +2147555406 = "CSSMERR_CL_UNKNOWN_FORMAT";
   3.283 +2147555407 = "CSSMERR_CL_UNKNOWN_TAG";
   3.284 +2147555414 = "CSSMERR_CL_INVALID_PASSTHROUGH_ID";
   3.285 +
   3.286 +2147555584 = "CSSM_CL_BASE_CL_ERROR";
   3.287 +2147555585 = "CSSMERR_CL_INVALID_BUNDLE_POINTER";
   3.288 +2147555586 = "CSSMERR_CL_INVALID_CACHE_HANDLE";
   3.289 +2147555587 = "CSSMERR_CL_INVALID_RESULTS_HANDLE";
   3.290 +2147555588 = "CSSMERR_CL_INVALID_BUNDLE_INFO";
   3.291 +2147555589 = "CSSMERR_CL_INVALID_CRL_INDEX";
   3.292 +2147555590 = "CSSMERR_CL_INVALID_SCOPE";
   3.293 +2147555591 = "CSSMERR_CL_NO_FIELD_VALUES";
   3.294 +2147555592 = "CSSMERR_CL_SCOPE_NOT_SUPPORTED";
   3.295 +
   3.296 +2147553281 = "CSSMERR_DL_INTERNAL_ERROR";
   3.297 +2147553282 = "CSSMERR_DL_MEMORY_ERROR";
   3.298 +2147553283 = "CSSMERR_DL_MDS_ERROR";
   3.299 +2147553284 = "CSSMERR_DL_INVALID_POINTER";
   3.300 +2147553285 = "CSSMERR_DL_INVALID_INPUT_POINTER";
   3.301 +2147553286 = "CSSMERR_DL_INVALID_OUTPUT_POINTER";
   3.302 +2147553287 = "CSSMERR_DL_FUNCTION_NOT_IMPLEMENTED";
   3.303 +2147553288 = "CSSMERR_DL_SELF_CHECK_FAILED";
   3.304 +2147553289 = "CSSMERR_DL_OS_ACCESS_DENIED";
   3.305 +2147553290 = "CSSMERR_DL_FUNCTION_FAILED";
   3.306 +2147553360 = "CSSMERR_DL_INVALID_CSP_HANDLE";
   3.307 +2147553361 = "CSSMERR_DL_INVALID_DL_HANDLE";
   3.308 +2147553362 = "CSSMERR_DL_INVALID_CL_HANDLE";
   3.309 +2147553357 = "CSSMERR_DL_INVALID_DB_LIST_POINTER";
   3.310 +
   3.311 +2147553312 = "CSSMERR_DL_OPERATION_AUTH_DENIED";
   3.312 +2147553313 = "CSSMERR_DL_OBJECT_USE_AUTH_DENIED";
   3.313 +2147553314 = "CSSMERR_DL_OBJECT_MANIP_AUTH_DENIED";
   3.314 +2147553315 = "CSSMERR_DL_OBJECT_ACL_NOT_SUPPORTED";
   3.315 +2147553316 = "CSSMERR_DL_OBJECT_ACL_REQUIRED";
   3.316 +2147553317 = "CSSMERR_DL_INVALID_ACCESS_CREDENTIALS";
   3.317 +2147553318 = "CSSMERR_DL_INVALID_ACL_BASE_CERTS";
   3.318 +2147553319 = "CSSMERR_DL_ACL_BASE_CERTS_NOT_SUPPORTED";
   3.319 +2147553320 = "CSSMERR_DL_INVALID_SAMPLE_VALUE";
   3.320 +2147553321 = "CSSMERR_DL_SAMPLE_VALUE_NOT_SUPPORTED";
   3.321 +2147553322 = "CSSMERR_DL_INVALID_ACL_SUBJECT_VALUE";
   3.322 +2147553323 = "CSSMERR_DL_ACL_SUBJECT_TYPE_NOT_SUPPORTED";
   3.323 +2147553324 = "CSSMERR_DL_INVALID_ACL_CHALLENGE_CALLBACK";
   3.324 +2147553325 = "CSSMERR_DL_ACL_CHALLENGE_CALLBACK_FAILED";
   3.325 +2147553326 = "CSSMERR_DL_INVALID_ACL_ENTRY_TAG";
   3.326 +2147553327 = "CSSMERR_DL_ACL_ENTRY_TAG_NOT_FOUND";
   3.327 +2147553328 = "CSSMERR_DL_INVALID_ACL_EDIT_MODE";
   3.328 +2147553329 = "CSSMERR_DL_ACL_CHANGE_FAILED";
   3.329 +2147553330 = "CSSMERR_DL_INVALID_NEW_ACL_ENTRY";
   3.330 +2147553331 = "CSSMERR_DL_INVALID_NEW_ACL_OWNER";
   3.331 +2147553332 = "CSSMERR_DL_ACL_DELETE_FAILED";
   3.332 +2147553333 = "CSSMERR_DL_ACL_REPLACE_FAILED";
   3.333 +2147553334 = "CSSMERR_DL_ACL_ADD_FAILED";
   3.334 +
   3.335 +2147553352 = "CSSMERR_DL_INVALID_DB_HANDLE";
   3.336 +2147553366 = "CSSMERR_DL_INVALID_PASSTHROUGH_ID";
   3.337 +2147553367 = "CSSMERR_DL_INVALID_NETWORK_ADDR";
   3.338 +
   3.339 +2147553536 = "CSSM_DL_BASE_DL_ERROR";
   3.340 +2147553537 = "CSSMERR_DL_DATABASE_CORRUPT";
   3.341 +2147553544 = "CSSMERR_DL_INVALID_RECORD_INDEX";
   3.342 +2147553545 = "CSSMERR_DL_INVALID_RECORDTYPE";
   3.343 +2147553546 = "CSSMERR_DL_INVALID_FIELD_NAME";
   3.344 +2147553547 = "CSSMERR_DL_UNSUPPORTED_FIELD_FORMAT";
   3.345 +2147553548 = "CSSMERR_DL_UNSUPPORTED_INDEX_INFO";
   3.346 +2147553549 = "CSSMERR_DL_UNSUPPORTED_LOCALITY";
   3.347 +2147553550 = "CSSMERR_DL_UNSUPPORTED_NUM_ATTRIBUTES";
   3.348 +2147553551 = "CSSMERR_DL_UNSUPPORTED_NUM_INDEXES";
   3.349 +2147553552 = "CSSMERR_DL_UNSUPPORTED_NUM_RECORDTYPES";
   3.350 +2147553553 = "CSSMERR_DL_UNSUPPORTED_RECORDTYPE";
   3.351 +2147553554 = "CSSMERR_DL_FIELD_SPECIFIED_MULTIPLE";
   3.352 +2147553555 = "CSSMERR_DL_INCOMPATIBLE_FIELD_FORMAT";
   3.353 +2147553556 = "CSSMERR_DL_INVALID_PARSING_MODULE";
   3.354 +
   3.355 +2147553558 = "CSSMERR_DL_INVALID_DB_NAME";
   3.356 +2147553559 = "CSSMERR_DL_DATASTORE_DOESNOT_EXIST";
   3.357 +2147553560 = "CSSMERR_DL_DATASTORE_ALREADY_EXISTS";
   3.358 +2147553561 = "CSSMERR_DL_DB_LOCKED";
   3.359 +2147553562 = "CSSMERR_DL_DATASTORE_IS_OPEN";
   3.360 +2147553563 = "CSSMERR_DL_RECORD_NOT_FOUND";
   3.361 +2147553564 = "CSSMERR_DL_MISSING_VALUE";
   3.362 +2147553565 = "CSSMERR_DL_UNSUPPORTED_QUERY";
   3.363 +2147553566 = "CSSMERR_DL_UNSUPPORTED_QUERY_LIMITS";
   3.364 +2147553567 = "CSSMERR_DL_UNSUPPORTED_NUM_SELECTION_PREDS";
   3.365 +
   3.366 +2147553569 = "CSSMERR_DL_UNSUPPORTED_OPERATOR";
   3.367 +2147553570 = "CSSMERR_DL_INVALID_RESULTS_HANDLE";
   3.368 +2147553571 = "CSSMERR_DL_INVALID_DB_LOCATION";
   3.369 +2147553572 = "CSSMERR_DL_INVALID_ACCESS_REQUEST";
   3.370 +2147553573 = "CSSMERR_DL_INVALID_INDEX_INFO";
   3.371 +2147553574 = "CSSMERR_DL_INVALID_SELECTION_TAG";
   3.372 +2147553575 = "CSSMERR_DL_INVALID_NEW_OWNER";
   3.373 +2147553576 = "CSSMERR_DL_INVALID_RECORD_UID";
   3.374 +2147553577 = "CSSMERR_DL_INVALID_UNIQUE_INDEX_DATA";
   3.375 +2147553578 = "CSSMERR_DL_INVALID_MODIFY_MODE";
   3.376 +2147553579 = "CSSMERR_DL_INVALID_OPEN_PARAMETERS";
   3.377 +2147553580 = "CSSMERR_DL_RECORD_MODIFIED";
   3.378 +2147553581 = "CSSMERR_DL_ENDOFDATA";
   3.379 +2147553582 = "CSSMERR_DL_INVALID_QUERY";
   3.380 +2147553583 = "CSSMERR_DL_INVALID_VALUE";
   3.381 +2147553584 = "CSSMERR_DL_MULTIPLE_VALUES_UNSUPPORTED";
   3.382 +2147553585 = "CSSMERR_DL_STALE_UNIQUE_RECORD";
   3.383 +
   3.384 +2147551233 = "CSSMERR_CSP_INTERNAL_ERROR";
   3.385 +2147551234 = "CSSMERR_CSP_MEMORY_ERROR";
   3.386 +2147551235 = "CSSMERR_CSP_MDS_ERROR";
   3.387 +2147551236 = "CSSMERR_CSP_INVALID_POINTER";
   3.388 +2147551237 = "CSSMERR_CSP_INVALID_INPUT_POINTER";
   3.389 +2147551238 = "CSSMERR_CSP_INVALID_OUTPUT_POINTER";
   3.390 +2147551239 = "CSSMERR_CSP_FUNCTION_NOT_IMPLEMENTED";
   3.391 +2147551240 = "CSSMERR_CSP_SELF_CHECK_FAILED";
   3.392 +2147551241 = "CSSMERR_CSP_OS_ACCESS_DENIED";
   3.393 +2147551242 = "CSSMERR_CSP_FUNCTION_FAILED";
   3.394 +
   3.395 +2147551264 = "CSSMERR_CSP_OPERATION_AUTH_DENIED";
   3.396 +2147551265 = "CSSMERR_CSP_OBJECT_USE_AUTH_DENIED";
   3.397 +2147551266 = "CSSMERR_CSP_OBJECT_MANIP_AUTH_DENIED";
   3.398 +2147551267 = "CSSMERR_CSP_OBJECT_ACL_NOT_SUPPORTED";
   3.399 +2147551268 = "CSSMERR_CSP_OBJECT_ACL_REQUIRED";
   3.400 +2147551269 = "CSSMERR_CSP_INVALID_ACCESS_CREDENTIALS";
   3.401 +2147551270 = "CSSMERR_CSP_INVALID_ACL_BASE_CERTS";
   3.402 +2147551271 = "CSSMERR_CSP_ACL_BASE_CERTS_NOT_SUPPORTED";
   3.403 +2147551272 = "CSSMERR_CSP_INVALID_SAMPLE_VALUE";
   3.404 +2147551273 = "CSSMERR_CSP_SAMPLE_VALUE_NOT_SUPPORTED";
   3.405 +2147551274 = "CSSMERR_CSP_INVALID_ACL_SUBJECT_VALUE";
   3.406 +2147551275 = "CSSMERR_CSP_ACL_SUBJECT_TYPE_NOT_SUPPORTED";
   3.407 +2147551276 = "CSSMERR_CSP_INVALID_ACL_CHALLENGE_CALLBACK";
   3.408 +2147551277 = "CSSMERR_CSP_ACL_CHALLENGE_CALLBACK_FAILED";
   3.409 +2147551278 = "CSSMERR_CSP_INVALID_ACL_ENTRY_TAG";
   3.410 +2147551279 = "CSSMERR_CSP_ACL_ENTRY_TAG_NOT_FOUND";
   3.411 +2147551280 = "CSSMERR_CSP_INVALID_ACL_EDIT_MODE";
   3.412 +2147551281 = "CSSMERR_CSP_ACL_CHANGE_FAILED";
   3.413 +2147551282 = "CSSMERR_CSP_INVALID_NEW_ACL_ENTRY";
   3.414 +2147551283 = "CSSMERR_CSP_INVALID_NEW_ACL_OWNER";
   3.415 +2147551284 = "CSSMERR_CSP_ACL_DELETE_FAILED";
   3.416 +2147551285 = "CSSMERR_CSP_ACL_REPLACE_FAILED";
   3.417 +2147551286 = "CSSMERR_CSP_ACL_ADD_FAILED";
   3.418 +
   3.419 +2147551296 = "CSSMERR_CSP_INVALID_CONTEXT_HANDLE";
   3.420 +2147551307 = "CSSMERR_CSP_PRIVILEGE_NOT_GRANTED";
   3.421 +2147551302 = "CSSMERR_CSP_INVALID_DATA";
   3.422 +2147551318 = "CSSMERR_CSP_INVALID_PASSTHROUGH_ID";
   3.423 +2147551320 = "CSSMERR_CSP_INVALID_CRYPTO_DATA";
   3.424 +
   3.425 +2147551488 = "CSSM_CSP_BASE_CSP_ERROR";
   3.426 +2147551489 = "CSSMERR_CSP_INPUT_LENGTH_ERROR";
   3.427 +2147551490 = "CSSMERR_CSP_OUTPUT_LENGTH_ERROR";
   3.428 +2147551491 = "CSSMERR_CSP_PRIVILEGE_NOT_SUPPORTED";
   3.429 +2147551492 = "CSSMERR_CSP_DEVICE_ERROR";
   3.430 +2147551493 = "CSSMERR_CSP_DEVICE_MEMORY_ERROR";
   3.431 +2147551494 = "CSSMERR_CSP_ATTACH_HANDLE_BUSY";
   3.432 +2147551495 = "CSSMERR_CSP_NOT_LOGGED_IN";
   3.433 +
   3.434 +2147551506 = "CSSMERR_CSP_INVALID_KEY";
   3.435 +2147551507 = "CSSMERR_CSP_INVALID_KEY_REFERENCE";
   3.436 +2147551508 = "CSSMERR_CSP_INVALID_KEY_CLASS";
   3.437 +2147551509 = "CSSMERR_CSP_ALGID_MISMATCH";
   3.438 +2147551510 = "CSSMERR_CSP_KEY_USAGE_INCORRECT";
   3.439 +2147551511 = "CSSMERR_CSP_KEY_BLOB_TYPE_INCORRECT";
   3.440 +2147551512 = "CSSMERR_CSP_KEY_HEADER_INCONSISTENT";
   3.441 +2147551513 = "CSSMERR_CSP_UNSUPPORTED_KEY_FORMAT";
   3.442 +2147551514 = "CSSMERR_CSP_UNSUPPORTED_KEY_SIZE";
   3.443 +2147551515 = "CSSMERR_CSP_INVALID_KEY_POINTER";
   3.444 +2147551516 = "CSSMERR_CSP_INVALID_KEYUSAGE_MASK";
   3.445 +2147551517 = "CSSMERR_CSP_UNSUPPORTED_KEYUSAGE_MASK";
   3.446 +2147551518 = "CSSMERR_CSP_INVALID_KEYATTR_MASK";
   3.447 +2147551519 = "CSSMERR_CSP_UNSUPPORTED_KEYATTR_MASK";
   3.448 +2147551520 = "CSSMERR_CSP_INVALID_KEY_LABEL";
   3.449 +2147551521 = "CSSMERR_CSP_UNSUPPORTED_KEY_LABEL";
   3.450 +2147551522 = "CSSMERR_CSP_INVALID_KEY_FORMAT";
   3.451 +
   3.452 +2147551528 = "CSSMERR_CSP_INVALID_DATA_COUNT";
   3.453 +2147551529 = "CSSMERR_CSP_VECTOR_OF_BUFS_UNSUPPORTED";
   3.454 +2147551530 = "CSSMERR_CSP_INVALID_INPUT_VECTOR";
   3.455 +2147551531 = "CSSMERR_CSP_INVALID_OUTPUT_VECTOR";
   3.456 +
   3.457 +2147551536 = "CSSMERR_CSP_INVALID_CONTEXT";
   3.458 +2147551537 = "CSSMERR_CSP_INVALID_ALGORITHM";
   3.459 +2147551542 = "CSSMERR_CSP_INVALID_ATTR_KEY";
   3.460 +2147551543 = "CSSMERR_CSP_MISSING_ATTR_KEY";
   3.461 +2147551544 = "CSSMERR_CSP_INVALID_ATTR_INIT_VECTOR";
   3.462 +2147551545 = "CSSMERR_CSP_MISSING_ATTR_INIT_VECTOR";
   3.463 +2147551546 = "CSSMERR_CSP_INVALID_ATTR_SALT";
   3.464 +2147551547 = "CSSMERR_CSP_MISSING_ATTR_SALT";
   3.465 +2147551548 = "CSSMERR_CSP_INVALID_ATTR_PADDING";
   3.466 +2147551549 = "CSSMERR_CSP_MISSING_ATTR_PADDING";
   3.467 +2147551550 = "CSSMERR_CSP_INVALID_ATTR_RANDOM";
   3.468 +2147551551 = "CSSMERR_CSP_MISSING_ATTR_RANDOM";
   3.469 +2147551552 = "CSSMERR_CSP_INVALID_ATTR_SEED";
   3.470 +2147551553 = "CSSMERR_CSP_MISSING_ATTR_SEED";
   3.471 +2147551554 = "CSSMERR_CSP_INVALID_ATTR_PASSPHRASE";
   3.472 +2147551555 = "CSSMERR_CSP_MISSING_ATTR_PASSPHRASE";
   3.473 +2147551556 = "CSSMERR_CSP_INVALID_ATTR_KEY_LENGTH";
   3.474 +2147551557 = "CSSMERR_CSP_MISSING_ATTR_KEY_LENGTH";
   3.475 +2147551558 = "CSSMERR_CSP_INVALID_ATTR_BLOCK_SIZE";
   3.476 +2147551559 = "CSSMERR_CSP_MISSING_ATTR_BLOCK_SIZE";
   3.477 +2147551560 = "CSSMERR_CSP_STAGED_OPERATION_IN_PROGRESS";
   3.478 +2147551561 = "CSSMERR_CSP_STAGED_OPERATION_NOT_STARTED";
   3.479 +2147551562 = "CSSMERR_CSP_VERIFY_FAILED";
   3.480 +2147551563 = "CSSMERR_CSP_INVALID_SIGNATURE";
   3.481 +2147551564 = "CSSMERR_CSP_QUERY_SIZE_UNKNOWN";
   3.482 +2147551565 = "CSSMERR_CSP_BLOCK_SIZE_MISMATCH";
   3.483 +2147551566 = "CSSMERR_CSP_PRIVATE_KEY_NOT_FOUND";
   3.484 +2147551567 = "CSSMERR_CSP_PUBLIC_KEY_INCONSISTENT";
   3.485 +2147551568 = "CSSMERR_CSP_DEVICE_VERIFY_FAILED";
   3.486 +2147551569 = "CSSMERR_CSP_INVALID_LOGIN_NAME";
   3.487 +2147551570 = "CSSMERR_CSP_ALREADY_LOGGED_IN";
   3.488 +2147551571 = "CSSMERR_CSP_PRIVATE_KEY_ALREADY_EXISTS";
   3.489 +2147551572 = "CSSMERR_CSP_KEY_LABEL_ALREADY_EXISTS";
   3.490 +2147551573 = "CSSMERR_CSP_INVALID_DIGEST_ALGORITHM";
   3.491 +2147551574 = "CSSMERR_CSP_CRYPTO_DATA_CALLBACK_FAILED";
   3.492 +
   3.493 +2147551588 = "CSSMERR_CSP_INVALID_ATTR_OUTPUT_SIZE";
   3.494 +2147551589 = "CSSMERR_CSP_MISSING_ATTR_OUTPUT_SIZE";
   3.495 +2147551590 = "CSSMERR_CSP_INVALID_ATTR_ROUNDS";
   3.496 +2147551591 = "CSSMERR_CSP_MISSING_ATTR_ROUNDS";
   3.497 +2147551592 = "CSSMERR_CSP_INVALID_ATTR_ALG_PARAMS";
   3.498 +2147551593 = "CSSMERR_CSP_MISSING_ATTR_ALG_PARAMS";
   3.499 +2147551594 = "CSSMERR_CSP_INVALID_ATTR_LABEL";
   3.500 +2147551595 = "CSSMERR_CSP_MISSING_ATTR_LABEL";
   3.501 +2147551596 = "CSSMERR_CSP_INVALID_ATTR_KEY_TYPE";
   3.502 +2147551597 = "CSSMERR_CSP_MISSING_ATTR_KEY_TYPE";
   3.503 +2147551598 = "CSSMERR_CSP_INVALID_ATTR_MODE";
   3.504 +2147551599 = "CSSMERR_CSP_MISSING_ATTR_MODE";
   3.505 +2147551600 = "CSSMERR_CSP_INVALID_ATTR_EFFECTIVE_BITS";
   3.506 +2147551601 = "CSSMERR_CSP_MISSING_ATTR_EFFECTIVE_BITS";
   3.507 +2147551602 = "CSSMERR_CSP_INVALID_ATTR_START_DATE";
   3.508 +2147551603 = "CSSMERR_CSP_MISSING_ATTR_START_DATE";
   3.509 +2147551604 = "CSSMERR_CSP_INVALID_ATTR_END_DATE";
   3.510 +2147551605 = "CSSMERR_CSP_MISSING_ATTR_END_DATE";
   3.511 +2147551606 = "CSSMERR_CSP_INVALID_ATTR_VERSION";
   3.512 +2147551607 = "CSSMERR_CSP_MISSING_ATTR_VERSION";
   3.513 +2147551608 = "CSSMERR_CSP_INVALID_ATTR_PRIME";
   3.514 +2147551609 = "CSSMERR_CSP_MISSING_ATTR_PRIME";
   3.515 +2147551610 = "CSSMERR_CSP_INVALID_ATTR_BASE";
   3.516 +2147551611 = "CSSMERR_CSP_MISSING_ATTR_BASE";
   3.517 +2147551612 = "CSSMERR_CSP_INVALID_ATTR_SUBPRIME";
   3.518 +2147551613 = "CSSMERR_CSP_MISSING_ATTR_SUBPRIME";
   3.519 +2147551614 = "CSSMERR_CSP_INVALID_ATTR_ITERATION_COUNT";
   3.520 +2147551615 = "CSSMERR_CSP_MISSING_ATTR_ITERATION_COUNT";
   3.521 +2147551616 = "CSSMERR_CSP_INVALID_ATTR_DL_DB_HANDLE";
   3.522 +2147551617 = "CSSMERR_CSP_MISSING_ATTR_DL_DB_HANDLE";
   3.523 +2147551618 = "CSSMERR_CSP_INVALID_ATTR_ACCESS_CREDENTIALS";
   3.524 +2147551619 = "CSSMERR_CSP_MISSING_ATTR_ACCESS_CREDENTIALS";
   3.525 +2147551620 = "CSSMERR_CSP_INVALID_ATTR_PUBLIC_KEY_FORMAT";
   3.526 +2147551621 = "CSSMERR_CSP_MISSING_ATTR_PUBLIC_KEY_FORMAT";
   3.527 +2147551622 = "CSSMERR_CSP_INVALID_ATTR_PRIVATE_KEY_FORMAT";
   3.528 +2147551623 = "CSSMERR_CSP_MISSING_ATTR_PRIVATE_KEY_FORMAT";
   3.529 +2147551624 = "CSSMERR_CSP_INVALID_ATTR_SYMMETRIC_KEY_FORMAT";
   3.530 +2147551625 = "CSSMERR_CSP_MISSING_ATTR_SYMMETRIC_KEY_FORMAT";
   3.531 +2147551626 = "CSSMERR_CSP_INVALID_ATTR_WRAPPED_KEY_FORMAT";
   3.532 +2147551627 = "CSSMERR_CSP_MISSING_ATTR_WRAPPED_KEY_FORMAT";
   3.533 +
   3.534 +/* Apple's error codes, defined in cssmapple.h. */
   3.535 +
   3.536 +224 = "CSSM_ERRCODE_NO_USER_INTERACTION";
   3.537 +225 = "CSSM_ERRCODE_USER_CANCELED";
   3.538 +226 = "CSSM_ERRCODE_SERVICE_NOT_AVAILABLE";
   3.539 +227 = "CSSM_ERRCODE_INSUFFICIENT_CLIENT_IDENTIFICATION";
   3.540 +228 = "CSSM_ERRCODE_DEVICE_RESET";
   3.541 +229 = "CSSM_ERRCODE_DEVICE_FAILED";
   3.542 +
   3.543 +2147549408 = "CSSMERR_CSSM_NO_USER_INTERACTION";
   3.544 +2147549409 = "CSSMERR_CSSM_USER_CANCELED";
   3.545 +2147549410 = "CSSMERR_CSSM_SERVICE_NOT_AVAILABLE";
   3.546 +2147549411 = "CSSMERR_CSSM_INSUFFICIENT_CLIENT_IDENTIFICATION";
   3.547 +2147549412 = "CSSMERR_CSSM_DEVICE_RESET";
   3.548 +2147549413 = "CSSMERR_CSSM_DEVICE_FAILED";
   3.549 +
   3.550 +2147561696 = "CSSMERR_AC_NO_USER_INTERACTION";
   3.551 +2147561697 = "CSSMERR_AC_USER_CANCELED";
   3.552 +2147561698 = "CSSMERR_AC_SERVICE_NOT_AVAILABLE";
   3.553 +2147561699 = "CSSMERR_AC_INSUFFICIENT_CLIENT_IDENTIFICATION";
   3.554 +2147561700 = "CSSMERR_AC_DEVICE_RESET";
   3.555 +2147561701 = "CSSMERR_AC_DEVICE_FAILED";
   3.556 +
   3.557 +2147551456 = "CSSMERR_CSP_NO_USER_INTERACTION";
   3.558 +2147551457 = "CSSMERR_CSP_USER_CANCELED";
   3.559 +2147551458 = "CSSMERR_CSP_SERVICE_NOT_AVAILABLE";
   3.560 +2147551459 = "CSSMERR_CSP_INSUFFICIENT_CLIENT_IDENTIFICATION";
   3.561 +2147551460 = "CSSMERR_CSP_DEVICE_RESET";
   3.562 +2147551461 = "CSSMERR_CSP_DEVICE_FAILED";
   3.563 +
   3.564 +2147555552 = "CSSMERR_CL_NO_USER_INTERACTION";
   3.565 +2147555553 = "CSSMERR_CL_USER_CANCELED";
   3.566 +2147555554 = "CSSMERR_CL_SERVICE_NOT_AVAILABLE";
   3.567 +2147555555 = "CSSMERR_CL_INSUFFICIENT_CLIENT_IDENTIFICATION";
   3.568 +2147555556 = "CSSMERR_CL_DEVICE_RESET";
   3.569 +2147555557 = "CSSMERR_CL_DEVICE_FAILED";
   3.570 +
   3.571 +2147553504 = "CSSMERR_DL_NO_USER_INTERACTION";
   3.572 +2147553505 = "CSSMERR_DL_USER_CANCELED";
   3.573 +2147553506 = "CSSMERR_DL_SERVICE_NOT_AVAILABLE";
   3.574 +2147553507 = "CSSMERR_DL_INSUFFICIENT_CLIENT_IDENTIFICATION";
   3.575 +2147553508 = "CSSMERR_DL_DEVICE_RESET";
   3.576 +2147553509 = "CSSMERR_DL_DEVICE_FAILED";
   3.577 +
   3.578 +2147557600 = "CSSMERR_TP_NO_USER_INTERACTION";
   3.579 +2147557601 = "CSSMERR_TP_USER_CANCELED";
   3.580 +2147557602 = "CSSMERR_TP_SERVICE_NOT_AVAILABLE";
   3.581 +2147557603 = "CSSMERR_TP_INSUFFICIENT_CLIENT_IDENTIFICATION";
   3.582 +2147557604 = "CSSMERR_TP_DEVICE_RESET";
   3.583 +2147557605 = "CSSMERR_TP_DEVICE_FAILED";
   3.584 +
   3.585 +/* Apple's private CSP errors, defined in cssmapple.h. */
   3.586 +
   3.587 +2147552256 = "CSSMERR_CSP_APPLE_ADD_APPLICATION_ACL_SUBJECT";
   3.588 +2147552257 = "CSSMERR_CSP_APPLE_PUBLIC_KEY_INCOMPLETE";
   3.589 +2147552258 = "CSSMERR_CSP_APPLE_SIGNATURE_MISMATCH";
   3.590 +2147552259 = "CSSMERR_CSP_APPLE_INVALID_KEY_START_DATE";
   3.591 +2147552260 = "CSSMERR_CSP_APPLE_INVALID_KEY_END_DATE";
   3.592 +2147552261 = "CSSMERR_CSPDL_APPLE_DL_CONVERSION_ERROR";
   3.593 +
   3.594 +/* Apple's private DL errors, defined in cssmapple.h. */
   3.595 +
   3.596 +2147554304 = "CSSMERR_APPLEDL_INVALID_OPEN_PARAMETERS";
   3.597 +2147554305 = "CSSMERR_APPLEDL_DISK_FULL";
   3.598 +2147554306 = "CSSMERR_APPLEDL_QUOTA_EXCEEDED";
   3.599 +2147554307 = "CSSMERR_APPLEDL_FILE_TOO_BIG";
   3.600 +2147554308 = "CSSMERR_APPLEDL_INVALID_DATABASE_BLOB";
   3.601 +2147554309 = "CSSMERR_APPLEDL_INVALID_KEY_BLOB";
   3.602 +2147554310 = "CSSMERR_APPLEDL_INCOMPATIBLE_DATABASE_BLOB";
   3.603 +2147554311 = "CSSMERR_APPLEDL_INCOMPATIBLE_KEY_BLOB";
   3.604 +
   3.605 +/* Apple's private X509 TP errors, defined in cssmapple.h. */
   3.606 +
   3.607 +2147558400 = "CSSMERR_APPLETP_HOSTNAME_MISMATCH";
   3.608 +2147558401 = "CSSMERR_APPLETP_UNKNOWN_CRITICAL_EXTEN";
   3.609 +2147558402 = "CSSMERR_APPLETP_NO_BASIC_CONSTRAINTS";
   3.610 +2147558403 = "CSSMERR_APPLETP_INVALID_CA";
   3.611 +2147558404 = "CSSMERR_APPLETP_INVALID_AUTHORITY_ID";
   3.612 +2147558405 = "CSSMERR_APPLETP_INVALID_SUBJECT_ID";
   3.613 +2147558406 = "CSSMERR_APPLETP_INVALID_KEY_USAGE";
   3.614 +2147558407 = "CSSMERR_APPLETP_INVALID_EXTENDED_KEY_USAGE";
   3.615 +2147558408 = "CSSMERR_APPLETP_INVALID_ID_LINKAGE";
   3.616 +2147558409 = "CSSMERR_APPLETP_PATH_LEN_CONSTRAINT";
   3.617 +2147558410 = "CSSMERR_APPLETP_INVALID_ROOT";
   3.618 +2147558411 = "CSSMERR_APPLETP_CRL_EXPIRED";
   3.619 +2147558412 = "CSSMERR_APPLETP_CRL_NOT_VALID_YET";
   3.620 +2147558413 = "CSSMERR_APPLETP_CRL_NOT_FOUND";
   3.621 +2147558414 = "CSSMERR_APPLETP_CRL_SERVER_DOWN";
   3.622 +2147558415 = "CSSMERR_APPLETP_CRL_BAD_URI";
   3.623 +2147558416 = "CSSMERR_APPLETP_UNKNOWN_CERT_EXTEN";
   3.624 +2147558417 = "CSSMERR_APPLETP_UNKNOWN_CRL_EXTEN";
   3.625 +2147558418 = "CSSMERR_APPLETP_CRL_NOT_TRUSTED";
   3.626 +2147558419 = "CSSMERR_APPLETP_CRL_INVALID_ANCHOR_CERT";
   3.627 +2147558420 = "CSSMERR_APPLETP_CRL_POLICY_FAIL";
   3.628 +2147558421 = "CSSMERR_APPLETP_IDP_FAIL";
   3.629 +2147558422 = "CSSMERR_APPLETP_CERT_NOT_FOUND_FROM_ISSUER";
   3.630 +2147558423 = "CSSMERR_APPLETP_BAD_CERT_FROM_ISSUER";
   3.631 +2147558424 = "CSSMERR_APPLETP_SMIME_EMAIL_ADDRS_NOT_FOUND";
   3.632 +2147558425 = "CSSMERR_APPLETP_SMIME_BAD_EXT_KEY_USE";
   3.633 +2147558426 = "CSSMERR_APPLETP_SMIME_BAD_KEY_USE";
   3.634 +2147558427 = "CSSMERR_APPLETP_SMIME_KEYUSAGE_NOT_CRITICAL";
   3.635 +2147558428 = "CSSMERR_APPLETP_SMIME_NO_EMAIL_ADDRS";
   3.636 +2147558429 = "CSSMERR_APPLETP_SMIME_SUBJ_ALT_NAME_NOT_CRIT";
   3.637 +2147558430 = "CSSMERR_APPLETP_SSL_BAD_EXT_KEY_USE";
   3.638 +2147558431 = "CSSMERR_APPLETP_OCSP_BAD_RESPONSE";
   3.639 +2147558432 = "CSSMERR_APPLETP_OCSP_BAD_REQUEST";
   3.640 +2147558433 = "CSSMERR_APPLETP_OCSP_UNAVAILABLE";
   3.641 +2147558434 = "CSSMERR_APPLETP_OCSP_STATUS_UNRECOGNIZED";
   3.642 +2147558435 = "CSSMERR_APPLETP_INCOMPLETE_REVOCATION_CHECK";
   3.643 +2147558436 = "CSSMERR_APPLETP_NETWORK_FAILURE";
   3.644 +2147558437 = "CSSMERR_APPLETP_OCSP_NOT_TRUSTED";
   3.645 +2147558438 = "CSSMERR_APPLETP_OCSP_INVALID_ANCHOR_CERT";
   3.646 +2147558439 = "CSSMERR_APPLETP_OCSP_SIG_ERROR";
   3.647 +2147558440 = "CSSMERR_APPLETP_OCSP_NO_SIGNER";
   3.648 +2147558441 = "CSSMERR_APPLETP_OCSP_RESP_MALFORMED_REQ";
   3.649 +2147558442 = "CSSMERR_APPLETP_OCSP_RESP_INTERNAL_ERR";
   3.650 +2147558443 = "CSSMERR_APPLETP_OCSP_RESP_TRY_LATER";
   3.651 +2147558444 = "CSSMERR_APPLETP_OCSP_RESP_SIG_REQUIRED";
   3.652 +2147558445 = "CSSMERR_APPLETP_OCSP_RESP_UNAUTHORIZED";
   3.653 +2147558446 = "CSSMERR_APPLETP_OCSP_NONCE_MISMATCH";
   3.654 +2147558447 = "CSSMERR_APPLETP_CS_BAD_CERT_CHAIN_LENGTH";
   3.655 +2147558448 = "CSSMERR_APPLETP_CS_NO_BASIC_CONSTRAINTS";
   3.656 +2147558449 = "CSSMERR_APPLETP_CS_BAD_PATH_LENGTH";
   3.657 +2147558450 = "CSSMERR_APPLETP_CS_NO_EXTENDED_KEY_USAGE";
   3.658 +2147558451 = "CSSMERR_APPLETP_CODE_SIGN_DEVELOPMENT";
   3.659 +
   3.660 +/* Apple's private .Mac TP errors, defined in cssmapple.h. */
   3.661 +
   3.662 +2147558500 = "CSSMERR_APPLE_DOTMAC_REQ_QUEUED";
   3.663 +2147558501 = "CSSMERR_APPLE_DOTMAC_REQ_REDIRECT";
   3.664 +2147558502 = "CSSMERR_APPLE_DOTMAC_REQ_SERVER_ERR";
   3.665 +2147558503 = "CSSMERR_APPLE_DOTMAC_REQ_SERVER_PARAM";
   3.666 +2147558504 = "CSSMERR_APPLE_DOTMAC_REQ_SERVER_AUTH";
   3.667 +2147558505 = "CSSMERR_APPLE_DOTMAC_REQ_SERVER_UNIMPL";
   3.668 +2147558506 = "CSSMERR_APPLE_DOTMAC_REQ_SERVER_NOT_AVAIL";
   3.669 +2147558507 = "CSSMERR_APPLE_DOTMAC_REQ_SERVER_ALREADY_EXIST";
   3.670 +2147558508 = "CSSMERR_APPLE_DOTMAC_REQ_SERVER_SERVICE_ERROR";
   3.671 +2147558509 = "CSSMERR_APPLE_DOTMAC_REQ_IS_PENDING";
   3.672 +2147558510 = "CSSMERR_APPLE_DOTMAC_NO_REQ_PENDING";
   3.673 \ No newline at end of file
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/MYUtilities.xcconfig	Sat Apr 04 20:53:53 2009 -0700
     4.3 @@ -0,0 +1,34 @@
     4.4 +//
     4.5 +//  MYUtilities.xcconfig
     4.6 +//  MYUtilities
     4.7 +//
     4.8 +//  Created by Jens Alfke on 6/27/08.
     4.9 +//  Copyright 2008-2009 Jens Alfke. All rights reserved.
    4.10 +//
    4.11 +
    4.12 +
    4.13 +// Precompiled Headers:
    4.14 +GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES
    4.15 +GCC_PRECOMPILE_PREFIX_HEADER = YES
    4.16 +// GCC_PREFIX_HEADER = MYUtilities_Prefix.pch
    4.17 +
    4.18 +// Language:
    4.19 +GCC_C_LANGUAGE_STANDARD = gnu99
    4.20 +OTHER_CFLAGS = -fnested-functions -Wmissing-declarations
    4.21 +OTHER_CPLUSPLUSFLAGS = 
    4.22 +
    4.23 +// Warnings:
    4.24 +GCC_TREAT_WARNINGS_AS_ERRORS = YES
    4.25 +GCC_WARN_ABOUT_RETURN_TYPE = YES
    4.26 +GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES
    4.27 +GCC_WARN_UNUSED_VARIABLE = YES
    4.28 +WARNING_CFLAGS = -Wall -Wformat-security -Wshorten-64-to-32
    4.29 +
    4.30 +// Code generation:
    4.31 +GCC_INLINES_ARE_PRIVATE_EXTERN = YES
    4.32 +GCC_SYMBOLS_PRIVATE_EXTERN = YES
    4.33 +GCC_ENABLE_OBJC_GC = unsupported
    4.34 +GCC_DYNAMIC_NO_PIC = YES
    4.35 +GCC_MODEL_TUNING = G5
    4.36 +PREBINDING = NO
    4.37 +DEBUG_INFORMATION_FORMAT = dwarf
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/MYUtilities_Debug.xcconfig	Sat Apr 04 20:53:53 2009 -0700
     5.3 @@ -0,0 +1,15 @@
     5.4 +//
     5.5 +//  MYUtilities_Debug.xcconfig
     5.6 +//  MYUtilities
     5.7 +//
     5.8 +//  Created by Jens Alfke on 6/27/08.
     5.9 +//  Copyright 2008-2009 Jens Alfke. All rights reserved.
    5.10 +//
    5.11 +
    5.12 +#include "MYUtilities.xcconfig"
    5.13 +
    5.14 +GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1
    5.15 +
    5.16 +GCC_OPTIMIZATION_LEVEL = 0
    5.17 +
    5.18 +COPY_PHASE_STRIP = NO
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/MYUtilities_Release.xcconfig	Sat Apr 04 20:53:53 2009 -0700
     6.3 @@ -0,0 +1,15 @@
     6.4 +//
     6.5 +//  MYUtilities_Release.xcconfig
     6.6 +//  MYUtilities
     6.7 +//
     6.8 +//  Created by Jens Alfke on 6/27/08.
     6.9 +//  Copyright 2008-2009 Jens Alfke. All rights reserved.
    6.10 +//
    6.11 +
    6.12 +#include "MYUtilities.xcconfig"
    6.13 +
    6.14 +DEAD_CODE_STRIPPING = YES
    6.15 +
    6.16 +GCC_WARN_UNINITIALIZED_AUTOS = YES
    6.17 +
    6.18 +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
     7.1 --- a/Test.h	Sat Mar 28 09:39:31 2009 -0700
     7.2 +++ b/Test.h	Sat Apr 04 20:53:53 2009 -0700
     7.3 @@ -82,6 +82,7 @@
     7.4                                      CAssert(_val==_expected, @"Unexpected value for %s: %@ (expected %@)", #VAL,$object(_val),$object(_expected)); \
     7.5                                  }while(0)
     7.6  
     7.7 +#define AssertAbstractMethod()  _AssertAbstractMethodFailed(self,_cmd);
     7.8  
     7.9  // Nasty internals ...
    7.10  #if DEBUG
    7.11 @@ -92,3 +93,4 @@
    7.12  #endif DEBUG
    7.13  void _AssertFailed( id rcvr, const void *selOrFn, const char *sourceFile, int sourceLine,
    7.14                     const char *condString, NSString *message, ... ) __attribute__((noreturn));
    7.15 +void _AssertAbstractMethodFailed( id rcvr, SEL cmd) __attribute__((noreturn));
     8.1 --- a/Test.m	Sat Mar 28 09:39:31 2009 -0700
     8.2 +++ b/Test.m	Sat Apr 04 20:53:53 2009 -0700
     8.3 @@ -21,6 +21,7 @@
     8.4  
     8.5  static void TestCaseExceptionReporter( NSException *x ) {
     8.6      sCurTestCaseExceptions++;
     8.7 +    fflush(stderr);
     8.8      Log(@"XXX FAILED test case -- backtrace:\n%@\n\n", x.my_callStack);
     8.9  }
    8.10  
    8.11 @@ -50,6 +51,7 @@
    8.12              if( [x.name isEqualToString: @"TestCaseSkipped"] )
    8.13                  Log(@"... skipping test %s since %@\n\n", test->name, x.reason);
    8.14              else {
    8.15 +                fflush(stderr);
    8.16                  Log(@"XXX FAILED test case '%s' due to:\nException: %@\n%@\n\n", 
    8.17                        test->name,x,x.my_callStack);
    8.18                  sFailed++;
    8.19 @@ -152,6 +154,15 @@
    8.20  }
    8.21  
    8.22  
    8.23 +void _AssertAbstractMethodFailed( id rcvr, SEL cmd)
    8.24 +{
    8.25 +    [NSException raise: NSInternalInconsistencyException 
    8.26 +                format: @"Class %@ forgot to implement abstract method %@",
    8.27 +                         [rcvr class], NSStringFromSelector(cmd)];
    8.28 +    abort(); // unreachable, but appeases compiler
    8.29 +}
    8.30 +
    8.31 +
    8.32  /*
    8.33   Copyright (c) 2008, Jens Alfke <jens@mooseyard.com>. All rights reserved.
    8.34