[Concept,07/19] bootctl: Show a lock symbol for locked disks

Message ID 20251208023229.3929910-8-sjg@u-boot.org
State New
Headers
Series bootctl: Continue development with TKey functionality |

Commit Message

Simon Glass Dec. 8, 2025, 2:32 a.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

When an OS is using disk encryption, show a lock symbol next to it.

Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

 boot/bootctl/multi_ui.c     | 8 ++++++++
 test/boot/bootctl/bootctl.c | 4 ++--
 2 files changed, 10 insertions(+), 2 deletions(-)
  

Patch

diff --git a/boot/bootctl/multi_ui.c b/boot/bootctl/multi_ui.c
index f663bcdac61..11e5a46c911 100644
--- a/boot/bootctl/multi_ui.c
+++ b/boot/bootctl/multi_ui.c
@@ -140,11 +140,15 @@  static int multiboot_set_item_props(struct scene *scn, int i,
 			  IMAGES_Y + 5);
 	scene_obj_set_pos(scn, ITEM_VERIFIED + i,
 			  x + BOX_MARGIN + 40 + 32, IMAGES_Y + 80 + 21);
+	scene_obj_set_pos(scn, ITEM_LOCKED + i,
+			  x + BOX_W - BOX_MARGIN - 24, IMAGES_Y + BOX_MARGIN);
 
 	ret |= scene_obj_set_hide(scn, ITEM_PREVIEW + i, false);
 	ret |= scene_obj_set_hide(scn, ITEM_BOX + i, false);
 	ret |= scene_obj_set_hide(scn, ITEM_VERSION_NAME + i, false);
 	ret |= scene_obj_set_hide(scn, ITEM_VERIFIED + i, false);
+	ret |= scene_obj_set_hide(scn, ITEM_LOCKED + i,
+				  !(bflow->flags & BOOTFLOWF_ENCRYPTED));
 
 	/* Hide key in multiboot mode (not used with mouse) */
 	ret |= scene_obj_set_hide(scn, ITEM_KEY + i, true);
@@ -422,6 +426,10 @@  static int multiboot_ui_add(struct udevice *dev, struct osinfo *info)
 		logo = video_image_getptr(tick);
 		ret |= scene_img(scn, "verified", ITEM_VERIFIED + seq, logo,
 				 NULL);
+
+		logo = video_image_getptr(lock);
+		ret |= scene_img(scn, "locked", ITEM_LOCKED + seq, logo,
+				 NULL);
 	}
 
 	ret = bootstd_get_priv(&std);
diff --git a/test/boot/bootctl/bootctl.c b/test/boot/bootctl/bootctl.c
index 532a73d6336..ff1a9722fe3 100644
--- a/test/boot/bootctl/bootctl.c
+++ b/test/boot/bootctl/bootctl.c
@@ -396,7 +396,7 @@  static int check_multiboot_ui(struct unit_test_state *uts,
 	ut_assertok(bc_ui_add(ui_dev, &info[0]));
 	ut_assertok(bc_ui_add(ui_dev, &info[1]));
 	ut_assertok(bc_ui_render(ui_dev));
-	ut_asserteq(13702, video_compress_fb(uts, vid_dev, false));
+	ut_asserteq(17279, video_compress_fb(uts, vid_dev, false));
 
 	/* dump after render - buf2 is golden for multiboot_ui */
 	uc_priv = dev_get_uclass_priv(ui_dev);
@@ -435,7 +435,7 @@  static int check_multiboot_ui(struct unit_test_state *uts,
 	/* switch back to multiboot UI style and check against buf2 */
 	ut_assertok(bc_ui_switch_layout(ui_dev));
 	ut_assertok(bc_ui_render(ui_dev));
-	ut_asserteq(13702, video_compress_fb(uts, vid_dev, false));
+	ut_asserteq(17279, video_compress_fb(uts, vid_dev, false));
 
 	/* dump after switch back to multiboot - buf4 should match buf2 */
 	ut_assertok(membuf_new(&buf4, 4096));