Release 1.2.2 has been developed according to wolfSSL's development and QA process and successfully passed the quality criteria.
PR stands for Pull Request, and PR references a GitHub pull request number where the code change was added.
- Add a Windows/Visual Studio 2022 port that builds libwolfprov.dll against a user_settings.h-configured wolfSSL and OpenSSL 3.x, for both non-FIPS and FIPS (PR 464).
- Encrypt PKCS#8 private keys when a cipher is set on the PrivateKeyInfo encoder, with CLI coverage (PR 453).
- Restore the default FIPS policy mask in WOLFSSL_USER_SETTINGS builds, add portable FIPS CAST-mutex initialization, and balance wolfCrypt init and cleanup (PR 464).
- Stop advertising SHA-512/224 and SHA-512/256 in FIPS and self-test builds (PR 464).
- Match OpenSSL ML-KEM NULL output handling (PR 458).
- Tighten PKCS#8 feature guards and expand PKCS#8 cipher-rejection test coverage.
- Expand the hostap smoke and EAP test coverage in CI and pin the UML kernel to Linux 7.2 (PR 469).
- Run PQC workflows when pull requests become ready and skip them on drafts (PR 456).
- Add IVs to PBES2 test parameters and wait for OpenSSL test-server readiness in CI.
- Add CONTRIBUTING.md covering the contributor agreement and PR process (PR 466).
- [High] CVE-2026-81019 - AES-GCM explicit nonce reuse on TLS 1.2 and DTLS 1.2 records. The 8-byte explicit nonce was generated when the fixed IV was configured and was not incremented for each record, so successive AES-GCM records processed by the same encryption context reused the same key and nonce. Reusing a GCM key and nonce weakens confidentiality (identical keystream across records) and integrity (authentication tag forgery). AES-CCM, TLS 1.3, and non-TLS use of AES-GCM are not affected. Affects wolfProvider 1.0.0 through 1.2.1, FIPS and non-FIPS. Update to 1.2.2.
- Validate the X25519 public key length before reading the input buffer (PR 457).
- Keep declarations first in the X25519 blinding skip.
- Fix ECX/ECC get_params to size the export buffer from data_size (PR 447).
- Address PKCS#8 security-review findings.
- Use fixed GMAC and CMAC tag lengths in the final operation.
- Correct the AEAD input-cache parameter documentation.
- Release the RNG mutex only when it was acquired during fixed-IV setup.
- Reset AEAD authentication error state on decrypt reinitialization so a poisoned context can be recovered.
- Reset the AEAD tag-available state on reinitialization so a reused context cannot skip tag verification.
- Additional AES-AEAD IV bounds and authentication-state hardening.
Release 1.2.1 has been developed according to wolfSSL's development and QA process and successfully passed the quality criteria.
PR stands for Pull Request, and PR references a GitHub pull request number where the code change was added.
- Add ML-KEM (FIPS 203) and ML-DSA (FIPS 204) post-quantum support via
--enable-pqc(PR 399)
- Route KDF key-exchange and MAC-signature operations through wolfProvider directly (PR 429)
- Strengthen RSA key import and CRT validation (PR 339)
- Enforce DH minimum prime size on the parameters-only generation path
- Add bounds checks on OSSL_PARAMS for EC, DH, and RSA (PR 398)
- Add input validation, memory-safety, and key zeroization hardening (PR 420, PR 438, PR 441)
- Add nightly OpenSSL command performance regression testing (PR 411)
- Fix FIPS decode performance regression where decoders ran self-tests on non-matching keys before checking the key type, and serialize the RSA self-test to close a concurrent decode race (PR 413)
- Fix EncryptedPrivateKeyInfo (PBES2) encode and decode across all key types (PR 426)
- Fix AES-GCM TLS IV length check and AEAD tag length validation (PR 416)
- Fix integer overflow in DH derive (PR 439)
- Fix TLS1 PRF to reject unsupported digests instead of defaulting to SHA-384, and report FIPS module failures through the provider running check (PR 431)
- Fix ECX security-bits reporting for X25519 and X448 (PR 417)
- Constrain file store decoders to the caller's provider boundary (PR 430)
- Gate secp192r1/P-192 TLS group advertisement on curve availability (PR 432)
- Gate DRBG reseed on FIPS version (PR 408)
- Fix DH FFC_Q export for PKCS#3 keys for OpenSSL 3.6.3 interop (PR 406)
- Fix seed-src to read /dev/urandom via a raw fd, avoiding seccomp failures in restrictive sandboxes (PR 440)
- Fix macOS library path handling in build scripts (PR 443, PR 444)
Release 1.2.0 has been developed according to wolfSSL's development and QA process and successfully passed the quality criteria.
PR stands for Pull Request, and PR references a GitHub pull request number where the code change was added.
- Add SSHKDF implementation (PR 382)
- Add proper TLS MAC handling (PR 360)
- Add FIPS integration and general integration guides to distribution packages
- Add OpenSSL FIPS baseline patches, replace-default patch assets, and provider configs to distribution packages
- Add helper scripts for FIPS patching, replace-default test exports, reference resolution, and install verification to distribution packages
- Improve replace-default provider behavior for re-entrant use
- Improve ECC signing and verification digest size checks
- Add KBKDF and KRB5 KDF validation and hardening improvements (PR 376, PR 380, PR 395)
- Improve Debian package builds for seed-src, debug, and local source handling (PR 383, PR 384)
- Migrate CI package artifact storage to GHCR ORAS with integrity checks (PR 362)
- Improve OSP CI dispatch and test dependency publishing workflows (PR 400, PR 401, PR 402, PR 403)
- Fix DRBG size cast issue (PR 386)
- Fix constant-time compare and TLS padding handling with negative tests (PR 385)
- Fix missing AES initialization in KRB5 KDF (PR 378)
- Fix PSS defaults pointer dereference
- Fix UKM memory leak in DH/ECDH free paths
- Fix AEAD random IV handling
- Fix aarch64 compile issue (PR 373)
- Fix DH/ECDH string length checks and related robustness issues
- Fix ECX get_params handling to restore unclamped private key bytes (PR 389)
- Fix seed-src clear_seed state handling (PR 389)
- Fix HMAC, CMAC, RSA, TLS, and KDF bounds, cleanup, and return-code checks (PR 377, PR 387, PR 389)
- Fix SSSD CI issue (PR 393)
Release 1.1.1 has been developed according to wolfSSL's development and QA process and successfully passed the quality criteria.
PR stands for Pull Request, and PR references a GitHub pull request number where the code change was added.
- Add OpenSSL FIPS baseline process implementation (PR 357)
- Add seed-src handling for wolfProvider (PR 350)
- Add EC public key auto derivation from private key (PR 338)
- Add text encoder for ECC (PR 348)
- Add option for debug output to default to silent (PR 356)
- Add static analysis CI tools (PR 349)
- Add option to enable unit testing for replace default mode (PR 331)
- Optimize FIPS CAST startup tests (PR 351)
- Update TLS 1.3 KDF to use proper wolfcrypt FIPS APIs (PR 352)
- Restrict DH keygen to 2048 bits and above for FIPS builds (PR 336)
- Update wolfSSL version to v5.8.4 and OpenSSL to v3.5.4 (PR 334)
- Don't modify system config when installing in standalone mode (PR 335)
- Add RSA-PSS PKI encoding/decoding support (PR 333)
- Fix NULL salt handling in HKDF (PR 328)
- Fix EC public key auto-derive version check for OpenSSL 4.0.0+ (PR 355)
- Fix RSA-PSS command test (PR 344)
- Fix const issue with x509 test code (PR 346)
- Fix provider cmd test (PR 347)
- Fix size_t issue in test_ecc.c (PR 343)
- Fix RD detection when running cmdline tests (PR 354)
Release 1.1.0 has been developed according to wolfSSL's development and QA process and successfully passed the quality criteria.
PR stands for Pull Request, and PR references a GitHub pull request number where the code change was added.
- Add KBKDF (Key-Based Key Derivation Function) implementation (PR 204)
- Add KRB5KDF (Kerberos 5 Key Derivation Function) implementation (PR 203)
- Add AES-CTS (Ciphertext Stealing) cipher mode implementation (PR 189)
- Add RSA encrypt/decrypt operations without padding (PR 110)
- Add option to replace OpenSSL default provider with wolfProvider (PR 260)
- Add command-line integration tests for AES, RSA, RSA-PSS, Hash, and ECC operations (PR 95)
- Add dynamic logging capabilities based on environment variables (PR 312)
- Add Debian packaging support (PR 234)
- Improve FIPS support and testing capabilities (PR 191, PR 269)
- Revamp debug selection and output system (PR 259)
- Add FIPS-ready CI testing (PR 269)
- Add environment setup script for provider configuration (PR 168)
- Add WOLFPROV_FORCE_FAIL testing support for failure scenarios (PR 123)
- Add ASAN (Address Sanitizer) workflow for enhanced testing (PR 126)
- Add library path support for aarch64 builds (PR 146)
- Add integration testing with gRPC (PR 103)
- Add integration testing with OpenSSH (PR 138)
- Add integration testing with libssh2 (PR 219)
- Add integration testing with OpenSC/PKCS11 (PR 226)
- Add integration testing with OpenLDAP (PR 104)
- Add integration testing with IPMItool (PR 113)
- Add integration testing with Stunnel (PR 98)
- Add integration testing with socat (PR 99)
- Add integration testing with SSSD (PR 102)
- Add integration testing with net-snmp (PR 143)
- Add integration testing with liboauth2 (PR 157)
- Add integration testing with tnftp (PR 177)
- Add integration testing with systemd (PR 202)
- Add integration testing with X11VNC (PR 201)
- Add integration testing with sscep (PR 229)
- Add integration testing with TPM2 tools (PR 241)
- Add integration testing with Python3 NTP (PR 214)
- Add integration testing with libeac (PR 184)
- Add integration testing with xmlsec (PR 192)
- Add integration testing with Qt5 Network (PR 205)
- Add integration testing with rsync (PR 232)
- Add integration testing with libwebsockets (PR 161)
- Add integration testing with tcpdump (PR 162)
- Add integration testing with cjose (PR 153)
- Add integration testing with iperf (PR 160)
- Add integration testing with KRB5 (PR 254)
- Add integration testing with libcryptsetup (PR 244)
- Add integration testing with libtss2 (PR 188)
- Add integration testing with ppp (PR 176)
- Add integration testing with pam-pkcs11 (PR 170)
- Add integration testing with kmod (PR 186)
- Add integration testing with libfido2 (PR 179)
- Add multi-compiler testing (PR 100)
- Fix AES-GCM stream handling for FIPS builds (PR 181, PR 150)
- Fix AES-GCM authentication tag failure handling with FIPS (PR 228)
- Fix AES-GCM uninitialized variable (PR 199)
- Fix AES-CBC IV handling for consecutive calls (PR 193)
- Fix AES cipher handling to accept NULL/0 input (PR 133)
- Fix RSA decode and empty keygen OID handling with FIPS (PR 196)
- Fix RSA PSS decoding to properly reject non-PKCS8 keys (PR 108)
- Fix RSA key import edge case (PR 224)
- Fix RSA keygen with FIPS retry loop (PR 213)
- Fix RSA certificate display with BIO_printf refactor (PR 208)
- Fix ECC public key validation (PR 221)
- Fix ECC public key parameter handling (PR 115)
- Fix ECC signing with SHA1 restriction only for FIPS (PR 227)
- Fix ECC type-specific public key encode/decode (PR 206)
- Fix ECC get private key handling (PR 134)
- Fix ECC private lock handling during key encoding (PR 173)
- Fix ECX test build without ED448 support (PR 171)
- Fix ECX uninitialized variable in Debian builds (PR 256)
- Fix EdDSA key clamping on import/export (PR 125)
- Fix DH for FIPS builds (PR 217, PR 216, PR 215)
- Fix DH public key decoding and add new decoder registrations (PR 187)
- Fix DH type-specific SPKI decoder (PR 198)
- Fix DH PKI decode handling (PR 128)
- Fix DH get private key handling (PR 136)
- Fix DH get params functionality (PR 152, PR 141)
- Fix DH privSz parameter handling (PR 251)
- Fix HKDF test with changing OpenSSL master behavior (PR 120)
- Fix core libctx handling to create new child libctx (PR 220)
- Fix locking around signature operations (PR 172)
- Fix NULL reinit handling for signatures (PR 154)
- Fix RSA/RSA-PSS/ECC/ECX DER encoding (PR 96)
- Fix pid_t bug with dh->ctx override (PR 190)
- Fix WPFF runtime checks for key management functions (PR 248)
- Fix hang with RSA command test and other bugs (PR 253)
- Fix FIPS error messaging for silent wolfSSL errors (PR 268)
- Fix OpenSSL patching detection (PR 291)
- Fix FIPS check when building wolfSSL (PR 297)
- Fix build script issues for Debian packages (PR 315, PR 314)
- Fix version header changes after builds (PR 114)
- Fix macOS directory age comparison in scripts (PR 116)
- Fix missing files from dist package (PR 94)
- Fix SM3/SM4 build errors on Android (PR 107)
Release 1.0.2 has been developed according to wolfSSL's development and QA process and successfully passed the quality criteria.
PR stands for Pull Request, and PR references a GitHub pull request number where the code change was added.
- Add RSA X931 signature algorithm implementation (PR 63)
- Add DES3-CBC cipher implementation (PR 58)
- Add PSS encoding support for PKCS8 private keys (PR 73)
- Add option to build from FIPS bundle (PR 85)
- Improve AES-GCM performance (PR 69)
- Set minimum RSA key size to 1024 bits (PR 53)
- Add integration testing with nginx (PR 71)
- Add integration testing with curl (PR 72)
- Add integration testing with OpenVPN (PR 75)
- Add feature to force failure if environment variable is set (PR 74)
- Fix RSA key type setting on import (PR 81)
- Fix RSA parameter handling when getting parameters (PR 82)
- Fix RSA import for Python use cases (PR 77)
- Fix RSA and ECC keypair matching (PR 62)
- Fix AES-GCM stream IV handling for OpenSSH workflows (PR 78)
- Fix AES-CBC IV handling on reinit with NULL IV (PR 65)
- Fix PKCS8 decoder to properly allow fallback decoding on failure (PR 59)
- Fix parameter handling for EC encoding in OpenSSL genpkey flow (PR 80)
- Fix HKDF handling to allow setting NULL/0 salt (PR 83)
- Fix size_t conversion for macOS (PR 56)
- Fix params get uint to properly set 'set' flag (PR 67)
- Fix FIPS build issues (PR 61)
- Fix TLS PRF test build (PR 79)
- Fix nginx-related issues (PR 68)
- Add test-sanity script
- Add FIPS testing
- Add a sanity check to make sure we can connect to external servers
- Fix for openssl denying connections
- Add more logging of calls
- Add helpful failure messages
- Fix 'make check' failures
- Fix wp_corebio_get_bio
- Add in simple logging for wolfProvider
- Use custom list of supported settable parameters
- Explicit ignore of generated content
- Add simple Github Action
- Add in declarations and calls to tests
- Add AES CFB encryption/decryption + tests
This is the first release of wolfProvider. It is similar to wolfEngine (which creates a library to interface with OpenSSL 1.x). WolfProvider interfaces with OpenSSL 3.x using our wolfCrypt cryptography module.
This first release has sample applications for Android as well as XCode (iOS). In addition, there are utility scripts added as a convenience for compiling all the dependencies of wolfProvider.
Refer to README.md for more details