| # SPDX-License-Identifier: GPL-2.0-only | 
 | # | 
 | config INTEGRITY | 
 | 	bool "Integrity subsystem" | 
 | 	depends on SECURITY | 
 | 	default y | 
 | 	help | 
 | 	  This option enables the integrity subsystem, which is comprised | 
 | 	  of a number of different components including the Integrity | 
 | 	  Measurement Architecture (IMA), Extended Verification Module | 
 | 	  (EVM), IMA-appraisal extension, digital signature verification | 
 | 	  extension and audit measurement log support. | 
 |  | 
 | 	  Each of these components can be enabled/disabled separately. | 
 | 	  Refer to the individual components for additional details. | 
 |  | 
 | if INTEGRITY | 
 |  | 
 | config INTEGRITY_SIGNATURE | 
 | 	bool "Digital signature verification using multiple keyrings" | 
 | 	default n | 
 | 	select KEYS | 
 | 	select SIGNATURE | 
 | 	help | 
 | 	  This option enables digital signature verification support | 
 | 	  using multiple keyrings. It defines separate keyrings for each | 
 | 	  of the different use cases - evm, ima, and modules. | 
 | 	  Different keyrings improves search performance, but also allow | 
 | 	  to "lock" certain keyring to prevent adding new keys. | 
 | 	  This is useful for evm and module keyrings, when keys are | 
 | 	  usually only added from initramfs. | 
 |  | 
 | config INTEGRITY_ASYMMETRIC_KEYS | 
 | 	bool "Enable asymmetric keys support" | 
 | 	depends on INTEGRITY_SIGNATURE | 
 | 	default n | 
 | 	select ASYMMETRIC_KEY_TYPE | 
 | 	select ASYMMETRIC_PUBLIC_KEY_SUBTYPE | 
 | 	select CRYPTO_RSA | 
 | 	select X509_CERTIFICATE_PARSER | 
 | 	help | 
 | 	  This option enables digital signature verification using | 
 | 	  asymmetric keys. | 
 |  | 
 | config INTEGRITY_TRUSTED_KEYRING | 
 | 	bool "Require all keys on the integrity keyrings be signed" | 
 | 	depends on SYSTEM_TRUSTED_KEYRING | 
 | 	depends on INTEGRITY_ASYMMETRIC_KEYS | 
 | 	default y | 
 | 	help | 
 | 	   This option requires that all keys added to the .ima and | 
 | 	   .evm keyrings be signed by a key on the system trusted | 
 | 	   keyring. | 
 |  | 
 | config INTEGRITY_PLATFORM_KEYRING | 
 | 	bool "Provide keyring for platform/firmware trusted keys" | 
 | 	depends on INTEGRITY_ASYMMETRIC_KEYS | 
 | 	depends on SYSTEM_BLACKLIST_KEYRING | 
 | 	help | 
 | 	  Provide a separate, distinct keyring for platform trusted keys, which | 
 | 	  the kernel automatically populates during initialization from values | 
 | 	  provided by the platform for verifying the kexec'ed kerned image | 
 | 	  and, possibly, the initramfs signature. | 
 |  | 
 | config INTEGRITY_MACHINE_KEYRING | 
 | 	bool "Provide a keyring to which Machine Owner Keys may be added" | 
 | 	depends on SECONDARY_TRUSTED_KEYRING | 
 | 	depends on INTEGRITY_ASYMMETRIC_KEYS | 
 | 	depends on SYSTEM_BLACKLIST_KEYRING | 
 | 	depends on LOAD_UEFI_KEYS || LOAD_PPC_KEYS | 
 | 	help | 
 | 	  If set, provide a keyring to which Machine Owner Keys (MOK) may | 
 | 	  be added. This keyring shall contain just MOK keys.  Unlike keys | 
 | 	  in the platform keyring, keys contained in the .machine keyring will | 
 | 	  be trusted within the kernel. | 
 |  | 
 | config INTEGRITY_CA_MACHINE_KEYRING | 
 | 	bool "Enforce Machine Keyring CA Restrictions" | 
 | 	depends on INTEGRITY_MACHINE_KEYRING | 
 | 	default n | 
 | 	help | 
 | 	  The .machine keyring can be configured to enforce CA restriction | 
 | 	  on any key added to it.  By default no restrictions are in place | 
 | 	  and all Machine Owner Keys (MOK) are added to the machine keyring. | 
 | 	  If enabled only CA keys are added to the machine keyring, all | 
 | 	  other MOK keys load into the platform keyring. | 
 |  | 
 | config INTEGRITY_CA_MACHINE_KEYRING_MAX | 
 | 	bool "Only CA keys without DigitialSignature usage set" | 
 | 	depends on INTEGRITY_CA_MACHINE_KEYRING | 
 | 	default n | 
 | 	help | 
 | 	  When selected, only load CA keys are loaded into the machine | 
 | 	  keyring that contain the CA bit set along with the keyCertSign | 
 | 	  Usage field.  Keys containing the digitialSignature Usage field | 
 | 	  will not be loaded. The remaining MOK keys are loaded into the | 
 | 	  .platform keyring. | 
 |  | 
 | config LOAD_UEFI_KEYS | 
 | 	depends on INTEGRITY_PLATFORM_KEYRING | 
 | 	depends on EFI | 
 | 	def_bool y | 
 |  | 
 | config LOAD_IPL_KEYS | 
 | 	depends on INTEGRITY_PLATFORM_KEYRING | 
 | 	depends on S390 | 
 | 	def_bool y | 
 |  | 
 | config LOAD_PPC_KEYS | 
 | 	bool "Enable loading of platform and blacklisted keys for POWER" | 
 | 	depends on INTEGRITY_PLATFORM_KEYRING | 
 | 	depends on PPC_SECURE_BOOT | 
 | 	default y | 
 | 	help | 
 | 	  Enable loading of keys to the .platform keyring and blacklisted | 
 | 	  hashes to the .blacklist keyring for powerpc based platforms. | 
 |  | 
 | config INTEGRITY_AUDIT | 
 | 	bool "Enables integrity auditing support " | 
 | 	depends on AUDIT | 
 | 	default y | 
 | 	help | 
 | 	  In addition to enabling integrity auditing support, this | 
 | 	  option adds a kernel parameter 'integrity_audit', which | 
 | 	  controls the level of integrity auditing messages. | 
 | 	  0 - basic integrity auditing messages (default) | 
 | 	  1 - additional integrity auditing messages | 
 |  | 
 | 	  Additional informational integrity auditing messages would | 
 | 	  be enabled by specifying 'integrity_audit=1' on the kernel | 
 | 	  command line. | 
 |  | 
 | source "security/integrity/ima/Kconfig" | 
 | source "security/integrity/evm/Kconfig" | 
 |  | 
 | endif   # if INTEGRITY |