ios_tapi_hacks.h
1 /* 2 * Copyright (c) 2017 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 #ifndef ios_tapi_hack_h 24 #define ios_tapi_hack_h 25 26 // This file is to work around TAPI's insistence that every exported symbol is in a header file. 27 // The Security project just simply rejects such ideas, so this is the pressure valve: 28 // 29 // One-offs in header files that shouldn't be exported in the real-live iOS Security framework 30 // can be added here, and TAPI will accept them. 31 // 32 // Please don't add anything here. 33 34 #ifndef SECURITY_PROJECT_TAPI_HACKS 35 #error This header is not for inclusion; it's a nasty hack to get the iOS Security framework to build with TAPI. 36 #endif 37 38 #include <sqlite3.h> 39 #include <xpc/xpc.h> 40 41 CFDataRef SecDistinguishedNameCopyNormalizedContent(CFDataRef distinguished_name); 42 CFDataRef _SecItemCreatePersistentRef(CFTypeRef iclass, sqlite_int64 rowid, CFDictionaryRef attributes); 43 CFDictionaryRef SecTokenItemValueCopy(CFDataRef db_value, CFErrorRef *error); 44 CFArrayRef SecItemCopyParentCertificates_ios(CFDataRef normalizedIssuer, CFArrayRef accessGroups, CFErrorRef *error); 45 bool SecItemCertificateExists(CFDataRef normalizedIssuer, CFDataRef serialNumber, CFArrayRef accessGroups, CFErrorRef *error); 46 bool _SecItemParsePersistentRef(CFDataRef persistent_ref, CFStringRef *return_class, 47 sqlite_int64 *return_rowid, CFDictionaryRef *return_token_attrs); 48 49 // SecItemPriv.h 50 extern const CFStringRef kSecUseSystemKeychain; 51 52 // securityd_client.h 53 54 typedef struct SecurityClient { 55 } SecurityClient; 56 57 extern struct securityd *gSecurityd; 58 extern struct trustd *gTrustd; 59 extern SecurityClient * SecSecurityClientGet(void); 60 #pragma clang diagnostic push 61 #pragma clang diagnostic ignored "-Wvisibility" 62 bool securityd_send_sync_and_do(enum SecXPCOperation op, CFErrorRef *error, 63 bool (^add_to_message)(xpc_object_t message, CFErrorRef* error), 64 bool (^handle_response)(xpc_object_t response, CFErrorRef* error)); 65 typedef void (^securityd_handler_t)(xpc_object_t reply, CFErrorRef error); 66 void securityd_send_async_and_do(enum SecXPCOperation op, dispatch_queue_t replyq, 67 bool (^add_to_message)(xpc_object_t message, CFErrorRef* error), 68 securityd_handler_t handler); 69 XPC_RETURNS_RETAINED xpc_object_t securityd_message_with_reply_sync(xpc_object_t message, CFErrorRef *error); 70 XPC_RETURNS_RETAINED xpc_object_t securityd_create_message(enum SecXPCOperation op, CFErrorRef *error); 71 bool securityd_message_no_error(xpc_object_t message, CFErrorRef *error); 72 #pragma clang diagnostic pop 73 74 @interface SecuritydXPCClient : NSObject 75 @end 76 77 void SecAccessGroupsSetCurrent(CFArrayRef accessGroups); 78 CFArrayRef SecAccessGroupsGetCurrent(void); 79 void SecSecurityClientRegularToAppClip(void); 80 void SecSecurityClientAppClipToRegular(void); 81 void SecSecurityClientSetApplicationIdentifier(CFStringRef identifier); 82 83 #include <os/log_private.h> 84 extern os_log_t secLogObjForScope(const char *scope); 85 extern os_log_t secLogObjForCFScope(CFStringRef scope); 86 #if TARGET_OS_IOS 87 void SecSecuritySetMusrMode(bool mode, uid_t uid, int activeUser); 88 void SecSecuritySetPersonaMusr(CFStringRef uuid); 89 #endif // TARGET_OS_IOS 90 91 void SecServerSetTrustdMachServiceName(const char *name); 92 93 #endif /* ios_tapi_hacks_h */ 94