menu "OpenSSL"

    config OPENSSL_DEBUG
        bool "Enable OpenSSL debugging"
        default n
        help
            Enable OpenSSL debugging function.

            If the option is enabled, "SSL_DEBUG" works.

    config OPENSSL_ERROR_STACK
        bool "Enable OpenSSL error structure"
        default y
        help
            Enable OpenSSL Error reporting

    config OPENSSL_DEBUG_LEVEL
        int "OpenSSL debugging level"
        default 0
        range 0 255
        depends on OPENSSL_DEBUG
        help
            OpenSSL debugging level.

            Only function whose debugging level is higher than "OPENSSL_DEBUG_LEVEL" works.

            For example:
            If OPENSSL_DEBUG_LEVEL = 2, you use function "SSL_DEBUG(1, "malloc failed")". Because 1 < 2, it will not
            print.

    config OPENSSL_LOWLEVEL_DEBUG
        bool "Enable OpenSSL low-level module debugging"
        default n
        depends on OPENSSL_DEBUG
        select MBEDTLS_DEBUG
        help
            If the option is enabled, low-level module debugging function of OpenSSL is enabled, e.g. mbedtls internal
            debugging function.

    choice OPENSSL_ASSERT
        prompt "Select OpenSSL assert function"
        default OPENSSL_ASSERT_EXIT
        help
            OpenSSL function needs "assert" function to check if input parameters are valid.

            If you want to use assert debugging function, "OPENSSL_DEBUG" should be enabled.

        config OPENSSL_ASSERT_DO_NOTHING
            bool "Do nothing"
            help
                Do nothing and "SSL_ASSERT" does not work.

        config OPENSSL_ASSERT_EXIT
            bool "Check and exit"
            help
                Enable assert exiting, it will check and return error code.

        config OPENSSL_ASSERT_DEBUG
            bool "Show debugging message"
            depends on OPENSSL_DEBUG
            help
                Enable assert debugging, it will check and show debugging message.

        config OPENSSL_ASSERT_DEBUG_EXIT
            bool "Show debugging message and exit"
            depends on OPENSSL_DEBUG
            help
                Enable assert debugging and exiting, it will check, show debugging message and return error code.

        config OPENSSL_ASSERT_DEBUG_BLOCK
            bool "Show debugging message and block"
            depends on OPENSSL_DEBUG
            help
                Enable assert debugging and blocking, it will check, show debugging message and block by "while (1);".

    endchoice

endmenu