Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

install script for wolfssl component (IDFGH-7747) #9288

Closed
wants to merge 1 commit into from
Closed

install script for wolfssl component (IDFGH-7747) #9288

wants to merge 1 commit into from

Conversation

gojimmypi
Copy link
Contributor

this PR adds a wolfSSL_README.md file along with an install script in a new components/wolfssl directory that allows users of the ESP-IDF to easily install the wolfSSL component.

@CLAassistant
Copy link

CLAassistant commented Jul 4, 2022

CLA assistant check
All committers have signed the CLA.

@espressif-bot espressif-bot added the Status: Opened Issue is new label Jul 4, 2022
@github-actions github-actions bot changed the title install script for wolfssl component install script for wolfssl component (IDFGH-7747) Jul 4, 2022
@Alvin1Zhang
Copy link
Collaborator

Thanks for your contribution.

@mahavirj
Copy link
Member

mahavirj commented Jul 5, 2022

@gojimmypi We have different approach for using wolfssl stack. Please refer to https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_tls.html#how-to-use-wolfssl-with-esp-idf.

We would recommend any possible improvements be sent over as PR to our fork at https://github.com/espressif/esp-wolfssl

@gojimmypi
Copy link
Contributor Author

gojimmypi commented Jul 5, 2022

@mahavirj thanks for taking a look at this PR. I've had a difficult time with the esp-wolfssl repo, as the files there are very old (e.g. the submodule pointer there alone is over a year old) and out of sync with the live wolfSSL releases.

I was hoping for something easier to use and a bit more tightly integrated into the ESP-IDF components directory. This would help ensure mutual customers and users of wolfSSL and Espressif benefit from the ongoing development and security improvements on a more timely basis.

@mahavirj
Copy link
Member

mahavirj commented Jul 5, 2022

I've had a difficult time with the esp-wolfssl repo, as the files there are very old (e.g. the submodule pointer there alone is over a year old) and out of sync with the live wolfSSL releases.

Thanks for notifying! We will prioritize updating our fork to latest woflssl release. In case you have any existing work, please feel free to raise PR.

I was hoping for something easier to use and a bit more tightly integrated into the ESP-IDF components directory.

We do not recommend any additional commands or installation scripts in our components. In-fact, in longer run we will be recommending our IDF component manager (https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-component-manager.html) for using any third party libraries or frameworks, as it shall provide more seamless experience with our build system. We will evaluate if we can consider esp-wolfssl as candidate for IDF component manager.

@gojimmypi
Copy link
Contributor Author

Cool! I was not aware of the new IDF Component Manager. Thanks for the heads up. That looks like quite a big change in the framework and will be a good improvement for developers.

I took a look at the API Guide: Using with a Project, but was not able to find the example mentioned:

image

As noted in espressif/idf-component-manager#4

Due to this fact there is no option to upload 3rd party components, there is no documentation and so on.

If you have any other information on 3rd party components I will take a look.

In the docs there's currently mention of:

A list of components can be found on https://components.espressif.com/

What can I do to help get wolfSSL listed as a component?

Given all this, I'd like to improve the wolfSSL installation process sooner than later. As this PR is only for a handful of git commands in a script, I'm wondering if it could kindly be merged until the new component architecture is fully implemented?

In the meantime I will be working towards getting an installation ready for when the new Component Manager is available. I definitely see the value there. Any additional guidelines for implementation will be appreciated.

Ideally, something as important as security and encryption needed in practically every application should be tightly integrated and easy to use within any development environment. This will probably be of highest interest to the large volume, commercial users of the Espressif product line. We are definitely in agreement with regards to our mutual objective:

provide more seamless experience with our build system.

Thanks again! Cheers.

@AdityaHPatwardhan
Copy link
Collaborator

Hi @gojimmypi Thanks for your contribution. I have answered some of the questions in a similar thread here

If you have any other information on 3rd party components I will take a look.
We have moved most of the third party components to idf-extra-components the respective PR can be viewed [here].(espressif/idf-extra-components#1)
A detailed information on how to upload components to IDF Component Manager to could be found here.

Thanks,
Aditya

@mahavirj
Copy link
Member

I've had a difficult time with the esp-wolfssl repo, as the files there are very old (e.g. the submodule pointer there alone is over a year old) and out of sync with the live wolfSSL releases.

This should be addressed with espressif/esp-wolfssl@470c02f. I recommend that we followup on esp-wolfssl repository for any further issues and close this PR.

@gojimmypi
Copy link
Contributor Author

Hi @AdityaHPatwardhan thank you for the example component. I'm currently trying to get ESP-IDF v5 working in Visual Studio as noted in espressif/idf-installer#142. Once I get my dev environment working, your example will be very helpful.

@mahavirj - that's awesome you updated the submodule for wolfSSL! Thank you. :)

Regarding:

We do not recommend any additional commands or installation scripts in our components

I've thought about this more and yes: I can see that would be a wise choice. I do however strongly believe there should be some mechanism to more easily install critical security components. Although the current esp-wolfssl has been updated, we've seen how easy it is for the submodule to quickly become stale. What do you think would be a good mechanism to ensure that every user that installs a fresh wolfSSL component is always assured of getting the latest release?

Instead of an install script, how about just a README.md file in the Espressif wolfSSL component directory that includes instructions for the end user regarding installation?

There were quite a few changes in the latest wolfSSL release. Unlike other components such as peripherals and communication libraries, something as fundamental as security should be "baked-in" at a much tighter and lower level, and certainly not treated as an add-on.

My main objective is to ensure the security features are as easy and ubiquitous as any other standard library. I believe it is important for people like us to silver-platter security to end users so that the first thing they think of is using security features such as encryption and not bolting it on later as an afterthought.

Although the new Espressif component manager may address this, I still think it would be beneficial all around if the version 4.x components included information on how to more tightly integrate wolfSSL components either in the ESP-IDF, and/or information on how to include directly in the project such as I did with my SSH to UART project.

What do you think?

In any case, @mahavirj thanks again very much for updating the esp-wolfssl and considering my ideas. :) I look forward to hearing your ideas.

cheers

@mahavirj
Copy link
Member

@gojimmypi

Although the current esp-wolfssl has been updated, we've seen how easy it is for the submodule to quickly become stale.

We can easily align submodule update on our fork with wolfSSL release cycle. We are open for PRs on this repo or we can handle it internally as well.

Regarding usage model, I would still prefer approach documented at https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/esp_tls.html#how-to-use-wolfssl-with-esp-idf. This has an advantage as our TLS abstraction layer (esp-tls) nicely provides a way to switch between underlying TLS stack and thus allows our protocol examples to work without any additional changes.

@espressif-bot espressif-bot added Resolution: Won't Do This will not be worked on Status: Done Issue is done internally and removed Status: Opened Issue is new labels Jul 18, 2022
@mahavirj mahavirj closed this Jul 19, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Resolution: Won't Do This will not be worked on Status: Done Issue is done internally
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants