tpm-emu.h (1227B)
1/* 2 * Minimal TPM emulator for TPM test cases 3 * 4 * Copyright (c) 2018 Red Hat, Inc. 5 * 6 * Authors: 7 * Marc-André Lureau <marcandre.lureau@redhat.com> 8 * 9 * This work is licensed under the terms of the GNU GPL, version 2 or later. 10 * See the COPYING file in the top-level directory. 11 */ 12 13#ifndef TESTS_TPM_EMU_H 14#define TESTS_TPM_EMU_H 15 16#define TPM_RC_FAILURE 0x101 17#define TPM2_ST_NO_SESSIONS 0x8001 18 19#define TPM_FAIL 9 20#define TPM_TAG_RSP_COMMAND 0xc4 21 22#include "qemu/sockets.h" 23#include "io/channel.h" 24#include "sysemu/tpm.h" 25#include "libqos/libqtest.h" 26 27struct tpm_hdr { 28 uint16_t tag; 29 uint32_t len; 30 uint32_t code; /*ordinal/error */ 31 char buffer[]; 32} QEMU_PACKED; 33 34#ifndef CONFIG_TPM 35enum TPMVersion { 36 TPM_VERSION_1_2 = 1, 37 TPM_VERSION_2_0 = 2, 38}; 39#endif 40 41typedef struct TPMTestState { 42 GMutex data_mutex; 43 GCond data_cond; 44 bool data_cond_signal; 45 SocketAddress *addr; 46 QIOChannel *tpm_ioc; 47 GThread *emu_tpm_thread; 48 struct tpm_hdr *tpm_msg; 49 enum TPMVersion tpm_version; 50} TPMTestState; 51 52void tpm_emu_test_wait_cond(TPMTestState *s); 53void *tpm_emu_ctrl_thread(void *data); 54bool tpm_model_is_available(const char *args, const char *tpm_if); 55 56#endif /* TESTS_TPM_EMU_H */