Due to NDA restrictions, access to the Infineon, ST Micro, TI, and Renesas ports is limited. Please contact support@wolfssl.com for access.
- Added non-blocking request/response client APIs for SHA, RNG, AES, RSA, ECC, and CMAC operations in #337, #344, #347, #351, #368, and #381
- Added ML-KEM (FIPS 203) support for key generation, encapsulation, and decapsulation with DMA variants in #336
- Added LMS and XMSS stateful hash-based signature support in #352
- Added SHA-3 support with blocking wolfCrypt and non-blocking native APIs in #384
- Added DMA support for AES-ECB, AES-CBC, and AES-CTR and reworked AES-GCM DMA handling in #282
- Added authentication manager with user login, per-user permissions, and NVM-backed credential storage in #270, #290, #382, and #386
- Added client response timeout support with optional expiration callback in #278
- Added STM32H5 TrustZone port with non-secure callable bridge transport in #348
- Added per-client wolfCrypt device IDs enabling multiple clients in a single process in #406
- Added client API to select hardware or software crypto processing at runtime in #281
- Added hardware-only key support allowing server operations to reference keys held in hardware in #409
- Added public key export for cached asymmetric keys, including returning the public key from cached key generation in #346 and #458
- Added cache-only shared secrets keeping ECDH and X25519 outputs server-resident in #372
- Added client API to generate and cache a random key on the server in #437
- Added multi-root CA certificate chain verification in #350
- Added trusted certificate cache and certificate verification callbacks in #353
- Added wolfBoot image verification to the image manager in #339
- Added global SHE key support enabling SHE key slots to be shared across all clients in #478
- Added SHE GET_ID command and key wrap interoperability with SHE keys in #450 and #413
- Added support for running the server without NVM using the key cache only in #392
- Added CRC integrity checking to the NVM flash backend in #503
- Added support for dynamically linking libwolfssl in #349
- Bounded peer-controlled lengths in client and server transport receive paths in #388, #389, and #410
- Validated server-reported lengths and payload sizes in client crypto response handlers in #361, #366, #367, #373, #374, #375, #376, #463, #465, #467, #473, and #474
- Bounded AES, LMS, XMSS, and ML-KEM DMA response frames in the crypto client in #475 and #476
- Added request and response size validation to server request handlers, keystore, and crypto request translation in #299, #302, and #466
- Fixed key wrap request and response bounds, metadata trailer translation, and a data unwrap bug in #323, #359, #472, #494, and #510
- Added bounds checks to SHE client requests and responses and bounded SHE server key loads in #334, #457, and #495
- Fixed certificate handlers to validate inputs, check response lengths, capture verification results, and stop transmitting unwritten response bytes in #317, #365, #390, #426, and #459
- Fixed certificate verify message padding differences between clients and servers with different ABIs in #507
- Fixed client DMA address translation and a use-after-free in key, NVM, and certificate DMA operations in #403 and #408
- Fixed integer overflow in the DMA allow list boundary check, improved server DMA validation, and ensured DMA post-operation callbacks run on error paths in #298, #329, #324, and #340
- Fixed integer underflow in AES-GCM unwrap size calculations, missing AES context free on set-key failure, and AES-CTR bounds checking in #296, #306, #307, and #379
- Fixed overflow-prone bounds checks in NVM read handlers and 32-bit size_t overflow in AES and SHE size checks in #319 and #487
- Fixed SHE server secure boot chunk sizing, master ECU key metadata, constant-time comparison, and stack buffer zeroization in #293, #294, #310, #325, #326, and #332
- Fixed metadata label leak in key export error responses and stripped server-only flags from client metadata when caching random keys in #316 and #496
- Fixed NVM destroy batches aborting on absent IDs, NULL metadata handling in the checked add path, and committed state for keys read back from NVM in #461, #462, and #401
- Improved NVM locking across the crypto layer to prevent races on shared key caches in #438
- Fixed authentication manager to log out users on disconnect, enforce caller identity, refresh stale session permissions, and zeroize request messages in #383, #480, #481, and #432
- Guarded against clients connecting with aliased client IDs in #362
- Fixed SHA client response struct initialization, block-transfer error propagation, and SHA-512 finalize error overwrite in #308, #309, and #311
- Restored SHA-3 client state when the server cannot offload the operation in #455
- Fixed ML-DSA cache import buffer sizing, verify-only cache size checks, and compatibility with updated wolfCrypt APIs in #397, #452, and #301
- Fixed config path copy bounds, shared memory create TOCTOU, VERIFY_ACERT DMA error propagation, and KDF and AES-GCM response output bounds in #425
- Improved POSIX transport file permissions and descriptor handling, bounded shared memory mapping by the shared object size, and required peer certificates for TLS transport server mode in #322, #479, and #363
- Fixed off-by-one in constant-time zero compare, uint16 truncation, void pointer arithmetic, and transposed arguments in flash unit reads in #304, #314, #431, and #295
- Overhauled the documentation and added user management invariants in #387 and #405
- Added CONTRIBUTING.md covering the contributor agreement and PR process in #509
- Added LMS, XMSS, ML-DSA, SHA-3, and HMAC-SHA3 benchmark modules and single round-trip ML-KEM timing in #454, #488, #499, #501, and #504
- Fixed SHA-2 benchmarks being skipped in non-DMA builds and reduced benchmark memory usage in #497, #456, and #514
- Reduced CI runtime with concurrency limits, ccache, draft PR filtering, and reorganized workflow matrices in #482, #483, #484, #485, and #489
- Added 32-bit CI job and automated coverage comparison in #491 and #490
- Migrated to the wc_MlDsaKey wolfCrypt API removing legacy Dilithium naming in #377
- Added ECC_MAKE_PUB and ECC_CHECK_PUB crypto callback support in #451
- Increased default key cache sizes for SHE, RSA, and ML-DSA use cases in #400 and #402
- Added test coverage for SHE loadable keys and secure boot, key usage policies, wrapped key restrictions, permission escalation, and DMA allow list boundaries in #335, #430, #380, #424, #470, and #500
Due to NDA restrictions, access to the Infineon, ST Micro, TI, and Renesas ports is limited. Please contact support@wolfssl.com for access.
- Added TLS transport for authentication between client and server peers in #227
- Added global keystore enabling cryptographic keys to be shared across multiple clients with automatic cache routing in #224
- Added key usage policy flags (encrypt, decrypt, sign, verify, wrap, derive) set by clients and enforced by the server in #233
- Added server thread safety with NVM locking abstraction, enabling multiple server contexts to safely share NVM and global keystore resources in #275
- Added logging framework with callback-based backend, ring buffer, and POSIX file log engines in #253
- Added NVM object flag enforcement including non-destroyable flag and key revocation support in #263
- Added ED25519 signature scheme support with DMA in #254
- Added NIST SP 800-108 CMAC KDF support in #228
- Added generic data wrap/unwrap for server-side data wrapping in #226
- Fixed potential DMA buffer handling errors where request buffer sizes were overwritten by server responses in #284
- Fixed potential buffer overflow in key cache by capping label size and corrected variable name logic error in
wh_Client_CommInfoResponsein #234 - Fixed CMAC DMA message struct padding, alignment bugs in SHE code, and test key cache leaks in #285
- Fixed ECDH without DERIVE flag with
WOLF_CRYPTOCB_ONLY_ECCin #251 - Fixed compilation with
NO_AESdefined and removed extra printfs in #260 - Fixed wrong
#endifplacement inwh_client_crypto.cand#includeorder innvm_flash_log.hin #243 - Fixed SHE NVM metadata struct initialization so flags are set to 0 in #273
- Added NULL checks to message translation functions and additional input sanitization to server request handlers in #236 and #240
- Refactored CMAC to use client-held state instead of persisting state on the server, and deprecated the cancellation API in #279
- Refactored debug macros to replace all printf usage with
WOLFHSM_CFG_PRINTF-based wrappers in #207 - Expanded static memory DMA offset feature to CMAC, SHA-224, SHA-384, SHA-512, and ML-DSA in #191
- Changed wrap object size argument from input-only to in/out in #241
- Added scan-build static analysis GitHub Action in #195
- Added ECDSA cross-validation test with software implementation in #277
Due to NDA restrictions, access to the Infineon, ST Micro, TI, and Renesas ports is limited. Please contact support@wolfssl.com for access.
- Introduced key wrap client/server APIs with demos and tests in #157 and #185
- Added HKDF key derivation with cached-key reuse support in #204 and #211
- Added image manager module for authenticated firmware handling in #129
- Added non-exportable object support and basic NVM access controls in #147
- Added flash-log based NVM backend for large write granularities in #179
- Added SHA-224/384/512 crypto support across client and server in #144
- Expanded DMA coverage to AES-GCM, RNG seeding, and shared-memory offset transfers in #158, #213, and https://github.com/wolfSSL/wolfHSM/commit/36862ce7e6829c3f996345cad880fdfe516d751f
- Enforced NVM object boundaries during reads in #182
- Prevented stale data reads from erased flash pages in #181
- Corrected NVM flash state handling when recovery is required in #175
- Fixed AES-CTR temporary buffer sizing in #183
- Restored AES-GCM DMA post-write callbacks and optional output handling in #215 and #221
- Fixed POSIX TCP socket error handling in #203
- Added GitHub Action based code coverage reporting in #201
- Added clang-format and clang-tidy automation in #176 and #167
- Added ASAN configuration to example builds and CI workflows in #218
- Improved benchmark tooling and shared memory transport configurability in #158
Due to NDA restrictions, access to the Infineon, ST Micro, and Renesas ports is limited. Please contact support@wolfssl.com for access.
- Basic X509 certificate support in #96
- DMA support for CMAC in #97
- attribute certificate support in #101
- Add benchmark framework in #107
- client/server-only builds + relocate examples in #122
- Refactor DMA API to be generic across all address sizes in #102
- Remove whPacket union in #103
- set RNG on curve25519 keys to support blinding in #109
- new x509 API: verify and cache pubKey in #110
- Add hierarchical makefiles in #124
Due to NDA restrictions, access to the Infineon and ST Micro ports is limited. Please contact support@wolfssl.com for access.
- Added support for ML-DSA (PR#84 and PR#86)
- Added support for DMA-based keystore operations (PR#85)
- Fixes memory error in ECC verify (PR#81)
- Removes unused argument warnings on 32 bit targets (PR#82)
- Fixes memory leak in SHE test (PR#88)
- Improved handling of Curve25519 DER encoded keys using new wolfCrypt APIs (PR#83)
Bug-fix release. Due to NDA restrictions, access to the Infineon and ST Micro ports is limited. Please contact support@wolfssl.com for access.
- Initial release of whnvmtool to pre-build NVM images (PR#77)
- Corrected FreshenKey server function to load keys from NVM when not in cache (PR#78)
- Updated RSA key handling to support private-only and public-only keys (PR#76)
Initial release after internal and early evaluator testing. Due to NDA restrictions, access to the Infineon and ST Micro ports is limited. Please contact support@wolfssl.com for access.
- POSIX simulator and test environment
- Memory fencing and cache controls for memory transport
- Support for Aurix Tricore TC3xx and ST SPC58NN
- DMA support for SHA2 and NVM objects
- Cancellation for CMAC
- Support NO_MALLOC and STATIC_MEMORY
- SHE+ interface
- Reduction in static server memory requirements
- Hardware offload for AURIX and ST C3 modules