From 06a5b88bafa0fbd6313125ffe956ad2b0f7dde76 Mon Sep 17 00:00:00 2001 From: Gary Lin Date: Wed, 22 Oct 2025 09:28:52 +0800 Subject: [PATCH] lib/hwfeatures-gcry: Introduce functions to manage hardware features This commit introduces the generic functions to manage the hardware features in libgcrypt. These functions are stubs for future platform-specific implementations: - grub_gcry_hwf_enabled() returns __gcry_use_hwf which indicates if the hardware features are enabled specifically by grub_enable_gcry_hwf(), - grub_enable_gcry_hwf() invokes the architecture specific enablement functions and sets __gcry_use_hwf to true, - grub_reset_gcry_hwf() invokes the architecture specific reset functions and sets __gcry_use_hwf to false. Signed-off-by: Gary Lin Reviewed-by: Daniel Kiper --- Makefile.util.def | 1 + grub-core/Makefile.core.def | 1 + grub-core/lib/hwfeatures-gcry.c | 43 +++++++++++++++++++++++++++++++++ include/grub/hwfeatures-gcry.h | 26 ++++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 grub-core/lib/hwfeatures-gcry.c create mode 100644 include/grub/hwfeatures-gcry.h diff --git a/Makefile.util.def b/Makefile.util.def index f8d4ae7d3..0196911e6 100644 --- a/Makefile.util.def +++ b/Makefile.util.def @@ -36,6 +36,7 @@ library = { common = grub-core/kern/misc.c; common = grub-core/kern/partition.c; common = grub-core/lib/crypto.c; + common = grub-core/lib/hwfeatures-gcry.c; common = grub-core/lib/json/json.c; common = grub-core/disk/luks.c; common = grub-core/disk/luks2.c; diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def index 2b84d76d2..3173e66be 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -1720,6 +1720,7 @@ module = { module = { name = crypto; common = lib/crypto.c; + common = lib/hwfeatures-gcry.c; extra_dist = lib/libgcrypt-grub/cipher/crypto.lst; }; diff --git a/grub-core/lib/hwfeatures-gcry.c b/grub-core/lib/hwfeatures-gcry.c new file mode 100644 index 000000000..652e67c43 --- /dev/null +++ b/grub-core/lib/hwfeatures-gcry.c @@ -0,0 +1,43 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2025 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#include + +#include + +GRUB_MOD_LICENSE ("GPLv3+"); + +static bool __gcry_use_hwf = false; + +bool +grub_gcry_hwf_enabled (void) +{ + return __gcry_use_hwf; +} + +void +grub_enable_gcry_hwf (void) +{ + __gcry_use_hwf = true; +} + +void +grub_reset_gcry_hwf (void) +{ + __gcry_use_hwf = false; +} diff --git a/include/grub/hwfeatures-gcry.h b/include/grub/hwfeatures-gcry.h new file mode 100644 index 000000000..2884f054a --- /dev/null +++ b/include/grub/hwfeatures-gcry.h @@ -0,0 +1,26 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2025 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see . + */ + +#ifndef HWF_GCRY_HEADER +#define HWF_GCRY_HEADER 1 + +extern bool grub_gcry_hwf_enabled (void); +extern void grub_enable_gcry_hwf (void); +extern void grub_reset_gcry_hwf (void); + +#endif /* HWF_GCRY_HEADER */ -- 2.47.3