diff options
author | Tom Rini <trini@konsulko.com> | 2020-12-31 22:28:09 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-12-31 22:28:09 -0500 |
commit | c86b18074c9d40bfa63cda1068b6dfb810d4377d (patch) | |
tree | 391c7d8705d38ff7f059c242b514a2cc1fdecc97 /board/emulation/common/qemu_capsule.c | |
parent | 958b9e2482538ebfeb2e1161257603d4dec498cb (diff) | |
parent | c35df7c9e43eaf5f8bf2113a58ea257291988589 (diff) |
Merge tag 'efi-next' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi into next
Pull request for UEFI sub-system for next
* UEFI capsule authentication
* UEFI capsule update on QEMU ARM
* fsuuid command for FAT file system
* bug fixes
Diffstat (limited to 'board/emulation/common/qemu_capsule.c')
-rw-r--r-- | board/emulation/common/qemu_capsule.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/board/emulation/common/qemu_capsule.c b/board/emulation/common/qemu_capsule.c new file mode 100644 index 00000000000..f1d403501a9 --- /dev/null +++ b/board/emulation/common/qemu_capsule.c @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2020 Linaro Limited + */ + +#include <common.h> +#include <efi_api.h> +#include <efi_loader.h> +#include <env.h> +#include <fdtdec.h> + +DECLARE_GLOBAL_DATA_PTR; + +int efi_get_public_key_data(void **pkey, efi_uintn_t *pkey_len) +{ + const void *fdt_blob = gd->fdt_blob; + const void *blob; + const char *cnode_name = "capsule-key"; + const char *snode_name = "signature"; + int sig_node; + int len; + + sig_node = fdt_subnode_offset(fdt_blob, 0, snode_name); + if (sig_node < 0) { + EFI_PRINT("Unable to get signature node offset\n"); + return -FDT_ERR_NOTFOUND; + } + + blob = fdt_getprop(fdt_blob, sig_node, cnode_name, &len); + + if (!blob || len < 0) { + EFI_PRINT("Unable to get capsule-key value\n"); + *pkey = NULL; + *pkey_len = 0; + return -FDT_ERR_NOTFOUND; + } + + *pkey = (void *)blob; + *pkey_len = len; + + return 0; +} + +bool efi_capsule_auth_enabled(void) +{ + return env_get("capsule_authentication_enabled") != NULL ? + true : false; +} |