summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* cryptolib: rename SHA* function to avoid openssl collisionfirmware-link-2348.BKees Cook2012-05-227-25/+25
| | | | | | | | | | | | | | | | When linking tools that need OpenSSL functions on the target, the resolution of SHA* functions was being redirected to the firmware cryptolib instead of the OpenSSL implementations, which was causing OpenSSL calls to crash. This renames the internal implementations to avoid the collision. BUG=None TEST=make runtests passes, mount-encrypted runs on target again. Change-Id: Ica4fb04faf203ae3b4118c540f18d40239753810 Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/23305 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* Use virtual dev-mode switch when told to.factory-2338.BBill Richardson2012-05-1810-142/+206
| | | | | | | | | | | | | | | | | | | | | | | | | | | If VbInit() is instructed to look at a virtual dev-mode switch, then it will use value contained in the TPM's firmware space instead of a hardware GPIO to determine if developer mode is enabled. This change just makes it look. It doesn't provide a way to actually set the value in the TPM. VbInit() isn't being told to look yet, either. Those changes are coming. BUG=chrome-os-partner:9706 TEST=none The usual sanity-check applies: make make runtests But to actually test that this stuff is working IRL requires special tweaks to other components and monitoring the serial debug output from both EC and CPU. We'll save the hands-on tests for when it's all done. Change-Id: Ie485ad2180224e192238bf2a5dbf95bbcb9130f9 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/23067 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* mount-encrypted: provide umount option for shutdownKees Cook2012-05-174-47/+155
| | | | | | | | | | | | | When shutting the system down, mount-encrypted can be used to clean up all its bind mounts and devices. BUG=None TEST=x86-alex build, manual testing Change-Id: I025ce8c16c55f8556d7fff45eb6ac2b7a835101a Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/21913 Reviewed-by: Elly Jones <ellyjones@chromium.org>
* Add checksum to TPM RollbackSpace regions for FW and kernel.Bill Richardson2012-05-179-46/+416
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BUG=chrome-os-partner:9707 TEST=manual make make runtests You can also test it by clearing the TPM, then manually looking at the TPM regions. In dev-mode, clear the regions and you'll see something like this: localhost ~ # tpmc read 1007 a 1 0 0 0 0 0 0 0 0 0 localhost ~ # tpmc read 1008 d 1 4c 57 52 47 0 0 0 0 0 0 0 0 localhost ~ # Go back to normal mode and reboot, and you'll see something like this: localhost ~ # tpmc read 1007 a 2 0 1 0 1 0 0 0 0 4f localhost ~ # tpmc read 1008 d 2 4c 57 52 47 1 0 1 0 0 0 0 55 localhost ~ # The important things are that the first number is now 2, instead of 1, and the last number is not zero (it's a checksum, so it'll vary depending on the other numbers, which will themselves vary according to the firmware and kernel versions). Change-Id: Ia4040311c2a4b2819792549b883377c8b6b89d48 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/22856 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* vboot_reference: update to newer libbase verfactory-2305.BMike Frysinger2012-05-141-2/+2
| | | | | | | | | | | | | Most packages have upgraded by now. Do vboot_reference too. BUG=None TEST=`emerge-x86-alex vboot_reference` works Change-Id: Ica1996ba3c242dca2d4e7edf643a79a41c603f0c Reviewed-on: https://gerrit.chromium.org/gerrit/22529 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org>
* Switch vboot reference to hardfpDoug Anderson2012-05-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This allows it to compile without switching to a private libgcc. BUG=chromium-os:30807 TEST=While making sure u-boot, vboot_reference and vboot_reference-firmware were cros_workoned and grabbing the associated U-Boot change (I3cdc86ee2846814a6522c7874e5b438be94164ab), I did: 1. emerge-daisy chromeos-u-boot vboot_reference vboot_reference-firmware 2. cros_bundle_firmware --add-config-int load_env 1 \ -d exynos5250-daisy -b daisy -o /tmp/uboot.bin 3. sudo dd if=/tmp/uboot.bin of=${SDCARD} bs=512 seek=1 ...and then booted that. Change-Id: I49d567e51d95c77f0e0fef8ec0f678e51b5ab77f Reviewed-on: https://gerrit.chromium.org/gerrit/22479 Tested-by: Doug Anderson <dianders@chromium.org> Reviewed-by: Terry Lambert <tlambert@chromium.org> Tested-by: Terry Lambert <tlambert@chromium.org> Reviewed-by: Simon Glass <sjg@chromium.org> Commit-Ready: Doug Anderson <dianders@chromium.org>
* Fix build errors with .c and .cc files being in the libcgpt-cc.aDoug Anderson2012-05-111-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | When I build without this fix, I get errors like this: armv7a-cros-linux-gnueabi-strip:....libcgpt-cc.a(CgptManager.cc): Unable to recognise the format of file: File format not recognized The .a file shouldn't have .cc files in it anyway. The error appears to have been introduced in: https://gerrit.chromium.org/gerrit/16433 I'm not sure why it wasn't noticed until now, but perhaps the new toolchain is just pickier. BUG=None TEST=emerge-daisy vboot_reference works TEST=With future hardfp change, can boot U-Boot compiled with new toolchain. Change-Id: I33f15fb38d7e236000845d0a864c1e86469f32c7 Reviewed-on: https://gerrit.chromium.org/gerrit/22476 Tested-by: Doug Anderson <dianders@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org> Commit-Ready: Doug Anderson <dianders@chromium.org>
* Use CHROMEOS_EC macro to cut down compiled size.release-R20-2268.Bfactory-2268.16.BBill Richardson2012-05-092-0/+46
| | | | | | | | | | | | | | | | | | This macro is only defined by the EC firmware build process, and is used to cut down the amount of compiled code. A future CL will refactor the library to make this unnecessary. BUG=chrome-os-partner:7459 TEST=manual make make runtests Change-Id: I41d0b4b282ec7147e8d6f508531af32e74f2d19e Reviewed-on: https://gerrit.chromium.org/gerrit/22313 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org>
* Fix potential memory leak in KeyBlockVerify()Bill Richardson2012-05-091-0/+1
| | | | | | | | | | | BUG=none TEST=none Change-Id: I17f1cff7d6f750dfd862d71941c6b8cfec57b6bf Reviewed-on: https://gerrit.chromium.org/gerrit/22312 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org>
* Separate SHA256 and SHA512 into separate filesBill Richardson2012-05-093-287/+342
| | | | | | | | | | | | | | | | This is just to pave the way for better use of vboot by the EC. BUG=chrome-os-partner:7459 TEST=manual make make runtests Change-Id: I2e68371039bfc1b492245db12facf0c5ad592824 Reviewed-on: https://gerrit.chromium.org/gerrit/22301 Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Ready: Bill Richardson <wfrichar@chromium.org>
* Protect ARRAY_SIZE macro from being #defined twiceBill Richardson2012-05-091-0/+2
| | | | | | | | | | | BUG=chrome-os-partner:7459 TEST=none Change-Id: I3664ad9db4a4e0cecd38443bf01f99531ba80972 Reviewed-on: https://gerrit.chromium.org/gerrit/22183 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Make vbutil_ec operate on the entire image at once.Bill Richardson2012-05-081-210/+411
| | | | | | | | | | | | | | | | | | | Instead of taking images apart, signing bits, and reassembling them, this just operates on the entire image at once. The image can be built without regard to the signing process, and then the signing can be done in one step afterwards. BUG=chrome-os-partner:7459 TEST=none No test at the moment, since we don't have the rest of the vboot stuff working yet. Change-Id: Icbde9cbb89d0ef85c0f6b8ac0637e0a51a894199 Reviewed-on: https://gerrit.chromium.org/gerrit/22116 Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Ready: Bill Richardson <wfrichar@chromium.org>
* Create vbutil_ec tool for signing EC firmware.Bill Richardson2012-05-0420-8/+748
| | | | | | | | | | | | | | | | | | This just adds the vbutil_ec tool (and a simple test of the library functions related to it). BUG=chrome-os-partner:7459, chromium-os:27142 TEST=manual make make runtests Change-Id: I2a2c4e7cfb8ac6ce2229c5de4252a5cc89321fa5 Reviewed-on: https://gerrit.chromium.org/gerrit/21868 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Stefan Reinauer <reinauer@google.com> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* Require -Wall -Werror for everything.Bill Richardson2012-05-0317-64/+15
| | | | | | | | | | | BUG=none TEST=none Change-Id: Ib9781238274285f73d00d8fca4ecda28fc2c6678 Reviewed-on: https://gerrit.chromium.org/gerrit/21748 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
* Let cgpt open devices in read-only mode when possible.Bill Richardson2012-05-0210-16/+47
| | | | | | | | | | | | | | | | BUG=chromium-os:12430 TEST=manual Running "make; make runtests" in src/platform/vboot_refererence will test this change. Tests for use on a Chromebook are described in the bug report, but will require a USB or SD card that has a physical write-protect switch. Change-Id: I16a67bad3b59bec0981f4064f51fb1a29da65a90 Reviewed-on: https://gerrit.chromium.org/gerrit/21474 Tested-by: Bill Richardson <wfrichar@chromium.org> Commit-Ready: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Richard Barnette <jrbarnette@chromium.org> Reviewed-by: Che-Liang Chiou <clchiou@chromium.org>
* signer scripts: retry more than once when mountingMike Frysinger2012-05-011-12/+23
| | | | | | | | | | | | | | | | The retry logic has brought down the number of flakes significantly (from multiple errors a day to ~one every other day). But let's up the retry count, and have it sleep longer after each failure, so hopefully we can bring down the flake count even further. BUG=chrome-os-partner:8156 TEST=`./signing_poller.py -s` signs local images fine Change-Id: I98bc947836514d8b931568f87f7f9a373f771b79 Reviewed-on: https://gerrit.chromium.org/gerrit/21468 Reviewed-by: Gaurav Shah <gauravsh@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org>
* signer scripts: workaround flaky kernels and loop mount failuresMike Frysinger2012-04-251-12/+36
| | | | | | | | | | | | | | | The kernels we are running the signers on flake out from time to time when mounting the loop back images. Have the mount code detect this edge case and automatically retry when the flake hits. BUG=chrome-os-partner:8156 TEST=`./signing_poller.py -s` signs local images fine Change-Id: Iaa08445904aa26f0aa7240504f6c7a96e6ef3bbb Reviewed-on: https://gerrit.chromium.org/gerrit/21055 Reviewed-by: Gaurav Shah <gauravsh@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org>
* Omit body load address checkChe-Liang Chiou2012-04-244-13/+4
| | | | | | | | | | | | | | | | | | | | | | | | Omit this check because this check is not really necessary and it is dealing more harms than goods to ARM boards. While body load address is configurable, it is not quite possible to fix all the build scripts and runtime scripts to carry this address; so in reality all scripts use the default body load address. The problem is, this default address is not friendly to ARM boards, and it virtually makes this check fails on ARM boards. BUG=chromium-os:28077 TEST=emerge-{daisy,x86-alex} vboot_reference TEST=load_kernel_test -b 1 chromiumos_image.bin TEST=run verified boot on Daisy Change-Id: I1a1cc0aedf254e2a2b680046812ab7154f26dea7 Reviewed-on: https://gerrit.chromium.org/gerrit/20947 Tested-by: Che-Liang Chiou <clchiou@chromium.org> Reviewed-by: Gaurav Shah <gauravsh@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Ready: Che-Liang Chiou <clchiou@chromium.org>
* crossystem: introduce a new main firmware type, 'netboot'Vadim Bendebury2012-04-202-0/+3
| | | | | | | | | | | | | | | | | | | | We need to be able to tell when a ChromeOS machine was brought up using netboot. This condition will be communicated from firmware using the BINF.3 ACPI object (upcoming u-boot change). BUG=chrome-os-partner:7952 TEST=manual . boot a ChromeOS machine using the updated firmware and examine the main firmware type reported by crossystem: localhost ~ # echo $(/var/crossystem mainfw_type) netboot Change-Id: I35b10f41eb1f928a122c384d0179c9027f263acd Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/20707 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* mount-encrypted: handle migration betterKees Cook2012-04-173-56/+108
| | | | | | | | | | | | Fix migration of mounts that are over-mounted. BUG=chromium-os:22172 TEST=lumpy build & manual testing Change-Id: I005edc6fe789a3e0585ffdcaa45ef5a136318ee3 Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/19673 Reviewed-by: Elly Jones <ellyjones@chromium.org>
* Adjust the behavior of 'crossystem cros_debug' for recovery modeJ. Richard Barnette2012-04-171-15/+6
| | | | | | | | | | | | | | | | | Previously, 'cros_debug' would ignore the kernel command line if the system was booted in recovery mode. The check provided no particular security benefit; it served only to complicate the work of developers who wanted to boot debug images over USB with dev-key signed firmware. BUG=chromium-os:19236 TEST=Test 'crossystem cros_debug' on a system in the cited use case Change-Id: Ie664c50984411340a10896137022d7d4ff503d0a Reviewed-on: https://gerrit.chromium.org/gerrit/6663 Commit-Ready: Richard Barnette <jrbarnette@chromium.org> Tested-by: Richard Barnette <jrbarnette@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org>
* Create default key.versions file if none existGaurav Shah2012-04-162-4/+5
| | | | | | | | | | | | | Also remove the default checked in key.versions. BUG=none TEST='rm key.versions && ./create_new_keys.sh; ./create_new_keys.sh' Change-Id: Ia46d411904cb67bcefdbf73524f506e5b2336875 Reviewed-on: https://gerrit.chromium.org/gerrit/20253 Commit-Ready: Gaurav Shah <gauravsh@chromium.org> Reviewed-by: Gaurav Shah <gauravsh@chromium.org> Tested-by: Gaurav Shah <gauravsh@chromium.org>
* signer scripts: use make_temp_dir helperMike Frysinger2012-04-162-4/+2
| | | | | | | | | | | | | | | | | | The common code takes care of cleaning up temporary files for us if we use the right helpers. These scripts don't though, so the temp files end up not getting cleaned and over time, /tmp/ files up with crap. The common helper takes care of unmounting and removing, so converting these files over should be safe. BUG=None TEST=`./signer/signer_poller.py -s` signs local images and leaves no /tmp/tmp.* junk Change-Id: I87aa122895997a5ec0017665203fdc8d14e0ab2a Reviewed-on: https://gerrit.chromium.org/gerrit/20329 Reviewed-by: Gaurav Shah <gauravsh@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org>
* signer scripts: use `sudo` if need be when modifying /etc/lsb-releaseMike Frysinger2012-04-122-11/+24
| | | | | | | | | | | | | | | If we try to run the signing_poller daemon as non-root, it fails to set the channel. Detect if the lsb file is writable, and if not, switch to using sudo on the fly. BUG=None TEST=`./signer/signing_poller.py` as non-root and setting the channel works Change-Id: Iadb10ae68582edfb332f33d3b101c83949ee9502 Reviewed-on: https://gerrit.chromium.org/gerrit/20089 Reviewed-by: Gaurav Shah <gauravsh@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org>
* signer scripts: add OWNERSMike Frysinger2012-04-111-0/+3
| | | | | | | | | | | BUG=chromium-os:22007 TEST=`cat scripts/OWNERS` show signing people Change-Id: I0e7e50d4ee6bd97ab651c851057d7ed1ee069155 Reviewed-on: https://gerrit.chromium.org/gerrit/20018 Reviewed-by: Gaurav Shah <gauravsh@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org>
* signer scripts: unmount loop devices without -d arg to umountGaurav Shah2012-04-099-15/+15
| | | | | | | | | | | | | | | | | Investigations in crosbug.com/26483 revealed a bug in loop device handling if 'umount -d' was called on loop devices mounted using 'mount -o loop'. This CL changes all invocations of umount to remove the -d option since they are always in the context of a loop device creating using -o loop. BUG=chrome-os-partner:8156 TEST=none Change-Id: I96f30664c3f9148d3b57d430002512d8e94b66bc Reviewed-on: https://gerrit.chromium.org/gerrit/19858 Reviewed-by: David James <davidjames@chromium.org> Commit-Ready: Gaurav Shah <gauravsh@chromium.org> Tested-by: Gaurav Shah <gauravsh@chromium.org>
* Read kernel body load address from preamble by defaultChe-Liang Chiou2012-04-063-1/+8
| | | | | | | | | | | | | | | | | | | | The default behavior of dump_kernel_config is changed from using CROS_32BIT_ENTRY_ADDR to reading from kernel preamble. The main motivation for this change is in preparation for ARM boards of which kernel body load address cannot be CROS_32BIT_ENTRY_ADDR. Since we do not want that all ARM calling sides of dump_kernel_config have to carry the kloadaddr argument, it would be better to let dump_kernel_config read this address from the kernel preamble by default. BUG=chromium-os:28077 TEST=Run dump_kernel_config w/ and w/o this change Change-Id: I5eddcc35e5970dfce02cc66208438c57351f1c81 Reviewed-on: https://gerrit.chromium.org/gerrit/19660 Tested-by: Che-Liang Chiou <clchiou@chromium.org> Reviewed-by: Don Garrett <dgarrett@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Ready: Che-Liang Chiou <clchiou@chromium.org>
* mount-encrypted: close TPM when spawning resizerKees Cook2012-04-056-52/+116
| | | | | | | | | | | | | | | When the filesystem resizing process starts, it has the TPM open, which means it can collide with tcsd after the main process exits. Additionally, improve the debugging around TPM usage for better timing analysis. BUG=None TEST=lumpy build & manual testing Change-Id: I7028131015fb972c99e8b3d035f58346f08fbd06 Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/19535 Reviewed-by: Elly Jones <ellyjones@chromium.org>
* mount-encrypted: add encrypted mount helperKees Cook2012-04-046-0/+1624
| | | | | | | | | | | | | | | | This adds the utility needed to mount the encrypted partition at boot time, as defined by the design document: https://docs.google.com/a/google.com/document/d/1VQTDXvNsEFcrUOmNC4OmCfJst49Pd_mxZ41nfKu5EPc/edit This still needs Cryptohome support and chromeos_startup to switch to using it. BUG=chromium-os:22172 TEST=lumpy build & manual testing Change-Id: Ib9f0b4e5ba1a8aeb4737d0c8ec72a8e0dee049da Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/16889 Reviewed-by: Elly Jones <ellyjones@chromium.org>
* Modify crossystem to recognize Panther Point GPIO controllerrelease-R19-2046.BVadim Bendebury2012-03-231-1/+2
| | | | | | | | | | | | | | | | | | | There is a filter in crossystem which makes sure that it accepts GPIO information only from a subset of GPIO controllers. Panther Point needs to be included in the list. BUG=chrome-os-partner:8615 TEST=manual . run the new crossystem on a Link . modify write protect and and recovery (as it comes from servo-2) pins' status . observe the appropriate crossystem values change Change-Id: I3ac269a9ea520f2c44ee090fe71ec8ad808692ba Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/18936 Reviewed-by: Hung-Te Lin <hungte@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
* Major refactoring of vbutil_kernelBill Richardson2012-03-204-629/+675
| | | | | | | | | | | | | | | | | | | This started out as a simple fix for a minor bug and turned into a nearly complete rewrite. Now that it's done I'm not sure it really matters. This version is a lot cleaner about handling command-line args, but isn't otherwise noticeably better. Sigh. BUG=none TEST=manual make make runtests Change-Id: I9c194e9c0e6418488635989ef666bc83c6e39816 Reviewed-on: https://gerrit.chromium.org/gerrit/18268 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* CgptManagerTests: fix linking orderMike Frysinger2012-03-151-3/+3
| | | | | | | | | | | | | | | We need all the libraries to come after the objects, not before, otherwise static and --as-needed linking fails when the linker drops the libraries. BUG=None TEST=`emerge vboot_reference` still works Change-Id: Id98571a90115ab5ace68a0c795de86d7fe78f133 Reviewed-on: https://gerrit.chromium.org/gerrit/18290 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Jay Srinivasan <jaysri@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org> Commit-Ready: Mike Frysinger <vapier@chromium.org>
* Make vbutil_kernel use correct size when verifying headers.Bill Richardson2012-03-153-3/+99
| | | | | | | | | | | | | | | | Added a test to demonstrate the fix. BUG=none TEST=manual make make runtests Change-Id: I06e85b993cbe21088641a62d55a3d3ddb696ba76 Reviewed-on: https://gerrit.chromium.org/gerrit/18240 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Rename some static struct members in vbutil_kernel.Bill Richardson2012-03-141-48/+56
| | | | | | | | | | | | | | | | | | | I've found a bug in vbutil_kernel, but the names of some of the internal variables and struct members make it hard to follow (which is probably why the bug exists). Before I fix it, I need to rename some things so we can see what's wrong. This does that. BUG=none (yet) TEST=manual make make runtests Change-Id: I8646c8acd33c58ccd52668943bcee4d0664716aa Reviewed-on: https://gerrit.chromium.org/gerrit/18146 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* signer security test: special case dogfood channel for app id checkGaurav Shah2012-03-132-5/+7
| | | | | | | | | | | | | Similar to the canary channel, the dogfood channel images can have their own app id that is distinct from the board app id. BUG=chromium-os:25702, chrome-os-partner:8441 TEST=on a dogfood-channel image Change-Id: Ic993a40d905b224072d325a69e47fdb6633c2e22 Reviewed-on: https://gerrit.chromium.org/gerrit/18039 Tested-by: Gaurav Shah <gauravsh@chromium.org> Reviewed-by: Scott Zawalski <scottz@chromium.org>
* convert to SLOT-ed libbaseMike Frysinger2012-03-081-3/+11
| | | | | | | | | | | | | | | | | We need to use the .pc file to get the compiling/linking details, so switch over to that. While we're here, fix the hardcoded `ar` to use $(AR) from the env. BUG=chromium-os:16623 TEST=`emerge-x86-alex vboot_reference` builds & links CgptManagerTests against newer libbase Change-Id: I20865138fdfd1725415d737ad5fdbc4c134079a7 Reviewed-on: https://gerrit.chromium.org/gerrit/17533 Commit-Ready: Mike Frysinger <vapier@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org> Tested-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Kees Cook <keescook@chromium.org>
* Add tests/run_preamble_tests.sh and associated data.Bill Richardson2012-03-08489-0/+189
| | | | | | | | | | | | | | | | | | | | | | | This change prepares for modifying VbFirmwarePreambleHeader and VbKernelPreambleHeader by adding a bunch of current-version data and tests of that data. Once we change the structs, we'll still need to be sure that we can still generate, sign, and verify things using the old-style structs too so that we can release updates to existing devices. If we changed the structs and then created the test data, we couldn't be certain that we're still doing it right. BUG=chromium-os:20124 TEST=manual make make runtests Change-Id: I39310a0d853dbf63a8ca8ff9a0fb4440017c692a Reviewed-on: https://gerrit.chromium.org/gerrit/17530 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Specify the sections you want dump_fmap to dump, if not allBill Richardson2012-03-021-8/+21
| | | | | | | | | | | | | | | | | | | BUG=none TEST=manual Compare dump_fmap -f bios.bin with dump_fmap -f bios.bin FW_MAIN_A FW_MAIN_B GBB Change-Id: Id567113ab5e7121422b89f00d9eb8c0b27942259 Reviewed-on: https://gerrit.chromium.org/gerrit/17179 Reviewed-by: Randall Spangler <rspangler@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Commit-Ready: Bill Richardson <wfrichar@chromium.org>
* tpm_lite: implement TPM_GetRandomKees Cook2012-03-016-5/+88
| | | | | | | | | | | | Provide TPM_GetRandom function to library callers. BUG=chromium-os:22172 TEST=lumpy build & manual testing Change-Id: Id604fd92490ba697033158a580b0b4df1d975932 Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/17120 Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
* Add new line after printing non-zero GBB flags.Stefan Reinauer2012-02-281-0/+1
| | | | | | | | | | | | | | | | Callers of vboot might print some additional information in VbExDisplayDebugInfo(). Add a new line to the end of the buffer so that output is aligned with the normal <tab> information. BUG=none TEST=set gbb flags to 1, see cursor go to next line at dev screen. Change-Id: I8dd77404338a05bddc5f3ec54d7b65c890a60c50 Reviewed-on: https://gerrit.chromium.org/gerrit/17001 Tested-by: Stefan Reinauer <reinauer@chromium.org> Reviewed-by: Bill Richardson <wfrichar@chromium.org> Commit-Ready: Stefan Reinauer <reinauer@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Enable building of Cgpt C++ Library for 32-bit.Jay Srinivasan2012-02-2310-14/+65
| | | | | | | | | | | | | | | | | | | The existing library had a bunch of dependencies which are too many to build for the 32-bit platform. So this checkin prunes the dependency list by building only things that are absolutely required for the functionality used in 32-bit Post-Installer. Made the use of libuuid restricted only to cgpt and unit tests so that libcgpt-cc.a doesn't depend on it. BUG=chromium-os:25374 TEST=Built 32-bit and 64-bit. Tested 32-bit post-install. Change-Id: Idd0826fdf507a95728fee8adac9520e26f05d469 Reviewed-on: https://gerrit.chromium.org/gerrit/16433 Reviewed-by: Don Garrett <dgarrett@chromium.org> Reviewed-by: Sonny Rao <sonnyrao@chromium.org> Commit-Ready: Jay Srinivasan <jaysri@chromium.org> Tested-by: Jay Srinivasan <jaysri@chromium.org>
* vbutil_what_keys should handle devices tooBill Richardson2012-02-221-1/+1
| | | | | | | | | | | | | | | | | BUG=none TEST=manual Try it on a USB stick. For example, sudo vbutil_what_keys /dev/sdc It should work. Change-Id: I1e5be61d5539bae00717efa0e62c02203129a3c1 Reviewed-on: https://gerrit.chromium.org/gerrit/16358 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Implementation of CgptManager C++ library and unit tests.Jay Srinivasan2012-02-1623-47/+1351
| | | | | | | | | | | | | | | | | | | | | | | | | | CgptManager exposes the cgpt commands via a C++ library so that the post-installer for 32- to 64-bit upgrade can link directly against a library and thus avoid any shell dependency. The default make target will not build libcgpt-cc.a since it requires some dependencies that are available only in chroot. A separate follow-up checkin to the vboot_reference ebuild will enable emerging the libcgpt-cc.a by default. BUG=chromium-os:25374 TEST=Tested with the new unit tests for CgptManager, ran existing cgpt unit tests, as well as running the cgpt commands manually. Built on both amd64 and x86. Tested that vboot_reference is also buildable outside of chroot. Tested that vboot_reference-firmware and vboot_reference-tests also build fine with these changes. CQ-DEPEND=I99f6c321e09c2425eaa8171d78685d2d731954c8 Change-Id: I59a896255b8ea2fc8b1b2150ae7c4ff9d0769699 Reviewed-on: https://gerrit.chromium.org/gerrit/15730 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Gaurav Shah <gauravsh@chromium.org> Commit-Ready: Jay Srinivasan <jaysri@chromium.org> Tested-by: Jay Srinivasan <jaysri@chromium.org>
* Add Ctrl-Enter as an additional key to trigger dev USB boot.Tom Wai-Hong Tam2012-02-142-1/+4
| | | | | | | | | | | | | | | | | Due to the limitation of servo that is unable to send U keys, dev USB boot (triggered by Ctrl-U) is unable to be tested on FAFT. To solve it, firmware should add an addition key combination to workaround it. Ctrl-Enter is the one we picked. BUG=chrome-os-partner:6759 TEST=compile the firmware and update it to Lumpy; during the dev screen, press Ctrl-Enter to trigger USB boot. Change-Id: I8215a241c3c07dc2f5e194c324459f106d007f47 Reviewed-on: https://gerrit.chromium.org/gerrit/15749 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Ready: Tom Wai-Hong Tam <waihong@chromium.org> Tested-by: Tom Wai-Hong Tam <waihong@chromium.org>
* Rename dump_kernel_config.a to libdump_kernel_config.a.Don Garrett2012-02-141-1/+1
| | | | | | | | | | | | | | It should have been named this way from the beginning. TEST=Made/emerged. Since it's only used at build time, this is sufficient. BUG=None Change-Id: I60cc6510e8494e3dde852efbdcb5af156e7400ac Reviewed-on: https://gerrit.chromium.org/gerrit/15835 Reviewed-by: Sonny Rao <sonnyrao@chromium.org> Tested-by: Don Garrett <dgarrett@chromium.org> Commit-Ready: Don Garrett <dgarrett@chromium.org> Reviewed-by: Don Garrett <dgarrett@chromium.org>
* signer tests: Allow different appids for canary channel imagesGaurav Shah2012-02-082-3/+13
| | | | | | | | | | | | | | | If the channel is canary, allow appid to match the value of expected_appid_canary in the ensure sane lsb release test configuration. BUG=chromium-os:25437 TEST=manually tested on an image with and without the channel being canary. Change-Id: I6bf71adbe0fc090ef777c28d24c53eaa8be18404 Reviewed-on: https://gerrit.chromium.org/gerrit/15509 Tested-by: Gaurav Shah <gauravsh@chromium.org> Reviewed-by: Scott Zawalski <scottz@chromium.org> Commit-Ready: Gaurav Shah <gauravsh@chromium.org>
* vbutil_what_keys - any file 8M or less is a BIOS imageBill Richardson2012-02-061-1/+1
| | | | | | | | | | | | | | | | | | | BUG=chrome-os-partner:7878 TEST=none Well, you could test it like so: flashrom -r /dev/null -i GBB:/tmp/GBB.bin vbutil_what_keys GBB.bin except that the current ChromeOS image doesn't include vbutil_what_keys. It probably should, but that's a different CL. Change-Id: I1e5b6cf30a81a46cb5c8c5d9b10f351dafa9ca87 Reviewed-on: https://gerrit.chromium.org/gerrit/15359 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Add Stumpy MP key info to vbutil_what_keysBill Richardson2012-02-031-1/+6
| | | | | | | | | | | | | | | | | | | | | | | BUG=chrome-os-partner:7878 TEST=manual Run vbutil_what_keys specifying either a BIOS or disk image signed with the Stumpy MP keys. It should identify it as such. For example: vbutil_what_keys chromeos_1675.0.0_stumpy_recovery_dev-channel_mp.bin or vbutil_what_keys bios.bin The output should contain the strings "Stumpy MP" somewhere, if the image or BIOS is signed with the Stumpy MP keys. Change-Id: I575b7358ced4234c918eff40cdeb17fe06ab331c Reviewed-on: https://gerrit.chromium.org/gerrit/15271 Commit-Ready: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Refactor of cgpt tool for 32->64 autoupdate work.release-R18-1660.BJay Srinivasan2012-01-3016-1102/+1312
| | | | | | | | | | | | | | | | | | This check-in splits the cgpt into two layers. The top layer (cmd_* files) does the command-line parsing and the bottom layer (cgpt_* files) does the actual cgpt work. This is done so that the bottom layer can be reused for the monolithic C++ post-installer code that will be done in subsequent checkins. BUG=chromium-os:25374 TEST=Tested with existing cgpt unit tests as well as running the cgpt commands manually. Change-Id: I69a31eb3e867a1430cac9a694581331368aa7bb4 Reviewed-on: https://gerrit.chromium.org/gerrit/14940 Reviewed-by: Jay Srinivasan <jaysri@chromium.org> Tested-by: Jay Srinivasan <jaysri@chromium.org> Commit-Ready: Jay Srinivasan <jaysri@chromium.org>
* Bah. Fix the test, too.Bill Richardson2012-01-271-1/+1
| | | | | | | | | | BUG=chrome-os-partner:7775 TEST=none Change-Id: Id1409808b69f5c8f5b5e2244bb8bf6c7591cba0c Reviewed-on: https://gerrit.chromium.org/gerrit/14968 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Tested-by: Bill Richardson <wfrichar@chromium.org>