Repository navigation
Fix: Fenrir F-10621 #14112
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: WolfSSL CMake Build Tests | |
| on: | |
| push: | |
| branches: [ 'release/**' ] | |
| pull_request: | |
| types: [opened, synchronize, reopened, ready_for_review] | |
| branches: [ '*' ] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| if: ${{ (github.repository_owner == 'wolfssl') && (github.event_name != 'pull_request' || github.event.pull_request.draft == false) }} | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 40 | |
| steps: | |
| # pull wolfSSL | |
| - uses: actions/checkout@v5 | |
| - name: Install cmake | |
| uses: ./.github/actions/install-apt-deps | |
| with: | |
| packages: cmake | |
| ghcr-debs-tag: ubuntu-24.04-full | |
| # build wolfssl | |
| - name: Build wolfssl | |
| run: | | |
| mkdir build | |
| cd build | |
| cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DWOLFSSL_INSTALL=yes -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" \ | |
| -DWOLFSSL_16BIT:BOOL=no -DWOLFSSL_32BIT:BOOL=no -DWOLFSSL_AES:BOOL=yes \ | |
| -DWOLFSSL_AESCBC:BOOL=yes -DWOLFSSL_AESCCM:BOOL=yes -DWOLFSSL_AESCFB:BOOL=yes -DWOLFSSL_AESECB:BOOL=yes \ | |
| -DWOLFSSL_AESCTR:BOOL=yes -DWOLFSSL_AESGCM:STRING=yes -DWOLFSSL_AESKEYWRAP:BOOL=yes \ | |
| -DWOLFSSL_AESOFB:BOOL=yes -DWOLFSSL_AESCTS:BOOL=yes -DWOLFSSL_AESSIV:BOOL=yes -DWOLFSSL_ALIGN_DATA:BOOL=yes \ | |
| -DWOLFSSL_ALPN:BOOL=ON -DWOLFSSL_ALT_CERT_CHAINS:BOOL=ON -DWOLFSSL_ARC4:BOOL=yes \ | |
| -DWOLFSSL_ARIA:BOOL=no -DWOLFSSL_ASIO:BOOL=no -DWOLFSSL_ASM:BOOL=yes -DWOLFSSL_ASN:BOOL=yes \ | |
| -DWOLFSSL_ASYNC_THREADS:BOOL=no -DWOLFSSL_BASE64_ENCODE:BOOL=yes -DWOLFSSL_CAAM:BOOL=no \ | |
| -DWOLFSSL_CERTEXT:BOOL=yes -DWOLFSSL_CERTGEN:BOOL=yes -DWOLFSSL_CERTGENCACHE:BOOL=no \ | |
| -DWOLFSSL_CERTREQ:BOOL=yes -DWOLFSSL_CHACHA:STRING=yes -DWOLFSSL_CMAC:BOOL=yes \ | |
| -DWOLFSSL_CODING:BOOL=yes -DWOLFSSL_CONFIG_H:BOOL=yes -DWOLFSSL_CRL:STRING=yes \ | |
| -DWOLFSSL_CRYPTOCB:BOOL=yes -DWOLFSSL_CRYPTOCB_NO_SW_TEST:BOOL=no \ | |
| -DWOLFSSL_CRYPT_TESTS:BOOL=yes -DWOLFSSL_CRYPT_TESTS_HELP:BOOL=no \ | |
| -DWOLFSSL_CRYPT_TESTS_LIBS:BOOL=no -DWOLFSSL_CURL:BOOL=yes -DWOLFSSL_CURVE25519:STRING=yes \ | |
| -DWOLFSSL_CURVE448:STRING=yes -DWOLFSSL_DEBUG:BOOL=yes -DWOLFSSL_DES3:BOOL=ON \ | |
| -DWOLFSSL_DES3_TLS_SUITES:BOOL=no -DWOLFSSL_DH:STRING=yes -DWOLFSSL_DH_DEFAULT_PARAMS:BOOL=yes \ | |
| -DWOLFSSL_DSA:BOOL=yes -DWOLFSSL_DTLS:BOOL=ON -DWOLFSSL_DTLS13:BOOL=yes \ | |
| -DWOLFSSL_DTLS_CID:BOOL=yes -DWOLFSSL_DTLS_CH_FRAG:BOOL=yes -DWOLFSSL_ECC:STRING=yes \ | |
| -DWOLFSSL_ECCCUSTCURVES:STRING=all -DWOLFSSL_ECCSHAMIR:BOOL=yes \ | |
| -DWOLFSSL_ECH:BOOL=yes -DWOLFSSL_ED25519:BOOL=yes -DWOLFSSL_ED448:STRING=yes \ | |
| -DWOLFSSL_ENCKEYS:BOOL=yes -DWOLFSSL_ENC_THEN_MAC:BOOL=yes -DWOLFSSL_ERROR_QUEUE:BOOL=yes \ | |
| -DWOLFSSL_ERROR_STRINGS:BOOL=yes -DWOLFSSL_EXAMPLES:BOOL=yes -DWOLFSSL_EXPERIMENTAL:BOOL=yes \ | |
| -DWOLFSSL_EXTENDED_MASTER:BOOL=yes -DWOLFSSL_EX_DATA:BOOL=yes -DWOLFSSL_FAST_MATH:BOOL=no \ | |
| -DWOLFSSL_FILESYSTEM:BOOL=yes -DWOLFSSL_HARDEN:BOOL=yes -DWOLFSSL_HASH_DRBG:BOOL=yes \ | |
| -DWOLFSSL_HKDF:BOOL=yes -DWOLFSSL_HPKE:BOOL=yes -DWOLFSSL_HRR_COOKIE:STRING=yes \ | |
| -DWOLFSSL_INLINE:BOOL=yes -DWOLFSSL_INSTALL:BOOL=yes -DWOLFSSL_IP_ALT_NAME:BOOL=ON \ | |
| -DWOLFSSL_KEYGEN:BOOL=yes -DWOLFSSL_KEYING_MATERIAL:BOOL=ON \ | |
| -DWOLFSSL_MD4:BOOL=ON -DWOLFSSL_MD5:BOOL=yes -DWOLFSSL_MEMORY:BOOL=yes -DWOLFSSL_NO_STUB:BOOL=no \ | |
| -DWOLFSSL_OAEP:BOOL=yes -DWOLFSSL_OCSP:BOOL=yes -DWOLFSSL_OCSPSTAPLING:BOOL=ON \ | |
| -DWOLFSSL_OCSPSTAPLING_V2:BOOL=ON -DWOLFSSL_OLD_NAMES:BOOL=yes -DWOLFSSL_OLD_TLS:BOOL=yes \ | |
| -DWOLFSSL_OPENSSLALL:BOOL=yes -DWOLFSSL_OPENSSLEXTRA:BOOL=ON -DWOLFSSL_OPTFLAGS:BOOL=yes \ | |
| -DWOLFSSL_PKCALLBACKS:BOOL=yes -DWOLFSSL_PKCS12:BOOL=yes \ | |
| -DWOLFSSL_PKCS7:BOOL=yes -DWOLFSSL_POLY1305:BOOL=yes -DWOLFSSL_POSTAUTH:BOOL=yes \ | |
| -DWOLFSSL_PWDBASED:BOOL=yes -DWOLFSSL_QUIC:BOOL=yes -DWOLFSSL_REPRODUCIBLE_BUILD:BOOL=no \ | |
| -DWOLFSSL_RNG:BOOL=yes -DWOLFSSL_RSA:BOOL=yes -DWOLFSSL_RSA_PSS:BOOL=yes \ | |
| -DWOLFSSL_SESSION_TICKET:BOOL=ON -DWOLFSSL_SHA:BOOL=yes -DWOLFSSL_SHA224:BOOL=yes \ | |
| -DWOLFSSL_SHA3:STRING=yes -DWOLFSSL_SHA384:BOOL=yes -DWOLFSSL_SHA512:BOOL=yes \ | |
| -DWOLFSSL_SHAKE128:STRING=yes -DWOLFSSL_SHAKE256:STRING=yes \ | |
| -DWOLFSSL_CSHAKE:BOOL=yes -DWOLFSSL_KMAC:BOOL=yes \ | |
| -DWOLFSSL_SINGLE_THREADED:BOOL=no \ | |
| -DWOLFSSL_SNI:BOOL=yes -DWOLFSSL_SP_MATH_ALL:BOOL=yes -DWOLFSSL_SRTP:BOOL=yes \ | |
| -DWOLFSSL_STUNNEL:BOOL=yes -DWOLFSSL_SUPPORTED_CURVES:BOOL=yes -DWOLFSSL_SYS_CA_CERTS:BOOL=yes \ | |
| -DWOLFSSL_TICKET_NONCE_MALLOC:BOOL=yes -DWOLFSSL_TLS13:BOOL=yes -DWOLFSSL_TLSV12:BOOL=yes \ | |
| -DWOLFSSL_TLSX:BOOL=yes -DWOLFSSL_TPM:BOOL=yes -DWOLFSSL_CLU:BOOL=yes -DWOLFSSL_USER_SETTINGS:BOOL=no \ | |
| -DWOLFSSL_USER_SETTINGS_ASM:BOOL=no -DWOLFSSL_WOLFSSH:BOOL=ON -DWOLFSSL_X86_64_BUILD_ASM:BOOL=yes \ | |
| -DWOLFSSL_MLKEM:BOOL=yes -DWOLFSSL_LMS:BOOL=yes -DWOLFSSL_LMSSHA256192:BOOL=yes \ | |
| -DWOLFSSL_XMSS:BOOL=yes \ | |
| -DWOLFSSL_X963KDF:BOOL=yes -DWOLFSSL_DILITHIUM:BOOL=yes -DWOLFSSL_PKCS11:BOOL=yes \ | |
| -DWOLFSSL_ECCSI:BOOL=yes -DWOLFSSL_SAKKE:BOOL=yes -DWOLFSSL_SIPHASH:BOOL=yes \ | |
| -DWOLFSSL_WC_RSA_DIRECT:BOOL=yes -DWOLFSSL_PUBLIC_MP:BOOL=yes \ | |
| -DWOLFSSL_CERT_WITH_EXTERN_PSK:BOOL=yes \ | |
| -DWOLFSSL_EXTRA_PQC_HYBRIDS:BOOL=yes -DWOLFSSL_TLS_NO_MLKEM_STANDALONE:BOOL=no \ | |
| .. | |
| cmake --build . | |
| ctest -j $(nproc) --output-on-failure | |
| cmake --install . | |
| # clean up | |
| cd .. | |
| rm -rf build | |
| # build "lean-tls" wolfssl | |
| - name: Build wolfssl with lean-tls | |
| run: | | |
| mkdir build | |
| cd build | |
| cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DWOLFSSL_INSTALL=yes -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" \ | |
| -DWOLFSSL_LEAN_TLS:BOOL=yes \ | |
| .. | |
| cmake --build . | |
| cmake --install . | |
| # clean up | |
| cd .. | |
| rm -rf build | |
| # Option plumbing: a declared option must reach both the library and | |
| # options.h, and a -D that is not an option must reach neither. | |
| - name: Check option to options.h plumbing | |
| run: | | |
| mkdir build | |
| cd build | |
| cmake -DWOLFSSL_CRYPT_ONLY=yes .. 2>&1 | tee cfg.log | |
| grep -q '^#define WOLFCRYPT_ONLY$' wolfssl/options.h | |
| grep -q '^#define NO_TLS$' wolfssl/options.h | |
| # TLS-layer options default off, as with --enable-cryptonly, but the | |
| # TLS 1.3 KDFs stay. | |
| ! grep -q '^#define HAVE_SNI$' wolfssl/options.h | |
| ! grep -q '^#define WOLFSSL_DTLS$' wolfssl/options.h | |
| grep -q '^#define WOLFSSL_TLS13$' wolfssl/options.h | |
| ! grep -q 'is not a wolfSSL build option' cfg.log | |
| cmake --build . | |
| cd .. | |
| rm -rf build | |
| mkdir build | |
| cd build | |
| # Adding cryptonly to a directory configured without it must take the | |
| # TLS layer out too, not leave the previous defaults cached. | |
| cmake .. > /dev/null | |
| grep -q '^#define HAVE_SNI$' wolfssl/options.h | |
| cmake -DWOLFSSL_CRYPT_ONLY=yes .. > /dev/null | |
| ! grep -q '^#define HAVE_SNI$' wolfssl/options.h | |
| grep -q '^#define NO_TLS$' wolfssl/options.h | |
| cd .. | |
| rm -rf build | |
| mkdir build | |
| cd build | |
| # Cryptonly wins over a TLS-layer option asked for alongside it. | |
| cmake -DWOLFSSL_CRYPT_ONLY=yes -DWOLFSSL_DTLS=yes .. > /dev/null | |
| ! grep -q '^#define WOLFSSL_DTLS$' wolfssl/options.h | |
| cd .. | |
| rm -rf build | |
| mkdir build | |
| cd build | |
| # An option declared with a raw CACHE entry rather than add_option must | |
| # survive the stray-define guard, including across a reconfigure. | |
| cmake -DWOLFSSL_HARDEN_TLS=128 .. 2>&1 | tee cfg.log | |
| grep -q '^#define WOLFSSL_HARDEN_TLS 128$' wolfssl/options.h | |
| ! grep -q 'is not a wolfSSL build option' cfg.log | |
| cmake . > /dev/null | |
| grep -q '^#define WOLFSSL_HARDEN_TLS 128$' wolfssl/options.h | |
| cd .. | |
| rm -rf build | |
| mkdir build | |
| cd build | |
| # WOLFSSL_STATICMEMORY is the option; this spelling is not one. | |
| cmake -DWOLFSSL_STATIC_MEMORY=yes .. 2>&1 | tee cfg.log | |
| grep -q 'WOLFSSL_STATIC_MEMORY is not a wolfSSL build option' cfg.log | |
| ! grep -q '^#define WOLFSSL_STATIC_MEMORY$' wolfssl/options.h | |
| cd .. | |
| rm -rf build | |
| # CMake build with user_settings.h | |
| - name: Build wolfssl with user_settings.h | |
| run: | | |
| mkdir build | |
| cp examples/configs/user_settings_all.h ./build/user_settings.h | |
| cd build | |
| cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DWOLFSSL_INSTALL=yes -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install" \ | |
| -DWOLFSSL_USER_SETTINGS=ON -DWOLFSSL_USER_SETTINGS_ASM=ON -DWOLFSSL_EXAMPLES=ON -DWOLFSSL_CRYPT_TESTS=ON \ | |
| -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -I ." \ | |
| .. | |
| cmake --build . | |
| ctest -j $(nproc) | |
| cmake --install . | |
| # clean up | |
| cd .. | |
| rm -rf build |