]> git.proxmox.com Git - mirror_qemu.git/commit
tpm: Added support for TPM emulator
authorAmarnath Valluri <amarnath.valluri@intel.com>
Fri, 29 Sep 2017 11:10:20 +0000 (14:10 +0300)
committerStefan Berger <stefanb@linux.vnet.ibm.com>
Fri, 13 Oct 2017 11:34:33 +0000 (07:34 -0400)
commitf4ede81eed29e6140374177d1f2808248c5b5650
treee4d15d8decf07865b35c0ad01e64ef152bcf853f
parent4a3d80980ebf71d8faf9d0ce2e2e23bdda5728df
tpm: Added support for TPM emulator

This change introduces a new TPM backend driver that can communicate with
swtpm(software TPM emulator) using unix domain socket interface. QEMU talks to
the TPM emulator using QEMU's socket-based chardev backend device.

Swtpm uses two Unix sockets for communications, one for plain TPM commands and
responses, and one for out-of-band control messages. QEMU passes the data
socket to be used over the control channel.

The swtpm and associated tools can be found here:
    https://github.com/stefanberger/swtpm

The swtpm's control channel protocol specification can be found here:
    https://github.com/stefanberger/swtpm/wiki/Control-Channel-Specification

Usage:
    # setup TPM state directory
    mkdir /tmp/mytpm
    chown -R tss:root /tmp/mytpm
    /usr/bin/swtpm_setup --tpm-state /tmp/mytpm --createek

    # Ask qemu to use TPM emulator with given tpm state directory
    qemu-system-x86_64 \
        [...] \
        -chardev socket,id=chrtpm,path=/tmp/swtpm-sock \
        -tpmdev emulator,id=tpm0,chardev=chrtpm \
        -device tpm-tis,tpmdev=tpm0 \
        [...]

Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Tested-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
configure
hmp.c
hw/tpm/Makefile.objs
hw/tpm/tpm_emulator.c [new file with mode: 0644]
hw/tpm/tpm_ioctl.h [new file with mode: 0644]
qapi/tpm.json
qemu-options.hx