Kconfig 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. #
  3. # TPM device configuration
  4. #
  5. menuconfig TCG_TPM
  6. tristate "TPM Hardware Support"
  7. depends on HAS_IOMEM
  8. imply SECURITYFS
  9. select CRYPTO
  10. select CRYPTO_HASH_INFO
  11. help
  12. If you have a TPM security chip in your system, which
  13. implements the Trusted Computing Group's specification,
  14. say Yes and it will be accessible from within Linux. For
  15. more information see <http://www.trustedcomputinggroup.org>.
  16. An implementation of the Trusted Software Stack (TSS), the
  17. userspace enablement piece of the specification, can be
  18. obtained at: <http://sourceforge.net/projects/trousers>. To
  19. compile this driver as a module, choose M here; the module
  20. will be called tpm. If unsure, say N.
  21. Notes:
  22. 1) For more TPM drivers enable CONFIG_PNP, CONFIG_ACPI
  23. and CONFIG_PNPACPI.
  24. 2) Without ACPI enabled, the BIOS event log won't be accessible,
  25. which is required to validate the PCR 0-7 values.
  26. if TCG_TPM
  27. config TCG_TPM2_HMAC
  28. bool "Use HMAC and encrypted transactions on the TPM bus"
  29. default X86_64
  30. select CRYPTO_ECDH
  31. select CRYPTO_LIB_AESCFB
  32. select CRYPTO_LIB_SHA256
  33. help
  34. Setting this causes us to deploy a scheme which uses request
  35. and response HMACs in addition to encryption for
  36. communicating with the TPM to prevent or detect bus snooping
  37. and interposer attacks (see tpm-security.rst). Saying Y
  38. here adds some encryption overhead to all kernel to TPM
  39. transactions.
  40. config HW_RANDOM_TPM
  41. bool "TPM HW Random Number Generator support"
  42. depends on TCG_TPM && HW_RANDOM && !(TCG_TPM=y && HW_RANDOM=m)
  43. default y
  44. help
  45. This setting exposes the TPM's Random Number Generator as a hwrng
  46. device. This allows the kernel to collect randomness from the TPM at
  47. boot, and provides the TPM randomines in /dev/hwrng.
  48. If unsure, say Y.
  49. config TCG_TIS_CORE
  50. tristate
  51. help
  52. TCG TIS TPM core driver. It implements the TPM TCG TIS logic and hooks
  53. into the TPM kernel APIs. Physical layers will register against it.
  54. config TCG_TIS
  55. tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface"
  56. depends on X86 || OF
  57. select TCG_TIS_CORE
  58. help
  59. If you have a TPM security chip that is compliant with the
  60. TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO
  61. specification (TPM2.0) say Yes and it will be accessible from
  62. within Linux. To compile this driver as a module, choose M here;
  63. the module will be called tpm_tis.
  64. config TCG_TIS_SPI
  65. tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (SPI)"
  66. depends on SPI
  67. select TCG_TIS_CORE
  68. help
  69. If you have a TPM security chip which is connected to a regular,
  70. non-tcg SPI master (i.e. most embedded platforms) that is compliant with the
  71. TCG TIS 1.3 TPM specification (TPM1.2) or the TCG PTP FIFO
  72. specification (TPM2.0) say Yes and it will be accessible from
  73. within Linux. To compile this driver as a module, choose M here;
  74. the module will be called tpm_tis_spi.
  75. config TCG_TIS_SPI_CR50
  76. bool "Cr50 SPI Interface"
  77. depends on TCG_TIS_SPI
  78. help
  79. If you have a H1 secure module running Cr50 firmware on SPI bus,
  80. say Yes and it will be accessible from within Linux.
  81. config TCG_TIS_I2C
  82. tristate "TPM Interface Specification 1.3 Interface / TPM 2.0 FIFO Interface - (I2C - generic)"
  83. depends on I2C
  84. select CRC_CCITT
  85. select TCG_TIS_CORE
  86. help
  87. If you have a TPM security chip, compliant with the TCG TPM PTP
  88. (I2C interface) specification and connected to an I2C bus master,
  89. say Yes and it will be accessible from within Linux.
  90. To compile this driver as a module, choose M here;
  91. the module will be called tpm_tis_i2c.
  92. config TCG_TIS_SYNQUACER
  93. tristate "TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface (MMIO - SynQuacer)"
  94. depends on ARCH_SYNQUACER || COMPILE_TEST
  95. select TCG_TIS_CORE
  96. help
  97. If you have a TPM security chip that is compliant with the
  98. TCG TIS 1.2 TPM specification (TPM1.2) or the TCG PTP FIFO
  99. specification (TPM2.0) say Yes and it will be accessible from
  100. within Linux on Socionext SynQuacer platform.
  101. To compile this driver as a module, choose M here;
  102. the module will be called tpm_tis_synquacer.
  103. config TCG_TIS_I2C_CR50
  104. tristate "TPM Interface Specification 2.0 Interface (I2C - CR50)"
  105. depends on I2C
  106. help
  107. This is a driver for the Google cr50 I2C TPM interface which is a
  108. custom microcontroller and requires a custom i2c protocol interface
  109. to handle the limitations of the hardware. To compile this driver
  110. as a module, choose M here; the module will be called tcg_tis_i2c_cr50.
  111. config TCG_TIS_I2C_ATMEL
  112. tristate "TPM Interface Specification 1.2 Interface (I2C - Atmel)"
  113. depends on I2C
  114. help
  115. If you have an Atmel I2C TPM security chip say Yes and it will be
  116. accessible from within Linux.
  117. To compile this driver as a module, choose M here; the module will
  118. be called tpm_tis_i2c_atmel.
  119. config TCG_TIS_I2C_INFINEON
  120. tristate "TPM Interface Specification 1.2 Interface (I2C - Infineon)"
  121. depends on I2C
  122. help
  123. If you have a TPM security chip that is compliant with the
  124. TCG TIS 1.2 TPM specification and Infineon's I2C Protocol Stack
  125. Specification 0.20 say Yes and it will be accessible from within
  126. Linux.
  127. To compile this driver as a module, choose M here; the module
  128. will be called tpm_i2c_infineon.
  129. config TCG_TIS_I2C_NUVOTON
  130. tristate "TPM Interface Specification 1.2 Interface (I2C - Nuvoton)"
  131. depends on I2C
  132. help
  133. If you have a TPM security chip with an I2C interface from
  134. Nuvoton Technology Corp. say Yes and it will be accessible
  135. from within Linux.
  136. To compile this driver as a module, choose M here; the module
  137. will be called tpm_i2c_nuvoton.
  138. config TCG_NSC
  139. tristate "National Semiconductor TPM Interface"
  140. depends on X86
  141. help
  142. If you have a TPM security chip from National Semiconductor
  143. say Yes and it will be accessible from within Linux. To
  144. compile this driver as a module, choose M here; the module
  145. will be called tpm_nsc.
  146. config TCG_ATMEL
  147. tristate "Atmel TPM Interface"
  148. depends on PPC64 || HAS_IOPORT_MAP
  149. depends on HAS_IOPORT
  150. help
  151. If you have a TPM security chip from Atmel say Yes and it
  152. will be accessible from within Linux. To compile this driver
  153. as a module, choose M here; the module will be called tpm_atmel.
  154. config TCG_INFINEON
  155. tristate "Infineon Technologies TPM Interface"
  156. depends on PNP || COMPILE_TEST
  157. help
  158. If you have a TPM security chip from Infineon Technologies
  159. (either SLD 9630 TT 1.1 or SLB 9635 TT 1.2) say Yes and it
  160. will be accessible from within Linux.
  161. To compile this driver as a module, choose M here; the module
  162. will be called tpm_infineon.
  163. Further information on this driver and the supported hardware
  164. can be found at http://www.trust.rub.de/projects/linux-device-driver-infineon-tpm/
  165. config TCG_IBMVTPM
  166. tristate "IBM VTPM Interface"
  167. depends on PPC_PSERIES
  168. help
  169. If you have IBM virtual TPM (VTPM) support say Yes and it
  170. will be accessible from within Linux. To compile this driver
  171. as a module, choose M here; the module will be called tpm_ibmvtpm.
  172. config TCG_XEN
  173. tristate "XEN TPM Interface"
  174. depends on TCG_TPM && XEN
  175. select XEN_XENBUS_FRONTEND
  176. help
  177. If you want to make TPM support available to a Xen user domain,
  178. say Yes and it will be accessible from within Linux. See
  179. the manpages for xl, xl.conf, and docs/misc/vtpm.txt in
  180. the Xen source repository for more details.
  181. To compile this driver as a module, choose M here; the module
  182. will be called xen-tpmfront.
  183. config TCG_CRB
  184. tristate "TPM 2.0 CRB Interface"
  185. depends on ACPI
  186. help
  187. If you have a TPM security chip that is compliant with the
  188. TCG CRB 2.0 TPM specification say Yes and it will be accessible
  189. from within Linux. To compile this driver as a module, choose
  190. M here; the module will be called tpm_crb.
  191. config TCG_VTPM_PROXY
  192. tristate "VTPM Proxy Interface"
  193. depends on TCG_TPM
  194. help
  195. This driver proxies for an emulated TPM (vTPM) running in userspace.
  196. A device /dev/vtpmx is provided that creates a device pair
  197. /dev/vtpmX and a server-side file descriptor on which the vTPM
  198. can receive commands.
  199. config TCG_FTPM_TEE
  200. tristate "TEE based fTPM Interface"
  201. depends on TEE && OPTEE
  202. help
  203. This driver proxies for firmware TPM running in TEE.
  204. source "drivers/char/tpm/st33zp24/Kconfig"
  205. endif # TCG_TPM