X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FFirmwareVolume%2FCrc32SectionExtractDxe%2FCrc32SectionExtract.c;fp=MdeModulePkg%2FUniversal%2FFirmwareVolume%2FCrc32SectionExtractDxe%2FCrc32SectionExtract.c;h=0000000000000000000000000000000000000000;hp=ca5ee21fe708e51a54f60ecd30f4a06ecf6a5cc3;hb=6cc9ca322cdfe8417274e3659437750ee833fb54;hpb=32eed1fc030a7534964b763c882f4fafff934a32 diff --git a/MdeModulePkg/Universal/FirmwareVolume/Crc32SectionExtractDxe/Crc32SectionExtract.c b/MdeModulePkg/Universal/FirmwareVolume/Crc32SectionExtractDxe/Crc32SectionExtract.c deleted file mode 100644 index ca5ee21fe7..0000000000 --- a/MdeModulePkg/Universal/FirmwareVolume/Crc32SectionExtractDxe/Crc32SectionExtract.c +++ /dev/null @@ -1,265 +0,0 @@ -/*++ - -Copyright (c) 2006 - 2007, Intel Corporation -All rights reserved. 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. - -Module Name: - - Crc32SectionExtract.c - -Abstract: - - Implements GUIDed section extraction protocol interface with - a specific GUID: CRC32. - - Please refer to the Framewokr Firmware Volume Specification 0.9. - ---*/ - - -#include - -EFI_STATUS -GuidedSectionExtractionProtocolConstructor ( - OUT EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL **GuidedSep, - IN EFI_EXTRACT_GUIDED_SECTION ExtractSection - ) -/*++ - -Routine Description: - - Constructor for the GUIDed section extraction protocol. Initializes - instance data. - -Arguments: - - This Instance to construct - -Returns: - - EFI_SUCCESS: Instance initialized. - ---*/ -// TODO: GuidedSep - add argument and description to function comment -// TODO: ExtractSection - add argument and description to function comment -// TODO: EFI_OUT_OF_RESOURCES - add return value to function comment -{ - *GuidedSep = AllocatePool (sizeof (EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL)); - if (*GuidedSep == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - (*GuidedSep)->ExtractSection = ExtractSection; - - return EFI_SUCCESS; -} - - -EFI_STATUS -EFIAPI -InitializeCrc32GuidedSectionExtractionProtocol ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -/*++ - -Routine Description: - - Entry point of the CRC32 GUIDed section extraction protocol. - Creates and initializes an instance of the GUIDed section - extraction protocol with CRC32 GUID. - -Arguments: - - ImageHandle EFI_HANDLE: A handle for the image that is initializing - this driver - SystemTable EFI_SYSTEM_TABLE: A pointer to the EFI system table - -Returns: - - EFI_SUCCESS: Driver initialized successfully - EFI_LOAD_ERROR: Failed to Initialize or has been loaded - EFI_OUT_OF_RESOURCES: Could not allocate needed resources - ---*/ -{ - EFI_STATUS Status; - EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL *Crc32GuidedSep; - EFI_HANDLE Handle; - - // - // Call all constructors per produced protocols - // - Status = GuidedSectionExtractionProtocolConstructor ( - &Crc32GuidedSep, - (EFI_EXTRACT_GUIDED_SECTION) Crc32ExtractSection - ); - if (EFI_ERROR (Status)) { - if (Crc32GuidedSep != NULL) { - FreePool (Crc32GuidedSep); - } - - return Status; - } - // - // Pass in a NULL to install to a new handle - // - Handle = NULL; - Status = gBS->InstallProtocolInterface ( - &Handle, - &gEfiCrc32GuidedSectionExtractionProtocolGuid, - EFI_NATIVE_INTERFACE, - Crc32GuidedSep - ); - if (EFI_ERROR (Status)) { - FreePool (Crc32GuidedSep); - return EFI_LOAD_ERROR; - } - - return EFI_SUCCESS; -} - -STATIC -UINT32 -EFIAPI -GetSectionLength ( - IN EFI_COMMON_SECTION_HEADER *CommonHeader - ) -/*++ - - Routine Description: - Get a length of section. - - Parameters: - CommonHeader - Pointer to the common section header. - - Return Value: - The length of the section, including the section header. - ---*/ -// TODO: function comment is missing 'Arguments:' -// TODO: function comment is missing 'Returns:' -// TODO: CommonHeader - add argument and description to function comment -{ - UINT32 Size; - - Size = *(UINT32 *) CommonHeader->Size & 0x00FFFFFF; - - return Size; -} - -STATIC -EFI_STATUS -EFIAPI -Crc32ExtractSection ( - IN EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL *This, - IN VOID *InputSection, - OUT VOID **OutputBuffer, - OUT UINTN *OutputSize, - OUT UINT32 *AuthenticationStatus - ) -/*++ - - Routine Description: - This function reads and extracts contents of a section from an - encapsulating section. - - Parameters: - This - Indicates the calling context. - InputSection - Buffer containing the input GUIDed section - to be processed. - OutputBuffer - *OutputBuffer is allocated from boot services - pool memory and containing the new section - stream. The caller is responsible for freeing - this buffer. - AuthenticationStatus - Pointer to a caller allocated UINT32 that - indicates the authentication status of the - output buffer - - Return Value: - EFI_SUCCESS - EFI_OUT_OF_RESOURCES - EFI_INVALID_PARAMETER - EFI_NOT_AVAILABLE_YET - ---*/ -// TODO: function comment is missing 'Arguments:' -// TODO: function comment is missing 'Returns:' -// TODO: This - add argument and description to function comment -// TODO: InputSection - add argument and description to function comment -// TODO: OutputBuffer - add argument and description to function comment -// TODO: OutputSize - add argument and description to function comment -// TODO: AuthenticationStatus - add argument and description to function comment -// TODO: EFI_INVALID_PARAMETER - add return value to function comment -// TODO: EFI_INVALID_PARAMETER - add return value to function comment -// TODO: EFI_OUT_OF_RESOURCES - add return value to function comment -// TODO: EFI_SUCCESS - add return value to function comment -{ - EFI_STATUS Status; - CRC32_SECTION_HEADER *Crc32SectionHeader; - EFI_GUID_DEFINED_SECTION *GuidedSectionHeader; - UINT8 *Image; - UINT32 Crc32Checksum; - VOID *DummyInterface; - - if (OutputBuffer == NULL) { - return EFI_INVALID_PARAMETER; - } - - *OutputBuffer = NULL; - - // - // Points to the section header - // - Crc32SectionHeader = (CRC32_SECTION_HEADER *) InputSection; - GuidedSectionHeader = (EFI_GUID_DEFINED_SECTION *) InputSection; - - // - // Check if the GUID is a CRC32 section GUID - // - if (!CompareGuid ( - &(GuidedSectionHeader->SectionDefinitionGuid), - &gEfiCrc32GuidedSectionExtractionProtocolGuid - )) { - return EFI_INVALID_PARAMETER; - } - - Image = (UINT8 *) InputSection + (UINT32) (GuidedSectionHeader->DataOffset); - *OutputSize = GetSectionLength ((EFI_COMMON_SECTION_HEADER *) InputSection) - (UINT32) GuidedSectionHeader->DataOffset; - - *OutputBuffer = AllocatePool (*OutputSize); - if (*OutputBuffer == NULL) { - return EFI_OUT_OF_RESOURCES; - } - // - // Implictly CRC32 GUIDed section should have STATUS_VALID bit set - // - ASSERT (GuidedSectionHeader->Attributes & EFI_GUIDED_SECTION_AUTH_STATUS_VALID); - *AuthenticationStatus = EFI_AUTH_STATUS_IMAGE_SIGNED; - - // - // Check whether there exists EFI_SECURITY_POLICY_PROTOCOL_GUID. - // - Status = gBS->LocateProtocol (&gEfiSecurityPolicyProtocolGuid, NULL, &DummyInterface); - if (!EFI_ERROR (Status)) { - *AuthenticationStatus |= EFI_AUTH_STATUS_PLATFORM_OVERRIDE; - } else { - // - // Calculate CRC32 Checksum of Image - // - gBS->CalculateCrc32 (Image, *OutputSize, &Crc32Checksum); - if (Crc32Checksum != Crc32SectionHeader->CRC32Checksum) { - *AuthenticationStatus |= EFI_AUTH_STATUS_TEST_FAILED; - } - } - - CopyMem (*OutputBuffer, Image, *OutputSize); - - return EFI_SUCCESS; -}