示例#1
0
文件: odkerb.c 项目: aosm/ChatServer
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);
    }
}
示例#2
0
/* ------------------------------------------------------------------
 *	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;
}