[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/2] tpm_emulator: Use latest tpm_ioctl.h from swtpm project
From: |
Marc-André Lureau |
Subject: |
Re: [PATCH 1/2] tpm_emulator: Use latest tpm_ioctl.h from swtpm project |
Date: |
Thu, 8 Sep 2022 09:54:48 +0400 |
On Thu, Sep 8, 2022 at 2:28 AM Stefan Berger <stefanb@linux.ibm.com> wrote:
>
> Use the latest tpm_ioctl.h from upstream swtpm project.
>
> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> backends/tpm/tpm_ioctl.h | 96 +++++++++++++++++++++++++++++++---------
> 1 file changed, 76 insertions(+), 20 deletions(-)
>
> diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h
> index d67bf0283b..e506ef5160 100644
> --- a/backends/tpm/tpm_ioctl.h
> +++ b/backends/tpm/tpm_ioctl.h
> @@ -5,10 +5,15 @@
> *
> * This file is licensed under the terms of the 3-clause BSD license
> */
> +#ifndef _TPM_IOCTL_H_
> +#define _TPM_IOCTL_H_
>
> -#ifndef TPM_IOCTL_H
> -#define TPM_IOCTL_H
> +#if defined(__CYGWIN__)
> +# define __USE_LINUX_IOCTL_DEFS
> +#endif
>
> +#include <stdint.h>
> +#include <sys/types.h>
> #ifndef _WIN32
> #include <sys/uio.h>
> #include <sys/ioctl.h>
> @@ -196,6 +201,48 @@ struct ptm_setbuffersize {
> } u;
> };
>
> +#define PTM_GETINFO_SIZE (3 * 1024)
> +/*
> + * PTM_GET_INFO: Get info about the TPM implementation (from libtpms)
> + *
> + * This request allows to indirectly call TPMLIB_GetInfo(flags) and
> + * retrieve information from libtpms.
> + * Only one transaction is currently necessary for returning results
> + * to a client. Therefore, totlength and length will be the same if
> + * offset is 0.
> + */
> +struct ptm_getinfo {
> + union {
> + struct {
> + uint64_t flags;
> + uint32_t offset; /* offset from where to read */
> + uint32_t pad; /* 32 bit arch */
> + } req; /* request */
> + struct {
> + ptm_res tpm_result;
> + uint32_t totlength;
> + uint32_t length;
> + char buffer[PTM_GETINFO_SIZE];
> + } resp; /* response */
> + } u;
> +};
> +
> +#define SWTPM_INFO_TPMSPECIFICATION ((uint64_t)1 << 0)
> +#define SWTPM_INFO_TPMATTRIBUTES ((uint64_t)1 << 1)
> +
> +/*
> + * PTM_LOCK_STORAGE: Lock the storage and retry n times
> + */
> +struct ptm_lockstorage {
> + union {
> + struct {
> + uint32_t retries; /* number of retries */
> + } req; /* request */
> + struct {
> + ptm_res tpm_result;
> + } resp; /* reponse */
> + } u;
> +};
>
> typedef uint64_t ptm_cap;
> typedef struct ptm_est ptm_est;
> @@ -207,6 +254,8 @@ typedef struct ptm_getstate ptm_getstate;
> typedef struct ptm_setstate ptm_setstate;
> typedef struct ptm_getconfig ptm_getconfig;
> typedef struct ptm_setbuffersize ptm_setbuffersize;
> +typedef struct ptm_getinfo ptm_getinfo;
> +typedef struct ptm_lockstorage ptm_lockstorage;
>
> /* capability flags returned by PTM_GET_CAPABILITY */
> #define PTM_CAP_INIT (1)
> @@ -223,6 +272,9 @@ typedef struct ptm_setbuffersize ptm_setbuffersize;
> #define PTM_CAP_GET_CONFIG (1 << 11)
> #define PTM_CAP_SET_DATAFD (1 << 12)
> #define PTM_CAP_SET_BUFFERSIZE (1 << 13)
> +#define PTM_CAP_GET_INFO (1 << 14)
> +#define PTM_CAP_SEND_COMMAND_HEADER (1 << 15)
> +#define PTM_CAP_LOCK_STORAGE (1 << 16)
>
> #ifndef _WIN32
> enum {
> @@ -243,6 +295,8 @@ enum {
> PTM_GET_CONFIG = _IOR('P', 14, ptm_getconfig),
> PTM_SET_DATAFD = _IOR('P', 15, ptm_res),
> PTM_SET_BUFFERSIZE = _IOWR('P', 16, ptm_setbuffersize),
> + PTM_GET_INFO = _IOWR('P', 17, ptm_getinfo),
> + PTM_LOCK_STORAGE = _IOWR('P', 18, ptm_lockstorage),
> };
> #endif
>
> @@ -257,23 +311,25 @@ enum {
> * and ptm_set_state:u.req.data) are 0xffffffff.
> */
> enum {
> - CMD_GET_CAPABILITY = 1,
> - CMD_INIT,
> - CMD_SHUTDOWN,
> - CMD_GET_TPMESTABLISHED,
> - CMD_SET_LOCALITY,
> - CMD_HASH_START,
> - CMD_HASH_DATA,
> - CMD_HASH_END,
> - CMD_CANCEL_TPM_CMD,
> - CMD_STORE_VOLATILE,
> - CMD_RESET_TPMESTABLISHED,
> - CMD_GET_STATEBLOB,
> - CMD_SET_STATEBLOB,
> - CMD_STOP,
> - CMD_GET_CONFIG,
> - CMD_SET_DATAFD,
> - CMD_SET_BUFFERSIZE,
> + CMD_GET_CAPABILITY = 1, /* 0x01 */
> + CMD_INIT, /* 0x02 */
> + CMD_SHUTDOWN, /* 0x03 */
> + CMD_GET_TPMESTABLISHED, /* 0x04 */
> + CMD_SET_LOCALITY, /* 0x05 */
> + CMD_HASH_START, /* 0x06 */
> + CMD_HASH_DATA, /* 0x07 */
> + CMD_HASH_END, /* 0x08 */
> + CMD_CANCEL_TPM_CMD, /* 0x09 */
> + CMD_STORE_VOLATILE, /* 0x0a */
> + CMD_RESET_TPMESTABLISHED, /* 0x0b */
> + CMD_GET_STATEBLOB, /* 0x0c */
> + CMD_SET_STATEBLOB, /* 0x0d */
> + CMD_STOP, /* 0x0e */
> + CMD_GET_CONFIG, /* 0x0f */
> + CMD_SET_DATAFD, /* 0x10 */
> + CMD_SET_BUFFERSIZE, /* 0x11 */
> + CMD_GET_INFO, /* 0x12 */
> + CMD_LOCK_STORAGE, /* 0x13 */
> };
>
> -#endif /* TPM_IOCTL_H */
> +#endif /* _TPM_IOCTL_H_ */
> --
> 2.37.2
>