/** @file Firmware volume driver that overrides the EFI_FIRMWARE_VOLUME_PROTOCOL and injects images for boot.efi/FileVault 2. Copyright (C) 2016 Sergey Slice. All rights reserved.
Portions copyright (C) 2018 savvas.
Portions copyright (C) 2006-2014 Intel Corporation. All rights reserved.
Portions copyright (C) 2016-2018 Alex James. 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. The cursor images have not been licensed. Neither is their usage, their redistribution, in source or binary form, licensed, nor implicitly or explicitly permitted, except when required by applicable law. **/ #ifndef FIRMWARE_VOLUME_INJECT_H #define FIRMWARE_VOLUME_INJECT_H #include typedef struct { EFI_GUID Guid; CHAR16 Name[32]; } IMAGE_ENTRY; STATIC IMAGE_ENTRY mAppleImageTable[] = { { APPLE_ARROW_CURSOR_IMAGE_GUID, L"ArrowCursor" }, { APPLE_BACK_BUTTON_SMALL_IMAGE_GUID, L"BackButtonSmall" }, { APPLE_BATTERY_STATE_0_IMAGE_GUID, L"BatteryState0" }, { APPLE_BATTERY_STATE_1_IMAGE_GUID, L"BatteryState1" }, { APPLE_BATTERY_STATE_2_IMAGE_GUID, L"BatteryState2" }, { APPLE_BATTERY_STATE_3_IMAGE_GUID, L"BatteryState3" }, { APPLE_BATTERY_STATE_4_IMAGE_GUID, L"BatteryState4" }, { APPLE_BATTERY_STATE_5_IMAGE_GUID, L"BatteryState5" }, { APPLE_BATTERY_STATE_6_IMAGE_GUID, L"BatteryState6" }, { APPLE_BEGIN_BOOT_BUTTON_IMAGE_GUID, L"BeginBootButton" }, { APPLE_BEGIN_STICKY_BOOT_BUTTON_IMAGE_GUID, L"BeginStickyBootButton" }, { APPLE_CONTINUE_BUTTON_SMALL_IMAGE_GUID, L"ContinueButtonSmall" }, { APPLE_BOOT_NAME_LABEL_IMAGE_GUID, L"EfiBootNameLabel" }, { APPLE_BROKEN_BOOT_IMAGE_GUID, L"IconBrokenBoot" }, { APPLE_FIREWIRE_HD_IMAGE_GUID, L"IconFireWireHD" }, { APPLE_GENERIC_CD_IMAGE_GUID, L"IconGenericCD" }, { APPLE_GENERIC_EXTERNAL_HD_IMAGE_GUID, L"IconGenericExternalHardDrive" }, { APPLE_INTERNAL_HD_IMAGE_GUID, L"IconInternalHD" }, { APPLE_NETBOOT_IMAGE_GUID, L"IconNetBoot" }, { APPLE_NETWORK_RECOVERY_IMAGE_GUID, L"IconNetworkRecovery" }, { APPLE_NETWORK_VOLUME_IMAGE_GUID, L"IconNetworkVolume" }, { APPLE_PASSWORD_LOCK_IMAGE_GUID, L"IconPasswordLock" }, { APPLE_SD_IMAGE_GUID, L"IconSD" }, { APPLE_SELECTED_IMAGE_GUID, L"IconSelected" }, { APPLE_USB_HD_IMAGE_GUID, L"IconUsbHD" }, { APPLE_WIRELESS_SMALL_IMAGE_GUID, L"IconWirelessSmall" }, { APPLE_LOGO_IMAGE_GUID, L"ImageAppleLogo" }, { APPLE_PASSWORD_EMPTY_IMAGE_GUID, L"ImagePasswordEmpty" }, { APPLE_PASSWORD_FILL_IMAGE_GUID, L"ImagePasswordFill" }, { APPLE_PASSWORD_PROCEED_IMAGE_GUID, L"ImagePasswordProceed" }, { APPLE_LOGO_1394_IMAGE_GUID, L"Logo1394" }, { APPLE_LOGO_THUNDERBOLT_IMAGE_GUID, L"LogoThunderbolt" }, { APPLE_CLOCK_IMAGE_GUID, L"Clock" }, { APPLE_ERROR_GLOBE_BORDER_IMAGE_GUID, L"ErrorGlobeBorder" }, { APPLE_ERROR_GLOBE_TITLE_IMAGE_GUID, L"ErrorGlobeTile" }, { APPLE_ERROR_TRIANGLE_IMAGE_GUID, L"ErrorTriangle" }, { APPLE_GLOBE_BORDER_IMAGE_GUID, L"GlobeBorder" }, { APPLE_GLOBE_MASK_IMAGE_GUID, L"GlobeMask" } }; STATIC UINT8 mAppleArrowCursorImage[] = { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x08, 0x04, 0x00, 0x00, 0x00, 0x4A, 0x7E, 0xF5, 0x73, 0x00, 0x00, 0x01, 0x29, 0x49, 0x44, 0x41, 0x54, 0x38, 0x4F, 0x8D, 0xD4, 0x3D, 0x4B, 0x03, 0x41, 0x10, 0xC6, 0xF1, 0xFF, 0xDE, 0x8B, 0xB9, 0xBB, 0x80, 0xE2, 0x4B, 0xD4, 0x80, 0x1A, 0xD0, 0x22, 0xE1, 0x2C, 0x44, 0xAB, 0x14, 0xE9, 0x4D, 0xAF, 0x36, 0x5A, 0xF8, 0x79, 0x34, 0x60, 0x69, 0x23, 0x76, 0x62, 0x23, 0xB6, 0x5A, 0x49, 0x2A, 0x3B, 0xC1, 0x26, 0x8D, 0x8D, 0xB1, 0xF3, 0x5B, 0xEC, 0x63, 0xB1, 0x9C, 0x68, 0x72, 0x47, 0x76, 0xB6, 0x9D, 0x1F, 0x33, 0xCB, 0xCC, 0x2E, 0x00, 0x18, 0x0C, 0x06, 0xEF, 0x30, 0x84, 0xC4, 0x44, 0x04, 0x7E, 0xC8, 0x10, 0x52, 0x97, 0xC6, 0xE7, 0xA4, 0x84, 0x3E, 0xC4, 0x50, 0xA3, 0x29, 0x49, 0xC3, 0x63, 0x32, 0x1F, 0x62, 0x48, 0xD9, 0x91, 0x72, 0xC9, 0xFA, 0x11, 0x43, 0x46, 0x5B, 0xC2, 0x9B, 0x18, 0x32, 0x3A, 0x12, 0xDE, 0xE4, 0x0F, 0xF0, 0x23, 0xFF, 0x80, 0x0F, 0x99, 0x00, 0xB3, 0xC9, 0x14, 0x98, 0x45, 0x4A, 0x80, 0x23, 0xAF, 0x47, 0x24, 0x04, 0x55, 0xC0, 0xBA, 0x34, 0x97, 0x5A, 0x1C, 0x16, 0x89, 0xA6, 0x6B, 0xFC, 0x82, 0x5C, 0xEF, 0xA3, 0x5C, 0xE8, 0xF2, 0xEB, 0xFE, 0x81, 0x33, 0xFA, 0xEC, 0xB1, 0x4C, 0x5C, 0x09, 0x72, 0xC9, 0xDE, 0x3D, 0x5E, 0x8C, 0x5D, 0x0D, 0x7A, 0x74, 0x68, 0x52, 0x2F, 0xBB, 0x85, 0x9B, 0xB4, 0x95, 0xE5, 0x94, 0x13, 0xD9, 0x5C, 0xE8, 0xEA, 0xE3, 0x6D, 0x40, 0xA3, 0x6A, 0x19, 0x0D, 0x29, 0xDB, 0xB2, 0xF4, 0xE9, 0xD2, 0x7D, 0xBA, 0x1D, 0x7C, 0xA2, 0x5C, 0xDF, 0x43, 0x56, 0xCB, 0xDA, 0x71, 0xA0, 0xC6, 0x3A, 0xBB, 0xB4, 0x69, 0xB2, 0x45, 0xCF, 0xD5, 0x90, 0x65, 0x83, 0x5A, 0x15, 0x08, 0xC9, 0x58, 0x62, 0x9E, 0x84, 0x05, 0x3A, 0xCF, 0x37, 0xB2, 0xB2, 0x2F, 0xD7, 0x6C, 0x56, 0x01, 0x47, 0x22, 0x42, 0x02, 0xE6, 0x58, 0xE3, 0x80, 0x3E, 0x87, 0xEC, 0xB3, 0x52, 0xD5, 0x52, 0x81, 0xC0, 0x10, 0x90, 0xD2, 0xA0, 0x45, 0x8B, 0x06, 0x69, 0xD9, 0xD0, 0x26, 0xC3, 0x10, 0x10, 0x93, 0x90, 0x10, 0xFB, 0xBE, 0xF0, 0xE2, 0x07, 0xF1, 0x4C, 0xF6, 0x88, 0x1F, 0xEA, 0xC7, 0xA7, 0xF4, 0x03, 0x23, 0x37, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 }; STATIC UINT8 mAppleArrowCursor2xImage[] = { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x50, 0x08, 0x04, 0x00, 0x00, 0x00, 0xE6, 0x28, 0x7E, 0xA2, 0x00, 0x00, 0x03, 0x3B, 0x49, 0x44, 0x41, 0x54, 0x68, 0xDE, 0xED, 0xD8, 0x4F, 0x68, 0x1C, 0x65, 0x1C, 0x87, 0xF1, 0x67, 0xDE, 0x99, 0xDD, 0x99, 0xDD, 0xC9, 0x26, 0xBB, 0xC9, 0x36, 0x69, 0xB2, 0xE9, 0x9F, 0xDD, 0x54, 0x23, 0x69, 0x8C, 0x92, 0xA0, 0x6D, 0x59, 0x52, 0x6C, 0x75, 0xDB, 0x0A, 0x25, 0x88, 0x67, 0xEB, 0xA1, 0x08, 0x42, 0x11, 0xF1, 0x20, 0x5E, 0x5A, 0xC8, 0x25, 0xF4, 0x20, 0xE9, 0xA5, 0xA0, 0x47, 0x0F, 0xA2, 0x55, 0x9B, 0x1A, 0x2F, 0x2A, 0x42, 0xAF, 0x5E, 0x8A, 0xB4, 0x45, 0xD4, 0x5E, 0xB4, 0x78, 0xA8, 0xD0, 0x88, 0x54, 0xB4, 0x69, 0xD7, 0x84, 0x98, 0xFD, 0x7A, 0x98, 0x31, 0xA4, 0x24, 0x4D, 0x42, 0x76, 0x26, 0xA0, 0xCC, 0x73, 0x9A, 0xDB, 0x87, 0x99, 0x7D, 0xF7, 0x9D, 0xF7, 0x37, 0x90, 0xF4, 0xFF, 0xCA, 0xC2, 0x92, 0x83, 0x85, 0xB5, 0x55, 0x9C, 0xC1, 0x6E, 0x4C, 0x9D, 0x77, 0xB1, 0x31, 0xF1, 0xA3, 0x16, 0x06, 0x07, 0x57, 0x5A, 0xB8, 0x74, 0xC2, 0x27, 0x85, 0x1D, 0x37, 0x69, 0x61, 0xE3, 0x91, 0x93, 0xA4, 0xB9, 0xE9, 0x6A, 0x8E, 0x74, 0xDC, 0xA4, 0x45, 0x0A, 0x9F, 0x0E, 0x29, 0x20, 0xF7, 0xB5, 0xC6, 0x4D, 0x1A, 0xD2, 0xB4, 0xB2, 0x5D, 0x92, 0xFE, 0x94, 0x54, 0xFF, 0x2C, 0x6E, 0xD2, 0xE0, 0x92, 0x67, 0x87, 0x24, 0x1D, 0xDA, 0x12, 0xD2, 0xE0, 0xD1, 0xCE, 0x6E, 0x49, 0x42, 0x87, 0x03, 0x32, 0xD6, 0x07, 0x1B, 0x80, 0xE5, 0x00, 0xDC, 0x0A, 0x32, 0x00, 0x2B, 0xFF, 0x82, 0xE8, 0xB0, 0xEE, 0x4A, 0xAA, 0x7F, 0x1A, 0x17, 0xB9, 0x02, 0x44, 0xCF, 0xC5, 0x4A, 0xAE, 0x02, 0x2E, 0x91, 0x97, 0xE2, 0x20, 0x57, 0x05, 0xE3, 0x24, 0x1F, 0x02, 0xA2, 0x5A, 0x40, 0x4E, 0x45, 0x4D, 0x3E, 0x14, 0x44, 0x35, 0xCD, 0x4A, 0xAA, 0x4F, 0xF5, 0x47, 0xBA, 0xE1, 0xAD, 0x01, 0x2E, 0x91, 0x17, 0xA3, 0x24, 0xD7, 0x04, 0xD1, 0x91, 0xC8, 0xC9, 0x75, 0xC0, 0x25, 0xF2, 0x93, 0xA8, 0xC8, 0x75, 0x41, 0x74, 0x34, 0x52, 0x72, 0x03, 0x20, 0x3A, 0xAA, 0x7B, 0x92, 0xEA, 0x1F, 0x47, 0x41, 0x6E, 0x08, 0x5C, 0x22, 0x3F, 0x6A, 0x9E, 0xDC, 0x20, 0x88, 0x9E, 0xD7, 0xFD, 0x48, 0xC8, 0x35, 0xC1, 0x9F, 0xB5, 0xB2, 0xFA, 0x85, 0x21, 0x9F, 0x14, 0x26, 0x42, 0xF0, 0x35, 0x8D, 0x85, 0x57, 0xE3, 0x5A, 0xAD, 0xF9, 0x0F, 0x9E, 0xF1, 0x36, 0x7F, 0x8F, 0x2B, 0xC0, 0x37, 0xB5, 0xA8, 0xAF, 0xC2, 0xEB, 0x36, 0xDD, 0x97, 0x74, 0xF6, 0xF5, 0x91, 0x17, 0x9E, 0x3E, 0x7E, 0xE0, 0xD8, 0xE8, 0xB3, 0xB5, 0xEA, 0x8B, 0xC3, 0x27, 0xFB, 0x27, 0x76, 0x8C, 0x64, 0x71, 0x22, 0x02, 0xCF, 0xA8, 0x21, 0xE9, 0x6F, 0x55, 0x42, 0xF2, 0x43, 0x49, 0x3F, 0x4D, 0x73, 0x90, 0xFD, 0x8C, 0xF0, 0x04, 0x03, 0x54, 0xE8, 0xA1, 0x40, 0x26, 0x22, 0x70, 0x42, 0x92, 0xF4, 0xC7, 0x4D, 0xE9, 0x7C, 0x08, 0xEE, 0x93, 0xB4, 0x38, 0x3B, 0x5A, 0x65, 0x2F, 0x8F, 0x52, 0x66, 0x27, 0xDD, 0x74, 0x90, 0xC3, 0x8D, 0xE4, 0x91, 0x9E, 0x93, 0x24, 0x5D, 0xBF, 0xF0, 0xD6, 0x29, 0xE9, 0x37, 0x99, 0x90, 0xBC, 0x22, 0xE9, 0x87, 0x71, 0xCA, 0x74, 0x53, 0xA4, 0x40, 0x1B, 0x2D, 0x78, 0xA4, 0x36, 0x7F, 0x46, 0x5F, 0x06, 0x4A, 0xD2, 0xD5, 0xF7, 0xA8, 0x51, 0xBB, 0x73, 0x5D, 0x3A, 0x15, 0x82, 0xAF, 0x48, 0x9A, 0xBB, 0x41, 0x2F, 0xED, 0xB4, 0xE0, 0xE1, 0x92, 0xC2, 0x69, 0x66, 0x24, 0x58, 0x76, 0x88, 0x92, 0xAE, 0xBE, 0xC3, 0x28, 0x07, 0xA8, 0x7E, 0x71, 0x46, 0xBA, 0x16, 0x82, 0x96, 0x66, 0x24, 0x7D, 0x3D, 0x46, 0x1E, 0x0F, 0x07, 0x83, 0x69, 0x6E, 0xEC, 0x31, 0xB8, 0x14, 0xD8, 0x25, 0xA9, 0x71, 0x6D, 0x92, 0xA7, 0x78, 0x92, 0x41, 0x86, 0x5A, 0xF7, 0xCF, 0xCD, 0x48, 0x07, 0x43, 0xF2, 0x9C, 0xA4, 0xBB, 0xD3, 0xB4, 0xE3, 0x61, 0x47, 0x75, 0x10, 0xEE, 0xD5, 0xE2, 0x77, 0xE3, 0x0C, 0xF1, 0x18, 0x15, 0x76, 0xD1, 0xC7, 0xE0, 0x8D, 0x77, 0xA5, 0x8B, 0x21, 0x58, 0xD2, 0xBC, 0x1A, 0xF3, 0x93, 0x03, 0xB4, 0x6C, 0x7E, 0x6D, 0x3E, 0x78, 0xD4, 0xCF, 0xD1, 0xF5, 0xE3, 0x1B, 0xEC, 0xA1, 0x42, 0x2F, 0x9D, 0x14, 0xD9, 0x4E, 0xDF, 0xCB, 0x87, 0x1A, 0xF3, 0x7F, 0xA9, 0x18, 0x92, 0x97, 0x25, 0xCD, 0x9C, 0xA5, 0x0D, 0x77, 0xF3, 0x3B, 0xCC, 0xF2, 0x61, 0x26, 0x4B, 0x81, 0x2E, 0xBA, 0xE9, 0xA4, 0x40, 0x0E, 0x9F, 0x3C, 0x25, 0x06, 0x6E, 0x7F, 0x29, 0x4D, 0xC8, 0xE8, 0x55, 0x7D, 0x23, 0x49, 0x5A, 0xB8, 0xD5, 0x53, 0x24, 0xD3, 0xFC, 0x43, 0xB5, 0xB0, 0x71, 0xF1, 0x69, 0xA5, 0x8D, 0x1C, 0x19, 0xD2, 0xA4, 0xF1, 0xD9, 0x46, 0xDF, 0xFB, 0x27, 0xA4, 0x3B, 0xFA, 0x35, 0x5C, 0xBD, 0x0B, 0x33, 0xBF, 0x4C, 0x8E, 0xF5, 0x90, 0x8D, 0xE6, 0x15, 0xEC, 0x90, 0xC6, 0xC5, 0x25, 0x8D, 0x83, 0xC1, 0x0E, 0x7E, 0x55, 0x06, 0x67, 0xBF, 0x0F, 0xB0, 0xDF, 0xBF, 0xBD, 0x7C, 0xBA, 0x38, 0x4C, 0x99, 0x0E, 0x32, 0x51, 0x80, 0x16, 0x06, 0x83, 0x1D, 0x0E, 0xDC, 0x16, 0x16, 0x0E, 0x3E, 0x9D, 0xF4, 0x5D, 0x39, 0xBD, 0x38, 0x77, 0xEB, 0xF3, 0xB7, 0x4F, 0x52, 0x65, 0x98, 0x7E, 0x4A, 0xE4, 0xF1, 0xA2, 0x3A, 0x4A, 0x59, 0x0F, 0xFC, 0xB7, 0x82, 0x7B, 0x2C, 0x0D, 0xEC, 0x7D, 0x69, 0x94, 0x11, 0x86, 0x79, 0x9C, 0x47, 0xE8, 0xA5, 0x83, 0xA6, 0x5E, 0x4B, 0xEB, 0x2F, 0xA4, 0x76, 0x4A, 0x94, 0xD9, 0x43, 0x85, 0x9D, 0x74, 0x51, 0xC0, 0x8F, 0x6F, 0x84, 0xB3, 0x30, 0xA4, 0xF1, 0xC9, 0x53, 0x64, 0x1B, 0x45, 0x0A, 0xE1, 0xFE, 0x19, 0xE3, 0x5C, 0x6C, 0x61, 0x93, 0xC2, 0x23, 0x4B, 0x96, 0x0C, 0x2E, 0xA9, 0xF8, 0x3F, 0xA9, 0x58, 0x18, 0x6C, 0x1C, 0x9C, 0xAD, 0xF9, 0x7A, 0xB3, 0xDA, 0x52, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0xFA, 0xEF, 0xF5, 0x0F, 0x6B, 0xE8, 0x96, 0x73, 0x50, 0x00, 0x9A, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 }; EFI_STATUS EFIAPI InitializeFirmwareVolume2 ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ); #endif // FIRMWARE_VOLUME_INJECT_H