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