tree 04001a1d36871138cb390a00fec8ff59f0a2768d
parent fb906daf730a433b982db31993c3495e670edf0e
author Nathaniel Zietlow <nzietlow@google.com> 1743168932 +0000
committer Nathaniel Zietlow <nzietlow@google.com> 1743171703 -0700

libcrypta master: SRCREV bump ec0371ce...beba3737

Ana Mendes (3):
      Add crypta_lite_util to meson.build
      Add util/lite/hmac_drbg to meson.build
      Fix meson.build src file name

Zac Tang (1):
      Move sdbusplus::bus::new_bus creation into try catch block

gBMC Team (33):
      Fix references to location for definition of `enum sps_eeprom_lockdown_status`
      Move ecclesia/lib/root_of_trust out of third_party/ and into platforms/
      Implement crypto utilities that call security/util/lite primitives
      Add new PRODID_ERR_BAD_BLOB_KEY_HMAC ProdID error
      Update local variable names to follow style guide
      Add support to program and verify LCMXO2 FPGA on Segundo and Helga baseboard in transparent mode using host commands
      Export security/util/lite/hmac_drgb.*
      Update crypto_lite_util source of randomness
      Collect boot epochs from SPDM measurement logs.
      Add the functionality to enable DEBUG_EN during power. Also, set up the correct rstmon0_behavior. Also made some log messages shorter to pass ec_commands_test.
      Fix 1 ClangTidyBuild finding: * #includes not formatted according to style guide For more info see go/clang_tidy/checks/google3-build-include-order
      Update fetching ProdID blob to check for encrypted command support
      Automated g4 rollback of changelist 706894875.
      Resolve the following 17 technical debt issues:
      Refactor ProcessV2CiphertextMessage to facilitate secret wiping
      Resolve the following 7 technical debt issues:
      Fix MSC compiler error
      Initial key rotation host command header
      Limit the crypto_lite_util implementations to linux
      Create a Rust version of ProdID related constants.
      Unwrap protected key in the portable client
      Create common chunk library
      Scrub codenames from host_commands.h
      Scrub crypta_enums for platform names.
      Add the authorized host command to allow Haven to downgrade from Prod firmware to Dev firmware when PLATFORM_CONFIG.allow_rw_update_prod_to_dev is set to false.
      Rename crypta_dbg_printf() to crypta_err_printf()
      Remove EC memmap definitions.
      Rename crypta_dbg_printf_stderr.c to crypta_dbg_printf_std.c
      Delete crypta_dbg_printf_stderr.c and update references
      Rename crypta_dbg_printf_logerror.cc to crypta_dbg_printf_log.cc
      Implement crypta_info_printf
      Update key rotation headers to have a single host command for all key rotation operations and only reserve 4Kib in the internal flash for key rotation records.
      Fix debug print


Change-Id: I3b97b94b40880a526fff2cd6ecaa6834343dc5e2
Google-Bug-Id: 404295436
Signed-off-by: Nathaniel Zietlow <nzietlow@google.com>
Tested: N/A
Fusion-Link: fusion2 N/A
