# mcux entropy generator driver configuration

# Copyright (c) 2016 ARM Ltd.
# SPDX-License-Identifier: Apache-2.0

config ENTROPY_MCUX_RNGA
	bool "MCUX RNGA driver"
	default y
	depends on DT_HAS_NXP_KINETIS_RNGA_ENABLED
	select ENTROPY_HAS_DRIVER
	help
	  This option enables the random number generator accelerator (RNGA)
	  driver based on the MCUX RNGA driver.

config ENTROPY_MCUX_TRNG
	bool "MCUX TRNG driver"
	default y
	depends on DT_HAS_NXP_KINETIS_TRNG_ENABLED
	select ENTROPY_HAS_DRIVER
	help
	  This option enables the true random number generator (TRNG)
	  driver based on the MCUX TRNG driver.

config ENTROPY_MCUX_RNG
	bool "MCUX RNG driver"
	default y
	depends on DT_HAS_NXP_LPC_RNG_ENABLED
	select ENTROPY_HAS_DRIVER
	help
	  This option enables the true random number generator (TRNG)
	  driver based on the MCUX RNG driver on LPC Family.

#
# Don't use use the MCUX TRNG as a random source as it is not designed
# to supply a continuous random stream. Instead, it is used to provide
# a seed to RNG generator.
#
# Use the software implemented xoroshiro RNG.
# Use CSPRNG for cryptographically secure RNG source.
#
choice RNG_GENERATOR_CHOICE
	default XOSHIRO_RANDOM_GENERATOR if ENTROPY_MCUX_TRNG
endchoice

choice CSPRNG_GENERATOR_CHOICE
	default CTR_DRBG_CSPRNG_GENERATOR if ENTROPY_MCUX_TRNG
endchoice
