bc419a1cc5
SPDM enables authentication, attestation and key exchange to assist in providing infrastructure security enablement. It's a standard published by the DMTF [1]. SPDM supports multiple transports, including PCIe DOE and MCTP. This patch adds support to QEMU to connect to an external SPDM instance. SPDM support can be added to any QEMU device by exposing a TCP socket to a SPDM server. The server can then implement the SPDM decoding/encoding support, generally using libspdm [2]. This is similar to how the current TPM implementation works and means that the heavy lifting of setting up certificate chains, capabilities, measurements and complex crypto can be done outside QEMU by a well supported and tested library. 1: https://www.dmtf.org/standards/SPDM 2: https://github.com/DMTF/libspdm Signed-off-by: Huai-Cheng Kuo <hchkuo@avery-design.com.tw> Signed-off-by: Chris Browy <cbrowy@avery-design.com> Co-developed-by: Jonathan Cameron <Jonathan.cameron@huawei.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> [ Changes by WM - Bug fixes from testing ] Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com> [ Changes by AF: - Convert to be more QEMU-ified - Move to backends as it isn't PCIe specific ] Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20240703092027.644758-3-alistair.francis@wdc.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
39 lines
1.1 KiB
Meson
39 lines
1.1 KiB
Meson
system_ss.add([files(
|
|
'cryptodev-builtin.c',
|
|
'cryptodev-hmp-cmds.c',
|
|
'cryptodev.c',
|
|
'hostmem-ram.c',
|
|
'hostmem.c',
|
|
'rng-builtin.c',
|
|
'rng-egd.c',
|
|
'rng.c',
|
|
'confidential-guest-support.c',
|
|
), numa])
|
|
|
|
if host_os != 'windows'
|
|
system_ss.add(files('rng-random.c'))
|
|
system_ss.add(files('hostmem-file.c'))
|
|
system_ss.add([files('hostmem-shm.c'), rt])
|
|
endif
|
|
if host_os == 'linux'
|
|
system_ss.add(files('hostmem-memfd.c'))
|
|
system_ss.add(files('host_iommu_device.c'))
|
|
endif
|
|
if keyutils.found()
|
|
system_ss.add(keyutils, files('cryptodev-lkcf.c'))
|
|
endif
|
|
if have_vhost_user
|
|
system_ss.add(when: 'CONFIG_VIRTIO', if_true: files('vhost-user.c'))
|
|
endif
|
|
system_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost.c'))
|
|
system_ss.add(when: 'CONFIG_IOMMUFD', if_true: files('iommufd.c'))
|
|
if have_vhost_user_crypto
|
|
system_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost-user.c'))
|
|
endif
|
|
system_ss.add(when: gio, if_true: files('dbus-vmstate.c'))
|
|
system_ss.add(when: 'CONFIG_SGX', if_true: files('hostmem-epc.c'))
|
|
|
|
system_ss.add(when: 'CONFIG_SPDM_SOCKET', if_true: files('spdm-socket.c'))
|
|
|
|
subdir('tpm')
|