- Versioned protocol:
  - Make shim and the bootloaders using it express how enlightened they
    are to one another, so we can stop earlier without tricks
  - Make EFI_LOADED_IMAGE_2 protocol and a LOAD_IMAGE protocol with
    LoadImage/CheckImage/StartImage.
- Implement EFI_CERT_X509_SHA{256,384,512} revocation checks
  - It doesn't necessarily have to include timestamp checking support
- Make the openssl code supply the Pkcs7Verify() API, and use the system
  one (instead) if it is available.
  - And make building it optional
- Get meb30's multiple-certs patch merged
- Hashing of option roms:
  - hash option roms and add them to MokListRT
  - probably belongs in MokManager
  - And some PCR?
- Ability to specify second stage as a device path
  - including vendor path that means "parent of this image's path"
  - including vendor path that means "this image"
  - including path that's like Fv() to embed images.
- Make all build options be able to be set in 'git config --local shim.OPTION'
  - Make the build dump those to stdout as well
- make debuginfo paths configurable
- make arch dependent names configurable
- Make it easier to avoid CryptPem
- Post process full path names out of __FILE__ / __BASE_FILE__ entries in
  the string table :/
- Reproducible builds:
  - Make build.log an artifact of building.
  - KEK for Mok.  (koike expressed an interest in working on this.)
  - Reorder builds to take hashes of mm, fb and insert those in shim
    instead of ephemeral certs
  - Make an easy strip+implant tool for our embedded cert lists
- Detection of fallback.efi boot loops
  - Some tablet devices seem to always boot the fallback path, ignoring
    boot variables, so we need to detect that.
  - fallback creates 2 variables, one volatile, one nonvolatile
  - if shim sees the nonvolatile variable but not the volatile one, it has
    been booted correctly after fallback has run, so it should remove the
    nonvolatile variable.
  - if fallback sees the nonvolatile variable, it is in a fallback boot
    loop, and should launch the next stage instead of rebooting.
  - This means the TPM extend chain on machines with broken BDS always
    looks like: shim -> fallback -> shim -> grub2 -> kernel, *except* on
    boots from removable media (i.e. install media without fallback),
    where it looks like shim -> grub2 -> kernel /once/.

# vim:filetype=mail:tw=74
