summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* sign_official_build.sh: dump more md5sum on bios.binstabilize-nocturne.10646.BYH Lin2018-05-021-0/+31
| | | | | | | | | | | | | | | | Dumping md5sum information along the way of signing bios.bin to shed some lights on the signing process in order to debug the first slot issue. BUG=b:77252439 TEST=None BRANCH=None Change-Id: I5083d6db2eee42c5cc9588606f95bbffba0c00ff Reviewed-on: https://chromium-review.googlesource.com/1036802 Commit-Ready: YH Lin <yueherngl@chromium.org> Tested-by: YH Lin <yueherngl@chromium.org> Reviewed-by: C Shapiro <shapiroc@google.com>
* cgpt: Remove unnecessary 512-byte sector check and minimum lba count checks.Sam Hurst2018-05-012-11/+48
| | | | | | | | | | | | | | | | This was an oversight from a previous CL:1007498 that removed the 512 block size restrictions. BUG=b:77540192 BRANCH=none TEST=manual make runtests passed. Change-Id: I75b3ffebcc25afdde3774bcbb4a9600215a04436 Reviewed-on: https://chromium-review.googlesource.com/1031193 Commit-Ready: Sam Hurst <shurst@google.com> Tested-by: Sam Hurst <shurst@google.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
* gbb_flags_common.sh: Add GBB_FLAG_ENABLE_UDC to help textFurquan Shaikh2018-04-261-0/+1
| | | | | | | | | | | | | BUG=b:78577893 BRANCH=None TEST=None Change-Id: I1905f53aadb0ae882dc4cf9f4fd214b4ccdfc440 Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://chromium-review.googlesource.com/1029429 Commit-Ready: Furquan Shaikh <furquan@chromium.org> Tested-by: Furquan Shaikh <furquan@chromium.org> Reviewed-by: Duncan Laurie <dlaurie@google.com>
* image_signing: clean up UEFI signing/verifying codeEdward Hyunkoo Jee2018-04-255-51/+74
| | | | | | | | | | | | | | | | Follow up the code review comments on CL:995175, which was merged as 1493e938e45535f86b7132a83123c6319eacb217 ("image_signing: sign UEFI binaries") BUG=b:62189155 TEST=See CL:*613656 BRANCH=none Change-Id: Ic01bfbbfe39fbfb85c0f313ab62bbcd3e2fbb9a3 Reviewed-on: https://chromium-review.googlesource.com/1024919 Commit-Ready: Edward Jee <edjee@google.com> Tested-by: Edward Jee <edjee@google.com> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* keygeneration: clean up for UEFI key generation codeEdward Hyunkoo Jee2018-04-256-46/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow up the code review comments on CL:995174, which was merged as 7dff0105d66fa597741604cf1652a72c7a8463ac ("keygeneration: add support for UEFI key generation") BUG=b:62189155 TEST=With CL:*613656, set up a local signer and tested key generation and signing. Also, manually ran the scripts like the following. $ export PATH=$(readlink -f ../../../cros-signing/signer/signingtools-bin):$PATH $ cd scripts/keygeneration && ./create_new_keys.sh --uefi --output ./key $ chmod -R u+w key/uefi $ ./uefi/increment_kek_key.sh key/uefi $ ./uefi/increment_kek_key.sh key/uefi $ ./uefi/increment_db_child_key.sh key/uefi $ ./uefi/increment_db_child_key.sh key/uefi $ ./uefi/increment_db_child_key.sh key/uefi $ ./uefi/increment_db_key.sh key/uefi $ ./uefi/increment_db_child_key.sh key/uefi $ ./uefi/increment_db_key.sh key/uefi $ ./uefi/increment_db_child_key.sh key/uefi $ ./uefi/increment_db_child_key.sh key/uefi $ openssl x509 -noout -subject -in key/uefi/db/db.children/db_child.pem BRANCH=none Change-Id: I6c0cd47914a0a77970cd074fe087bba33c16cffc Reviewed-on: https://chromium-review.googlesource.com/1024918 Commit-Ready: Edward Jee <edjee@google.com> Tested-by: Edward Jee <edjee@google.com> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* keygeneration: drop board name from UEFI key generation scriptsEdward Hyunkoo Jee2018-04-257-48/+25
| | | | | | | | | | | | | | | | Follow up the code review comments on CL:995174, which was merged as 7dff0105d66fa597741604cf1652a72c7a8463ac ("keygeneration: add support for UEFI key generation") BUG=b:62189155 TEST=See the following commit. BRANCH=none Change-Id: Id642029010e4eea51ec1f7d23240678f3f07e872 Reviewed-on: https://chromium-review.googlesource.com/1024917 Commit-Ready: Edward Jee <edjee@google.com> Tested-by: Edward Jee <edjee@google.com> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Update Android signing to support signature scheme v2Victor Hsieh2018-04-231-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | Signature Scheme V2 was introduced in N. TEST=(prepare) 1. Produce A.img by running the original sign_android_image.sh on a test image. 2. Produce B.img by running the new sign_android_image.sh on the same image. TEST=Check Settings.apk with apksigner. Saw only v1 signature exists with A.img, and only v2 exists with B.img, as expected. Certificates on both APKs have the same fingerprint. TEST=Login with A to create a new /data state, then login with B. Platform apps still run. No signature error in logcat. BRANCH=none BUG=b:67942659 Change-Id: Ibabc399563bfdc92836856a377997405cc660483 Reviewed-on: https://chromium-review.googlesource.com/993153 Commit-Ready: Victor Hsieh <victorhsieh@chromium.org> Tested-by: Victor Hsieh <victorhsieh@chromium.org> Reviewed-by: Bernie Thompson <bhthompson@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* whiskers: Add script to generate keypair for signing FWPatrick Berny2018-04-201-0/+16
| | | | | | | | | | | | | | | | | Whiskers decided to leverage the key format of Hammer therefore this script calls Hammer's one to generate a key pair and renames them to key_whiskers*. BUG=b:78254017 TEST=Run this script in the chroot and verify the generated key pair. BRANCH=None Change-Id: Iae7097a3b2da1b134fa1a986c669704bbbaca4e9 Reviewed-on: https://chromium-review.googlesource.com/1018591 Commit-Ready: Patrick Berny <pberny@chromium.org> Tested-by: Patrick Berny <pberny@chromium.org> Reviewed-by: Jason Clinton <jclinton@chromium.org> Reviewed-by: Bob Moragues <moragues@chromium.org>
* image_signing: sign UEFI binariesEdward Hyunkoo Jee2018-04-185-11/+343
| | | | | | | | | | | | BUG=b:62189155 TEST=See CL:*601769 BRANCH=none Change-Id: Id9569616bae0d5f44c1c96e18522ace244a5aae8 Reviewed-on: https://chromium-review.googlesource.com/995175 Commit-Ready: Edward Jee <edjee@google.com> Tested-by: Edward Jee <edjee@google.com> Reviewed-by: Jason Clinton <jclinton@chromium.org>
* devkeys: add test keys for UEFIEdward Hyunkoo Jee2018-04-188-0/+144
| | | | | | | | | | | | | | | | | | Generated with the following commands. $ mkdir tests/devkeys/uefi $ ./scripts/keygeneration/uefi/create_new_uefi_keys.sh tests/devkeys/uefi lakitu $ rm -f tests/devkeys/uefi/{pk,kek,db,dbx}/*.rsa BUG=b:62189155 TEST=See the following commit. BRANCH=none Change-Id: I996081c30fbfa89d07dba9252128dc214530e71f Reviewed-on: https://chromium-review.googlesource.com/994179 Commit-Ready: Edward Jee <edjee@google.com> Tested-by: Edward Jee <edjee@google.com> Reviewed-by: Jason Clinton <jclinton@chromium.org>
* keygeneration: add support for UEFI key generationEdward Hyunkoo Jee2018-04-187-0/+503
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | BUG=b:62189155 TEST=With CL:*601769, set up a local signer and tested key generation and signing. Also, manually ran the scripts like the following. $ export PATH=$(readlink -f ../../../cros-signing/signer/signingtools-bin):$PATH $ cd scripts/keygeneration && ./create_new_keys.sh --uefi --board lakitu --output ./key $ ./uefi/increment_kek_key.sh key/uefi lakitu $ ./uefi/increment_kek_key.sh key/uefi lakitu $ ./uefi/increment_db_child_key.sh key/uefi lakitu $ ./uefi/increment_db_child_key.sh key/uefi lakitu $ ./uefi/increment_db_child_key.sh key/uefi lakitu $ ./uefi/increment_db_key.sh key/uefi lakitu $ ./uefi/increment_db_child_key.sh key/uefi lakitu $ ./uefi/increment_db_key.sh key/uefi lakitu $ ./uefi/increment_db_child_key.sh key/uefi lakitu $ ./uefi/increment_db_child_key.sh key/uefi lakitu $ openssl x509 -noout -subject -in key/uefi/db.children/db_child.pem BRANCH=none Change-Id: I9276269a2a66c57f4e99deafec3b90d6cbf52244 Reviewed-on: https://chromium-review.googlesource.com/995174 Commit-Ready: Edward Jee <edjee@google.com> Tested-by: Edward Jee <edjee@google.com> Reviewed-by: Jason Clinton <jclinton@chromium.org>
* Add new NV and GBB flag to control UDCDuncan Laurie2018-04-177-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | This change adds a new NV and GBB flag for controlling USB device mode behavior, adding an additional step to enable UDC on systems that support it. Users of this feature will need to first enable developer mode and then enable UDC separately by running "crossystem dev_enable_udc=1". Alternatively those without write protect enabled can set a GBB flag to have UDC enabled by default while in developer mode. This is based on the security reviewed proposal at https://docs.google.com/document/d/1b6avd9xvhvljN_NKtctWrClj4mSYZ_uPmp7MmAnPwqs BUG=b:74339386 BRANCH=poppy TEST=manual testing on Eve device Change-Id: I6f440320f28b033639b53246d3034bc8acc37a33 Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://chromium-review.googlesource.com/1010769 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Furquan Shaikh <furquan@chromium.org>
* crossytem:Add GLK GPIO IDShaunak Saha2018-04-161-0/+5
| | | | | | | | | | | | BUG=b:78009842 Change-Id: I50de5d69309a25411c907425675eace330de7615 Signed-off-by: Shaunak Saha <shaunak.saha@intel.com> Signed-off-by: Hannah Williams <hannah.williams@intel.com> Reviewed-on: https://chromium-review.googlesource.com/742490 Commit-Ready: Aaron Durbin <adurbin@chromium.org> Tested-by: Hannah Williams <hannah.williams@intel.corp-partner.google.com> Reviewed-by: Furquan Shaikh <furquan@chromium.org>
* tpm_lite: tpmc command to check owner authMattias Nissler2018-04-132-1/+23
| | | | | | | | | | | | | | | | | | | | | Add a command that checks whether the well-known secret (SHA1 hash of 20 zero bytes) works for owner authentication. This is accomplished by sending a DefineSpace command for TPM_NV_INDEX_TRIAL, which will trigger auth checks but not actually allocate an NVRAM space. Successful command execution thus indicates that authorization was successful. tpmc exposes the status via its exit status. This will be used in the tpm-firmware-updater driver script to verify that the TPM is in upgradable state. BRANCH=None BUG=chromium:788719 TEST=compiles Change-Id: I630831127e0e01186650412a92643c2153fbe2ee Reviewed-on: https://chromium-review.googlesource.com/978171 Trybot-Ready: Mattias Nissler <mnissler@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* tpm_lite: Add TlclGetSpaceInfoMattias Nissler2018-04-136-26/+218
| | | | | | | | | | | | | | | | The new TlclGetSpaceInfo function returns more detailed information about a defined NVRAM space. The existing TlclGetPermissions function is now using TlclGetSpaceInfo behind the scenes. BRANCH=None BUG=chromium:788719 TEST=New unit tests. Change-Id: I6c4f490d575788b696fd742a69e81e2767ec50f1 Reviewed-on: https://chromium-review.googlesource.com/937705 Trybot-Ready: Mattias Nissler <mnissler@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* tpm_lite: Add missing NVRAM attribute constants.Mattias Nissler2018-04-132-7/+32
| | | | | | | | | | | | | | | | | Add the remaining constants for NVRAM space attributes. The code previously only declared the ones required in vboot_reference, but that led to other code growing its own ad-hoc declarations for missing constants. Just declare them all to simplify things. BRANCH=None BUG=chromium:788719 TEST=compiles Change-Id: I749ae5e4dc1b2ba56121fe42fd136b505d8cae80 Reviewed-on: https://chromium-review.googlesource.com/937704 Trybot-Ready: Mattias Nissler <mnissler@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org> Reviewed-by: Mattias Nissler <mnissler@chromium.org>
* tpm_lite: Support delegation family functionality.Mattias Nissler2018-04-136-21/+223
| | | | | | | | | | | | | | | | | | | Adds two new functions and their corresponding TPM commands to create delegation families and list the delegation family table, respectively. This isn't sufficient to meaningfully manage delegation families, but good enough for the (ab)use case of storing flags in delegation family labels, which we are going to do in order to strengthen encrypted stateful to guarantee recreation of the encrypted file system after TPM clear.. BRANCH=None BUG=chromium:788719 TEST=new unit tests Change-Id: I31beb662784a8fff450b485c7cabc553944d7772 Reviewed-on: https://chromium-review.googlesource.com/817199 Trybot-Ready: Mattias Nissler <mnissler@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* tpm_lite: Add more general DefineSpaceEx functionMattias Nissler2018-04-138-34/+494
| | | | | | | | | | | | | | | | | Add a TlclDefineSpaceEx function that allows to pass additional parameters when creating NVRAM spaces, i.e. owner authorization as well as PCR bindings. BRANCH=None BUG=chromium:788719 TEST=New unit tests. Change-Id: I73404c05528a89604fea3bcb1f00741fb865ba77 Reviewed-on: https://chromium-review.googlesource.com/814114 Reviewed-by: Andrey Pronin <apronin@chromium.org> Trybot-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Trybot-Ready: Mattias Nissler <mnissler@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org>
* tpm_lite: Implement TakeOwnership supportMattias Nissler2018-04-138-3/+488
| | | | | | | | | | | | | | | | | | Add the ability to take TPM ownership. This requires two new commands: TPM_OIAP to start an auth session and TPM_TakeOwnership to establish ownership. TPM_TakeOwnership requires an auth session and proper command authentication to work, which is also added. BRANCH=None BUG=chromium:788719 TEST=new unit tests Change-Id: Ib70144eedb0b1c7c43b26c06529d33ccbaa51a0e Reviewed-on: https://chromium-review.googlesource.com/790414 Reviewed-by: Andrey Pronin <apronin@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org> Trybot-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Trybot-Ready: Mattias Nissler <mnissler@chromium.org>
* tpm_lite: Implement ReadPubek command.Mattias Nissler2018-04-1310-6/+364
| | | | | | | | | | | | | | | | Add a TlclReadPubek library function to read the public endorsement key. BRANCH=None BUG=chromium:788719 TEST=New unit tests. Change-Id: I5f23b76b88198d656f4ba5782d2b4f25aaa082b1 Reviewed-on: https://chromium-review.googlesource.com/790413 Reviewed-by: Andrey Pronin <apronin@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org> Trybot-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Trybot-Ready: Mattias Nissler <mnissler@chromium.org>
* cgpt: Remove hard coded 512 block size.Sam Hurst2018-04-129-104/+165
| | | | | | | | | | | | | | | | | | | | Remove 512 sector block size restriction so that UFS, with sector block size 4096 or greater, can be used. The sector block size is queried from the kernel with ioctl(BLKSSZGET) or queried from depthcharge with VbExDiskGetInfo(). BUG=b:77540192 BRANCH=none TEST=manual make runtests passed. Tested firmware on Kevin and boot to kernel from disk. Executed cgpt show /dev/mmcblk0 on eve device and verified output was correct. Should be tested on device with sector block size greater than 512. Change-Id: I8165c8ee4da68180eecc8d12b3fb501cc5c60a5d Reviewed-on: https://chromium-review.googlesource.com/1007498 Commit-Ready: Sam Hurst <shurst@google.com> Tested-by: Sam Hurst <shurst@google.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
* tpm_lite: Introduce cursor read helpersstabilize-meowth-10574.Bstabilize-10569.BMattias Nissler2018-04-092-47/+49
| | | | | | | | | | | | | | | | Add helper functions that read a number in TPM byte order and advance the buffer pointer in a single operation. Replace instances of this pattern with call to the helpers. No functional changes. BRANCH=None BUG=None TEST=existing unit tests Change-Id: I96d866893ec875aafc978cbe2a55ea7f9f27542c Reviewed-on: https://chromium-review.googlesource.com/985832 Commit-Ready: Mattias Nissler <mnissler@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* tpm_lite: Drop FOR_TEST for tlcl.cMattias Nissler2018-04-093-24/+3
| | | | | | | | | | | | | | | | | | firmware/lib/tpm_lite.c turned off CHROMEOS_ENVIRONMENT if FOR_TEST is enabled, resulting in a situation where code specific to CHROMEOS_ENVIRONMENT couldn't be tested. Fortunately, AFAICS tlcl_tests does not use FOR_TEST for anything useful any longer, so just drop it. BRANCH=None BUG=None TEST=FEATURES=test emerge-$BOARD -v1 vboot_reference Change-Id: I7f08ef6d2343bc60a6d2982c3cc7bae0507d94d5 Reviewed-on: https://chromium-review.googlesource.com/937703 Commit-Ready: Mattias Nissler <mnissler@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Add a script to generate a keypair for signing wand firmware.Marco Chen2018-04-021-0/+16
| | | | | | | | | | | | | | | | Wand decided to leverage the key format of Hammer therefore this script calls Hammer's one to generate a key pair and renames them to key_wand*. BUG=b:73799441 TEST=Run this script in the chroot and verify the generated key pair. BRANCH=None Change-Id: Id2749d78e0632bee66c09c4ee7aa1930534157b7 Reviewed-on: https://chromium-review.googlesource.com/991532 Commit-Ready: Marco Chen <marcochen@chromium.org> Tested-by: Marco Chen <marcochen@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
* crossystem: Clarify help string for dev_default_bootNicolas Boichat2018-04-021-1/+1
| | | | | | | | | | | | | | The default value is "disk", and should be mentionned as an option. BRANCH=none BUG=none TEST=emerge-poppy -av vboot_reference Change-Id: I9ddfe155f1dbaf019b74c1bab7b5ce5539545e7f Reviewed-on: https://chromium-review.googlesource.com/989375 Commit-Ready: Nicolas Boichat <drinkcat@chromium.org> Tested-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* ec_sync: Go to recovery on aux fw update failureDuncan Laurie2018-03-304-19/+63
| | | | | | | | | | | | | | | | | | | | | | | | | If an aux firmware update fails enter recovery with a specific reason code so we can identify systems that fail. Also handle the case where the update succeeds and requests a cold reset of the EC, first clearing the oprom flag if necessary in order to prevent a second reset. Unit test was added to check recovery reason for aux firmware update failure. BUG=b:74336712 BRANCH=eve TEST=manual: force update to fail and ensure it goes to recovery mode, and after successful update check that the option rom flag is cleared before the EC reset happens. Unit tests udpated and 'make runtests' passes. Change-Id: I35a93892a0f8bb16eac0925ada5dfbc5c3144f8d Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://chromium-review.googlesource.com/959671 Reviewed-by: Caveh Jalali <caveh@google.com> Reviewed-by: Furquan Shaikh <furquan@chromium.org>
* ec_sync: Add recovery reason for aux update failureDuncan Laurie2018-03-282-0/+5
| | | | | | | | | | | | | | | | | | Add a distinct recovery reason for aux firmware update failures so we have some visibility into failures in eventlog. This is used in a subsequent commit. BUG=b:74336712 BRANCH=eve TEST=manual: force update failure and ensure device goes to recovery with this reason Change-Id: I4b215444592b7c31cd25d59ad2a52b85d504e3bf Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://chromium-review.googlesource.com/959669 Reviewed-by: Furquan Shaikh <furquan@chromium.org> Reviewed-by: caveh jalali <caveh@chromium.org>
* firmware: tpm2_lite: fix command/response code typeAndrey Pronin2018-03-272-3/+2
| | | | | | | | | | | | | | | | Responses and commands share the same header structure. The tpm_code field corresponds to TPM_CC in one case and TPM_RC in the other. Make it uint32_t (instead of TPM_CC) in the structure to avoid confusion when dealing with responses. BUG=chromium:825894 BRANCH=none TEST=build Change-Id: I07821f35b0f539a863ee97c0a08c141d0533a4de Signed-off-by: Andrey Pronin <apronin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/981111 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* firmware: tpm2_lite: propagate actual errorsAndrey Pronin2018-03-273-158/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | Propagate the actual error - a non-successful response code from the tpm or communication/serializing failure - to the caller of the Tlcl functions in TPM 2.0 case. Currently, the callers only have special processing for the error codes from TCG TPM 1.2 range, which are never returned in case of communication or serialization failures or from the actual TPM 2.0. (The only case of mapping TPM 2.0 error codes to TPM_E_BADINDEX is preserved in this CL.) Thus, changing the actual values returned from the functions won't change any current behavior in the calling layers. This CL is a preparatory work for adding special processing for communication errors in mount-encrypted. BUG=chromium:702724 BRANCH=none TEST=build; test that tpmc getvf, tpmc read still work. Change-Id: I96b20e7285e83f0038abc01e4b7175c938867e7d Signed-off-by: Andrey Pronin <apronin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/977225 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* firmware: move TPM_E constants to tss_constants.hAndrey Pronin2018-03-263-23/+21
| | | | | | | | | | | | | | | | | | | | | | | | The constants from the list defined in tss_constants.h should be the same values regardless of TPM 1.2 vs 2.0 spec version since AP firmware checks for those exact values in certain cases. Stop defining them separately for TPM 1.2 and 2.0 and move to the common tss_constants.h. Before the change, even though TPM_E constants were defined in TPM spec dependent files, they were defined identically. So, no changes to the behavior are caused by this CL. This is a preparatoryy change to fixing error handling for Tlcl and mount-encrypted. BUG=chromium:702724 BRANCH=none TEST=emerge vboot_reference Change-Id: Ib7a5f41ca55579d053ba63ce07f4bed1394e7ae9 Signed-off-by: Andrey Pronin <apronin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/976871 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* Add GBB_FLAG_DISABLE_FWMP documentation to set_gbb_flags.shJulius Werner2018-03-261-0/+1
| | | | | | | | | | | | | | Looks like we forgot to update the help text for set_gbb_flags.sh when adding the DISABLE_FMWP flag. This patch fixes that. BRANCH=None BUG=None TEST=None Change-Id: Iae45e151ae786565f6a1a695a2e3c3d01f8c1d0a Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/976801 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Add new GBB_FLAG_FORCE_MANUAL_RECOVERYJulius Werner2018-03-2610-14/+46
| | | | | | | | | | | | | | | | | | | | | | | | It seems like there are some testing use cases where we want the device to boot into the recovery installer but it is impractical to fully simulate a user-triggered recovery. This has become impossible with the recent change to always require manual recovery to boot an image, even when the developer mode switch is enabled (CL:924458). This patch adds a new GBB flag to support this use case. When the flag is set, all recovery mode is manual recovery mode, regardless of wheter the developer mode switch is on or not. Since the GBB_FLAG_ENABLE_SERIAL was killed off before it ever really worked anyway, we can safely reuse the bit reserved for it. BRANCH=None BUG=None TEST=make runtests, manually confirmed on Kevin Change-Id: I4f51dfd20b4ff04c522f53596896dccbceee52dc Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/976660 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* arc: Enable packages cache generation during sign stage.factory-poppy-10509.BYury Khmel2018-03-201-1/+45
| | | | | | | | | | | | | | | This regenerates packages cache during signing the image once apks are changed due timestamp and key update. TEST=Build image, sign it useing devkeys and deploy to device. Perform user sign-in and enable ARC. Test logcat and everything is clear. BUG=b:74108152 Change-Id: I4809a1f87c8b8f52094054dbb4c8ba3e059aee89 Reviewed-on: https://chromium-review.googlesource.com/948064 Commit-Ready: Yury Khmel <khmel@google.com> Tested-by: Yury Khmel <khmel@google.com> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* crossystem: Fix mosys data length checkRandall Spangler2018-03-111-2/+2
| | | | | | | | | | | | | | | CL:942031 introduced a check for the length of output returned by mosys. If the output has a trailing newline, then the check failed. Just make sure we get at least as much data as we expect. BUG=b:74439800 BRANCH=none TEST=run crossystem on bob; no 'mosys returned hex data' errors Change-Id: If678b201185dbda869e4e17abae314470f5cef4a Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/958286 Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
* crossystem: Fix null pointer dereference on VMsRandall Spangler2018-03-081-2/+2
| | | | | | | | | | | | | | | Check the result of VbSharedDataRead() before dereferencing it. BUG=chromium:789276,chromium:819695 BRANCH=none TEST=make runtests Change-Id: I1b1cc90bdc2fca61a9aad6b02e8b7e1f6a919797 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/954712 Commit-Ready: Keith Haddow <haddowk@chromium.org> Reviewed-by: Keith Haddow <haddowk@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* firmware: remove unused vboot1 APIsRandall Spangler2018-03-082-243/+6
| | | | | | | | | | | | | | | As we've refactored the code over the last few years, there are some dangling features which are no longer used. Remove the code for them. BUG=chromium:611535 BRANCH=none TEST=make runtests; build and boot bob CQ-DEPEND=CL:954224 Change-Id: Id4f3caa0581ce68465ea92e3eeedab501fb6b1aa Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/954354 Reviewed-by: Julius Werner <jwerner@chromium.org>
* crossystem: add support for CNL gpiochipVincent Palatin2018-03-071-0/+1
| | | | | | | | | | | | | | | | | On CNL systems, the pinctrl (gpiochip) driver label is "INT34BB:00". Declare it properly. BRANCH=none BUG=b:71722386 TEST=on Meowth, run 'crossystem wpsw_cur' and see '0' rather than an error. Change-Id: I74f3cce19afac9a76e8d3071426e79eb9bb11db9 Reviewed-on: https://chromium-review.googlesource.com/951789 Commit-Ready: Vincent Palatin <vpalatin@chromium.org> Tested-by: Vincent Palatin <vpalatin@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Benson Leung <bleung@chromium.org>
* 2lib: Add support for 64-byte nvstorage recordRandall Spangler2018-03-0713-55/+247
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The calling firmware can set ctx->flags VB2_CONTEXT_NVDATA_V2 to tell vboot that nvdata is a 64-byte record instead of a 16-byte record, or equivalently, set the VBSD_NVDATA_V2 flag if calling the old vboot1 API. If calling firmware does not (which is the current coreboot and depthcharge default), then the 16-byte record is used, and V2 fields return explicit default values. Added the fw_max_rollforward V2 field, which defaults to 0xfffffffe on V1. This will be used by a subsequent CL. Added unit tests to verify all that. Added crossystem support, though it will only work with the current 16-byte records until firmware sets the VBSD flag and mosys supports larger records. (Note that because coreboot/depthcharge do not yet set the new context flag, this CL should not change ToT firmware behavior.) See go/vboot-nvstorage for design doc. BUG=chromium:789276 BRANCH=none TEST=make runtests Change-Id: I43072ef153dfa016c051f560892af1fbb3508e3a Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/942031
* firmware: Remove deprecated SW_WP_ENABLED flagRandall Spangler2018-03-046-28/+5
| | | | | | | | | | | | | | | | This was deprecated months ago in crossystem, and isn't set by depthcharge or coreboot. Remove the flag from vboot as well, keeping only a reminder in vboot_struct.h so we don't reuse the VbSharedData bit. BUG=chromium:742685 BRANCH=none TEST=make runtests Change-Id: Ifa928e8ec4d999c524c6f4168695859261f384c9 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/947256 Reviewed-by: Julius Werner <jwerner@chromium.org>
* firmware: Remove VbLockDevice()stabilize-10452.96.Bstabilize-10452.90.Bstabilize-10452.85.Bstabilize-10452.81.Brelease-R66-10452.BRandall Spangler2018-03-013-36/+0
| | | | | | | | | | | | | | | | | VbLockDevice() would be inconvenient to port to 64-byte NV storage records because it doesn't take VbSharedData flags or a vb2_context. So, just have depthcharge call vbnv_write() directly (as it does in other places in fastboot.c) and get rid of this API. BUG=chromium:789276 BRANCH=none TEST=make runtests CQ-DEPEND=CL:944183 Change-Id: I2aeaecf7f929cd1a1ebd1f6850d0dd96c6fabb49 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/944243 Reviewed-by: Furquan Shaikh <furquan@chromium.org>
* image_signing: add log message when signing ARC++Nicolas Norvez2018-02-281-0/+1
| | | | | | | | | | | | | | | | Instead of only logging when ARC++ is not present, also report when we found an ARC++ image about to be re-signed. BUG=None TEST=See info message when running sign_official_build.sh BRANCH=None Change-Id: I0d983d38048c4b8dace51e4ea25e23c7cf1da3d7 Reviewed-on: https://chromium-review.googlesource.com/942021 Commit-Ready: Nicolas Norvez <norvez@chromium.org> Tested-by: Nicolas Norvez <norvez@chromium.org> Reviewed-by: Victor Hsieh <victorhsieh@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* image_signing: unit tests for Android imageNicolas Norvez2018-02-284-76/+352
| | | | | | | | | | | | | | | | | | | | | | - move helper functions that detect which keys should be used depending on the build flavor to a separate lib - add unit tests for that lib BUG=b:72947583 TEST=unit tests TEST=run against caroline image, scripts detects 'cheets' build flavor TEST=run against novato-arc64 image (SDK), script detects 'cheets' build flavor TEST=run against newbie image (AOSP), script detects 'aosp' build flavor TEST=run against invalid build property 'paosp_cheets_...', script aborts as expected BRANCH=None Change-Id: I5595c10a5a063e7658d0cf17c77dbeead429cd97 Reviewed-on: https://chromium-review.googlesource.com/923097 Commit-Ready: Nicolas Norvez <norvez@chromium.org> Tested-by: Nicolas Norvez <norvez@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* image_signing: Fix detection of build flavorNicolas Norvez2018-02-281-19/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | The original "ro.product.name" of the Android image is modified by the Chrome OS build process to change it to the CrOS device name instead, which breaks the detection of the build flavor. Instead, we now rely on the "ro.build.flavor" property which is not modified. If the build flavor is either cheets_* or sdk_google_cheets_*, we expect the keys to be the cheets keys. AOSP keys are used for aosp_cheets_* build flavors. BUG=b:72947583 TEST=run against caroline image, scripts detects 'cheets' build flavor TEST=run against novato-arc64 image (SDK), script detects 'cheets' build flavor TEST=run against newbie image (AOSP), script detects 'aosp' build flavor TEST=run against invalid build property 'paosp_cheets_...', script aborts as expected BRANCH=None Change-Id: I662436b256b59238b00c7374120f315b538fcd75 Reviewed-on: https://chromium-review.googlesource.com/911905 Commit-Ready: Nicolas Norvez <norvez@chromium.org> Tested-by: Nicolas Norvez <norvez@chromium.org> Reviewed-by: Victor Hsieh <victorhsieh@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* EC-EFS: Copy dev keys from platform/ecDaisuke Nojiri2018-02-282-0/+0
| | | | | | | | | | | | | | | Currently, ec.bin generated by cros_sdk contains and is signed by the dev keys in the platform/ec/<board> directory. This patch copies these dev keys to vboot_reference. BUG=b:73249665 BRANCH=none TEST=make runtests Change-Id: Id2a0b16dc6d404a6bea902fd5a401d6fc7caa2bf Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/940665 Reviewed-by: Wai-Hong Tam <waihong@google.com>
* tests: Cover a few assorted new casesstabilize-10443.BRandall Spangler2018-02-266-6/+61
| | | | | | | | | | | | | Assorted addtional tests to improve coverage of the firmware libraries. BUG=none BRANCH=none TEST=make runtests Change-Id: Iaf707bd54ca5dc10745eb19dfa9e9afbf0d74112 Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/927608 Reviewed-by: Julius Werner <jwerner@chromium.org>
* tpm: Add extern "C" declaration for C++ compatibility.firmware-kbl-10431.BMattias Nissler2018-02-221-0/+8
| | | | | | | | | | | | | | | | | The mount-encrypted utility, which includes tlcl.h is in the process of being converted to C++. To simplify inclusion in C++ code, add the standard extern "C" linkage specifiers. BRANCH=none BUG=chromium:808303 TEST=compiles Change-Id: I8a99a0e5cfcce64b27cad10735b08ba40434b222 Reviewed-on: https://chromium-review.googlesource.com/915345 Commit-Ready: Mattias Nissler <mnissler@chromium.org> Tested-by: Mattias Nissler <mnissler@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* Always enter BROKEN screen in non-manual recovery, even in dev modeJulius Werner2018-02-203-15/+13
| | | | | | | | | | | | | | | | | | | | Previously, non-manual recovery behavior would depend on the developer mode switch: in normal mode it would get stuck at the BROKEN screen, but in developer mode it would proceed exactly like manual recovery. This behavior was mostly just confusing to people and it seems that we have no real use case for it anymore. Remove the developer mode special case so that non-manual recovery will always go to the BROKEN screen from now on. BRANCH=scarlet? BUG=None TEST=make runtests, verified manually on Scarlet and Kevin Change-Id: Iaf33f82d7cb709a5ee309c08d1ad3015859738b3 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/924458 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* Clear OPROM_NEEDED on EC update before rebootDaisuke Nojiri2018-02-161-0/+3
| | | | | | | | | | | | | | | | | | This patch makes ec_sync_all clear OPROM_NEEDED flag when ec_sync_phase2 updates EC and requests reboot. Without this change OPROM_NEEDED flag will stay forever because after reboot need_wait_screen won't be set (thus line 90 won't be reached). BUG=b:72387533 BRANCH=none TEST=Verify firmware screens are displayed on type-c monitor: developer warning screen, critical update screen, recovery screen. Change-Id: I9cc072efbf937ac438b55f3812f677612f79eaf9 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/916635 Reviewed-by: Julius Werner <jwerner@chromium.org>
* detachables: Allow 'Tab' to display debug info on all screensJulius Werner2018-02-082-0/+55
| | | | | | | | | | | | | | | | | Since we're continuing to support the boot shortcuts Ctrl+D, Ctrl+U and Ctrl+L, it makes sense to also continue to support the debug info shortcut Tab, just in case somebody may want to use it from an external keyboard. This does not affect the existing method to display debug info through the appropriate menu option in any way. BRANCH=None BUG=b:73080278 TEST=make runtests, booted Scarlet and pressed Tab on UART. Change-Id: Ia08404e0ffd1f8cac3d85f3b2fc4ce17a21d743d Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/907759 Reviewed-by: Furquan Shaikh <furquan@chromium.org>
* image_signing: delete old crosh_workarounds logicMike Frysinger2018-02-081-8/+0
| | | | | | | | | | | | | | | We deleted crosh workarounds logic years ago (e.g. CL:178932), so drop references here too. BUG=None TEST=precq passes BRANCH=None Change-Id: I2b195a7ca863101be35a4bfde29d7950a96c1edd Reviewed-on: https://chromium-review.googlesource.com/907069 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: David Riley <davidriley@chromium.org>