cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

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 */