mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 01:10:04 +00:00
![Nayna Jain](/assets/img/avatar_default.png)
The current TPM 2.0 device driver extends only the SHA1 PCR bank but the TCG Specification[1] recommends extending all active PCR banks, to prevent malicious users from setting unused PCR banks with fake measurements and quoting them. The existing in-kernel interface(tpm_pcr_extend()) expects only a SHA1 digest. To extend all active PCR banks with differing digest sizes, the SHA1 digest is padded with trailing 0's as needed. This patch reuses the defined digest sizes from the crypto subsystem, adding a dependency on CRYPTO_HASH_INFO module. [1] TPM 2.0 Specification referred here is "TCG PC Client Specific Platform Firmware Profile for TPM 2.0" Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Tested-by: Kenneth Goldman <kgold@linux.vnet.ibm.com> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
157 lines
5.7 KiB
Text
157 lines
5.7 KiB
Text
#
|
|
# TPM device configuration
|
|
#
|
|
|
|
menuconfig TCG_TPM
|
|
tristate "TPM Hardware Support"
|
|
depends on HAS_IOMEM
|
|
select SECURITYFS
|
|
select CRYPTO_HASH_INFO
|
|
---help---
|
|
If you have a TPM security chip in your system, which
|
|
implements the Trusted Computing Group's specification,
|
|
say Yes and it will be accessible from within Linux. For
|
|
more information see <http://www.trustedcomputinggroup.org>.
|
|
An implementation of the Trusted Software Stack (TSS), the
|
|
userspace enablement piece of the specification, can be
|
|
obtained at: <http://sourceforge.net/projects/trousers>. To
|
|
compile this driver as a module, choose M here; the module
|
|
will be called tpm. If unsure, say N.
|
|
Notes:
|
|
1) For more TPM drivers enable CONFIG_PNP, CONFIG_ACPI
|
|
and CONFIG_PNPACPI.
|
|
2) Without ACPI enabled, the BIOS event log won't be accessible,
|
|
which is required to validate the PCR 0-7 values.
|
|
|
|
if TCG_TPM
|
|
|
|
config TCG_TIS_CORE
|
|
tristate
|
|
---help---
|
|
TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks
|
|
into the TPM kernel APIs. Physical layers will register against it.
|
|
|
|
config TCG_TIS
|
|
tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface"
|
|
depends on X86 || OF
|
|
select TCG_TIS_CORE
|
|
---help---
|
|
If you have a TPM security chip that is compliant with the
|
|
TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO
|
|
specification (TPM2.0) say Yes and it will be accessible from
|
|
within Linux. To compile this driver as a module, choose M here;
|
|
the module will be called tpm_tis.
|
|
|
|
config TCG_TIS_SPI
|
|
tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)"
|
|
depends on SPI
|
|
select TCG_TIS_CORE
|
|
---help---
|
|
If you have a TPM security chip which is connected to a regular,
|
|
non-tcg SPI master (i.e. most embedded platforms) that is compliant with the
|
|
TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO
|
|
specification (TPM2.0) say Yes and it will be accessible from
|
|
within Linux. To compile this driver as a module, choose M here;
|
|
the module will be called tpm_tis_spi.
|
|
|
|
config TCG_TIS_I2C_ATMEL
|
|
tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)"
|
|
depends on I2C
|
|
---help---
|
|
If you have an Atmel I2C TPM security chip say Yes and it will be
|
|
accessible from within Linux.
|
|
To compile this driver as a module, choose M here; the module will
|
|
be called tpm_tis_i2c_atmel.
|
|
|
|
config TCG_TIS_I2C_INFINEON
|
|
tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)"
|
|
depends on I2C
|
|
---help---
|
|
If you have a TPM security chip that is compliant with the
|
|
TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack
|
|
Specification 0.20 say Yes and it will be accessible from within
|
|
Linux.
|
|
To compile this driver as a module, choose M here; the module
|
|
will be called tpm_i2c_infineon.
|
|
|
|
config TCG_TIS_I2C_NUVOTON
|
|
tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)"
|
|
depends on I2C
|
|
---help---
|
|
If you have a TPM security chip with an I2C interface from
|
|
Nuvoton Technology Corp. say Yes and it will be accessible
|
|
from within Linux.
|
|
To compile this driver as a module, choose M here; the module
|
|
will be called tpm_i2c_nuvoton.
|
|
|
|
config TCG_NSC
|
|
tristate "National Semiconductor TPM Interface"
|
|
depends on X86
|
|
---help---
|
|
If you have a TPM security chip from National Semiconductor
|
|
say Yes and it will be accessible from within Linux. To
|
|
compile this driver as a module, choose M here; the module
|
|
will be called tpm_nsc.
|
|
|
|
config TCG_ATMEL
|
|
tristate "Atmel TPM Interface"
|
|
depends on PPC64 || HAS_IOPORT_MAP
|
|
---help---
|
|
If you have a TPM security chip from Atmel say Yes and it
|
|
will be accessible from within Linux. To compile this driver
|
|
as a module, choose M here; the module will be called tpm_atmel.
|
|
|
|
config TCG_INFINEON
|
|
tristate "Infineon Technologies TPM Interface"
|
|
depends on PNP
|
|
---help---
|
|
If you have a TPM security chip from Infineon Technologies
|
|
(either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it
|
|
will be accessible from within Linux.
|
|
To compile this driver as a module, choose M here; the module
|
|
will be called tpm_infineon.
|
|
Further information on this driver and the supported hardware
|
|
can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/
|
|
|
|
config TCG_IBMVTPM
|
|
tristate "IBM VTPM Interface"
|
|
depends on PPC_PSERIES
|
|
---help---
|
|
If you have IBM virtual TPM (VTPM) support say Yes and it
|
|
will be accessible from within Linux. To compile this driver
|
|
as a module, choose M here; the module will be called tpm_ibmvtpm.
|
|
|
|
config TCG_XEN
|
|
tristate "XEN TPM Interface"
|
|
depends on TCG_TPM && XEN
|
|
select XEN_XENBUS_FRONTEND
|
|
---help---
|
|
If you want to make TPM support available to a Xen user domain,
|
|
say Yes and it will be accessible from within Linux. See
|
|
the manpages for xl, xl.conf, and docs/misc/vtpm.txt in
|
|
the Xen source repository for more details.
|
|
To compile this driver as a module, choose M here; the module
|
|
will be called xen-tpmfront.
|
|
|
|
config TCG_CRB
|
|
tristate "TPM 2.0 CRB Interface"
|
|
depends on X86 && ACPI
|
|
---help---
|
|
If you have a TPM security chip that is compliant with the
|
|
TCG CRB 2.0 TPM specification say Yes and it will be accessible
|
|
from within Linux. To compile this driver as a module, choose
|
|
M here; the module will be called tpm_crb.
|
|
|
|
config TCG_VTPM_PROXY
|
|
tristate "VTPM Proxy Interface"
|
|
depends on TCG_TPM
|
|
select ANON_INODES
|
|
---help---
|
|
This driver proxies for an emulated TPM (vTPM) running in userspace.
|
|
A device /dev/vtpmx is provided that creates a device pair
|
|
/dev/vtpmX and a server-side file descriptor on which the vTPM
|
|
can receive commands.
|
|
|
|
|
|
source "drivers/char/tpm/st33zp24/Kconfig"
|
|
endif # TCG_TPM
|