void odkerb_log_cferror(int priority, char *message, CFErrorRef error) { if (error == NULL) { odkerb_log(priority, message); } else { char buf[256]; CFStringRef errorString = CFErrorCopyFailureReason(error); CFStringGetCString(errorString, buf, sizeof(buf), kCFStringEncodingUTF8); odkerb_log(priority, "%s: %s", message, buf); } }
/* ------------------------------------------------------------------ * print_cf_error () * * print error returned in CFErrorRef */ static void print_cf_error ( CFErrorRef in_cf_err_ref, const char *in_user_name, const char *in_default_str ) { if ( in_cf_err_ref != NULL ) { CFStringRef cf_str_ref = CFErrorCopyFailureReason( in_cf_err_ref ); if ( cf_str_ref != NULL ) { const char *err_str = CFStringGetCStringPtr( cf_str_ref, kCFStringEncodingUTF8 ); if ( err_str != NULL ) { syslog( LOG_ERR, "od: user %s: %s", in_user_name, err_str ); CFRelease(cf_str_ref); return; } CFRelease(cf_str_ref); } } syslog( LOG_ERR, "od: user %s: %s", in_user_name, in_default_str ); } /* print_cf_error */
static CFDataRef digestString(CFStringRef str) { CFDataRef retval = NULL; CFErrorRef error = NULL; CFDataRef inputString = CFStringCreateExternalRepresentation(kCFAllocatorDefault, str, kCFStringEncodingUTF8, 0xff); SecTransformRef digestTrans = SecDigestTransformCreate(kSecDigestSHA2, 256, &error); if(error == NULL) { SecTransformSetAttribute(digestTrans, kSecTransformInputAttributeName, inputString, &error); if(error == NULL) { retval = SecTransformExecute(digestTrans, &error); if(retval == NULL) { secDebug(ASL_LEVEL_ERR, "Couldn't create digest %s\n", CFStringGetCStringPtr(CFErrorCopyFailureReason(error), kCFStringEncodingUTF8)); } } CFRelease(digestTrans); } CFRelease(inputString); return retval; }