282 lines
7.6 KiB
C
282 lines
7.6 KiB
C
/*!
|
|
* @header
|
|
* Interfaces for manipulating Image4 firmware images.
|
|
*/
|
|
#ifndef __IMG4_IMAGE_H
|
|
#define __IMG4_IMAGE_H
|
|
|
|
#ifndef __IMG4_INDIRECT
|
|
#error "Please #include <img4/firmware.h> instead of this file directly"
|
|
#endif // __IMG4_INDIRECT
|
|
|
|
__BEGIN_DECLS
|
|
OS_ASSUME_NONNULL_BEGIN
|
|
OS_ASSUME_PTR_ABI_SINGLE_BEGIN
|
|
|
|
/*!
|
|
* @function img4_image_get_bytes
|
|
* Returns the authenticated payload from an Image4 image.
|
|
*
|
|
* @param image
|
|
* The image to query. May be NULL.
|
|
*
|
|
* @result
|
|
* A buffer which describes the authenticated payload. If the payload was not
|
|
* authenticated, NULL is returned.
|
|
*/
|
|
#if !XNU_KERNEL_PRIVATE
|
|
IMG4_API_AVAILABLE_20200508
|
|
OS_EXPORT OS_WARN_RESULT
|
|
const img4_buff_t *_Nullable
|
|
img4_image_get_bytes(img4_image_t _Nullable image);
|
|
#else
|
|
#define img4_image_get_bytes(...) (img4if->i4if_v7.image_get_bytes(__VA_ARGS__))
|
|
#endif
|
|
|
|
/*!
|
|
* @function img4_image_get_property_bool
|
|
* Retrieves the Boolean value for the requested image property.
|
|
*
|
|
* @param image
|
|
* The image to query.
|
|
*
|
|
* @param _4cc
|
|
* The 4cc of the desired image property.
|
|
*
|
|
* @param storage
|
|
* A pointer to storage for a Boolean value.
|
|
*
|
|
* @result
|
|
* If the property is present for the image, a pointer to the storage provided
|
|
* in {@link storage}. If the property is not present in the image or its value
|
|
* is not a Boolean, NULL is returned.
|
|
*/
|
|
#if !XNU_KERNEL_PRIVATE
|
|
IMG4_API_AVAILABLE_20200508
|
|
OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL3
|
|
const bool *
|
|
img4_image_get_property_bool(img4_image_t image,
|
|
img4_4cc_t _4cc,
|
|
bool *storage);
|
|
#else
|
|
#define img4_image_get_property_bool(...) \
|
|
(img4if->i4if_v7.image_get_property_bool(__VA_ARGS__))
|
|
#endif
|
|
|
|
/*!
|
|
* @function img4_image_get_property_uint32
|
|
* Retrieves the unsigned 32-bit integer value for the requested image property.
|
|
*
|
|
* @param image
|
|
* The image to query.
|
|
*
|
|
* @param _4cc
|
|
* The 4cc of the desired image property.
|
|
*
|
|
* @param storage
|
|
* A pointer to storage for a 32-bit unsigned integer value.
|
|
*
|
|
* @result
|
|
* If the property is present for the image, a pointer to the storage provided
|
|
* in {@link storage}. If the property is not present in the image or its value
|
|
* is not an unsigned 32-bit integer, NULL is returned.
|
|
*/
|
|
#if !XNU_KERNEL_PRIVATE
|
|
IMG4_API_AVAILABLE_20200508
|
|
OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL3
|
|
const uint32_t *
|
|
img4_image_get_property_uint32(img4_image_t image,
|
|
img4_4cc_t _4cc,
|
|
uint32_t *storage);
|
|
#else
|
|
#define img4_image_get_property_uint32(...) \
|
|
(img4if->i4if_v7.image_get_property_uint32(__VA_ARGS__))
|
|
#endif
|
|
|
|
/*!
|
|
* @function img4_image_get_property_uint64
|
|
* Retrieves the unsigned 64-bit integer value for the requested image property.
|
|
*
|
|
* @param image
|
|
* The image to query.
|
|
*
|
|
* @param _4cc
|
|
* The 4cc of the desired image property.
|
|
*
|
|
* @param storage
|
|
* A pointer to storage for a 64-bit unsigned integer value.
|
|
*
|
|
* @result
|
|
* If the property is present for the image, a pointer to the storage provided
|
|
* in {@link storage}. If the property is not present in the image or its value
|
|
* is not an unsigned 64-bit integer, NULL is returned.
|
|
*/
|
|
#if !XNU_KERNEL_PRIVATE
|
|
IMG4_API_AVAILABLE_20200508
|
|
OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL3
|
|
const uint64_t *
|
|
img4_image_get_property_uint64(img4_image_t image,
|
|
img4_4cc_t _4cc,
|
|
uint64_t *storage);
|
|
#else
|
|
#define img4_image_get_property_uint64(...) \
|
|
(img4if->i4if_v7.image_get_property_uint64(__VA_ARGS__))
|
|
#endif
|
|
|
|
/*!
|
|
* @function img4_image_get_property_data
|
|
* Retrieves the buffer value for the requested image property.
|
|
*
|
|
* @param image
|
|
* The image to query.
|
|
*
|
|
* @param _4cc
|
|
* The 4cc of the desired image property.
|
|
*
|
|
* @param storage
|
|
* A pointer to storage for a buffer value.
|
|
*
|
|
* @result
|
|
* If the property is present for the image, a pointer to the storage provided
|
|
* in {@link storage}. If the property is not present in the image or its value
|
|
* is not a data, NULL is returned.
|
|
*/
|
|
#if !XNU_KERNEL_PRIVATE
|
|
IMG4_API_AVAILABLE_20200508
|
|
OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL3
|
|
const img4_buff_t *
|
|
img4_image_get_property_data(img4_image_t image,
|
|
img4_4cc_t _4cc,
|
|
img4_buff_t *storage);
|
|
#else
|
|
#define img4_image_get_property_data(...) \
|
|
(img4if->i4if_v7.image_get_property_data(__VA_ARGS__))
|
|
#endif
|
|
|
|
/*!
|
|
* @function img4_image_get_entitlement_bool
|
|
* Retrieves the Boolean value for the requested image entitlement.
|
|
*
|
|
* @param image
|
|
* The image to query.
|
|
*
|
|
* @param _4cc
|
|
* The 4cc of the desired image entitlement.
|
|
*
|
|
* @param storage
|
|
* A pointer to storage for a Boolean value.
|
|
*
|
|
* @result
|
|
* If the entitlement is present for the image, a pointer to the storage
|
|
* provided in {@link storage}. If the property is not present in the image or
|
|
* its value is not a Boolean, NULL is returned.
|
|
*/
|
|
#if !XNU_KERNEL_PRIVATE
|
|
IMG4_API_AVAILABLE_20220513
|
|
OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL3
|
|
const bool *
|
|
img4_image_get_entitlement_bool(img4_image_t image,
|
|
img4_4cc_t _4cc,
|
|
bool *storage);
|
|
#else
|
|
#define img4_image_get_entitlement_bool(...) \
|
|
(img4if->i4if_v18.image_get_entitlement_bool(__VA_ARGS__))
|
|
#endif
|
|
|
|
/*!
|
|
* @function img4_image_get_entitlement_uint32
|
|
* Retrieves the unsigned 32-bit integer value for the requested image
|
|
* entitlement.
|
|
*
|
|
* @param image
|
|
* The image to query.
|
|
*
|
|
* @param _4cc
|
|
* The 4cc of the desired image entitlement.
|
|
*
|
|
* @param storage
|
|
* A pointer to storage for a 32-bit unsigned integer value.
|
|
*
|
|
* @result
|
|
* If the entitlement is present for the image, a pointer to the storage
|
|
* provided in {@link storage}. If the property is not present in the image or
|
|
* its value is not an unsigned 32-bit integer, NULL is returned.
|
|
*/
|
|
#if !XNU_KERNEL_PRIVATE
|
|
IMG4_API_AVAILABLE_20220513
|
|
OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL3
|
|
const uint32_t *
|
|
img4_image_get_entitlement_uint32(img4_image_t image,
|
|
img4_4cc_t _4cc,
|
|
uint32_t *storage);
|
|
#else
|
|
#define img4_image_get_entitlement_uint32(...) \
|
|
(img4if->i4if_v18.image_get_entitlement_uint32(__VA_ARGS__))
|
|
#endif
|
|
|
|
/*!
|
|
* @function img4_image_get_entitlement_uint64
|
|
* Retrieves the unsigned 64-bit integer value for the requested image
|
|
* entitlement.
|
|
*
|
|
* @param image
|
|
* The image to query.
|
|
*
|
|
* @param _4cc
|
|
* The 4cc of the desired image entitlement.
|
|
*
|
|
* @param storage
|
|
* A pointer to storage for a 64-bit unsigned integer value.
|
|
*
|
|
* @result
|
|
* If the entitlement is present for the image, a pointer to the storage
|
|
* provided in {@link storage}. If the property is not present in the image or
|
|
* its value is not an unsigned 64-bit integer, NULL is returned.
|
|
*/
|
|
#if !XNU_KERNEL_PRIVATE
|
|
IMG4_API_AVAILABLE_20220513
|
|
OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL3
|
|
const uint64_t *
|
|
img4_image_get_entitlement_uint64(img4_image_t image,
|
|
img4_4cc_t _4cc,
|
|
uint64_t *storage);
|
|
#else
|
|
#define img4_image_get_entitlement_uint64(...) \
|
|
(img4if->i4if_v18.image_get_entitlement_uint64(__VA_ARGS__))
|
|
#endif
|
|
|
|
/*!
|
|
* @function img4_image_get_entitlement_data
|
|
* Retrieves the buffer value for the requested image entitlement.
|
|
*
|
|
* @param image
|
|
* The image to query.
|
|
*
|
|
* @param _4cc
|
|
* The 4cc of the desired image entitlement.
|
|
*
|
|
* @param storage
|
|
* A pointer to storage for a buffer value.
|
|
*
|
|
* @result
|
|
* If the entitlement is present for the image, a pointer to the storage
|
|
* provided in {@link storage}. If the property is not present in the image or
|
|
* its value is not a data, NULL is returned.
|
|
*/
|
|
#if !XNU_KERNEL_PRIVATE
|
|
IMG4_API_AVAILABLE_20220513
|
|
OS_EXPORT OS_WARN_RESULT OS_NONNULL1 OS_NONNULL3
|
|
const img4_buff_t *
|
|
img4_image_get_entitlement_data(img4_image_t image,
|
|
img4_4cc_t _4cc,
|
|
img4_buff_t *storage);
|
|
#else
|
|
#define img4_image_get_entitlement_data(...) \
|
|
(img4if->i4if_v18.image_get_entitlement_data(__VA_ARGS__))
|
|
#endif
|
|
|
|
OS_ASSUME_PTR_ABI_SINGLE_END
|
|
OS_ASSUME_NONNULL_END
|
|
__END_DECLS
|
|
|
|
#endif // __IMG4_IMAGE_H
|