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.

4 responses to “Joining wolfSSL”

  1. > Unfortunately, we cannot use the SHA256 acceleration in the RP2350 at this stage due to an issue in the hardware implementation

    Sorry – what is this issue?

    1. Hi Peter,

      I spoke to one of your colleagues who worked on some of the design of the RP2350 last year about it. Basically, we need to save and restore state of the SHA registers for certain algorithms to work correctly. At the time of writing, this wasn’t possible (I haven’t checked with the latest silicon revisions).

      I believe we have been able to use the SHA acceleration for wolfBoot, our open source secure bootloader I was speaking to some of your other colleagues about at Embedded World.

  2. Thanks. I was just wondering if there was a software issue I’d missed.

    1. Hi Peter,

      No problem, we do want to work with Raspberry Pi (the org) more, so that we can make sure the support for our open source security projects is the best it can be. If you have a contact we should talk to, please let us know. We have recently managed to replace the backend of every crypto library in Linux (and kernel), creating a FIPS 140-3 certified Linux stack. That and wolfBoot might be things someone there could be interested in. Someone in our team even made a FIDO2 device using our tech and a Pico as a hobby project 🙂

Leave a Reply to LinuxJedi Cancel reply

Your email address will not be published. Required fields are marked *