| // Copyright 2023 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef INIT_STARTUP_UEFI_STARTUP_IMPL_H_ |
| #define INIT_STARTUP_UEFI_STARTUP_IMPL_H_ |
| |
| #include <string> |
| |
| #include <base/files/file_path.h> |
| |
| #include "init/startup/startup_dep_impl.h" |
| #include "init/startup/uefi_startup.h" |
| |
| namespace startup { |
| |
| // Path of the system efi directory (relative to the root dir). This |
| // directory will only exist when booting from UEFI firmware. |
| constexpr char kSysEfiDir[] = "sys/firmware/efi"; |
| |
| // Mount point for efivarfs (relative to the root dir). This directory |
| // is used to read and write UEFI variables. |
| constexpr char kEfivarsDir[] = "sys/firmware/efi/efivars"; |
| |
| // Mount point for EFI System Partition (relative to the root dir). |
| constexpr char kEspDir[] = "efi"; |
| |
| // Label of the EFI System Partition. |
| constexpr char kEspLabel[] = "EFI-SYSTEM"; |
| |
| // File system name used for mounting efivarfs. |
| constexpr char kFsTypeEfivarfs[] = "efivarfs"; |
| |
| // File system name used for mounting the EFI System Partition. |
| constexpr char kFsTypeVfat[] = "vfat"; |
| |
| // Vendor GUID used for the dbx UEFI variable. This is defined in the |
| // UEFI Specification under the "Device Signature Database Update" section. |
| constexpr char kEfiImageSecurityDatabaseGuid[] = |
| "d719b2cb-3d3a-4596-a3bc-dad00e67656f"; |
| |
| class UefiDelegateImpl : public UefiDelegate { |
| public: |
| UefiDelegateImpl(libstorage::Platform* platform_, |
| const base::FilePath& root_dir); |
| |
| bool IsUefiEnabled() const override; |
| std::optional<UserAndGroup> GetFwupdUserAndGroup() const override; |
| bool MountEfivarfs(const UserAndGroup& fwupd) override; |
| bool MakeUefiVarMutable(const std::string& vendor, |
| const std::string& name) override; |
| void MakeEsrtReadableByFwupd(const UserAndGroup& fwupd) override; |
| |
| private: |
| libstorage::Platform* platform_; |
| const base::FilePath root_dir_; |
| }; |
| |
| } // namespace startup |
| |
| #endif // INIT_STARTUP_UEFI_STARTUP_IMPL_H_ |