# Copyright (c) 2018 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

menuconfig TLS_CREDENTIALS
	bool "TLS credentials management"
	help
	  Enable TLS credentials management subsystem.

if TLS_CREDENTIALS

config TLS_MAX_CREDENTIALS_NUMBER
	int "Maximum number of TLS credentials"
	default 4
	help
	  Maximum number of TLS credentials that can be registered.

config TLS_CREDENTIAL_FILENAMES
	bool "Specify TLS credential filenames"
	depends on NET_SOCKETS_OFFLOAD
	help
	  Allows clients of the socket APIs to specify filenames
	  of security certificates and private keys
	  to use during subsequent TLS/SSL negotiations.
	  The secure files will have been previously provisioned to the
	  device's secure file system; eg, via a vendor tool or
	  by executing a separate binary.
	  This option is currently only available for secure
	  socket offload devices.

endif # TLS_CREDENTIALS
