public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Fiona Ebner <f.ebner@proxmox.com>
To: Thomas Lamprecht <t.lamprecht@proxmox.com>,
	Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH manager v2 8/9] ui: qemu: hardware: efi: allow enrolling Microsoft+Windows UEFI CA 2023
Date: Wed, 21 Jan 2026 14:08:31 +0100	[thread overview]
Message-ID: <78bfb5b9-f00c-4641-a971-a6c1d8dea4c4@proxmox.com> (raw)
In-Reply-To: <777b5621-4cf6-44e5-90ee-6882cfb3f290@proxmox.com>

Am 20.01.26 um 6:49 PM schrieb Thomas Lamprecht:
> Am 13.01.26 um 11:54 schrieb Fiona Ebner:
>> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
>> index cf5e2a0f..69216932 100644
>> --- a/www/manager6/qemu/HardwareView.js
>> +++ b/www/manager6/qemu/HardwareView.js
>> @@ -442,6 +442,67 @@ Ext.define('PVE.qemu.HardwareView', {
>>              handler: run_editor,
>>          });
>>  
>> +        let runEfiEnroll = function () {
>> +            let rec = sm.getSelection()[0];
>> +            if (!rec) {
>> +                return;
>> +            }
>> +
>> +            let efidisk = PVE.Parser.parsePropertyString(rec.data.value, 'file');
>> +            efidisk['ms-cert'] = '2023';
>> +
>> +            let params = {};
>> +            params[rec.data.key] = PVE.Parser.printPropertyString(efidisk);
>> +            Proxmox.Utils.API2Request({
>> +                url: `/api2/extjs/${baseurl}`,
>> +                waitMsgTarget: me,
>> +                method: 'POST',
>> +                params: params,
>> +                callback: () => me.reload(),
>> +                failure: (response) => Ext.Msg.alert('Error', response.htmlStatus),
>> +                success: function (response, options) {
>> +                    if (response.result.data !== null) {
>> +                        Ext.create('Proxmox.window.TaskProgress', {
>> +                            autoShow: true,
>> +                            upid: response.result.data,
>> +                            listeners: {
>> +                                destroy: () => me.reload(),
>> +                            },
>> +                        });
>> +                    }
>> +                },
>> +            });
>> +        };
>> +
>> +        let efiEnrollButton = new Proxmox.button.Button({
>> +            text: gettext('Enroll updated certificates'),
>> +            selModel: sm,
>> +            disabled: true,
>> +            hidden: true,
>> +            handler: runEfiEnroll,
>> +            confirmMsg:
>> +                gettext(
>> +                    'Enroll the Microsoft and Windows UEFI 2023 CA required for secure boot update.'
>> +                ) +
>> +                '<br>' +
> 
> would probably add an extra line break here to better distinguish the description of what's
> happening here with the note below.

Ack.

>> +                gettext(
>> +                    'If the VM uses BitLocker, run the following command inside Windows Powershell:',
>> +                ) +
>> +                '<br><code>manage-bde -protectors -disable &lt;drive&gt;</code><br>' +
>> +                Ext.String.format(
>> +                    // TRANSLATORS: for a shell command: "placeholder could be 'concrete value'"
>> +                    gettext("For example, {0} could be '{1}'."),
>> +                    '<code>&lt;drive&gt;</code>',
>> +                    '<code>C:</code>',
>> +                ) +
>> +                '<br>' +
>> +                gettext('This is required for each drive with BitLocker before proceeding!') +
>> +                '<br>' +
>> +                gettext(
>> +                    'Otherwise, you will be prompted for the BitLocker recovery key on the next boot!',
>> +                ),
>> +        });
>> +
>>          let move_menuitem = new Ext.menu.Item({
>>              text: gettext('Move Storage'),
>>              tooltip: gettext('Move disk to another storage'),
>> @@ -616,6 +677,8 @@ Ext.define('PVE.qemu.HardwareView', {
>>              let selection_model = me.getSelectionModel();
>>              let rec = selection_model.getSelection()[0];
>>  
>> +            let isWin10or11 = false;
>> +
>>              counts = {}; // en/disable hardwarebuttons
>>              let hasCloudInit = false;
>>              me.rstore.getData().items.forEach(function ({ id, data }) {
>> @@ -629,6 +692,10 @@ Ext.define('PVE.qemu.HardwareView', {
>>                      let type = match[1];
>>                      counts[type] = (counts[type] || 0) + 1;
>>                  }
>> +
>> +                if (id === 'ostype' && (data.value === 'win10' || data.value === 'win11')) {
>> +                    isWin10or11 = true;
> 
> Hmm, this is not complete though? What if my Linux distro uses a MS blessed
> signing key for the bootloader and switch to the 2023 one?

Ah, very good point! Right, they do depend on the Microsoft KEK too..

> Maybe always show it if windows or pre-enrolled-keys is true?

Ack. The backend currently also checks for OS type being Win10/11, I'll
adapt it there too.

>> @@ -822,6 +903,7 @@ Ext.define('PVE.qemu.HardwareView', {
>>                  },
>>                  remove_btn,
>>                  edit_btn,
>> +                efiEnrollButton,
> 
> Slightly torn here on button placement. Semantically it would fit better in the
> disk-action sub-menu, and while it's a bit less subtle there, it's IMO not that
> much more noticeable as is.
> If you strongly disagree with me, which I'm naturally fine with, I'd vouch for at
> least move it to the end so that the other buttons do not "jump" location when
> selection changes from another HW property to an efidisk one.

Okay, I'll move it to the disk-action sub menu. Will also add a docs patch.


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


  reply	other threads:[~2026-01-21 13:08 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-13 10:54 [pve-devel] [PATCH-SERIES qemu-server/manager v2 0/9] improve Microsoft+Windows UEFI CA 2023 enrollment Fiona Ebner
2026-01-13 10:54 ` [pve-devel] [PATCH qemu-server v2 1/9] qm enroll-efi-keys: do not remove EFI disk when config was modified during operation Fiona Ebner
2026-01-13 10:54 ` [pve-devel] [PATCH qemu-server v2 2/9] ovmf: enroll ms 2023 cert: pass along parsed drive Fiona Ebner
2026-01-13 10:54 ` [pve-devel] [PATCH qemu-server v2 3/9] config: apply pending: code style: avoid some line bloat Fiona Ebner
2026-01-13 10:54 ` [pve-devel] [PATCH qemu-server v2 4/9] config: apply pending: efi: enroll Microsoft UEFI CA 2023 when setting ms-cert=2023 option Fiona Ebner
2026-01-13 10:54 ` [pve-devel] [PATCH qemu-server v2 5/9] ovmf: also enroll the Windows UEFI CA 2023 key Fiona Ebner
2026-01-13 10:54 ` [pve-devel] [PATCH qemu-server v2 6/9] efi disk: distinguish between having only MS 2023 cert and also having Windows 2023 cert Fiona Ebner
2026-01-13 10:54 ` [pve-devel] [PATCH manager v2 7/9] ui: qemu: hd efi: fix typo in warning Fiona Ebner
2026-01-20 17:50   ` [pve-devel] applied: " Thomas Lamprecht
2026-01-13 10:54 ` [pve-devel] [PATCH manager v2 8/9] ui: qemu: hardware: efi: allow enrolling Microsoft+Windows UEFI CA 2023 Fiona Ebner
2026-01-20 17:50   ` Thomas Lamprecht
2026-01-21 13:08     ` Fiona Ebner [this message]
2026-01-13 10:54 ` [pve-devel] [PATCH manager v2 9/9] ui: qemu: hardware: efi: use 2023w value when enrolling certs Fiona Ebner
2026-01-20 17:42   ` Thomas Lamprecht
2026-01-21 13:08     ` Fiona Ebner
2026-01-20 11:34 ` [pve-devel] [PATCH-SERIES qemu-server/manager v2 0/9] improve Microsoft+Windows UEFI CA 2023 enrollment Fiona Ebner
2026-01-20 17:51 ` [pve-devel] partially-applied-series: " Thomas Lamprecht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=78bfb5b9-f00c-4641-a971-a6c1d8dea4c4@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    --cc=t.lamprecht@proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal