-
Notifications
You must be signed in to change notification settings - Fork 833
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #7177 from gojimmypi/PR-Arduino-Update
Improved Arduino Support: ESP32, Due
- Loading branch information
Showing
19 changed files
with
1,196 additions
and
139 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Arduino wolfSSL Library | ||
|
||
The library is modified from wolfSSL Release ${WOLFSSL_VERSION} for the Arduino platform. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,30 +1,80 @@ | ||
### wolfSSL with Arduino | ||
# wolfSSL with Arduino | ||
|
||
##### Reformatting wolfSSL as a compatible Arduino Library | ||
This is a shell script that will re-organize the wolfSSL library to be | ||
compatible with Arduino projects that use Arduino IDE 1.5.0 or newer. | ||
The Arduino IDE requires a library's source files to be in the library's root | ||
directory with a header file in the name of the library. This script moves all | ||
src/ files to the `IDE/ARDUINO/wolfSSL/src` directory and creates a stub header | ||
file called `wolfssl.h` inside that directory. | ||
Many of the supported boards are natively built-in to the [Arduino IDE Board Manager](https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-board-manager/) | ||
and by adding [additional cores](https://docs.arduino.cc/learn/starting-guide/cores/) as needed. | ||
|
||
Step 1: To configure wolfSSL with Arduino, enter the following from within the | ||
wolfssl/IDE/ARDUINO directory: | ||
STM32 Support can be added by including this link in the "Additional Boards Managers URLs" field | ||
from [stm32duino/Arduino_Core_STM32](https://github.com/stm32duino/Arduino_Core_STM32?tab=readme-ov-file#getting-started) . | ||
|
||
`./wolfssl-arduino.sh` | ||
``` | ||
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json | ||
``` | ||
|
||
Step 2: Copy the directory wolfSSL that was just created to: | ||
`~/Documents/Arduino/libraries/` directory so the Arduino IDE can find it. | ||
## Using wolfSSL from the Arduino IDE | ||
|
||
Step 3: Edit `<arduino-libraries>/wolfSSL/src/user_settings.h` | ||
Coming soon! https://github.com/wolfSSL/arduino-wolfSSL See [PR #1](https://github.com/wolfSSL/Arduino-wolfSSL/pull/1). | ||
|
||
This option will allow wolfSSL to be installed directly using the native Arduino tools. | ||
|
||
## Manually Reformatting wolfSSL as a Compatible Arduino Library | ||
|
||
Use [this](./wolfssl-arduino.sh) shell script that will re-organize the wolfSSL library to be | ||
compatible with [Arduino Library Specification](https://arduino.github.io/arduino-cli/0.35/library-specification/) | ||
for projects that use Arduino IDE 1.5.0 or newer. | ||
|
||
The Arduino IDE requires a library's source files to be in the library's root directory with a | ||
header file in the name of the library. This script moves all `src/` files to the `IDE/ARDUINO/wolfSSL/src` | ||
directory and creates a stub header file called `wolfssl.h` inside that directory. | ||
|
||
### Step 1: | ||
|
||
To configure wolfSSL with Arduino, enter one of the following commands | ||
from within the `wolfssl/IDE/ARDUINO` directory: | ||
|
||
1. `./wolfssl-arduino.sh` | ||
- Creates an Arduino Library directory structure in the local `wolfSSL` directory of `IDE/ARDUINO`. | ||
- You can add your own `user_settings.h`, or copy/rename the [default](../../examples/configs/user_settings_arduino.h). | ||
|
||
2. `./wolfssl-arduino.sh INSTALL` (The most common option) | ||
- Creates an Arduino Library in the local `wolfSSL` directory | ||
- Moves that directory to the Arduino library directory: | ||
- `$HOME/Arduino/libraries` for most bash environments | ||
- `/mnt/c/Users/$USER/Documents/Arduino/libraries` (for WSL) | ||
- Adds the [default](../../examples/configs/user_settings_arduino.h) as `user_settings.h`. | ||
- The wolfSSL library is now available from the Arduino IDE. | ||
|
||
3. `./wolfssl-arduino.sh INSTALL /path/to/repository` (Used to update [arduino-wolfSSL](https://github.com/wolfSSL/arduino-wolfSSL)) | ||
- Creates an Arduino Library in `wolfSSL` directory | ||
- Copies that directory contents to the specified `/path/to/repository` | ||
- Adds the [default](../../examples/configs/user_settings_arduino.h) as `user_settings.h`. | ||
|
||
4. `./wolfssl-arduino.sh INSTALL /path/to/any/other/directory` | ||
- Creates an Arduino Library in `wolfSSL` directory | ||
- Copies that directory contents to the specified `/path/to/any/other/directory` | ||
|
||
### Step 2: | ||
|
||
Edit `<arduino-libraries>/wolfSSL/src/user_settings.h` | ||
If building for Intel Galileo platform add: `#define INTEL_GALILEO`. | ||
Add any other custom settings, for a good start see the examples in wolfssl root | ||
"/examples/configs/user_settings_*.h" | ||
Add any other custom settings. For a good start see the examples in wolfssl root | ||
"[/examples/configs/user_settings_*.h](https://github.com/wolfssl/wolfssl/tree/master/examples/configs)" | ||
|
||
### Step 3: | ||
|
||
Step 4: If you experience any issues with custom user_settings.h see the wolfssl | ||
If you experience any issues with custom `user_settings.h` see the wolfssl | ||
porting guide here for more assistance: https://www.wolfssl.com/docs/porting-guide/ | ||
|
||
Step 5: If you still have any issues contact [email protected] for more help. | ||
If you have any issues contact [email protected] for help. | ||
|
||
# Including wolfSSL in Arduino Libraries (for Arduino version 2.0 or greater) | ||
|
||
1. In the Arduino IDE: | ||
|
||
The wolfSSL library should automatically be detected when found in the `libraries` | ||
directory. | ||
|
||
- In `Sketch -> Include Library` choose wolfSSL for new sketches. | ||
|
||
|
||
##### Including wolfSSL in Arduino Libraries (for Arduino version 1.6.6) | ||
|
||
|
@@ -33,6 +83,73 @@ Step 5: If you still have any issues contact [email protected] for more help. | |
`IDE/ARDUNIO/wolfSSL` folder. | ||
- In `Sketch -> Include Library` choose wolfSSL. | ||
|
||
2. Open an example Arduino sketch for wolfSSL: | ||
- wolfSSL Client INO sketch: `sketches/wolfssl_client/wolfssl_client.ino` | ||
- wolfSSL Server INO sketch: `sketches/wolfssl_server/wolfssl_server.ino` | ||
##### wolfSSL Examples | ||
|
||
Open an example Arduino sketch for wolfSSL: | ||
|
||
- wolfSSL [Client INO sketch](./sketches/wolfssl_client/README.md): `sketches/wolfssl_client/wolfssl_client.ino` | ||
|
||
- wolfSSL [Server INO sketch](./sketches/wolfssl_server/README.md): `sketches/wolfssl_server/wolfssl_server.ino` | ||
|
||
#### Script Examples | ||
|
||
Publish wolfSSL from WSL to a repository. | ||
|
||
```bash | ||
rm -rf /mnt/c/Users/$USER/Documents/Arduino/libraries/wolfSSL | ||
rm -rf /mnt/c/workspace/wolfssl-$USER/IDE/ARDUINO/wolfSSL | ||
./wolfssl-arduino.sh INSTALL /mnt/c/workspace/Arduino-wolfSSL-$USER/ | ||
``` | ||
|
||
Publish wolfSSL from WSL to default Windows local library. | ||
|
||
```bash | ||
rm -rf /mnt/c/Users/$USER/Documents/Arduino/libraries/wolfSSL | ||
rm -rf /mnt/c/workspace/wolfssl-arduino/IDE/ARDUINO/wolfSSL | ||
./wolfssl-arduino.sh INSTALL | ||
``` | ||
|
||
Test the TLS server by running a local command-line client. | ||
|
||
```bash | ||
cd /mnt/c/workspace/wolfssl-$USER | ||
./examples/client/client -h 192.168.1.43 -p 11111 -v 3 | ||
``` | ||
|
||
Build wolfSSL to include wolfSSH support to an alternate development directory. | ||
|
||
```bash | ||
cd /mnt/c/workspace/wolfssl-$USER | ||
./configure --prefix=/mnt/c/workspace/wolfssh-$USER/wolfssl_install --enable-ssh | ||
make | ||
make install | ||
|
||
``` | ||
|
||
Build wolfSSH with wolfSSL not installed to default directory. | ||
|
||
```bash | ||
cd /mnt/c/workspace/wolfssh-$USER | ||
./configure --with-wolfssl=/mnt/c/workspace/wolfssh-$USER/wolfssl_install | ||
make | ||
./examples/client/client -u jill -h 192.168.1.34 -p 22222 -P upthehill | ||
``` | ||
|
||
Test the current wolfSSL. | ||
|
||
```bash | ||
cd /mnt/c/workspace/wolfssl-arduino | ||
git status | ||
./autogen.sh | ||
./configure --enable-all | ||
make clean | ||
make && make test | ||
``` | ||
|
||
Build and run `testwolfcrypt`. | ||
|
||
```bash | ||
./autogen.sh | ||
./configure --enable-all | ||
make clean && make && ./wolfcrypt/test/testwolfcrypt | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Syntax Coloring Map For wolfSSL | ||
# See https://arduino.github.io/arduino-cli/0.35/library-specification/#keywords | ||
# | ||
# Be sure to use tabs, not spaces. This might help: | ||
# tr ' ' '\t' < keywords1.txt > keywords.txt | ||
|
||
#============================================= | ||
# Datatypes (KEYWORD1) | ||
#============================================= | ||
|
||
|
||
#============================================= | ||
# Methods and Functions (KEYWORD2) | ||
#============================================= | ||
wolfSSL_SetIORecv KEYWORD1 | ||
|
||
#============================================= | ||
# Instances (KEYWORD2) | ||
#============================================= | ||
ctx KEYWORD2 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
name=wolfSSL | ||
version=${WOLFSSL_VERSION}${WOLFSSL_VERSION_ARUINO_SUFFIX} | ||
author=wolfSSL inc | ||
maintainer=wolfSSL inc <[email protected]> | ||
sentence=A lightweight SSL/TLS library written in ANSI C and targeted for embedded, RTOS, and resource-constrained environments. | ||
paragraph=Manual: https://www.wolfssl.com/documentation/manuals/wolfssl/index.html. | ||
category=Communication | ||
url=https://www.wolfssl.com/ | ||
architectures=* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# wolfSSL Arduino Examples | ||
|
||
There are currently two example Arduino sketches: | ||
|
||
* [wolfssl_client](./wolfssl_client/README.md): Basic TLS listening client. | ||
* [wolfssl_server](./wolfssl_server/README.md): Basic TLS server. | ||
|
||
Examples have been most recently confirmed operational on the | ||
[Arduino IDE](https://www.arduino.cc/en/software) 2.2.1. | ||
|
||
For examples on other platforms, see the [IDE directory](https://github.com/wolfssl/wolfssl/tree/master/IDE). | ||
Additional examples can be found on [wolfSSL/wolfssl-examples](https://github.com/wolfSSL/wolfssl-examples/). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Arduino Basic TLS Listening Client | ||
|
||
Open the [wolfssl_client.ino](./wolfssl_client.ino) file in the Arduino IDE. | ||
|
||
Other IDE products are also supported, such as: | ||
|
||
- [PlatformIO in VS Code](https://docs.platformio.org/en/latest/frameworks/arduino.html) | ||
- [VisualGDB](https://visualgdb.com/tutorials/arduino/) | ||
- [VisualMicro](https://www.visualmicro.com/) | ||
|
||
For examples on other platforms, see the [IDE directory](https://github.com/wolfssl/wolfssl/tree/master/IDE). | ||
Additional examples can be found on [wolfSSL/wolfssl-examples](https://github.com/wolfSSL/wolfssl-examples/). | ||
|
||
|
||
### Troubleshooting | ||
|
||
When encountering odd errors such as `undefined reference to ``_impure_ptr'`, try cleaning the Arduino | ||
cache directories. For Windows, that's typically in: | ||
|
||
```text | ||
C:\Users\%USERNAME%\AppData\Local\Temp\arduino\sketches | ||
``` |
Oops, something went wrong.