vboot/vboot_display: fetch subkey from vboot2 struct

Since CL:1651221, the kernel subkey is stored in vb2_shared_data
and vboot2 workbuf.  Update vboot_display.c to read from this
location accordingly.

BUG=b:124141368, chromium:1038260
TEST=make clean && make runtests
BRANCH=none

Change-Id: Id287ff595bc394d23837e946c0f711b79d2f19ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2051892
Reviewed-by: Julius Werner <jwerner@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
Tested-by: Joel Kitching <kitching@chromium.org>
diff --git a/firmware/lib/vboot_display.c b/firmware/lib/vboot_display.c
index f0e2e80..0211a92 100644
--- a/firmware/lib/vboot_display.c
+++ b/firmware/lib/vboot_display.c
@@ -334,8 +334,11 @@
 	}
 
 	/* If we're in dev-mode, show the kernel subkey that we expect, too. */
-	if (0 == sd->recovery_reason && sd->vbsd) {
-		FillInSha1Sum(sha1sum, &sd->vbsd->kernel_subkey);
+	if (sd->recovery_reason == VB2_RECOVERY_NOT_REQUESTED &&
+	    sd->kernel_key_offset) {
+		struct vb2_packed_key *key =
+			vb2_member_of(sd, sd->kernel_key_offset);
+		FillInSha1Sum(sha1sum, key);
 		used += StrnAppend(buf + used,
 				"\nkernel_subkey: ", DEBUG_INFO_SIZE - used);
 		used += StrnAppend(buf + used, sha1sum, DEBUG_INFO_SIZE - used);