xref: /xnu-11215.41.3/EXTERNAL_HEADERS/img4/chip_cryptex1.h (revision 33de042d024d46de5ff4e89f2471de6608e37fa4)
1 /*!
2  * @header
3  * Cryptex1 chip environments.
4  */
5 #ifndef __IMG4_CHIP_CRYPTEX1_H
6 #define __IMG4_CHIP_CRYPTEX1_H
7 
8 #ifndef __IMG4_INDIRECT
9 #error "Please #include <img4/firmware.h> instead of this file directly"
10 #endif // __IMG4_INDIRECT
11 
12 __BEGIN_DECLS
13 OS_ASSUME_NONNULL_BEGIN
14 OS_ASSUME_PTR_ABI_SINGLE_BEGIN
15 
16 /*!
17  * @const IMG4_CHIP_CRYPTEX1_BOOT
18  * A virtual coprocessor environment hosted on the AP which derives its unique
19  * identity from the hosting AP. This chip assists in booting the AP's
20  * userspace.
21  */
22 #if !XNU_KERNEL_PRIVATE
23 IMG4_API_AVAILABLE_20211126
24 OS_EXPORT
25 const img4_chip_t _img4_chip_cryptex1_boot;
26 #define IMG4_CHIP_CRYPTEX1_BOOT (&_img4_chip_cryptex1_boot)
27 #else
28 #define IMG4_CHIP_CRYPTEX1_BOOT (img4if->i4if_v17.chip_cryptex1_boot)
29 #endif
30 
31 /*!
32  * @const IMG4_CHIP_CRYPTEX1_BOOT_REDUCED
33  * A virtual coprocessor environment hosted on the reduced-security AP which
34  * derives its unique identity from the hosting AP. This chip assists in booting
35  * the AP's userspace.
36  */
37 #if !XNU_KERNEL_PRIVATE
38 IMG4_API_AVAILABLE_20211126
39 OS_EXPORT
40 const img4_chip_t _img4_chip_cryptex1_boot_reduced;
41 #define IMG4_CHIP_CRYPTEX1_BOOT_REDUCED \
42 		(&_img4_chip_cryptex1_boot_reduced)
43 #else
44 #define IMG4_CHIP_CRYPTEX1_BOOT_REDUCED \
45 		(img4if->i4if_v17.chip_cryptex1_boot_reduced)
46 #endif
47 
48 /*!
49  * @const IMG4_CHIP_CRYPTEX1_BOOT_PROPOSAL
50  * Equivalent to {@link IMG4_CHIP_CRYPTEX1_BOOT} with internal use constraints
51  * relaxed to permit verification in scenarios where the currently-booted AP may
52  * not represent the ultimate execution environment.
53  *
54  * @discussion
55  * This environment should not be used for payload execution on the AP and is
56  * intended to facilitate local policy signing in the SEP.
57  */
58 #if !XNU_KERNEL_PRIVATE
59 IMG4_API_AVAILABLE_20220401
60 OS_EXPORT
61 const img4_chip_t _img4_chip_cryptex1_boot_proposal;
62 #define IMG4_CHIP_CRYPTEX1_BOOT_PROPOSAL (&_img4_chip_cryptex1_boot_proposal)
63 #else
64 #define IMG4_CHIP_CRYPTEX1_BOOT_PROPOSAL \
65 		(img4if->i4if_v18.chip_cryptex1_boot_proposal)
66 #endif
67 
68 /*!
69  * @const IMG4_CHIP_CRYPTEX1_BOOT_REDUCED_PROPOSAL
70  * Equivalent to {@link IMG4_CHIP_CRYPTEX1_BOOT_REDUCED} with internal use
71  * constraints relaxed to permit verification in scenarios where the currently-
72  * booted AP may not represent the ultimate execution environment.
73  *
74  * @discussion
75  * This environment should not be used for payload execution on the AP and is
76  * intended to facilitate local policy signing in the SEP.
77  */
78 #if !XNU_KERNEL_PRIVATE
79 IMG4_API_AVAILABLE_20220401
80 OS_EXPORT
81 const img4_chip_t _img4_chip_cryptex1_boot_reduced_proposal;
82 #define IMG4_CHIP_CRYPTEX1_BOOT_REDUCED_PROPOSAL \
83 		(&_img4_chip_cryptex1_boot_reduced_proposal)
84 #else
85 #define IMG4_CHIP_CRYPTEX1_BOOT_REDUCED_PROPOSAL \
86 		(img4if->i4if_v18.chip_cryptex1_boot_reduced_proposal)
87 #endif
88 
89 /*!
90  * @const IMG4_CHIP_CRYPTEX1_BOOT_X86
91  * A virtual coprocessor environment hosted on an x86 chip which has no unique
92  * identity. This chip assists in booting the x86 processor's userspace.
93  */
94 #if !XNU_KERNEL_PRIVATE
95 IMG4_API_AVAILABLE_20211126
96 OS_EXPORT
97 const img4_chip_t _img4_chip_cryptex1_boot_x86;
98 #define IMG4_CHIP_CRYPTEX1_BOOT_X86 (&_img4_chip_cryptex1_boot_x86)
99 #else
100 #define IMG4_CHIP_CRYPTEX1_BOOT_X86 (img4if->i4if_v17.chip_cryptex1_boot_x86)
101 #endif
102 
103 /*!
104  * @const IMG4_CHIP_CRYPTEX1_BOOT_STATIC_X86
105  * A virtual coprocessor environment hosted on an x86 chip which has no unique
106  * identity. This chip assists in booting the x86 processor's userspace. This
107  * chip has no ability to enforce expiration on its manifests.
108  */
109 #if !XNU_KERNEL_PRIVATE
110 IMG4_API_AVAILABLE_20220912
111 OS_EXPORT
112 const img4_chip_t _img4_chip_cryptex1_boot_static_x86;
113 #define IMG4_CHIP_CRYPTEX1_BOOT_STATIC_X86 \
114 		(&_img4_chip_cryptex1_boot_static_x86)
115 #else
116 #define IMG4_CHIP_CRYPTEX1_BOOT_STATIC_X86 \
117 		(img4if->i4if_v19.chip_cryptex1_boot_static_x86)
118 #endif
119 
120 /*!
121  * @const IMG4_CHIP_CRYPTEX1_BOOT_RELAXED_X86
122  * A virtual coprocessor environment hosted on an x86 chip which has no unique
123  * identity and has secure boot disabled. This chip assists in booting the x86
124  * processor's userspace.
125  */
126 #if !XNU_KERNEL_PRIVATE
127 IMG4_API_AVAILABLE_20220711
128 OS_EXPORT
129 const img4_chip_t _img4_chip_cryptex1_boot_relaxed_x86;
130 #define IMG4_CHIP_CRYPTEX1_BOOT_RELAXED_X86 \
131 		(&_img4_chip_cryptex1_boot_relaxed_x86)
132 #else
133 #define IMG4_CHIP_CRYPTEX1_BOOT_RELAXED_X86 \
134 		(img4if->i4if_v19.chip_cryptex1_boot_relaxed_x86)
135 #endif
136 
137 /*!
138  * @const IMG4_CHIP_CRYPTEX1_BOOT_VMA2
139  * A virtual coprocessor environment hosted on a virtualized ARM AP which
140  * derives its unique identity from the hosting AP. This chip assists in booting
141  * the AP's userspace.
142  */
143 #if !XNU_KERNEL_PRIVATE
144 IMG4_API_AVAILABLE_20220128
145 OS_EXPORT
146 const img4_chip_t _img4_chip_cryptex1_boot_vma2;
147 #define IMG4_CHIP_CRYPTEX1_BOOT_VMA2 (&_img4_chip_cryptex1_boot_vma2)
148 #else
149 #define IMG4_CHIP_CRYPTEX1_BOOT_VMA2 (img4if->i4if_v17.chip_cryptex1_boot_vma2)
150 #endif
151 
152 /*!
153  * @const IMG4_CHIP_CRYPTEX1_BOOT_VMA2_CLONE
154  * A virtual coprocessor environment hosted on a virtualized ARM AP which
155  * derives its unique identity from the hosting AP. This chip assists in booting
156  * the AP's userspace. This is the clone version which doesn't enforce ECID
157  * and UDID.
158  */
159 #if !XNU_KERNEL_PRIVATE
160 IMG4_API_AVAILABLE_20220322
161 OS_EXPORT
162 const img4_chip_t _img4_chip_cryptex1_boot_vma2_clone;
163 #define IMG4_CHIP_CRYPTEX1_BOOT_VMA2_CLONE \
164 		(&_img4_chip_cryptex1_boot_vma2_clone)
165 #else
166 #define IMG4_CHIP_CRYPTEX1_BOOT_VMA2_CLONE \
167 		(img4if->i4if_v18.chip_cryptex1_boot_vma2_clone)
168 #endif
169 
170 /*!
171  * @const IMG4_CHIP_CRYPTEX1_BOOT_VMA2_PROPOSAL
172  * Equivalent to {@link IMG4_CHIP_CRYPTEX1_BOOT_VMA2} with internal use
173  * constraints relaxed to permit verification in scenarios where the currently-
174  * booted AP may not represent the ultimate execution environment.
175  *
176  * @discussion
177  * This environment should not be used for payload execution on the AP and is
178  * intended to facilitate local policy signing in the BootPolicy kext.
179  */
180 #if !XNU_KERNEL_PRIVATE
181 IMG4_API_AVAILABLE_20220401
182 OS_EXPORT
183 const img4_chip_t _img4_chip_cryptex1_boot_vma2_proposal;
184 #define IMG4_CHIP_CRYPTEX1_BOOT_VMA2_PROPOSAL \
185 		(&_img4_chip_cryptex1_boot_vma2_proposal)
186 #else
187 #define IMG4_CHIP_CRYPTEX1_BOOT_VMA2_PROPOSAL \
188 		(img4if->i4if_v18.chip_cryptex1_boot_vma2_proposal)
189 #endif
190 
191 /*!
192  * @const IMG4_CHIP_CRYPTEX1_BOOT_VMA2_CLONE_PROPOSAL
193  * Equivalent to {@link IMG4_CHIP_CRYPTEX1_BOOT_VMA2_CLONE} with internal use
194  * constraints relaxed to permit verification in scenarios where the currently-
195  * booted AP may not represent the ultimate execution environment.
196  *
197  * @discussion
198  * This environment should not be used for payload execution on the AP and is
199  * intended to facilitate local policy signing in the BootPolicy kext.
200  */
201 #if !XNU_KERNEL_PRIVATE
202 IMG4_API_AVAILABLE_20220401
203 OS_EXPORT
204 const img4_chip_t _img4_chip_cryptex1_boot_vma2_clone_proposal;
205 #define IMG4_CHIP_CRYPTEX1_BOOT_VMA2_CLONE_PROPOSAL \
206 		(&_img4_chip_cryptex1_boot_vma2_clone_proposal)
207 #else
208 #define IMG4_CHIP_CRYPTEX1_BOOT_VMA2_CLONE_PROPOSAL \
209 		(img4if->i4if_v18.chip_cryptex1_boot_vma2_clone_proposal)
210 #endif
211 
212 /*!
213  * @const IMG4_CHIP_CRYPTEX1_PREBOOT
214  * A virtual coprocessor environment hosted on the AP which derives its unique
215  * identity from the hosting AP. This chip permits executing payloads intended
216  * for the next boot prior to that boot. It does not assist in booting the AP.
217  */
218 #if !XNU_KERNEL_PRIVATE
219 IMG4_API_AVAILABLE_20211126
220 OS_EXPORT
221 const img4_chip_t _img4_chip_cryptex1_preboot;
222 #define IMG4_CHIP_CRYPTEX1_PREBOOT (&_img4_chip_cryptex1_preboot)
223 #else
224 #define IMG4_CHIP_CRYPTEX1_PREBOOT (img4if->i4if_v17.chip_cryptex1_preboot)
225 #endif
226 
227 /*!
228  * @const IMG4_CHIP_CRYPTEX1_PREBOOT_REDUCED
229  * A virtual coprocessor environment hosted on the reduced-security AP which
230  * derives its unique identity from the hosting AP. This chip permits executing
231  * payloads intended for the next boot prior to that boot. It does not assist in
232  * booting the AP.
233  */
234 #if !XNU_KERNEL_PRIVATE
235 IMG4_API_AVAILABLE_20211126
236 OS_EXPORT
237 const img4_chip_t _img4_chip_cryptex1_preboot_reduced;
238 #define IMG4_CHIP_CRYPTEX1_PREBOOT_REDUCED \
239 		(&_img4_chip_cryptex1_preboot_reduced)
240 #else
241 #define IMG4_CHIP_CRYPTEX1_PREBOOT_REDUCED \
242 		(img4if->i4if_v17.chip_cryptex1_preboot_reduced)
243 #endif
244 
245 /*!
246  * @const IMG4_CHIP_CRYPTEX1_PREBOOT_X86
247  * A virtual coprocessor environment hosted on an x86 chip which has no unique
248  * identity. This chip permits executing payloads intended for the next boot
249  * prior to that boot. It does not assist in booting the x86 chip.
250  */
251 #if !XNU_KERNEL_PRIVATE
252 IMG4_API_AVAILABLE_20211126
253 OS_EXPORT
254 const img4_chip_t _img4_chip_cryptex1_preboot_x86;
255 #define IMG4_CHIP_CRYPTEX1_PREBOOT_X86 \
256 		(&_img4_chip_cryptex1_preboot_x86)
257 #else
258 #define IMG4_CHIP_CRYPTEX1_PREBOOT_X86 \
259 		(img4if->i4if_v17.chip_cryptex1_preboot_x86)
260 #endif
261 
262 /*!
263  * @const IMG4_CHIP_CRYPTEX1_PREBOOT_STATIC_X86
264  * A virtual coprocessor environment hosted on an x86 chip which has no unique
265  * identity. This chip permits executing payloads intended for the next boot
266  * prior to that boot. It does not assist in booting the x86 chip. This chip has
267  * no ability to enforce expiration on its manifests.
268  */
269 #if !XNU_KERNEL_PRIVATE
270 IMG4_API_AVAILABLE_20211126
271 OS_EXPORT
272 const img4_chip_t _img4_chip_cryptex1_preboot_static_x86;
273 #define IMG4_CHIP_CRYPTEX1_PREBOOT_STATIC_X86 \
274 		(&_img4_chip_cryptex1_preboot_static_x86)
275 #else
276 #define IMG4_CHIP_CRYPTEX1_PREBOOT_STATIC_X86 \
277 		(img4if->i4if_v19.chip_cryptex1_preboot_static_x86)
278 #endif
279 
280 /*!
281  * @const IMG4_CHIP_CRYPTEX1_PREBOOT_RELAXED_X86
282  * A virtual coprocessor environment hosted on an x86 chip which has no unique
283  * identity and has secure boot disabled. This chip permits executing payloads
284  * intended for the next boot prior to that boot. It does not assist in booting
285  * the x86 chip.
286  */
287 #if !XNU_KERNEL_PRIVATE
288 IMG4_API_AVAILABLE_20220711
289 OS_EXPORT
290 const img4_chip_t _img4_chip_cryptex1_preboot_relaxed_x86;
291 #define IMG4_CHIP_CRYPTEX1_PREBOOT_RELAXED_X86 \
292 		(&_img4_chip_cryptex1_preboot_relaxed_x86)
293 #else
294 #define IMG4_CHIP_CRYPTEX1_PREBOOT_RELAXED_X86 \
295 		(img4if->i4if_v17.chip_cryptex1_preboot_relaxed_x86)
296 #endif
297 
298 /*!
299  * @const IMG4_CHIP_CRYPTEX1_PREBOOT_VMA2
300  * A virtual coprocessor environment hosted on a virtualized ARM AP which
301  * derives its unique identity from the hosting AP. This chip permits executing
302  * payloads intended for the next boot prior to that boot. It does not assist in
303  * booting the AP.
304  */
305 #if !XNU_KERNEL_PRIVATE
306 IMG4_API_AVAILABLE_20220128
307 OS_EXPORT
308 const img4_chip_t _img4_chip_cryptex1_preboot_vma2;
309 #define IMG4_CHIP_CRYPTEX1_PREBOOT_VMA2 \
310 		(&_img4_chip_cryptex1_preboot_vma2)
311 #else
312 #define IMG4_CHIP_CRYPTEX1_PREBOOT_VMA2 \
313 		(img4if->i4if_v17.chip_cryptex1_preboot_vma2)
314 #endif
315 
316 /*!
317  * @const IMG4_CHIP_CRYPTEX1_PREBOOT_VMA2_CLONE
318  * A virtual coprocessor environment hosted on a virtualized ARM AP which
319  * derives its unique identity from the hosting AP. This chip permits executing
320  * payloads intended for the next boot prior to that boot. It does not assist in
321  * booting the AP. This is the clone version which doesn't enforce ECID
322  * and UDID.
323  */
324 #if !XNU_KERNEL_PRIVATE
325 IMG4_API_AVAILABLE_20220322
326 OS_EXPORT
327 const img4_chip_t _img4_chip_cryptex1_preboot_vma2_clone;
328 #define IMG4_CHIP_CRYPTEX1_PREBOOT_VMA2_CLONE \
329 		(&_img4_chip_cryptex1_preboot_vma2_clone)
330 #else
331 #define IMG4_CHIP_CRYPTEX1_PREBOOT_VMA2_CLONE \
332 		(img4if->i4if_v18.chip_cryptex1_preboot_vma2_clone)
333 #endif
334 
335 /*!
336  * @const IMG4_CHIP_CRYPTEX1_ASSET
337  * A virtual coprocessor environment hosted on the AP which derives its unique
338  * identity from the hosting AP. This chip assists in executing MobileAsset
339  * brain payloads during runtime, after the host AP has booted its userspace.
340  */
341 #if !XNU_KERNEL_PRIVATE
342 IMG4_API_AVAILABLE_20211126
343 OS_EXPORT
344 const img4_chip_t _img4_chip_cryptex1_asset;
345 #define IMG4_CHIP_CRYPTEX1_ASSET (&_img4_chip_cryptex1_asset)
346 #else
347 #define IMG4_CHIP_CRYPTEX1_ASSET (img4if->i4if_v17.chip_cryptex1_asset)
348 #endif
349 
350 /*!
351  * @const IMG4_CHIP_CRYPTEX1_ASSET_X86
352  * A virtual coprocessor environment hosted on the AP which derives its unique
353  * identity from the hosting AP. This chip assists in executing MobileAsset
354  * brain payloads during runtime, after the host AP has booted its userspace.
355  */
356 #if !XNU_KERNEL_PRIVATE
357 IMG4_API_AVAILABLE_20220401
358 OS_EXPORT
359 const img4_chip_t _img4_chip_cryptex1_asset_x86;
360 #define IMG4_CHIP_CRYPTEX1_ASSET_X86 (&_img4_chip_cryptex1_asset_x86)
361 #else
362 #define IMG4_CHIP_CRYPTEX1_ASSET_X86 (img4if->i4if_v18.chip_cryptex1_asset_x86)
363 #endif
364 
365 /*!
366  * @const IMG4_CHIP_CRYPTEX1_GENERIC
367  * A virtual coprocessor environment hosted on the AP which derives its unique
368  * identity from the hosting AP. This chip assists in executing generic cryptex
369  * payloads during runtime, after the host AP has booted its userspace.
370  */
371 #if !XNU_KERNEL_PRIVATE
372 IMG4_API_AVAILABLE_20221202
373 OS_EXPORT
374 const img4_chip_t _img4_chip_cryptex1_generic;
375 #define IMG4_CHIP_CRYPTEX1_GENERIC \
376 		(&_img4_chip_cryptex1_generic)
377 #else
378 #define IMG4_CHIP_CRYPTEX1_GENERIC \
379 		(img4if->i4if_v20.chip_cryptex1_generic)
380 #endif
381 
382 /*!
383  * @const IMG4_CHIP_CRYPTEX1_GENERIC_SUPPLEMENTAL
384  * A virtual coprocessor environment hosted on the AP which derives its unique
385  * identity from the hosting AP. This chip assists in executing generic cryptex
386  * payloads during runtime, after the host AP has booted its userspace. Its
387  * trust is rooted in a supplemental root of trust authorized by the Secure Boot
388  * CA.
389  */
390 #if !XNU_KERNEL_PRIVATE
391 IMG4_API_AVAILABLE_20221202
392 OS_EXPORT
393 const img4_chip_t _img4_chip_cryptex1_generic_supplemental;
394 #define IMG4_CHIP_CRYPTEX1_GENERIC_SUPPLEMENTAL \
395 		(&_img4_chip_cryptex1_generic_supplemental)
396 #else
397 #define IMG4_CHIP_CRYPTEX1_GENERIC_SUPPLEMENTAL \
398 		(img4if->i4if_v20.chip_cryptex1_generic_supplemental)
399 #endif
400 
401 /*!
402  * @const IMG4_CHIP_CRYPTEX1_GENERIC_X86
403  * A virtual coprocessor environment hosted on an x86 chip. This chip assists in
404  * executing generic cryptex payloads during runtime after the x86 chip has
405  * booted.
406  */
407 #if !XNU_KERNEL_PRIVATE
408 IMG4_API_AVAILABLE_20221202
409 OS_EXPORT
410 const img4_chip_t _img4_chip_cryptex1_generic_x86;
411 #define IMG4_CHIP_CRYPTEX1_GENERIC_X86 \
412 		(&_img4_chip_cryptex1_generic_x86)
413 #else
414 #define IMG4_CHIP_CRYPTEX1_GENERIC_X86 \
415 		(img4if->i4if_v20.chip_cryptex1_generic_x86)
416 #endif
417 
418 OS_ASSUME_PTR_ABI_SINGLE_END
419 OS_ASSUME_NONNULL_END
420 __END_DECLS
421 
422 #endif // __IMG4_CHIP_CRYPTEX1_H
423