At the beginning of November, I started working for wolfSSL. Now that I’m a week in, I figured I should talk about what wolfSSL is and the fun things I’m doing there.
About wolfSSL
Like me, wolfSSL has its heritage in MySQL. It started as a project called yaSSL (yet another SSL) to solve licensing issues with other SSL libraries at the time. yaSSL was written in C++ and it eventually broke away to become its own project. A much improved pure-C version was created called CyaSSL and this was renamed to wolfSSL.
wolfSSL is probably the most versatile open source encryption library in existence. It is designed to run on very lightweight embedded platforms all the way to big iron servers, with the ability to use math and cryptographic accelerations where available. Even a port for the 68000 CPUs used in Commodore Amigas available.
There are now many more open source projects under the wolfSSL umbrella. wolfCrypt is the underlying cryptography library for wolfSSL and can be found in the wolfSSL repository. Then there other projects such as wolfSSH (an embedded SSH library) and wolfSentry (a firewall).
Another famous project in the wolfSSL collection of projects is Curl. Daniel Stenberg is employed by wolfSSL to continue the development of Curl.
Rejoining wolfSSL
I have actually worked for wolfSSL before. Last time I did things such as:
- A port of wolfCrypt to the MSP430 16bit microcontroller to add security for a medical implant.
- Encrypted CAN bus support for automotive and industrial markets.
- CAN bus firewall using wolfSentry.
I also did a lot of work with STM32s and the lwIP stack, and several improvements to Linux based things.
I very much enjoyed working at wolfSSL in the past, there is something special about working on constrained platforms and getting as much performance-per-watt as possible out of them.
My work at wolfSSL
Now that I’m back, there is a lot to do, and I think it is going to be a lot of fun (for my definition of fun).
A lot of my work at wolfSSL will revolve around embedded platforms in particular. Porting the various projects to work with new platforms and implementing support for their hardware acceleration into the codebase.
The first thing I worked on was porting wolfSSL to work with the Raspberry Pi Pico range of microcontrollers. Resulting in ports for the RP2040 and RP2350 which use the optimised random number generator routines for the microcontrollers. The port even supports both ARM and RISC-V cores in the RP2350. Our assembly level optimised math routines are used in these ports. Details on how to get it running are in our wolfssl-examples repository.
Unfortunately, we cannot use the SHA256 acceleration in the RP2350 at this stage due to an issue in the hardware implementation. But if this situation changes we will definitely revisit it.
Next week I’ll be starting on a port for a relatively new STM32 platform. The work will always be varied and challenging.
Future things
My retro computing things will continue as normal. There was a blip last month due to me working in India and then being quite ill when travelling back to the UK.
There may be some blog posts about fun things I find in my embedded journeys. I’ll also be blogging about more Amiga things as well. The Stoo Cambridge Amigas will be worked on again soon (after I finish a pile of Amiga repairs for people).
I may also be able to integrate some of my day job into my retro computing work. I’m actually quite keen to do a wolfSSH port for Commodore Amiga computers. It will be fun to benchmark wolfCrypt on a 68060 as well, I think.
Leave a Reply