1 // 2 // CoreEntitlementsPriv.h 3 // CoreEntitlements 4 // 5 6 #pragma once 7 8 #ifdef __cplusplus 9 extern "C" { 10 #endif 11 12 #include "CoreEntitlements.h" 13 #include "EntitlementsPriv.h" 14 15 #define CE_BRIDGE_STRUCT_VERSION 3 16 #define CCDER_ENTITLEMENTS (CCDER_SEQUENCE | CCDER_CONSTRUCTED | CCDER_APPLICATION) 17 18 /*! 19 * @typedef coreentitlements_t 20 * Wraps up all the CoreEntitlements functions into a nice bundle to be used in the kernel 21 */ 22 typedef struct { 23 uint64_t version; 24 typeof(&CEAcquireUnmanagedContext) AcquireUnmanagedContext; 25 typeof(&CEValidate) Validate; 26 typeof(&CEContextQuery) ContextQuery; 27 typeof(&CEConjureContextFromDER) ConjureContextFromDER; 28 29 typeof(&der_vm_context_create) der_vm_context_create; 30 typeof(&der_vm_execute) der_vm_execute; 31 typeof(&der_vm_iterate) der_vm_iterate; 32 typeof(&der_vm_context_is_valid) der_vm_context_is_valid; 33 typeof(&der_vm_CEType_from_context) der_vm_CEType_from_context; 34 typeof(&der_vm_integer_from_context) der_vm_integer_from_context; 35 typeof(&der_vm_string_from_context) der_vm_string_from_context; 36 typeof(&der_vm_bool_from_context) der_vm_bool_from_context; 37 38 typeof(kCENoError) kNoError; 39 typeof(kCEAPIMisuse) kAPIMisuse; 40 typeof(kCEInvalidArgument) kInvalidArgument; 41 typeof(kCEAllocationFailed) kAllocationFailed; 42 typeof(kCEMalformedEntitlements) kMalformedEntitlements; 43 typeof(kCEQueryCannotBeSatisfied) kQueryCannotBeSatisfied; 44 45 typeof(&CEGetErrorString) GetErrorString; 46 47 typeof(&der_vm_buffer_from_context) der_vm_buffer_from_context; 48 typeof(&CEContextIsSubset) CEContextIsSubset; 49 } coreentitlements_t; 50 51 #ifdef __BLOCKS__ 52 typedef bool (^iteration_trampoline_t)(der_vm_iteration_context ctx); 53 bool der_vm_block_trampoline(der_vm_iteration_context ctx); 54 #endif 55 56 /* 57 These are private for now, they're essentially inverse functions for CESerialize. 58 59 */ 60 CEError_t CESizeDeserialization(CEQueryContext_t ctx, size_t* requiredElements); 61 CEError_t CEDeserialize(CEQueryContext_t ctx, CESerializedElement_t* elements, size_t elementsLength); 62 63 #ifdef __cplusplus 64 } 65 #endif 66