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 <g...@suse.com> --- 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 fb96f92a5..9b8360c98 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -1685,6 +1685,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 <http://www.gnu.org/licenses/>. + */ + +#include <grub/dl.h> + +#include <grub/hwfeatures-gcry.h> + +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 <http://www.gnu.org/licenses/>. + */ + +#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.51.0 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel