mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
tpm: Move TPM common base definitions to the command header
These are top level definitions shared by both TPM 1 and 2 family chips. This includes core definitions like TPM localities, common crypto algorithm IDs, and the base TPM command header. Co-developed-by: Daniel P. Smith <dpsmith@apertussolutions.com> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com> Co-developed-by: Alec Brown <alec.r.brown@oracle.com> Signed-off-by: Alec Brown <alec.r.brown@oracle.com> Signed-off-by: Ross Philipson <ross.philipson@gmail.com> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
This commit is contained in:
parent
7a5ec92813
commit
88c5a62c3a
|
|
@ -33,7 +33,6 @@
|
|||
#endif
|
||||
|
||||
#define TPM_MINOR 224 /* officially assigned */
|
||||
#define TPM_BUFSIZE 4096
|
||||
#define TPM_NUM_DEVICES 65536
|
||||
#define TPM_RETRY 50
|
||||
|
||||
|
|
|
|||
|
|
@ -27,49 +27,12 @@
|
|||
|
||||
#include <linux/tpm_command.h>
|
||||
|
||||
#define TPM_DIGEST_SIZE 20 /* Max TPM v1.2 PCR size */
|
||||
|
||||
#define TPM2_MAX_DIGEST_SIZE SHA512_DIGEST_SIZE
|
||||
#define TPM2_MAX_PCR_BANKS 8
|
||||
|
||||
struct tpm_chip;
|
||||
struct trusted_key_payload;
|
||||
struct trusted_key_options;
|
||||
/* opaque structure, holds auth session parameters like the session key */
|
||||
struct tpm2_auth;
|
||||
|
||||
/* if you add a new hash to this, increment TPM_MAX_HASHES below */
|
||||
enum tpm_algorithms {
|
||||
TPM_ALG_ERROR = 0x0000,
|
||||
TPM_ALG_SHA1 = 0x0004,
|
||||
TPM_ALG_AES = 0x0006,
|
||||
TPM_ALG_KEYEDHASH = 0x0008,
|
||||
TPM_ALG_SHA256 = 0x000B,
|
||||
TPM_ALG_SHA384 = 0x000C,
|
||||
TPM_ALG_SHA512 = 0x000D,
|
||||
TPM_ALG_NULL = 0x0010,
|
||||
TPM_ALG_SM3_256 = 0x0012,
|
||||
TPM_ALG_ECC = 0x0023,
|
||||
TPM_ALG_CFB = 0x0043,
|
||||
};
|
||||
|
||||
/*
|
||||
* maximum number of hashing algorithms a TPM can have. This is
|
||||
* basically a count of every hash in tpm_algorithms above
|
||||
*/
|
||||
#define TPM_MAX_HASHES 5
|
||||
|
||||
struct tpm_digest {
|
||||
u16 alg_id;
|
||||
u8 digest[TPM2_MAX_DIGEST_SIZE];
|
||||
} __packed;
|
||||
|
||||
struct tpm_bank_info {
|
||||
u16 alg_id;
|
||||
u16 digest_size;
|
||||
u16 crypto_id;
|
||||
};
|
||||
|
||||
enum TPM_OPS_FLAGS {
|
||||
TPM_OPS_AUTO_STARTUP = BIT(0),
|
||||
};
|
||||
|
|
@ -127,7 +90,7 @@ struct tpm_chip_seqops {
|
|||
const struct seq_operations *seqops;
|
||||
};
|
||||
|
||||
/* fixed define for the curve we use which is NIST_P256 */
|
||||
/* Fixed define for the curve we use which is NIST_P256 */
|
||||
#define EC_PT_SZ 32
|
||||
|
||||
/*
|
||||
|
|
@ -209,8 +172,6 @@ struct tpm_chip {
|
|||
#endif
|
||||
};
|
||||
|
||||
#define TPM_HEADER_SIZE 10
|
||||
|
||||
static inline enum tpm2_mso_type tpm2_handle_mso(u32 handle)
|
||||
{
|
||||
return handle >> 24;
|
||||
|
|
@ -239,15 +200,6 @@ enum tpm_chip_flags {
|
|||
|
||||
#define to_tpm_chip(d) container_of(d, struct tpm_chip, dev)
|
||||
|
||||
struct tpm_header {
|
||||
__be16 tag;
|
||||
__be32 length;
|
||||
union {
|
||||
__be32 ordinal;
|
||||
__be32 return_code;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
enum tpm_buf_flags {
|
||||
/* the capacity exceeded: */
|
||||
TPM_BUF_OVERFLOW = BIT(0),
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
#ifndef __LINUX_TPM_COMMAND_H__
|
||||
#define __LINUX_TPM_COMMAND_H__
|
||||
|
||||
#include <crypto/sha2.h>
|
||||
|
||||
/*
|
||||
* == TPM 1 Family Chips ==
|
||||
*
|
||||
|
|
@ -427,4 +429,93 @@ struct tpm2_context {
|
|||
__be16 blob_size;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* == TPM Common Defs ==
|
||||
*/
|
||||
|
||||
#define TPM_DIGEST_SIZE 20 /* Max TPM v1.2 PCR size */
|
||||
#define TPM_BUFSIZE 4096
|
||||
|
||||
/*
|
||||
* SHA-512 is, as of today, the largest digest in the TCG algorithm repository.
|
||||
*/
|
||||
#define TPM2_MAX_DIGEST_SIZE SHA512_DIGEST_SIZE
|
||||
|
||||
/*
|
||||
* A TPM name digest i.e., TPMT_HA, is a concatenation of TPM_ALG_ID of the
|
||||
* name algorithm and hash of TPMT_PUBLIC.
|
||||
*/
|
||||
#define TPM2_MAX_NAME_SIZE (TPM2_MAX_DIGEST_SIZE + 2)
|
||||
|
||||
/*
|
||||
* Fixed define for the size of a name. This is actually HASHALG size
|
||||
* plus 2, so 32 for SHA256
|
||||
*/
|
||||
#define TPM2_NULL_NAME_SIZE 34
|
||||
|
||||
/*
|
||||
* The maximum number of PCR banks.
|
||||
*/
|
||||
#define TPM2_MAX_PCR_BANKS 8
|
||||
|
||||
/* If you add a new hash to this, increment TPM_MAX_HASHES below */
|
||||
enum tpm_algorithms {
|
||||
TPM_ALG_ERROR = 0x0000,
|
||||
TPM_ALG_SHA1 = 0x0004,
|
||||
TPM_ALG_AES = 0x0006,
|
||||
TPM_ALG_KEYEDHASH = 0x0008,
|
||||
TPM_ALG_SHA256 = 0x000B,
|
||||
TPM_ALG_SHA384 = 0x000C,
|
||||
TPM_ALG_SHA512 = 0x000D,
|
||||
TPM_ALG_NULL = 0x0010,
|
||||
TPM_ALG_SM3_256 = 0x0012,
|
||||
TPM_ALG_ECC = 0x0023,
|
||||
TPM_ALG_CFB = 0x0043,
|
||||
};
|
||||
|
||||
/*
|
||||
* The locality (0 - 4) for a TPM, as defined in section 3.2 of the
|
||||
* Client Platform Profile Specification.
|
||||
*/
|
||||
enum tpm_localities {
|
||||
TPM_LOCALITY_0 = 0, /* Static RTM */
|
||||
TPM_LOCALITY_1 = 1, /* Dynamic OS */
|
||||
TPM_LOCALITY_2 = 2, /* DRTM Environment */
|
||||
TPM_LOCALITY_3 = 3, /* Aux Components */
|
||||
TPM_LOCALITY_4 = 4, /* CPU DRTM Establishment */
|
||||
TPM_MAX_LOCALITY = TPM_LOCALITY_4
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure to represent active PCR algorithm banks usable by the
|
||||
* TPM chip.
|
||||
*/
|
||||
struct tpm_bank_info {
|
||||
u16 alg_id;
|
||||
u16 digest_size;
|
||||
u16 crypto_id;
|
||||
};
|
||||
|
||||
/*
|
||||
* Maximum number of hashing algorithms a TPM can have. This is
|
||||
* basically a count of every hash in tpm_algorithms above
|
||||
*/
|
||||
#define TPM_MAX_HASHES 5
|
||||
|
||||
struct tpm_digest {
|
||||
u16 alg_id;
|
||||
u8 digest[TPM2_MAX_DIGEST_SIZE];
|
||||
} __packed;
|
||||
|
||||
#define TPM_HEADER_SIZE 10
|
||||
|
||||
struct tpm_header {
|
||||
__be16 tag;
|
||||
__be32 length;
|
||||
union {
|
||||
__be32 ordinal;
|
||||
__be32 return_code;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user