u-boot/lib
Tom Rini d5d9770f58 bootX measurements and measurement API moved to u-boot core
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEgWII69YpahbL5iK5gS8AYozs+qIFAmU7j50ACgkQgS8AYozs
 +qIh8w/+O4UjT0sG1NLwmyV7U1Ypk+EyYaE6wmSWzpsJLfH/YvtObBJOYRuXxRVh
 J9lkgCsw8Ct1ZNCrp8iVO+Dz1DtV8+QvTecrUHZqcOhTYDaqxXnlvEH2/EUhgo5T
 9a/ZaDtOP1mKz754C4G6G363+iRCvbcqDECeKg9VYxfWCo1cINOmqyQCqlGxFT+h
 PKiB5VzUpN/K/yiie+Hr42/+6XaykAUjUvEWeyKOsRmYY4lNiK22vG/puE42bFTh
 catXwTE2a7x+yzPKkdhR0UGvDUlIKET2kF6mi+pYN2h/cSUxWTzbP/OxcU9yJOnm
 qJiRZ+Woez1I7ul6ln4ci2kiWc3CTYFXfctwrBJPuJ/EO+2EEb3oHqG2S3Fc9VBZ
 N17flHW7XZHEQbNexlUhk9cRpCwRuSA5OJXwW+IZIuydgNeo3xF0iYvipbjkEGgW
 BBkt8PH+ivTLjEz6Gcmquvo1fHGJLHRIPg7DNb0phGHviuC0zlDJ7N5DZk0CpkiT
 36siV9xK4X6qvWkOTa6Ldw60e4tN9nv3VG30uXtPHi3XdOkKfNkyIuqO/5BkkQPt
 6yEc9IYXYoWNKDVUGme5+xszZp1sSvqltajG9VVNupt958dFyOSgS5aNa6B4UsWX
 3XfndP1/s2bezUHoQx5zjraapKVrqBFLkGeTlCDUD+mEgP440G8=
 =gvDs
 -----END PGP SIGNATURE-----

Merge tag 'tpm-next-27102023' of https://source.denx.de/u-boot/custodians/u-boot-tpm

bootX measurements and measurement API moved to u-boot core:

Up to now, U-Boot could perform measurements and EventLog creation as
described by the TCG spec when booting via EFI.

The EFI code was residing in lib/efi_loader/efi_tcg2.c and contained
both EFI specific code + the API needed to access the TPM, extend PCRs
and create an EventLog. The non-EFI part proved modular enough and
moving it around to the TPM subsystem was straightforward.

With that in place we can have a common API for measuring binaries
regardless of the boot command, EFI or boot(m|i|z), and contructing an
EventLog.

I've tested all of the EFI cases -- booting with an empty EventLog and
booting with a previous stage loader providing one and found no
regressions.  Eddie tested the bootX part.

Eddie also fixed the sandbox TPM which couldn't be used for the EFI code
and it now supports all the required capabilities. This had a slight
sideeffect in our testing since the EFI subsystem initializes the TPM
early and 'tpm2 init' failed during some python tests. That code only
opens the device though, so we can replace it with 'tpm2 autostart'
which doesn't error out and still allows you to perfom the rest of the
tests but doesn't report an error if the device is already opened.

There's a few minor issues with this PR as well but since testing and
verifying the changes takes a considerable amount of time, I prefer
merging it now.

Heinrich has already sent a PR for -master containing "efi_loader: fix
EFI_ENTRY point on get_active_pcr_banks" and I am not sure if that will
cause any conflicts, but in any case they should be trivial to resolve.

Both the EFI and non-EFI code have a Kconfig for measuring the loaded
Device Tree.  The reason this is optional is that we can't reason
when/if devices add random info like kaslr-seed, mac addresses etc in
the DT. In that case measurements are random, board specific and
eventually useless.  The reason it was difficult to fix it prior to this
patchset is because the EFI subsystem and thus measurements was brought
up late and DT fixups might have already been applied. With this
patchset we can measure the DT really early in the future.

Heinrich also pointed out that the two Kconfigs for the DTB measurements
can be squashed in a single one and that the documentation only explains
the non-EFI case.  I agree on both but as I said this is a sane working
version, so let's pull this first it's aleady big enough and painful to
test.
2023-10-27 19:27:29 -04:00
..
acpi Merge tag v2023.07-rc4 into next 2023-06-12 14:55:33 -04:00
aes tools: avoid OpenSSL deprecation warnings 2021-12-26 06:57:20 +01:00
at91 SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
blake2 lib: add BLAKE2 hash support 2022-01-18 08:31:02 -05:00
bzip2 cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
crypt lib: crypt: fix selecting a non-existent option 2022-10-11 15:40:48 -04:00
crypto common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
dhry global: Convert simple_strtoul() with decimal to dectoul() 2021-08-02 13:32:14 -04:00
ecdsa mkimage: ecdsa: password for signing from environment 2023-06-20 16:08:13 -04:00
efi Rename CONFIG_SYS_TEXT_BASE to CONFIG_TEXT_BASE 2022-10-31 11:01:31 -04:00
efi_driver efi_loader: make efi_delete_handle() follow the EFI spec 2023-07-28 11:36:37 +02:00
efi_loader efi_loader: fix EFI_ENTRY point on get_active_pcr_banks 2023-10-27 16:01:47 -04:00
efi_selftest efi_selftest: BitBlt test 2023-10-12 08:32:27 +02:00
fwu_updates FWU: Avoid showing an unselectable menu option 2023-09-19 11:36:25 -04:00
libavb libavb: Fix a warning with clang-15 2023-03-22 15:22:48 -04:00
libfdt fdt_region: move fdt_region.c to common/ from lib/libfdt/ 2020-04-26 14:23:55 -06:00
lzma lzma: Fix decompression speed regression 2023-07-14 15:21:08 -04:00
lzo SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
optee Revert "arm: imx: mx7: Move CONFIG_OPTEE_TZDRAM_SIZE from lib/optee" 2023-08-28 15:59:22 -04:00
rsa lib: rsa: cosmetic: fix building warning 2023-01-11 11:54:50 -05:00
zlib lib/zlib: Fix a bug when getting a gzip header extra field 2023-07-14 15:21:08 -04:00
zstd lib: zstd: update to latest Linux zstd 1.5.2 2023-01-18 19:04:17 -05:00
.gitignore lib: ignore oid_registry_data.c file 2020-01-22 17:47:57 -05:00
abuf.c abuf: Allow incrementing the size 2023-08-25 13:54:33 -04:00
addr_map.c addrmap: Support on sandbox 2022-07-26 02:30:56 -06:00
aes.c common: Drop display_options.h from common header 2022-08-10 13:46:55 -04:00
asm-offsets.c spl: Use SYS_MALLOC_F instead of SYS_MALLOC_F_LEN 2023-10-06 14:38:12 -04:00
asn1_decoder.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
bch.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
binman.c doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
bitrev.c lib: bitrev: Sync with Linux kernel v4.17 2018-09-18 00:01:18 -06:00
charset.c lib/charset: fix u16_strlcat() return value 2023-08-08 17:05:43 -04:00
circbuf.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
crc7.c lib: add crc7 from Linux 2011-01-18 23:38:08 +01:00
crc8.c common: Drop linux/crc8.h 2019-12-02 18:23:07 -05:00
crc16-ccitt.c crc16-ccitt: Rename file with CRC-16-CCITT implementation to crc16-ccitt.c 2022-04-21 14:32:40 -04:00
crc16.c crc16: Move standard CRC-16 implementation from ubifs to lib 2022-04-21 14:32:40 -04:00
crc32.c crc32: Drop duplicates crc header includes 2023-08-08 17:41:52 -04:00
crc32c.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
ctype.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
date.c lib/date: Make rtc_mktime and mktime64 Y2038-ready 2022-05-05 15:06:02 -04:00
display_options.c display_options: print_size: Fix order overflow 2022-09-23 15:13:18 -04:00
div64.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
elf.c video: Renname vbe.h to vesa.h 2022-08-12 08:14:23 -04:00
errno.c sandbox: errno: avoid conflict with libc's errno 2021-05-24 14:21:30 -04:00
errno_str.c lib: errno: sync error codes 2019-10-31 07:22:53 -04:00
fdt-libcrypto.c lib/rsa: Make fdt_add_bignum() available outside of RSA code 2021-04-14 15:06:08 -04:00
fdtdec.c treewide: unify the linker symbol reference format 2023-08-09 09:21:42 -04:00
fdtdec_common.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
fdtdec_test.c fdtdec: Support reserved-memory flags 2021-10-13 14:18:30 -07:00
getopt.c lib: Add getopt 2020-10-30 10:56:11 -04:00
gunzip.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
gzip.c global: Finish CONFIG -> CFG migration 2023-01-20 12:27:24 -05:00
hang.c serial: Rename SERIAL_SUPPORT to SERIAL 2021-09-04 12:26:01 -04:00
hash-checksum.c lib: parameter check in hash_calculate 2023-08-27 08:21:07 +02:00
hashtable.c Correct SPL use of ENV_WRITEABLE_LIST 2023-02-09 16:32:26 -05:00
hexdump.c hexdump: Allow ctrl-c to interrupt output 2021-06-08 11:39:09 -04:00
image-sparse.c lib: sparse: allocate FASTBOOT_MAX_BLK_WRITE instead of small number 2023-07-25 12:44:46 -04:00
initcall.c common: board_r: Remove unused NEEDS_MANUAL_RELOC code bits 2023-09-14 10:42:24 -04:00
Kconfig bootX measurements and measurement API moved to u-boot core 2023-10-27 19:27:29 -04:00
ldiv.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
linux_compat.c common: Drop net.h from common header 2020-05-18 17:33:31 -04:00
linux_string.c Make linux kernel string funcs available to tools 2012-12-13 11:46:07 -07:00
list_sort.c common: Drop linux/printk.h from common header 2023-09-24 09:54:57 -04:00
lmb.c lmb: remove overlapping region with next range 2023-10-09 15:24:31 -04:00
lz4.c lib/lz4: update LZ4 decompressor module 2022-03-15 16:19:29 -04:00
lz4_wrapper.c lz4: Fix compile warning comparison of distinct pointer types 2022-08-10 13:46:55 -04:00
Makefile fs: ext4: Fix building ext4 in SPL if write is enabled 2023-10-17 20:50:52 -04:00
md5.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
membuff.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
net_utils.c net: ipv6: Add string_to_ip6 converter 2022-12-05 12:47:16 -05:00
of_live.c dm: core: Add a way to convert a devicetree to a dtb 2023-10-06 14:38:13 -04:00
oid_registry.c lib: add oid registry utility 2019-12-06 16:44:20 -05:00
panic.c console: Use flush() before panic and reset 2023-03-22 12:51:08 -04:00
physmem.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
qsort.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
rand.c common: Move random-number functions into their own header 2019-12-02 18:23:07 -05:00
rational.c lib: rational: copy the rational fraction lib routines from Linux 2021-06-11 16:34:52 +05:30
rbtree.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
rc4.c rc4: mark key as const 2023-01-16 18:01:10 +08:00
rtc-lib.c lib: move rtc-lib.c to lib 2021-07-14 16:57:35 -04:00
semihosting.c lib: Add common semihosting library 2022-12-08 15:15:22 +08:00
sha1.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
sha256.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
sha512.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
slre.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
smbios-parser.c efi_loader: add SMBIOS table measurement 2021-10-26 17:58:14 +02:00
smbios.c smbios: error handling for invalid addresses 2021-07-24 10:49:51 +02:00
sscanf.c xen: Code style conformity 2020-08-24 14:11:31 -04:00
string.c Revert "lib: string: Fix strlcpy return value", fix callers 2023-08-08 17:05:43 -04:00
strto.c lib: Add a function to split a string into substrings 2023-01-23 18:11:39 -05:00
tables_csum.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
time.c time: Tidy up some unnecessary #ifdefs 2023-02-11 12:22:34 -05:00
tiny-printf.c net: Rename SPL_NET_SUPPORT to SPL_NET 2021-09-04 12:48:53 -04:00
tpm-common.c tpm: Check outgoing command size 2021-07-15 18:42:05 -04:00
tpm-utils.h doc: replace @return by Return: 2022-01-19 18:11:34 +01:00
tpm-v1.c tpm: Implement tpm_auto_start() for TPMv1.2 2023-02-28 09:44:33 +02:00
tpm-v2.c tpm: Support boot measurements 2023-10-27 13:14:47 +03:00
tpm_api.c tpm: Implement tpm_auto_start() for TPMv1.2 2023-02-28 09:44:33 +02:00
trace.c treewide: unify the linker symbol reference format 2023-08-09 09:21:42 -04:00
uuid.c uuid: Add ChromiumOS partition types 2023-08-25 17:55:19 -04:00
vsprintf.c lib: Suppress E when writing error-string output 2023-08-09 23:31:11 +08:00
xxhash.c lib: Add xxhash support 2019-05-05 08:48:50 -04:00