The wolfSSL library is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3 and DTLS 1.3!
After trying the new WolfSSL implementation of ML-DSA, I found some problems. On the one hand, interoperability has been lost to the OQS project due to different OIDs etc. (WolfSSL had ML-DSA implemented following the NIST draft, which is incompatible with the Round 3 version, but the OIDs have still been the Round 3 ones from OQS). Furthermore, private key files in PEM/DER format stored on disk typically contain both the private and the public key. The parsing code was unable to properly handle those keys, resulting in failing private key loading.
Both identified issues are fixed with the changes in this commit:
Update OIDs etc. to match OQS ML-DSA values (old ones were Dilithium Round 3 values)
Make sure private key files/buffers containing both the private and the public key are parsed correctly (adapt new code to the “old” behavior of the liboqs wrapper code).
Tested using in-house TLS client and server applications using WolfSSL and with OpenSSL s_client / s_server applications with OQS provider (current master branch), always using private key files generated by OQS.
Hi everybody,
After trying the new WolfSSL implementation of ML-DSA, I found some problems. On the one hand, interoperability has been lost to the OQS project due to different OIDs etc. (WolfSSL had ML-DSA implemented following the NIST draft, which is incompatible with the Round 3 version, but the OIDs have still been the Round 3 ones from OQS). Furthermore, private key files in PEM/DER format stored on disk typically contain both the private and the public key. The parsing code was unable to properly handle those keys, resulting in failing private key loading.
Both identified issues are fixed with the changes in this commit:
Tested using in-house TLS client and server applications using WolfSSL and with OpenSSL s_client / s_server applications with OQS provider (current master branch), always using private key files generated by OQS.