1# Changelog 2 3This file attempts to list significant changes to the Rust reference implementation of KeyMint, 4where "significant" means things that are likely to affect vendors whose KeyMint implementations are 5based on this codebase. 6 7- The `sign_info` field in `kmr_ta::device::Implementation` is now an `Option`, reflecting that 8 batch attestation is now optional (devices can be RKP-only, as indicated by the 9 `remote_provisioning.tee.rkp_only` system property). 10- The `BootInfo` structure passed to `kmr_ta::KeyMintTa::set_boot_info()` method did not make clear 11 what the contents of the `verified_boot_key` field should be: the key itself, or a SHA-256 hash of 12 the key. The KeyMint implementation has been modified to cope with either, using a SHA-256 hash 13 in places where the value is externally visible (key attestations and root-of-trust transfer) when 14 it appears that the full key has been provided. However, this requires that **vendor 15 implementations provide an implementation of the new `Sha256`** trait (from 16 <https://r.android.com/2786540>). A sample implementation based on BoringSSL is available in 17 `boringssl/src/sha256.rs`. 18- Addition of features to indicate support for different HAL versions. Vendors targetting the 19 current version of the KeyMint HAL **should ensure that all `hal_v2`, `hal_v3` etc. features are 20 enabled** in their build system (from <https://r.android.com/2777607>). Vendors using the Soong 21 build system are unaffected (because the Soong targets have been updated). 22