1 | /*! |
2 | * @header |
3 | * Supported coprocessors. |
4 | */ |
5 | #ifndef __IMAGE4_API_COPROCESSOR_H |
6 | #define __IMAGE4_API_COPROCESSOR_H |
7 | |
8 | #include <image4/image4.h> |
9 | #include <image4/types.h> |
10 | |
11 | __BEGIN_DECLS |
12 | OS_ASSUME_NONNULL_BEGIN |
13 | OS_ASSUME_PTR_ABI_SINGLE_BEGIN |
14 | |
15 | /*! |
16 | * @const IMAGE4_COPROCESSOR_HOST |
17 | * The host execution environment. This environment does not support handles. |
18 | */ |
19 | IMAGE4_API_AVAILABLE_SPRING_2024 |
20 | OS_EXPORT |
21 | const image4_coprocessor_t _image4_coprocessor_host; |
22 | #define IMAGE4_COPROCESSOR_HOST (&_image4_coprocessor_host) |
23 | IMAGE4_XNU_AVAILABLE_INDIRECT(_image4_coprocessor_host); |
24 | |
25 | /*! |
26 | * @const IMAGE4_COPROCESSOR_AP |
27 | * The Application Processor executing payloads signed by the Secure Boot CA. |
28 | * |
29 | * Handles for this environment are enumerated in the |
30 | * {@link image4_coprocessor_ap_handle_t} type. |
31 | */ |
32 | IMAGE4_API_AVAILABLE_SPRING_2024 |
33 | OS_EXPORT |
34 | const image4_coprocessor_t _image4_coprocessor_ap; |
35 | #define IMAGE4_COPROCESSOR_AP (&_image4_coprocessor_ap) |
36 | IMAGE4_XNU_AVAILABLE_INDIRECT(_image4_coprocessor_ap); |
37 | |
38 | /*! |
39 | * @typedef image4_coprocessor_handle_ap_t |
40 | * Handles describing supported AP execution environments. |
41 | * |
42 | * @const IMAGE4_COPROCESSOR_HANDLE_AP |
43 | * The host's Application Processor environment. |
44 | * |
45 | * @const IMAGE4_COPROCESSOR_HANDLE_AP_FF00 |
46 | * The software AP environment used for loading globally-signed OTA update brain |
47 | * trust caches. |
48 | * |
49 | * @const IMAGE4_COPROCESSOR_HANDLE_AP_FF01 |
50 | * The software AP environment used for loading globally-signed Install |
51 | * Assistant brain trust caches. |
52 | * |
53 | * @const IMAGE4_COPROCESSOR_HANDLE_AP_FF06 |
54 | * The software AP environment used for loading globally-signed Bootability |
55 | * brain trust caches. |
56 | * |
57 | * @const IMAGE4_COPROCESSOR_HANDLE_AP_PDI |
58 | * The sideloading AP environment used to load a personalized disk image. |
59 | * |
60 | * @const IMAGE4_COPROCESSOR_HANDLE_AP_SRDP |
61 | * The sideloading AP environment used to load firmware which has been |
62 | * authorized as part of the Security Research Device Program. |
63 | * |
64 | * @const IMAGE4_COPROCESSOR_HANDLE_AP_DDI |
65 | * The sideloading AP environment used to load a personalized disk image which |
66 | * is automatically mounted at boot. |
67 | * |
68 | * This handle is available starting in API version 20231027. |
69 | */ |
70 | OS_CLOSED_ENUM(image4_coprocessor_handle_ap, image4_coprocessor_handle_t, |
71 | IMAGE4_COPROCESSOR_HANDLE_AP = 0, |
72 | IMAGE4_COPROCESSOR_HANDLE_AP_FF00, |
73 | IMAGE4_COPROCESSOR_HANDLE_AP_FF01, |
74 | IMAGE4_COPROCESSOR_HANDLE_AP_FF06, |
75 | IMAGE4_COPROCESSOR_HANDLE_AP_PDI, |
76 | IMAGE4_COPROCESSOR_HANDLE_AP_SRDP, |
77 | IMAGE4_COPROCESSOR_HANDLE_AP_RESERVED_0, |
78 | IMAGE4_COPROCESSOR_HANDLE_AP_RESERVED_1, |
79 | IMAGE4_COPROCESSOR_HANDLE_AP_RESERVED_2, |
80 | IMAGE4_COPROCESSOR_HANDLE_AP_DDI, |
81 | _IMAGE4_COPROCESSOR_HANDLE_AP_CNT, |
82 | ); |
83 | |
84 | /*! |
85 | * @const IMAGE4_COPROCESSOR_AP_LOCAL |
86 | * The Application Processor executing payloads signed by the Basic Attestation |
87 | * Authority. |
88 | * |
89 | * Handles for this environment are enumerated in the |
90 | * {@link image4_coprocessor_handle_ap_local_t} type. |
91 | */ |
92 | IMAGE4_API_AVAILABLE_SPRING_2024 |
93 | OS_EXPORT |
94 | const image4_coprocessor_t _image4_coprocessor_ap_local; |
95 | #define IMAGE4_COPROCESSOR_AP_LOCAL (&_image4_coprocessor_ap_local) |
96 | IMAGE4_XNU_AVAILABLE_INDIRECT(_image4_coprocessor_ap_local); |
97 | |
98 | /*! |
99 | * @typedef image4_coprocessor_handle_ap_local_t |
100 | * Handles describing supported local policy execution environments. |
101 | * |
102 | * @const IMAGE4_COPROCESSOR_HANDLE_AP_LOCAL |
103 | * The host's local policy environment. |
104 | */ |
105 | |
106 | OS_CLOSED_ENUM(image4_coprocessor_handle_ap_local, image4_coprocessor_handle_t, |
107 | IMAGE4_COPROCESSOR_HANDLE_AP_LOCAL = 0, |
108 | IMAGE4_COPROCESSOR_HANDLE_AP_LOCAL_RESERVED_0, |
109 | IMAGE4_COPROCESSOR_HANDLE_AP_LOCAL_RESERVED_1, |
110 | IMAGE4_COPROCESSOR_HANDLE_AP_LOCAL_RESERVED_2, |
111 | _IMAGE4_COPROCESSOR_HANDLE_AP_LOCAL_CNT, |
112 | ); |
113 | |
114 | /*! |
115 | * @const IMAGE4_COPROCESSOR_CRYPTEX1 |
116 | * The Cryptex1 coprocessor executing payloads signed by the Secure Boot CA. |
117 | * |
118 | * Handles for this environment are enumerated in the |
119 | * {@link image4_coprocessor_handle_cryptex1_t} type. |
120 | */ |
121 | IMAGE4_API_AVAILABLE_SPRING_2024 |
122 | OS_EXPORT |
123 | const image4_coprocessor_t _image4_coprocessor_cryptex1; |
124 | #define IMAGE4_COPROCESSOR_CRYPTEX1 (&_image4_coprocessor_cryptex1) |
125 | IMAGE4_XNU_AVAILABLE_INDIRECT(_image4_coprocessor_cryptex1); |
126 | |
127 | /*! |
128 | * @typedef image4_coprocessor_handle_cryptex1_t |
129 | * Handles describing supported Cryptex1 execution environments. |
130 | * |
131 | * @const IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_BOOT |
132 | * The host's Cryptex1 boot coprocessor. |
133 | * |
134 | * @const IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_BOOT_LIVE |
135 | * The host's Cryptex1 boot coprocessor used for executing newly-authorized |
136 | * firmware prior to that firmware being evaluated by Secure Boot. |
137 | * |
138 | * @const IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_ASSET_BRAIN |
139 | * The host's Cryptex1 coprocessor used for loading MobileAsset brain firmware. |
140 | * |
141 | * @const IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_GENERIC |
142 | * The host's Cryptex1 coprocessor used for loading generic supplemental |
143 | * content. |
144 | */ |
145 | OS_CLOSED_ENUM(image4_coprocessor_handle_cryptex1, image4_coprocessor_handle_t, |
146 | IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_BOOT = 0, |
147 | IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_BOOT_LIVE, |
148 | IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_ASSET_BRAIN, |
149 | IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_GENERIC, |
150 | IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_RESERVED_0, |
151 | IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_RESERVED_1, |
152 | IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_RESERVED_2, |
153 | _IMAGE4_COPROCESSOR_HANDLE_CRYPTEX1_CNT, |
154 | ); |
155 | |
156 | /*! |
157 | * @const IMAGE4_COPROCESSOR_SEP |
158 | * The Secure Enclave Processor executing payloads signed by the Secure Boot CA. |
159 | * |
160 | * Handles for this environment are enumerated in the |
161 | * {@link image4_coprocessor_handle_sep_t} type. |
162 | */ |
163 | IMAGE4_API_AVAILABLE_SPRING_2024 |
164 | OS_EXPORT |
165 | const image4_coprocessor_t _image4_coprocessor_sep; |
166 | #define IMAGE4_COPROCESSOR_SEP (&_image4_coprocessor_sep) |
167 | IMAGE4_XNU_AVAILABLE_INDIRECT(_image4_coprocessor_sep); |
168 | |
169 | /*! |
170 | * @typedef image4_coprocessor_handle_sep_t |
171 | * Handles describing supported SEP execution environments. |
172 | * |
173 | * @const IMAGE4_COPROCESSOR_HANDLE_SEP |
174 | * The host's SEP environment. |
175 | */ |
176 | OS_CLOSED_ENUM(image4_coprocessor_handle_sep, image4_coprocessor_handle_t, |
177 | IMAGE4_COPROCESSOR_HANDLE_SEP = 0, |
178 | _IMAGE4_COPROCESSOR_HANDLE_SEP_CNT, |
179 | ); |
180 | |
181 | /*! |
182 | * @const IMAGE4_COPROCESSOR_X86 |
183 | * An x86 processor executing payloads signed by the x86 Secure Boot CA. |
184 | * |
185 | * Handles for this environment are enumerated in the |
186 | * {@link image4_coprocessor_handle_x86_t} type. |
187 | */ |
188 | IMAGE4_API_AVAILABLE_SPRING_2024 |
189 | OS_EXPORT |
190 | const image4_coprocessor_t _image4_coprocessor_x86; |
191 | #define IMAGE4_COPROCESSOR_X86 (&_image4_coprocessor_x86) |
192 | IMAGE4_XNU_AVAILABLE_INDIRECT(_image4_coprocessor_x86); |
193 | |
194 | /*! |
195 | * @typedef image4_coprocessor_handle_x86_t |
196 | * Handles describing supported x86 execution environments. |
197 | * |
198 | * @const IMAGE4_COPROCESSOR_HANDLE_X86 |
199 | * The host's x86 environment. |
200 | */ |
201 | OS_CLOSED_ENUM(image4_coprocessor_handle_x86, image4_coprocessor_handle_t, |
202 | IMAGE4_COPROCESSOR_HANDLE_X86 = 0, |
203 | _IMAGE4_COPROCESSOR_HANDLE_X86_CNT, |
204 | ); |
205 | |
206 | OS_ASSUME_PTR_ABI_SINGLE_END |
207 | OS_ASSUME_NONNULL_END |
208 | __END_DECLS |
209 | |
210 | #endif // __IMAGE4_API_COPROCESSOR_H |
211 | |