vboot: Add firmware management parameters

This adds RW firmware support for the optional firmware management
parameters TPM space.

System-level tests require CL:339262 to add cryptohome support.

BUG=chromium:601492
BRANCH=baytrail and newer platforms
TEST=make -j runtests
    Or better, COV=1 make, and then make sure all new code is covered.

    Additional manual tests.  MUST use a test image for these, because a
    test image has a root shell even with dev mode disabled:

    Set FWMP:
    crossystem clear_tpm_owner_request=1
    reboot
    cryptohome --action=tpm_take_ownership
    cryptohome --action=tpm_wait_ownership
    cryptohome --action=set_firmware_management_parameters --flags=1
    cryptohome --action=get_firmware_management_parameters

    Reboot system with power+refresh+esc
    Use Ctrl+D then Enter to enable dev mode.
    Goes to the TONORM screen.  
    Pressing Esc doesn't exit it.
    Pressing Enter turns dev mode off.
    Then let it boot.

    Just to make sure FWMP did get set persistently:
    cryptohome --action=get_firmware_management_parameters

    Now remove the FWMP
    crossystem clear_tpm_owner_request=1
    reboot
    cryptohome --action=tpm_take_ownership
    cryptohome --action=tpm_wait_ownership
    cryptohome --action=remove_firmware_management_parameters

    Reboot system with power+refresh+esc
    Use Ctrl+D then Enter to enable dev mode.
    Goes to the DEV screen.

Change-Id: I0ac31bb2c64671ee9c3c810174baaf02b4cce641
Original-Change-Id: Ifaf644c80809552d5961615be6017c2a332a034b
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/339234
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/356790
Reviewed-by: Darren Krahn <dkrahn@chromium.org>
Reviewed-by: Stefan Reinauer <reinauer@google.com>
12 files changed