From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 4E2B91FF17A for ; Tue, 28 Oct 2025 13:55:26 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9D4BB1ABBA; Tue, 28 Oct 2025 13:55:40 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1761656130; x=1762260930; d=canarybit.eu; s=rsa1; h=content-transfer-encoding:mime-version:references:in-reply-to:message-id:date: subject:cc:to:from:from; bh=DE1MccceP7M/SR62Hj6opVdj725edJSfrxzLTkHK6Bs=; b=VLkVptilqSvgufHrfgHj6NBDyuJjVmfTPPrQaLkxMFJ5jw7d5hsN9DLmUAuvNOV7X6nRiFboOofSF YD0hCmTF5y614kRNJi91ihxyu26sWUEj2mgXF/g3j0yExfcEq6Wp5nsCA0txiTsdZ49736TzQ9cSlH hsh79qw4Vy4I8j7XlnKD6i152O/vme9lV+zb3rmN+eq8FE0wBvn0WjrTyaNgW4g5w3uexLsMlbpr9k IgRgxSSZSonLWDs3XgzwjSRHg9fi0uXwnHFPD+wmhBQ8qoSvITAu2ady82p2lE8Tke3Yb06adD96kt uYyl5NQvN7g6xCcLS0yC6gYMrRLtT3g== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1761656130; x=1762260930; d=canarybit.eu; s=ed1; h=content-transfer-encoding:mime-version:references:in-reply-to:message-id:date: subject:cc:to:from:from; bh=DE1MccceP7M/SR62Hj6opVdj725edJSfrxzLTkHK6Bs=; b=bL2BCrlYBP0ccqisbiIR8TpEmjsjDdr4zoO7znTqKU9ZnWmOT54WcgHjeD2j9EhlvxJD71a58OLtN Q/WdNvgBA== X-HalOne-ID: 615fe092-b3fd-11f0-ada5-d510462faafc From: Anton Iacobaeus To: pve-devel@lists.proxmox.com Date: Tue, 28 Oct 2025 13:54:27 +0100 Message-ID: <20251028125459.287308-6-anton.iacobaeus@canarybit.eu> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251028125459.287308-1-anton.iacobaeus@canarybit.eu> References: <20251028125459.287308-1-anton.iacobaeus@canarybit.eu> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.612 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_MISSING 0.1 Missing DMARC policy MIME_BASE64_TEXT 1.741 Message text disguised using base64 encoding RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust SPF_HELO_PASS -0.001 SPF: HELO matches SPF record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Subject: [pve-devel] [PATCH manager v3 2/2] Add support for TDX attestation X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Add configuration options for the quote-generation-socket used to communicate with the Quote Generation Service. This enables attestation support for TDX using vsock or unix sockets. More information can be found at: https://www.qemu.org/docs/master/interop/qemu-storage-daemon-qmp-ref.html#object-QSD-qom.TdxGuestProperties This only includes support for vsock and unix sockets. The SocketAddress object in QEMU also supports inet and fd, which are not commonly used in TDX. Signed-off-by: Anton Iacobaeus --- www/manager6/qemu/TdxEdit.js | 103 ++++++++++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 1 deletion(-) diff --git a/www/manager6/qemu/TdxEdit.js b/www/manager6/qemu/TdxEdit.js index 3f43bf7a..95e086b5 100644 --- a/www/manager6/qemu/TdxEdit.js +++ b/www/manager6/qemu/TdxEdit.js @@ -7,9 +7,14 @@ Ext.define('PVE.qemu.TdxInputPanel', { viewModel: { data: { type: '__default__', + attestation: 1, + socketType: 'vsock', }, formulas: { tdxEnabled: (get) => get('type') === 'tdx', + attestationEnabled: (get) => Number(get('attestation')) === 1, + vsockEnabled: (get) => get('socketType') === 'vsock', + unixSocketEnabled: (get) => get('socketType') === 'unix', }, }, @@ -18,12 +23,17 @@ Ext.define('PVE.qemu.TdxInputPanel', { values.delete = 'intel-tdx'; return values; } + if (values.tight !== undefined && !values.tight) { + values['unix-tight'] = 0; + } + delete values.tight; let ret = {}; ret['intel-tdx'] = PVE.Parser.printPropertyString(values, 'type'); return ret; }, setValues: function (values) { + values.tight = PVE.Parser.parseBoolean(values['unix-tight'], 1); this.callParent(arguments); }, @@ -63,7 +73,98 @@ Ext.define('PVE.qemu.TdxInputPanel', { }, ], - advancedItems: [], + advancedItems: [ + { + xtype: 'proxmoxcheckbox', + fieldLabel: gettext('Enable Attestation'), + labelWidth: 150, + name: 'attestation', + value: 1, + uncheckedValue: 0, + bind: { + value: '{attestation}', + hidden: '{!tdxEnabled}', + disabled: '{!tdxEnabled}', + }, + }, + { + xtype: 'proxmoxKVComboBox', + fieldLabel: gettext('Socket Type'), + labelWidth: 150, + name: 'socket-type', + value: 'vsock', + comboItems: [ + ['vsock', 'VSOCK'], + ['unix', 'Unix Socket'], + ], + bind: { + value: '{socketType}', + hidden: '{!tdxEnabled}', + disabled: '{!attestationEnabled || !tdxEnabled}', + }, + }, + { + xtype: 'proxmoxintegerfield', + fieldLabel: gettext('CID'), + labelWidth: 150, + name: 'vsock-cid', + minValue: 2, + value: '2', + allowBlank: false, + bind: { + hidden: '{!vsockEnabled || !tdxEnabled}', + disabled: '{!vsockEnabled || !attestationEnabled || !tdxEnabled}', + }, + }, + { + xtype: 'proxmoxintegerfield', + fieldLabel: gettext('Port'), + labelWidth: 150, + name: 'vsock-port', + minValue: 0, + value: '4050', + allowBlank: false, + bind: { + hidden: '{!vsockEnabled || !tdxEnabled}', + disabled: '{!vsockEnabled || !attestationEnabled || !tdxEnabled}', + }, + }, + { + xtype: 'textfield', + fieldLabel: gettext('Socket Path'), + labelWidth: 150, + name: 'unix-path', + value: '/var/run/tdx-qgs/qgs.socket', + allowBlank: false, + bind: { + hidden: '{!unixSocketEnabled || !tdxEnabled}', + disabled: '{!unixSocketEnabled || !attestationEnabled || !tdxEnabled}', + }, + }, + { + xtype: 'proxmoxcheckbox', + fieldLabel: gettext('Abstract'), + labelWidth: 150, + name: 'unix-abstract', + value: 0, + bind: { + hidden: '{!unixSocketEnabled || !tdxEnabled}', + disabled: '{!unixSocketEnabled || !attestationEnabled || !tdxEnabled}', + }, + }, + { + xtype: 'proxmoxcheckbox', + fieldLabel: gettext('Tight'), + labelWidth: 150, + name: 'tight', + value: 1, + uncheckedValue: 0, + bind: { + hidden: '{!unixSocketEnabled || !tdxEnabled}', + disabled: '{!unixSocketEnabled || !attestationEnabled || !tdxEnabled}', + }, + }, + ], }); Ext.define('PVE.qemu.TdxEdit', { -- 2.43.0 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel