menuconfig ASYMMETRIC_KEY_TYPE
	bool "Asymmetric (public-key cryptographic) key Support"
	depends on FIT_SIGNATURE
	help
	  This option provides support for a key type that holds the data for
	  the asymmetric keys used for public key cryptographic operations such
	  as encryption, decryption, signature generation and signature
	  verification.

if ASYMMETRIC_KEY_TYPE

config ASYMMETRIC_PUBLIC_KEY_SUBTYPE
	bool "Asymmetric public-key crypto algorithm subtype"
	help
	  This option provides support for asymmetric public key type handling.
	  If signature generation and/or verification are to be used,
	  appropriate hash algorithms (such as SHA-1) must be available.
	  ENOPKG will be reported if the requisite algorithm is unavailable.

config RSA_PUBLIC_KEY_PARSER
	bool "RSA public key parser"
	depends on ASYMMETRIC_PUBLIC_KEY_SUBTYPE
	select ASN1_DECODER
	select ASN1_COMPILER
	select OID_REGISTRY
	help
	  This option provides support for parsing a blob containing RSA
	  public key data and provides the ability to instantiate a public
	  key.

config X509_CERTIFICATE_PARSER
	bool "X.509 certificate parser"
	depends on ASYMMETRIC_PUBLIC_KEY_SUBTYPE
	select ASN1_DECODER
	select ASN1_COMPILER
	select OID_REGISTRY
	select LIB_DATE
	help
	  This option provides support for parsing X.509 format blobs for key
	  data and provides the ability to instantiate a crypto key from a
	  public key packet found inside the certificate.

config PKCS7_MESSAGE_PARSER
	bool "PKCS#7 message parser"
	depends on X509_CERTIFICATE_PARSER
	select ASN1_DECODER
	select ASN1_COMPILER
	select OID_REGISTRY
	help
	  This option provides support for parsing PKCS#7 format messages for
	  signature data and provides the ability to verify the signature.

config PKCS7_VERIFY
	bool

endif # ASYMMETRIC_KEY_TYPE
