/** @file EDKII System Capsule library. Copyright (c) 2016, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __EDKII_SYSTEM_CAPSULE_LIB_H__ #define __EDKII_SYSTEM_CAPSULE_LIB_H__ #include /** Extract ImageFmpInfo from system firmware. @param[in] SystemFirmwareImage The System Firmware image. @param[in] SystemFirmwareImageSize The size of the System Firmware image in bytes. @param[out] ImageFmpInfo The ImageFmpInfo. @param[out] ImageFmpInfoSize The size of the ImageFmpInfo in bytes. @retval TRUE The ImageFmpInfo is extracted. @retval FALSE The ImageFmpInfo is not extracted. **/ BOOLEAN EFIAPI ExtractSystemFirmwareImageFmpInfo ( IN VOID *SystemFirmwareImage, IN UINTN SystemFirmwareImageSize, OUT EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR **ImageFmpInfo, OUT UINTN *ImageFmpInfoSize ); /** Extract the driver FV from an authenticated image. @param[in] AuthenticatedImage The authenticated capsule image. @param[in] AuthenticatedImageSize The size of the authenticated capsule image in bytes. @param[out] DriverFvImage The driver FV image. @param[out] DriverFvImageSize The size of the driver FV image in bytes. @retval TRUE The driver Fv is extracted. @retval FALSE The driver Fv is not extracted. **/ BOOLEAN EFIAPI ExtractDriverFvImage ( IN VOID *AuthenticatedImage, IN UINTN AuthenticatedImageSize, OUT VOID **DriverFvImage, OUT UINTN *DriverFvImageSize ); /** Extract the config image from an authenticated image. @param[in] AuthenticatedImage The authenticated capsule image. @param[in] AuthenticatedImageSize The size of the authenticated capsule image in bytes. @param[out] ConfigImage The config image. @param[out] ConfigImageSize The size of the config image in bytes. @retval TRUE The config image is extracted. @retval FALSE The config image is not extracted. **/ BOOLEAN EFIAPI ExtractConfigImage ( IN VOID *AuthenticatedImage, IN UINTN AuthenticatedImageSize, OUT VOID **ConfigImage, OUT UINTN *ConfigImageSize ); /** Extract the System Firmware image from an authenticated image. @param[in] AuthenticatedImage The authenticated capsule image. @param[in] AuthenticatedImageSize The size of the authenticated capsule image in bytes. @param[out] SystemFirmwareImage The System Firmware image. @param[out] SystemFirmwareImageSize The size of the System Firmware image in bytes. @retval TRUE The System Firmware image is extracted. @retval FALSE The System Firmware image is not extracted. **/ BOOLEAN EFIAPI ExtractSystemFirmwareImage ( IN VOID *AuthenticatedImage, IN UINTN AuthenticatedImageSize, OUT VOID **SystemFirmwareImage, OUT UINTN *SystemFirmwareImageSize ); /** Extract the authenticated image from an FMP capsule image. @param[in] Image The FMP capsule image, including EFI_FIRMWARE_IMAGE_AUTHENTICATION. @param[in] ImageSize The size of FMP capsule image in bytes. @param[out] LastAttemptStatus The last attempt status, which will be recorded in ESRT and FMP EFI_FIRMWARE_IMAGE_DESCRIPTOR. @param[out] AuthenticatedImage The authenticated capsule image, excluding EFI_FIRMWARE_IMAGE_AUTHENTICATION. @param[out] AuthenticatedImageSize The size of the authenticated capsule image in bytes. @retval TRUE The authenticated image is extracted. @retval FALSE The authenticated image is not extracted. **/ BOOLEAN EFIAPI ExtractAuthenticatedImage ( IN VOID *Image, IN UINTN ImageSize, OUT UINT32 *LastAttemptStatus, OUT VOID **AuthenticatedImage, OUT UINTN *AuthenticatedImageSize ); /** Authenticated system firmware FMP capsule image. Caution: This function may receive untrusted input. @param[in] Image The FMP capsule image, including EFI_FIRMWARE_IMAGE_AUTHENTICATION. @param[in] ImageSize The size of FMP capsule image in bytes. @param[in] ForceVersionMatch TRUE: The version of capsule must be as same as the version of current image. FALSE: The version of capsule must be as same as greater than the lowest supported version of current image. @param[out] LastAttemptVersion The last attempt version, which will be recorded in ESRT and FMP EFI_FIRMWARE_IMAGE_DESCRIPTOR. @param[out] LastAttemptStatus The last attempt status, which will be recorded in ESRT and FMP EFI_FIRMWARE_IMAGE_DESCRIPTOR. @param[out] AuthenticatedImage The authenticated capsule image, excluding EFI_FIRMWARE_IMAGE_AUTHENTICATION. @param[out] AuthenticatedImageSize The size of the authenticated capsule image in bytes. @retval TRUE Authentication passes and the authenticated image is extracted. @retval FALSE Authentication fails and the authenticated image is not extracted. **/ EFI_STATUS EFIAPI CapsuleAuthenticateSystemFirmware ( IN VOID *Image, IN UINTN ImageSize, IN BOOLEAN ForceVersionMatch, OUT UINT32 *LastAttemptVersion, OUT UINT32 *LastAttemptStatus, OUT VOID **AuthenticatedImage, OUT UINTN *AuthenticatedImageSize ); #endif