diff options
author | Furquan Shaikh <furquan@google.com> | 2015-02-03 15:34:29 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-02-12 04:40:35 +0000 |
commit | 80e779d50b52cd97c9d5896a3b75fa8118ee488f (patch) | |
tree | 18417a40d0f494546b6cc8b35cbd47938451facc /futility/vb1_helper.c | |
parent | 623d6c4744ed92b53ac929edd94de22c61a93daf (diff) | |
download | vboot-80e779d50b52cd97c9d5896a3b75fa8118ee488f.tar.gz |
kernel flags: Add flags field to kernel preamble.
1. Increase kernel preamble revision from 2.1 to 2.2.
2. Add flags field to kernel preamble.
3. Update futility to accept flags parameter for vbutil_kernel and
cmd_sign for kernel.
4. Pass in an extra flags field to SignKernelBlob and
CreateKernelPreamble.
BUG=chrome-os-partner:35861
BRANCH=None
TEST=1) "make runalltests" completes successfully. 2) vboot_reference
compiles successfully for ryu. 3) Verified flags field in header using
futility show.
Change-Id: If9f06f98778a7339194c77090cbef4807d5e34e2
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://chromium-review.googlesource.com/245950
Tested-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Queue: Furquan Shaikh <furquan@chromium.org>
Diffstat (limited to 'futility/vb1_helper.c')
-rw-r--r-- | futility/vb1_helper.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/futility/vb1_helper.c b/futility/vb1_helper.c index f40b7ac8..3d3225a1 100644 --- a/futility/vb1_helper.c +++ b/futility/vb1_helper.c @@ -305,6 +305,7 @@ uint8_t *UnpackKPart(uint8_t *kpart_data, uint64_t kpart_size, uint64_t vmlinuz_header_size = 0; uint64_t vmlinuz_header_address = 0; uint64_t now = 0; + uint32_t flags = 0; /* Sanity-check the keyblock */ keyblock = (VbKeyBlockHeader *)kpart_data; @@ -347,6 +348,11 @@ uint8_t *UnpackKPart(uint8_t *kpart_data, uint64_t kpart_size, Debug(" bootloader_size = 0x%" PRIx64 "\n", preamble->bootloader_size); Debug(" kern_blob_size = 0x%" PRIx64 "\n", preamble->body_signature.data_size); + + if (VbKernelHasFlags(preamble) == VBOOT_SUCCESS) + flags = preamble->flags; + Debug(" flags = 0x%" PRIx32 "\n", flags); + g_preamble = preamble; g_ondisk_bootloader_addr = g_preamble->bootloader_address; @@ -392,7 +398,7 @@ uint8_t *SignKernelBlob(uint8_t *kernel_blob, uint64_t kernel_size, uint64_t padding, int version, uint64_t kernel_body_load_address, VbKeyBlockHeader *keyblock, VbPrivateKey *signpriv_key, - uint64_t *vblock_size_ptr) + uint32_t flags, uint64_t *vblock_size_ptr) { VbSignature *body_sig; VbKernelPreambleHeader *preamble; @@ -416,6 +422,7 @@ uint8_t *SignKernelBlob(uint8_t *kernel_blob, uint64_t kernel_size, body_sig, g_ondisk_vmlinuz_header_addr, g_vmlinuz_header_size, + flags, min_size, signpriv_key); if (!preamble) { @@ -591,6 +598,10 @@ int VerifyKernelBlob(uint8_t *kernel_blob, vmlinuz_header_size); } + if (VbKernelHasFlags(g_preamble) == VBOOT_SUCCESS) + printf(" Flags : 0x%" PRIx32 "\n", + g_preamble->flags); + if (g_preamble->kernel_version < (min_version & 0xFFFF)) { fprintf(stderr, "Kernel version %" PRIu64 " is lower than minimum %" |