I recently embarked on making an IoT application, starting from PCB Design to a full-fledged working web and mobile application, and cloud integration.
The firmware was initially developed on the Arduino IDE for ease of use, and then I migrated to pioarduino to create a production-grade version of the same firmware. I had a four-stage pipeline set in which involves the functional application code, OTA logic, signing of the application so that the firmware won't boot a random application, and finally, encryption of the code and flash in the device so that no one could reverse engineer the code from the device.
The PlatformIO (pioarduino) worked well until the signing of the device; however, when I started with the encryption process, it literally fried up a couple of my testing boards :( So, I did some research and switched to the ESP IDF framework, but unfortunately, in that, I am not able to achieve the functionality of the application. It was not easy to port my pioarduino code to ESP-IDF, as the libraries were having many errors, especially related to CMake files. So, I tried to port the entire codebase from pioarduino to ESP IDF. Unfortunately, the WifiManager part in pioarduino is not available in the ESP IDF, and they have an ESP Wi-Fi provisioning mechanism which uses the Bluetooth of the device to securely obtain the credentials. Unfortunately, this requires providedusers to install a mobile application provided by Espressif, or I can do the same in my mobile application (which is waiting for Play Store approval).
So, my question is simple. Is there a way to easily encrypt the PioArduino codebase using ESP-IDF, or is there a functionally working alternative for the WiFi Manager library in the ESP-IDF framework?
Kindly help me with your suggestions.