We're using WolfSsl 5.8.0 as TLS client on a simple 32bit MCU which is pretty slow.
The MCU has no HW crypto accelerator whatsoever.
I'm talking about a system with ~ 60 Dhrystone MIPS.
TLS1.3 (and ECC) is a mandatory requirement.
We found our TLS connection fails because the MCU resets due to a watchdog reset.
It happens when WolfSsl verifies the (server) ECC certificate, this is part of the TLS
handshake which is part of the TLS connection setup which is triggered by
our application exchanging data (with wolfSSL_write).
What happens in detail is that, in our case:
DoProcessReplyEx -> DoTls13HandShakeMsg -> DoTls13HandShakeMsgType -> DoTls13CertificateVerify -> EccVerify
takes quite a long time (~ 10 seconds).
Maybe this is because we're letting WolfSsl alloc memory dynamically. Also, we've noticed the
wolfcrypt ECC crypto logic/functions (e.g. ecc_verify_hash) are quite "heavy".
Of course the watchdog reset is our problem, and so we fixed it for our system/platform.
But since our HW/board and bootloader is final we could not adapt the watchdog timer. So, we
had to add some "watchdog resets" in the WolfSsl/Wolfcrypt code.
I can imagine we're not the only ones having this issue, and afaik. there is no way for a user
to make WolfSsl/WolfCrypt call some user provided watchdog reset function.
I guess it'd be good to add it to WolfSsl, afterall, you guys know where "heavy" and possible slow
processing might occur.