Enabling the TLS layer to get a HTTPS connection going.

7343.nrf7002dk_nrf5340_cpuapp_ns.conf3124.prj.confHello everyone.

WE're trying to make a https connection with google.com and execute a GET request.

Wifi connection is working; DHCP seems to be working (my personal assumption given the log message we get: "Resolved: [(1, 1, 6, '', ('142.250.201.206', 443))]" which indicates that getaddrinfo() works); but when trying to initiate the socket via TLS, something strange happens: we get the error "OSError: 109".

Inserting some debug prints inside subsys/net/lib/sockets/, we found the culprit to be the function "int zsock_setsockopt_ctx(struct net_context *ctx, int level, int optnameconst void *optval, socklen_t optlen)".

The function call that triggers error 109 is:  res = setsockopt(socket->ctx, SOL_TLS, TLS_PEER_VERIFY, &verify, sizeof(verify));

No matter what other option we try to set via setsockopt(), it will fail with the 109 error since the implementation for setsockopt() is somehow set to sockets_inet.c (whose implementation does not recognise SOL_TLS as a valid in its switches) instead of sockets_tls.c (which has handling for SOL_TLS in its switches). My personal hunch is that the config options set in the project are somehow wrong. Can someone please take a look over our .conf files? Maybe we can find the culprit. :)

We can provide any extra code snippets that are necessary for debugging and/ or run any tests. Have a great day and hope to hear from you soon!

Parents
  • Hi,

     

    I used net/https_client for this exercise.

    You need to download r1.pem from here: https://pki.goog/repository/

     

    Place this in certs/ folder, and make sure that you change the file in CMakeLists.txt, change the domain in kconfig, and add the required configurations in the board .conf file:

    diff --git a/samples/net/https_client/CMakeLists.txt b/samples/net/https_client/CMakeLists.txt
    index 2a937786ed..39276fd2e2 100644
    --- a/samples/net/https_client/CMakeLists.txt
    +++ b/samples/net/https_client/CMakeLists.txt
    @@ -14,7 +14,7 @@ set(gen_dir ${CMAKE_CURRENT_BINARY_DIR}/certs)
     zephyr_include_directories(${gen_dir})
     generate_inc_file_for_target(
         app
    -    cert/DigiCertGlobalG2.pem
    +    cert/r1.pem
         ${gen_dir}/DigiCertGlobalG2.pem.inc
         )
     
    diff --git a/samples/net/https_client/Kconfig b/samples/net/https_client/Kconfig
    index 90ad33f42e..bb22e82794 100644
    --- a/samples/net/https_client/Kconfig
    +++ b/samples/net/https_client/Kconfig
    @@ -15,7 +15,7 @@ config SAMPLE_TFM_MBEDTLS
     
     config HTTPS_HOSTNAME
            string "HTTPS hostname"
    -       default "example.com"
    +       default "google.com"
     
     endmenu
     
    diff --git a/samples/net/https_client/boards/nrf7002dk_nrf5340_cpuapp_ns.conf b/samples/net/https_client/boards/nrf7002dk_nrf5340_cpuapp_ns.conf
    index 9eb362cb16..8366313af8 100644
    --- a/samples/net/https_client/boards/nrf7002dk_nrf5340_cpuapp_ns.conf
    +++ b/samples/net/https_client/boards/nrf7002dk_nrf5340_cpuapp_ns.conf
    @@ -69,3 +69,20 @@ CONFIG_MBEDTLS_TLS_LIBRARY=y
     CONFIG_TFM_PROFILE_TYPE_SMALL=y
     CONFIG_PM_PARTITION_SIZE_TFM_SRAM=0xc000
     CONFIG_PM_PARTITION_SIZE_TFM=0x20000
    +
    +CONFIG_MBEDTLS_SSL_SERVER_NAME_INDICATION=y
    +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y
    +CONFIG_MBEDTLS_SSL_MAX_FRAGMENT_LENGTH=y
    +CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y
    +CONFIG_PSA_WANT_RSA_KEY_SIZE_4096=y
    +CONFIG_MBEDTLS_MPI_MAX_SIZE=512
    +
    +CONFIG_LOG=y
    +CONFIG_MBEDTLS_DEBUG=y
    +CONFIG_MBEDTLS_SSL_DEBUG_ALL=y
    +CONFIG_MBEDTLS_LOG_LEVEL_DBG=y
    +CONFIG_MBEDTLS_DEBUG_C=y
    +CONFIG_MBEDTLS_DEBUG_LEVEL=4
    +# Handle the large influx of prints
    +CONFIG_LOG_BUFFER_SIZE=16384
    +CONFIG_LOG_BACKEND_UART=y
    

    I also need to add CONFIG_NET_IPV6=n due to a local network issue at my end.

     

    Kind regards,

    Håkon

  • There are many options and suboptions in the link you sent me. Which one is the correct one?

    When attempting to get it working, I got r1.der and then created r1.der.inc. But I'm not sure which option I chose.

  • Also worth noting: by taking the https_client sample's config as a 1-to-1 reference, we overflow by ~130kb (region `FLASH' overflowed by 138084 bytes). I assume this is to the more "generous" sizes in the example. Are they truly necessary?

  • Hi,

     

    Tudor B. said:
    we overflow by ~130kb (region `FLASH' overflowed by 138084 bytes).

    I am not sure what you enable in your build, but it should not overflow if using one of the supported boards, ie. nrf7002dk/nrf5340/cpuapp/ns for instance.

    Additional mbedtls debug logs can safely be disabled, but is useful if debugging why you cannot connect to a given domain.

     

    Tudor B. said:

    I tried those commands, but I had to alter them a bit to get them to work on SDK v3.0.0. More specifically:
    wifi cred add -s SSID -k 1 -p PASSWORD
    wifi cred auto_connect

    Also, this is my log from running them:

    Your log shows a successful connection to google:

    Sent 61 bytes
    Received 318 bytes
    
    > HTTP/1.1 200 OK
    
    Finished, closing so

     

    Kind regards,

    Håkon

  • Your log shows a successful connection to google:

    Yes, it worked; what I wanted to point out was that the commands you provided don't work, but need to be edited like I mentioned. Trying your commands without any alterations produces:

    uart:~$ wifi_cred add -s TP-Link_7474 -k 1 -p 55920322
    wifi_cred: command not found
    uart:~$ wifi_cred auto_connect
    wifi_cred: command not found
    uart:~$

    I am not sure what you enable in your build, but it should not overflow if using one of the supported boards, ie. nrf7002dk/nrf5340/cpuapp/ns for instance.

    We're using that configuration specifically. But we're also trying to integrate micropython. To have a full stack WiFi (STA, AP mode, HTTPS socket connection) and micropython itself required that we use "CONFIG_TFM_PROFILE_TYPE_MINIMAL=y", which reduces it's ROM and RAM footprint to 32kb each.

    Regarding what exactly is configured in the project: I've attached the prj.conf and the board.conf files to this post. I can attach any other necessary file that you deem useful.

    Is it possible to have a call via Teams/ Google Meet/ etc.? I'm sure the problem would be solved way faster. ;)

    Edit: while building I luckily saw this interesting warning:

    Restore: CONFIG_MBEDTLS_THREADING_ALT: False
    =========== End psa_crypto_library_config ===============
    -- Using ccache: /opt/homebrew/bin/ccache
    CMake Warning at /opt/nordic/ncs/v3.0.0/zephyr/CMakeLists.txt:1002 (message):
      No SOURCES given to Zephyr library:
      ..__nrf__subsys__net__lib__tls_credentials
    
      Excluding target from build.
    
    
    -- Found Python3: /opt/homebrew/bin/python3 (found version "3.13.3") found components: Interpreter
    -- Configuring done (8.1s)
    -- Generating done (0.7s)
    -- Build files have been written to: /Users/tudor/Documents/GitHub/micropython_nRF/ports/zephyr/build/zephyr
    -- Configuring done (13.0s)
    -- Generating done (0.0s)

    Could this contribute to what we're suspecting as being the main issue?: the fact that sockets_inet.c is selected when building instead of sockets_tls.c.

  • Hi,

     

    Tudor B. said:
    Yes, it worked; what I wanted to point out was that the commands you provided don't work, but need to be edited like I mentioned. Trying your commands without any alterations produces:

    Ah, my apologies. The "_" was present in ncs v2.9.1, which I tested with.

     

    Although slimming down ~130k is not going to be a one-liner fix, you can get quite a large optimization by enabling link time optimization:

    CONFIG_ISR_TABLES_LOCAL_DECLARATION=y
    CONFIG_LTO=y

     

    Related to this warning:

      No SOURCES given to Zephyr library:
      ..__nrf__subsys__net__lib__tls_credentials

    What TLS_CREDENTIAL_BACKEND_* is chosen at your end?

     

    Kind regards,

    Håkon

  • What TLS_CREDENTIAL_BACKEND_* is chosen at your end?

    Searched in both prj.conf and board.conf and found nothing that contains "TLS_CREDENTIAL_BACKEND_".

    What about that call? I'm sure it wouldn't take more than 1H. Wink

Reply Children
  • Also found out something interesting. I was reading in another post about a .config file that's supposed to be in the build folder which shows all the CONFIG_ options that get enabled at build time. I couldn't find it (probably since that post was on SDK v2.9.1 or older) but I think I've found it for v3.0.0.

    The file in question is located at: /build/zephyr/zephyr/misc/generated/configs.c

    (leaving this here for posterity Slight smile)

    I'll attach the file to this reply. Maybe you can find something out of place with one/ a combination of the configs active at build time.

    2678.configs.c

    Edit: extra point that I wanna add: must the board's time be updated before the TLS and/or connection steps take place? Or is the board's time relevant in any way for this?

  • Hello again Håkon.

    I've taken the time and compared the two config.c files (the one in the https_client sample and the one in our project). I've attached the two files here, after filtering out all duplicate configs that were found, sorting both lists alphabetically, then sorting by "closest match" in Beyond Compare (which aligns lines that are identical/ near identical, even if they're on different line numbers). This eases comparison a lot, but it doesn't solve the main issue sadly (at least from my analysis).

    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CONNECTIVITY_WIFI_MGMT_APPLICATION, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CURRENT_THREAD_USE_TLS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_SHELL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DEVICE_SHELL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DEVMEM_SHELL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_RESOLVER_ADDITIONAL_BUF_CTR, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_RESOLVER_ADDITIONAL_QUERIES, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_RESOLVER_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_RESOLVER_MAX_SERVERS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_SOCKET_DISPATCHER_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_GETOPT_LONG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_HEAP_MEM_POOL_SIZE, 1280);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_HW_UNIQUE_KEY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_HW_UNIQUE_KEY_RANDOM, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_KERNEL_SHELL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_KERNEL_THREAD_SHELL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_KERNEL_THREAD_SHELL_LIST, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_KERNEL_THREAD_SHELL_STACKS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_L2_WIFI_CONN_WQ_STACK_SIZE, 6144);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_L2_WIFI_CONNECTIVITY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_L2_WIFI_CONNECTIVITY_CONNECT_TIMEOUT_SECONDS, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_L2_WIFI_CONNECTIVITY_CONNECTION_PERSISTENCE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LIBC_ERRNO, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LOG_RUNTIME_FILTERING, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MAIN_STACK_SIZE, 6144);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_CCM_C, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_CHACHA20_C, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_CHACHAPOLY_C, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_DHM_C, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_GCM_C, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_HAS_CCM_CIPHERSUITE_REQUIREMENTS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_HAS_CHACHAPOLY_CIPHERSUITE_REQUIREMENTS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_HAS_GCM_CIPHERSUITE_REQUIREMENTS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_HEAP_SIZE, 81920);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_MAC_SHA256_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_MPI_MAX_SIZE, 256);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_POLY1305_C, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_PSA_CRYPTO_STORAGE_C, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MPSC_PBUF, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ARP_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_BUF_RX_COUNT, 36);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_BUF_TX_COUNT, 36);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONN_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONNECTION_MANAGER_CONNECTIVITY_WIFI_MGMT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONNECTION_MANAGER_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONNECTION_MANAGER_MONITOR_STACK_SIZE, 4600);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONTEXT_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CORE_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_HOSTNAME_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_HTTP_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_HTTP_SERVER_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ICMPV4_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ICMPV6_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IF_IPV6_PREFIX_COUNT, 2);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IF_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IF_MAX_IPV4_COUNT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IF_MAX_IPV6_COUNT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IF_MCAST_IPV6_ADDR_COUNT, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IF_UNICAST_IPV6_ADDR_COUNT, 2);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_INITIAL_HOP_LIMIT, 64);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_INITIAL_MCAST_HOP_LIMIT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV4_ACD_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV4_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_DAD, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_IID_EUI_64, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_MAX_NEIGHBORS, 8);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_MLD, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_MTU, 1280);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_NBR_CACHE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_NBR_CACHE_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_ND, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_ND_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_PE_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_RA_RDNSS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV6_RS_TIMEOUT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_L2_ETHERNET_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_L2_WIFI_SHELL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MAX_CONN, 8);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MAX_CONTEXTS, 6);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MAX_NEXTHOPS, 8);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MAX_ROUTERS, 2);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MAX_ROUTES, 8);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MGMT_EVENT_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MGMT_EVENT_QUEUE_TIMEOUT, 10);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_NATIVE_IPV6, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_PKT_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_PKT_RX_COUNT, 14);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_PKT_TX_COUNT, 14);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ROUTE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ROUTE_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_RX_STACK_SIZE, 2048);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_DNS_TIMEOUT, 30000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_POLL_MAX, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_SERVICE_STACK_SIZE, 1200);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_TLS_MAX_CREDENTIALS, 4);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_TLS_SET_MAX_FRAGMENT_LENGTH, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_TC_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_TCP_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_UDP_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_UTILS_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRF_WIFI_DATA_HEAP_SIZE, 40000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRF70_MAX_TX_AGGREGATION, 4);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRF70_MAX_TX_TOKENS, 10);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PICOLIBC, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PICOLIBC_IO_LONG_LONG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PICOLIBC_USE_TOOLCHAIN, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM, 0x20000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM_INTERNAL_TRUSTED_STORAGE, 0x2000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM_OTP_NV_COUNTERS, 0x2000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM_PROTECTED_STORAGE, 0x4000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM_SRAM, 0xc000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_TFM_STORAGE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_POSIX_C_LIB_EXT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_HAS_AEAD_SUPPORT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_MAX_RSA_KEY_BITS, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_CC3XX_CTR_DRBG_DRIVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_AEAD_DRIVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_CCM_AES, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_CHACHA20_POLY1305, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_ECDH_SECP_R1_384, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_ECDSA_SECP_R1_384, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_GCM_AES, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_DERIVE_SECP_R1_384, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_EXPORT_SECP_R1_384, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_GENERATE_SECP_R1_384, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_IMPORT_SECP_R1_384, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_PUBLIC_KEY_SECP_R1_384, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_STREAM_CIPHER_CHACHA20, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_USE_CC3XX_CTR_DRBG_DRIVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_USE_CTR_DRBG_DRIVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_CCM, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_CHACHA20, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_CHACHA20_POLY1305, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_CTR_DRBG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_GCM, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_STREAM_CIPHER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ECC_SECP_R1_384, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_KEY_TYPE_CHACHA20, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_RING_BUFFER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_ARGC_MAX, 30);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_ASCII_FILTER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_AUTOSTART, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL_API_INTERRUPT_DRIVEN, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL_INIT_PRIORITY, 90);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL_INTERRUPT_DRIVEN, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL, 5);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL_LOG_MESSAGE_QUEUE_SIZE, 512);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL_LOG_MESSAGE_QUEUE_TIMEOUT, 100);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL_RX_RING_BUFFER_SIZE, 64);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKEND_SERIAL_TX_RING_BUFFER_SIZE, 8);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKENDS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_BACKSPACE_MODE_DELETE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_CMD_BUFF_SIZE, 256);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_CMD_ROOT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_CMDS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_CMDS_RESIZE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_CMDS_RETURN_VALUE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_DEFAULT_TERMINAL_HEIGHT, 24);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_DEFAULT_TERMINAL_WIDTH, 80);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_DEVICE_HELPERS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_ECHO_STATUS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_GETOPT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_HELP, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_HELP_ON_WRONG_ARGUMENT_COUNT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_HISTORY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_HISTORY_BUFFER, 512);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_LOG_BACKEND, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_LOG_FORMAT_TIMESTAMP, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_METAKEYS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_MSG_CMD_NOT_FOUND, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_MSG_SPECIFY_SUBCOMMAND, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_PRINTF_BUFF_SIZE, 30);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_PROMPT_BUFF_SIZE, 20);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_PROMPT_CHANGE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_PROMPT_UART, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_STACK_SIZE, 6144);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_STATS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_TAB, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_TAB_AUTOCOMPLETION, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_VT100_COLORS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_VT100_COMMANDS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_WILDCARD, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE, 4096);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_AEAD_MODULE_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_ASYM_SIGN_MODULE_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_BUILTIN_KEYS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_CIPHER_MODULE_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_CONC_OPER_NUM, 8);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_ENGINE_BUF_SIZE, 8320);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_HASH_MODULE_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_IOVEC_BUFFER_SIZE, 5120);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_KEY_DERIVATION_MODULE_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_KEY_MODULE_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_MAC_MODULE_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_PARTITION_STACK_SIZE, 0x2000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_EXPERIMENTAL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_ITS_BUF_SIZE, 2048);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_ITS_CREATE_FLASH_LAYOUT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_ITS_MAX_ASSET_SIZE, 512);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_ITS_NUM_ASSETS, 10);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_ITS_STACK_SIZE, 0x720);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_ITS_VALIDATE_METADATA_FROM_FLASH, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PARTITION_INTERNAL_TRUSTED_STORAGE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PARTITION_LOG_LEVEL_INFO, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PARTITION_PROTECTED_STORAGE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PROFILE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PROFILE_TYPE_SMALL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PS_CREATE_FLASH_LAYOUT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PS_MAX_ASSET_SIZE, 2048);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PS_NUM_ASSETS, 10);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PS_ROLLBACK_PROTECTION, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PS_STACK_SIZE, 0x700);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PS_VALIDATE_METADATA_FROM_FLASH, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_THREAD_LOCAL_STORAGE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TLS_CREDENTIALS_BACKEND_PROTECTED_STORAGE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TLS_CREDENTIALS_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TLS_CREDENTIALS_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_CREDENTIALS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_CREDENTIALS_BACKEND_PSA, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_CREDENTIALS_CONNECT_STORED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_CREDENTIALS_CONNECT_STORED_CONNECTION_TIMEOUT, 30);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_CREDENTIALS_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_CREDENTIALS_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_CREDENTIALS_MAX_ENTRIES, 2);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_CREDENTIALS_SAE_PASSWORD_LENGTH, 128);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_CREDENTIALS_SHELL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NM_LOG_LEVEL, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_ERR, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NRF70_LOG_LEVEL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NRF70_LOG_LEVEL_ERR, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_ZVFS_POLL_MAX, 6);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_ADXL345_TRIGGER_NONE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CBPRINTF_FP_SUPPORT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CBPRINTF_N_SPECIFIER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CONNECTION_IDLE_TIMEOUT, 30);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CONSOLE_GETCHAR, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CONSOLE_GETCHAR_BUFSIZE, 258);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CONSOLE_HANDLER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CONSOLE_PUTCHAR_BUFSIZE, 128);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_CONSOLE_SUBSYS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_COUNTER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_COUNTER_INIT_PRIORITY, 60);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_COUNTER_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_COUNTER_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_COUNTER_NRF_RTC, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_COUNTER_RTC_CUSTOM_TOP_SUPPORT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_AUTO_UPDATE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_NTP, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_NTP_QUERY_TIME_SECONDS, 5);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_RETRY_COUNT, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_RETRY_INTERVAL_SECONDS, 60);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_THREAD_STACK_SIZE, 1280);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_TOO_OLD_SECONDS, 3600);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DATE_TIME_UPDATE_INTERVAL_SECONDS, 14400);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_RESOLVER_ADDITIONAL_BUF_CTR, 2);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_RESOLVER_ADDITIONAL_QUERIES, 2);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_RESOLVER_LOG_LEVEL, 4);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_RESOLVER_LOG_LEVEL_DBG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_RESOLVER_MAX_SERVERS, 2);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_SERVER_IP_ADDRESSES, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_SERVER1, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_SERVER2, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_SERVER3, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_SERVER4, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_SERVER5, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_SOCKET_DISPATCHER_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DNS_SOCKET_DISPATCHER_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_DT_HAS_NORDIC_NRF_RTC_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_FILL_BUFFER_SIZE, 32);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_HAS_DRIVER_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_HAS_EX_OP, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_HAS_EXPLICIT_ERASE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_HAS_PAGE_LAYOUT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_INIT_PRIORITY, 50);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_JESD216, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FLASH_PAGE_LAYOUT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FP_HARDABI, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FPU, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_FPU_SHARING, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_HAS_HW_NRF_RTC0, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_HEAP_MEM_POOL_IGNORE_MIN, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_HEAP_MEM_POOL_SIZE, 65536);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_INSTRUMENT_THREAD_SWITCHING, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_ISR_TABLES_LOCAL_DECLARATION, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LOG_BACKEND_FORMAT_TIMESTAMP, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LOG_BACKEND_SUPPORTS_FORMAT_TIMESTAMP, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LOG_BACKEND_UART, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LOG_BACKEND_UART_AUTOSTART, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LOG_BACKEND_UART_BUFFER_SIZE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LOG_BACKEND_UART_OUTPUT_DEFAULT, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LOG_BACKEND_UART_OUTPUT_TEXT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_LTO, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MAIN_STACK_SIZE, 12288);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_FORCE_LEGACY_CIPHER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_FORCE_LEGACY_MD, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_GENPRIME, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_HAS_RSA_CIPHERSUITE_REQUIREMENTS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_HEAP_SIZE, 16384);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_LOG_LEVEL, 4);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_LOG_LEVEL_DBG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_MPI_MAX_SIZE, 512);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_PKCS1_V15, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_PKCS1_V21, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_RSA_C, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MBEDTLS_SSL_RENEGOTIATION, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MICROPY_CONFIGFILE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MICROPY_HEAP_SIZE, 32768);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MICROPY_VFS_FAT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MICROPY_VFS_LFS2, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_MPU_ALLOW_FLASH_WRITE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ARP_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ARP_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_BUF_POOL_USAGE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_BUF_RX_COUNT, 8);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_BUF_TX_COUNT, 8);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_AUTO_INIT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_INIT_PRIO, 95);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_INIT_TIMEOUT, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_MY_IPV4_ADDR, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_MY_IPV4_GW, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_MY_IPV4_NETMASK, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_NEED_IPV4, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_PEER_IPV4_ADDR, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONFIG_SETTINGS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONN_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONN_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONNECTION_MANAGER_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONNECTION_MANAGER_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONNECTION_MANAGER_MONITOR_STACK_SIZE, 512);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONTEXT_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CONTEXT_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CORE_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_CORE_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_OPTION_NTP_SERVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER_ADDR_COUNT, 4);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER_ADDR_DECLINE_TIME, 86400);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER_ADDR_LEASE_TIME, 86400);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER_ICMP_PROBE_TIMEOUT, 1000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER_INSTANCES, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER_NAK_UNRECOGNIZED_REQUESTS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_DHCPV4_SERVER_OPTION_DNS_ADDRESS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_HOSTNAME_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_HOSTNAME_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_HTTP_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_HTTP_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_HTTP_SERVER_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_HTTP_SERVER_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ICMPV4_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ICMPV4_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IF_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IF_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IF_MAX_IPV4_COUNT, 2);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV4_ACD_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV4_ACD_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV4_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_IPV4_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_L2_ETHERNET_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_L2_ETHERNET_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_LOG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MAX_CONN, 16);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MAX_CONTEXTS, 5);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MAX_ROUTERS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MGMT_EVENT_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MGMT_EVENT_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_MGMT_EVENT_QUEUE_TIMEOUT, 5000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_PKT_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_PKT_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_PKT_RX_COUNT, 16);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_PKT_TX_COUNT, 16);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ROUTE_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_ROUTE_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_RX_STACK_SIZE, 4096);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_DNS_TIMEOUT, 2000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_LOG_LEVEL, 4);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_LOG_LEVEL_DBG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_POLL_MAX, 10);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_SERVICE_STACK_SIZE, 2400);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_SOCKETS_TLS_MAX_CREDENTIALS, 10);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_TC_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_TC_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_TCP_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_TCP_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_UDP_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_UDP_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_UTILS_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NET_UTILS_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NEWLIB_LIBC, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NEWLIB_LIBC_MIN_REQUIRED_HEAP_SIZE, 2048);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NEWLIB_LIBC_NANO, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRF_WIFI_DATA_HEAP_SIZE, 130000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRF70_MAX_TX_AGGREGATION, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRF70_MAX_TX_TOKENS, 5);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRFX_PWM, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRFX_PWM0, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRFX_SPIM, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRFX_SPIM4, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRFX_WDT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NRFX_WDT0, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NVS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NVS_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_NVS_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_EXTERNAL_FLASH_HAS_DRIVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_NVS_STORAGE, 0x6000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM, 0x8000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM_INTERNAL_TRUSTED_STORAGE, 0x0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM_OTP_NV_COUNTERS, 0x0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM_PROTECTED_STORAGE, 0x0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PM_PARTITION_SIZE_TFM_SRAM, 0x8000);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_POSIX_DEVICE_IO_ALIAS_CLOSE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_POSIX_DEVICE_IO_ALIAS_OPEN, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_POSIX_DEVICE_IO_ALIAS_READ, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_POSIX_DEVICE_IO_ALIAS_WRITE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_POSIX_FD_MGMT_ALIAS_LSEEK, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_POSIX_FILE_SYSTEM_ALIAS_FSTAT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_POSIX_SIGNALS_ALIAS_KILL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_DEFAULT_OFF, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_HAS_ASYM_ENCRYPT_SUPPORT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_MAX_RSA_KEY_BITS, 4096);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_CC3XX_HMAC_DRBG_DRIVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_ANY_RSA_KEY_SIZE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_ASYMMETRIC_ENCRYPTION_DRIVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_ECDH_MONTGOMERY_255, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_DERIVE_MONTGOMERY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_DERIVE_MONTGOMERY_255, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_EXPORT_MONTGOMERY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_EXPORT_MONTGOMERY_255, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_GENERATE_MONTGOMERY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_GENERATE_MONTGOMERY_255, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_IMPORT_MONTGOMERY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_KEY_PAIR_IMPORT_MONTGOMERY_255, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_PUBLIC_KEY_MONTGOMERY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_ECC_PUBLIC_KEY_MONTGOMERY_255, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_RSA_KEY_PAIR_EXPORT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_RSA_KEY_PAIR_IMPORT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_KEY_TYPE_RSA_PUBLIC_KEY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_RSA_ANY_CRYPT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_RSA_ANY_SIGN, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_RSA_ANY_VERIFY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_RSA_KEY_SIZE_2048, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_RSA_KEY_SIZE_4096, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_RSA_OAEP, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_RSA_PKCS1V15_CRYPT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_RSA_PKCS1V15_SIGN, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_NEED_OBERON_RSA_PSS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_USE_CC3XX_HMAC_DRBG_DRIVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_USE_HMAC_DRBG_DRIVER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_HMAC_DRBG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_RSA_OAEP, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_RSA_PKCS1V15_CRYPT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_RSA_PKCS1V15_SIGN, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_RSA_PKCS1V15_SIGN_RAW, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_RSA_PSS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ALG_RSA_PSS_ANY_SALT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_ECC_MONTGOMERY_255, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_DERIVE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_EXPORT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_GENERATE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_IMPORT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_RSA_KEY_SIZE_2048, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PSA_WANT_RSA_KEY_SIZE_4096, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PWM, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PWM_INIT_PRIORITY, 50);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PWM_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PWM_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PWM_NRFX, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_PWM_TC_INIT_PRIORITY, 50);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_REBOOT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SCHED_THREAD_USAGE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SCHED_THREAD_USAGE_ALL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SCHED_THREAD_USAGE_AUTO_ENABLE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SENSOR, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SENSOR_DS3231_INIT_PRIORITY, 86);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SENSOR_INIT_PRIORITY, 90);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SENSOR_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SENSOR_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SHELL_STACK_SIZE, 4096);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SNTP, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SNTP_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SNTP_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SOC_FLASH_NRF, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SOC_FLASH_NRF_RADIO_SYNC_NONE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SOFTAP_SAMPLE_DHCPV4_POOL_START, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_COMPLETION_TIMEOUT_TOLERANCE, 200);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_INIT_PRIORITY, 50);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NOR, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NOR_CS_WAIT_DELAY, 0);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE, 65536);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NOR_INIT_PRIORITY, 80);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NOR_SFDP_MINIMAL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NOR_SLEEP_WHILE_WAITING_UNTIL_READY, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NRFX, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NRFX_RAM_BUFFER_SIZE, 8);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NRFX_SPIM, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SPI_NRFX_WAKE_TIMEOUT_US, 200);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_STA_CONN_TIMEOUT_SEC, 70);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_STA_SAMPLE_START_WIFI_THREAD_STACK_SIZE, 5200);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE, 3072);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TEST_RANDOM_GENERATOR, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_CONC_OPER_NUM, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_ENGINE_BUF_SIZE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_IOVEC_BUFFER_SIZE, 1024);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_CRYPTO_PARTITION_STACK_SIZE, 0x800);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_MCUBOOT_IMAGE_NUMBER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PLATFORM_NV_COUNTER_MODULE_DISABLED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TFM_PROFILE_TYPE_MINIMAL, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_THREAD_ANALYZER, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_THREAD_ANALYZER_ISR_STACK_USAGE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_THREAD_ANALYZER_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_THREAD_ANALYZER_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_THREAD_ANALYZER_RUN_UNLOCKED, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_THREAD_ANALYZER_USE_PRINTK, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_THREAD_CUSTOM_DATA, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_THREAD_RUNTIME_STATS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TLS_CREDENTIALS_BACKEND_VOLATILE, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TLS_CREDENTIALS_LOG_LEVEL, 4);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_TLS_CREDENTIALS_LOG_LEVEL_DBG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_UART_CONSOLE_DEBUG_SERVER_HOOKS, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WATCHDOG, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WDT_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WDT_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WDT_NRFX, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NM_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NM_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NRF70_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_NRF70_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_READY_INIT_PRIORITY, 90);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_READY_LIB, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_READY_LIB_LOG_LEVEL, 3);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_READY_LIB_LOG_LEVEL_DEFAULT, 1);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_WIFI_READY_MAX_CALLBACKS, 2);
    GEN_ABSOLUTE_SYM_KCONFIG(CONFIG_ZVFS_POLL_MAX, 10);

    Btw! I re-ran the example and could not for the life of me get it to connect to google.com and make the request. DNS resolved an IP, certificate steps passed, but it always fails with:

    *** Booting nRF Connect SDK v3.0.0-3bfc46578e42 ***
    *** Using Zephyr OS v4.0.99-a0e545cb437a ***
    HTTPS client sample started
    Bringing network interface up
    Provisioning certificate
    CA certificate already exists, sec tag: 42
    Connecting to the network
    Connected
    Network connectivity established and IP address assigned
    Looking up google.com.
    DNS message size: 44
    DNS message content (hex):ec 18 81 80 00 01 00 01 00 00 00 00 06 67 6f 6f 67 6c 65 03 63 6f 6d 00 00 01 00 01 c0 0c 00 01 00 01 00 00 00 c6 00 04 ac d9 14 0e
    Resolved 172.217.20.14 (AF_INET)
    Current system time: 13 seconds since Epoch
    Doing setsockopt()...1
    Doing setsockopt()...2
    Doing setsockopt()...3
    Done!
    Connecting to google.com:443.
    DNS message size: 56
    DNS message content (hex):6c 27 81 80 uart:~
    00 01 00 01 00 00 00 00 06 67 6f 6f 67 6c 65 03 63 6f 6d 00 00 1c 00 01 c0 0c 00 1c 00 01 00 00 00 40 connect() failed, err: 113
    00 10 2a 00 14 50 40 0d 08 05 00 00 00 00 00 00 20 0e
    Disconnected
    Network connectivity lost
    Disconnected from the network

    I'll keep trying to figure out what the main difference is between the https_sample and our project. Have a great weekend. :)

  • I advanced a bit more when I realised that the new socket I was making was using the default socket interface.

    By changing:

    proto = IPPROTO_TCP
    to:
    proto = IPPROTO_TLS_1_2
    Now running our project produces a completely different error, in that the socket cannot be initialized at all now.
    The code segment for socket initialisation:
     STATIC mp_obj_t socket_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
         mp_arg_check_num(n_args, n_kw, 0, 4, false);
    
         mbedtls_debug_set_threshold(4); 
         socket_obj_t *socket = socket_new();
     
         int family = AF_INET;
         int socktype = SOCK_STREAM;
         int proto = -1;
     
         if (n_args >= 1) {
             family = mp_obj_get_int(args[0]);
             if (n_args >= 2) {
                 socktype = mp_obj_get_int(args[1]);
                 if (n_args >= 3) {
                     proto = mp_obj_get_int(args[2]);
                 }
             }
         }
     
         if (proto == -1) {
             proto = IPPROTO_TLS_1_2;
             if (socktype != SOCK_STREAM) {
                 proto = IPPROTO_UDP;
             }
         }
         
         int res = tls_credential_add(GOOGLE_CA_SEC_TAG, TLS_CREDENTIAL_CA_CERTIFICATE, r1_crt, r1_crt_len);
         RAISE_SOCK_ERRNO(res);
         printk("Trying to initialize socket...\n");
         socket->ctx = zsock_socket(family, socktype, proto);
         RAISE_SOCK_ERRNO(socket->ctx);
         printk("Done initializing socket! \n");
         socket->family = family;
         return MP_OBJ_FROM_PTR(socket);
     }

    Produces the following output:
    >>> s = None
    >>> s = socket.socket()
    Trying to initialize socket...
    [00:04:13.332,641] <dbg> net_sock_tls: tls_alloc: (mp_main): Allocated TLS context, 0x20009d58
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    OSError: 23
    >>>
    Which indicates that:
    socket->ctx = zsock_socket(family, socktype, proto);
    fails.
    Adding some debug code in Zephyr's internal library, I found that:
    /opt/nordic/ncs/v3.0.0/zephyr/subsys/net/lib/sockets/sockets_tls.c
    in function "static int ztls_socket(int family, int type, int proto)", the "OSError:23" is generated by the line:
        sock = zsock_socket(family, type, proto);
    	if (sock < 0) {
    		goto release_tls;
    	}
    Again adding some debug code, reveals that "sock" has a value of -1.

    And this is as far as I can go since ztls_socket() is declared in an .h file but I simply cannot find its definition, so I have no idea what makes it fail.
  • Hi, 

     

    Is one config working, while the other is not working?

    The config CONFIG_NET_SOCKETS_POLL_MAX shall be 10 or higher, as the WPA supplication uses several sockets, and so does each TLS connection.

    It also looks like the MPI size is 256, while MBEDTLS_MPI_MAX_SIZE should be 512.

    Tudor B. said:
    Btw! I re-ran the example and could not for the life of me get it to connect to google.com and make the request. DNS resolved an IP, certificate steps passed, but it always fails with

    One thing that can help here is the mbedtls debug output configs that I shared earlier.

    However, I see from your updated response that the issue was related to the proto input variable.

    Tudor B. said:
    "OSError:23" 

    I assume this is errno?

    #define ENFILE 23 /**< File table overflow */

    You're overflowing the amount of open sockets.

    This could be due to the max amount configured in your build, or that you're not closing sockets.

    Try increasing CONFIG_ZVFS_OPEN_MAX and CONFIG_NET_SOCKETS_POLL_MAX (which again sets CONFIG_ZVFS_POLL_MAX).

    Tudor B. said:
    Edit: extra point that I wanna add: must the board's time be updated before the TLS and/or connection steps take place? Or is the board's time relevant in any way for this?

    I believe you're referring to checking validity?

    https://github.com/nrfconnect/sdk-mbedtls/blob/main/include/mbedtls/mbedtls_config.h#L133-L152 

    mbedtls is capable of doing this.

     

    Kind regards,

    Håkon

  • It also looks like the MPI size is 256, while MBEDTLS_MPI_MAX_SIZE should be 512.

    That's for the example. By checking the compared files, I see that our project has indeed 512.

    Try increasing CONFIG_ZVFS_OPEN_MAX and CONFIG_NET_SOCKETS_POLL_MAX (which again sets CONFIG_ZVFS_POLL_MAX).

    Again an interesting point since I see that for the https_client sample project, CONFIG_NET_SOCKETS_POLL_MAX is set to 0, while for us it's set to 10. Will try increasing it to 16 and rerun the test.

    I believe you're referring to checking validity?

    Yes, my lead asked if it might be the case that TLS fails due to the devkit not getting its time set before attempting any TLS steps.

Related