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