/** @file | |
EDKII System Capsule library. | |
Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> | |
This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#ifndef __EDKII_SYSTEM_CAPSULE_LIB_H__ | |
#define __EDKII_SYSTEM_CAPSULE_LIB_H__ | |
#include <Guid/EdkiiSystemFmpCapsule.h> | |
/** | |
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 | |