SecLogging.c
1 /* 2 * Copyright (c) 2014 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24 25 #include <Security/SecLogging.h> 26 #include "securityd_client.h" 27 #include "SecuritydXPC.h" 28 #include <os/activity.h> 29 30 static bool dict_to_error_request(enum SecXPCOperation op, CFDictionaryRef query, CFErrorRef *error) 31 { 32 return securityd_send_sync_and_do(op, error, ^bool(xpc_object_t message, CFErrorRef *error) { 33 return SecXPCDictionarySetPList(message, kSecXPCKeyQuery, query, error); 34 }, NULL); 35 } 36 37 static CFDictionaryRef void_to_dict_error_request(enum SecXPCOperation op, CFErrorRef *error) { 38 __block CFDictionaryRef dict = NULL; 39 securityd_send_sync_and_do(op, error, NULL, ^bool(xpc_object_t response, CFErrorRef *error) { 40 return (dict = SecXPCDictionaryCopyPList(response, kSecXPCKeyResult, error)); 41 }); 42 return dict; 43 } 44 45 CFArrayRef SecGetCurrentServerLoggingInfo(CFErrorRef *error) 46 { 47 __block CFArrayRef result; 48 os_activity_initiate("SecGetCurrentServerLoggingInfo", OS_ACTIVITY_FLAG_DEFAULT, ^{ 49 result = SECURITYD_XPC(sec_get_log_settings, void_to_dict_error_request, error); 50 }); 51 return result; 52 } 53 54 bool SecSetLoggingInfoForXPCScope(CFPropertyListRef /* String or Dictionary of strings */ settings, CFErrorRef *error) 55 { 56 __block bool result; 57 os_activity_initiate("SecSetLoggingInfoForXPCScope", OS_ACTIVITY_FLAG_DEFAULT, ^{ 58 result = SECURITYD_XPC(sec_set_xpc_log_settings, dict_to_error_request, settings, error); 59 }); 60 return result; 61 } 62 63 bool SecSetLoggingInfoForCircleScope(CFPropertyListRef /* String or Dictionary of strings */ settings, CFErrorRef *error) 64 { 65 __block bool result; 66 os_activity_initiate("SecSetLoggingInfoForCircleScope", OS_ACTIVITY_FLAG_DEFAULT, ^{ 67 result = SECURITYD_XPC(sec_set_circle_log_settings, dict_to_error_request, settings, error); 68 }); 69 return result; 70 }