Address Skoll review findings on the SealSQ VaultIC port: - CMake: compile vaultic.c (BUILD_VAULTIC flag + LIB_SOURCES) and stop excluding vaultic.h from install when the option is on (HIGH-1). - Crypto callback EC keygen: resolve the curve via key->dp instead of the ECC_CURVE_DEF that wc_ecc_make_key() forwards, so P-256 keygen offloads to the device instead of silently falling back to software (HIGH-2). - EccSharedSecretCb: test the 1.3 versions explicitly instead of a "< 1.3" ordering compare, which was false for DTLS and skipped client keygen (HIGH-3). - LoadCertificates: reject cert sizes <= 0 and bound them with VAULTIC_MAX_CERT_SZ before XMALLOC (HIGH-4); load the device cert before the CA into the trust store; use WOLFSSL_FATAL_ERROR (not WC_HW_E) for cert parse/load failures (LOW-14/16). - Guard the caller's output buffer size (BUFFER_E) before writing the ECDH shared secret in both the PK and crypto callbacks (MEDIUM-6). - vaultic.h: guard the ECDH declarations with VLT_TLS_NO_ECDH to match vaultic.c and rename otherKey to otherPubKey (MEDIUM-7). - configure.ac: parse --enable-vaultic before the crypto-callback aggregation so CRYPTOCB/PKCALLBACKS are promoted ahead of the dependent checks (MEDIUM-9). - Add NULL/dp guards to the PK callbacks (LOW-15). - Register WOLFSSL_VAULTIC_DEBUG in .wolfssl_known_macro_extras and document it, the single-device-key routing, and the one-handshake concurrency limit in the README (LOW-10, MEDIUM-5, MEDIUM-8).
wolfSSL CMake
This directory contains some supplementary functions for the CMakeLists.txt in the root.
See also cmake notes in the INSTALL documentation file. When building with autoconf/automake, CMake package files are installed by default under $(libdir)/cmake/wolfssl to support find_package(wolfssl). Disable with ./configure --disable-cmake-install.
If new CMake build options are added cmake/options.h.in must also be updated.
For more information on building wolfSSL, see the wolfSSL Manual.
In summary for cmake:
# From the root of the wolfSSL repo:
mkdir -p out
pushd out
cmake ..
cmake --build .
# View the available ciphers with:
./examples/client/client -e
popd
CMake Presets
The CMakePresets.json; see [cmake-presets(https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html)
-
Cross-platform and cross-IDE.
-
Standardized CMake feature (since CMake 3.19+, recommended after 3.21).
-
Works in Visual Studio, VS Code, CLI, CI systems, etc..
Visual Studio Settings
There's also a Visual Studio specific file: CMakeSettings.json. This the file that supports the GUI CMake settings.
See the Microsoft CMakeSettings.json schema reference
Visual Studio (2022 v17.1 and later):
-
Prefers
CMakePresets.jsonif it exists. -
Falls back to
CMakeSettings.jsonif no presets are found. -
Lets you override or extend presets via
CMakeSettings.json.
Recommendations:
-
Use
CMakePresets.jsonto define shared, cross-platform presets. -
Use
CMakeSettings.jsonto define Visual Studio-specific overrides, like:- Custom output directories
- Specific environment variables
- *UI-related tweaks