summaryrefslogtreecommitdiff
path: root/futility/vb1_helper.c
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@google.com>2015-02-03 15:34:29 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-02-12 04:40:35 +0000
commit80e779d50b52cd97c9d5896a3b75fa8118ee488f (patch)
tree18417a40d0f494546b6cc8b35cbd47938451facc /futility/vb1_helper.c
parent623d6c4744ed92b53ac929edd94de22c61a93daf (diff)
downloadvboot-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.c13
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 %"