diff options
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 %" |