1

(4 replies, posted in wolfSSL)

PRETTY_NAME="Red Hat Enterprise Linux 9.5 (Plow)"

# uname -r
5.14.0-427.37.1.el9_4.x86_64

# uname -a
Linux localhost.dev.zpath.net 5.14.0-427.37.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Sep 13 12:41:50 EDT 2024 x86_64 x86_64 x86_64 GNU/Linux

static inline void wg_reset_packet(struct sk_buff *skb, bool encapsulating)
{
        const int pfmemalloc = skb->pfmemalloc;
        u32 hash = skb->hash;
        u8 l4_hash = skb->l4_hash;
        u8 sw_hash = skb->sw_hash;

        skb_scrub_packet(skb, true);

#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 17, 0)
        memset(&skb->headers, 0,
               sizeof skb->headers);
#else
        memset(&skb->headers_start, 0,   <==== Build failing on this line since Kernel version < 5.17
               offsetof(struct sk_buff, headers_end) -
                       offsetof(struct sk_buff, headers_start));
#endif

2

(4 replies, posted in wolfSSL)

Hi douzzer

Used the recipe above to build wolfssl and Wireguard, getting the following errors, any suggestion how to get past these compile errors ?

Posted the wolfssl configure config at end of the below message for your reference.

Thanks

----
# make WOLFCRYPT=1 KERNELRELEASE=$(uname -r) KERNELDIR=/usr/src/kernels/$(uname -r) WOLFSSL_ROOT=/root/wolfssl_plus_wireguard/wolfssl
  CC [M]  /root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/main.o
In file included from ./include/linux/string.h:254,
                 from ./include/linux/bitmap.h:11,
                 from ./include/linux/cpumask.h:12,
                 from ./arch/x86/include/asm/cpumask.h:5,
                 from ./arch/x86/include/asm/msr.h:11,
                 from ./arch/x86/include/asm/processor.h:23,
                 from ./arch/x86/include/asm/cpufeature.h:5,
                 from ./arch/x86/include/asm/thread_info.h:53,
                 from ./include/linux/thread_info.h:60,
                 from ./arch/x86/include/asm/preempt.h:9,
                 from ./include/linux/preempt.h:79,
                 from ./include/linux/spinlock.h:56,
                 from ./include/linux/mmzone.h:8,
                 from ./include/linux/gfp.h:7,
                 from ./include/linux/slab.h:16,
                 from /root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/wolfcrypto_shim.h:24,
                 from <command-line>:
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h: In function ‘wg_reset_packet’:
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:89:41: error: ‘struct sk_buff’ has no member named ‘headers_end’; did you mean ‘headers’?
   89 |                offsetof(struct sk_buff, headers_end) -
      |                                         ^~~~~~~~~~~
./include/linux/fortify-string.h:325:42: note: in definition of macro ‘__fortify_memset_chk’
  325 |         size_t __fortify_size = (size_t)(size);                         \
      |                                          ^~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:88:9: note: in expansion of macro ‘memset’
   88 |         memset(&skb->headers_start, 0,
      |         ^~~~~~
./include/linux/stddef.h:17:33: note: in expansion of macro ‘__compiler_offsetof’
   17 | #define offsetof(TYPE, MEMBER)  __compiler_offsetof(TYPE, MEMBER)
      |                                 ^~~~~~~~~~~~~~~~~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:89:16: note: in expansion of macro ‘offsetof’
   89 |                offsetof(struct sk_buff, headers_end) -
      |                ^~~~~~~~
././include/linux/compiler_types.h:146:41: error: ‘struct sk_buff’ has no member named ‘headers_start’
  146 | #define __compiler_offsetof(a, b)       __builtin_offsetof(a, b)
      |                                         ^~~~~~~~~~~~~~~~~~
./include/linux/fortify-string.h:325:42: note: in definition of macro ‘__fortify_memset_chk’
  325 |         size_t __fortify_size = (size_t)(size);                         \
      |                                          ^~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:88:9: note: in expansion of macro ‘memset’
   88 |         memset(&skb->headers_start, 0,
      |         ^~~~~~
./include/linux/stddef.h:17:33: note: in expansion of macro ‘__compiler_offsetof’
   17 | #define offsetof(TYPE, MEMBER)  __compiler_offsetof(TYPE, MEMBER)
      |                                 ^~~~~~~~~~~~~~~~~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:90:24: note: in expansion of macro ‘offsetof’
   90 |                        offsetof(struct sk_buff, headers_start));
      |                        ^~~~~~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:88:20: error: ‘struct sk_buff’ has no member named ‘headers_start’
   88 |         memset(&skb->headers_start, 0,
      |                    ^~
./include/linux/fortify-string.h:326:44: note: in definition of macro ‘__fortify_memset_chk’
  326 |         fortify_memset_chk(__fortify_size, p_size, p_size_field),       \
      |                                            ^~~~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:88:9: note: in expansion of macro ‘memset’
   88 |         memset(&skb->headers_start, 0,
      |         ^~~~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:88:20: error: ‘struct sk_buff’ has no member named ‘headers_start’
   88 |         memset(&skb->headers_start, 0,
      |                    ^~
./include/linux/fortify-string.h:326:52: note: in definition of macro ‘__fortify_memset_chk’
  326 |         fortify_memset_chk(__fortify_size, p_size, p_size_field),       \
      |                                                    ^~~~~~~~~~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:88:9: note: in expansion of macro ‘memset’
   88 |         memset(&skb->headers_start, 0,
      |         ^~~~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:88:20: error: ‘struct sk_buff’ has no member named ‘headers_start’
   88 |         memset(&skb->headers_start, 0,
      |                    ^~
./include/linux/fortify-string.h:327:29: note: in definition of macro ‘__fortify_memset_chk’
  327 |         __underlying_memset(p, c, __fortify_size);                      \
      |                             ^
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:88:9: note: in expansion of macro ‘memset’
   88 |         memset(&skb->headers_start, 0,
      |         ^~~~~~
./include/linux/fortify-string.h:326:65: warning: left-hand operand of comma expression has no effect [-Wunused-value]
  326 |         fortify_memset_chk(__fortify_size, p_size, p_size_field),       \
      |                                                                 ^
./include/linux/fortify-string.h:335:25: note: in expansion of macro ‘__fortify_memset_chk’
  335 | #define memset(p, c, s) __fortify_memset_chk(p, c, s,                   \
      |                         ^~~~~~~~~~~~~~~~~~~~
/root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/queueing.h:88:9: note: in expansion of macro ‘memset’
   88 |         memset(&skb->headers_start, 0,
      |         ^~~~~~
make[2]: *** [scripts/Makefile.build:299: /root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src/main.o] Error 1
make[1]: *** [Makefile:1936: /root/wolfssl_plus_wireguard/wolf-wireguard-kernel/src] Error 2
make: *** [Makefile:26: module] Error 2

My Wolfssl config was as follows:

======================

Configuration summary for wolfssl version 5.7.4

   * Installation prefix:        /usr/local
   * System type:                pc-linux-gnu
   * Host CPU:                   x86_64
   * C Compiler:                 gcc
   * C Flags:                       -Werror -Wno-pragmas -Wall -Wextra -Wunknown-pragmas --param=ssp-buffer-size=1 -Waddress -Warray-bounds -Wbad-function-cast -Wchar-subscripts -Wcomment -Wfloat-equal -Wformat-security -Wformat=2 -Wmaybe-uninitialized -Wmissing-field-initializers -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wnormalized=id -Woverride-init -Wpointer-arith -Wpointer-sign -Wshadow -Wsign-compare -Wstrict-overflow=1 -Wswitch-enum -Wundef -Wunused -Wunused-result -Wunused-variable -Wwrite-strings -fwrapv
   * C++ Compiler:               
   * C++ Flags:                 
   * CPP Flags:                 
   * CCAS Flags:                   
   * LD Flags:                   
   * LIB Flags:                   -pie -z relro -z now -Werror
   * Library Suffix:             
   * Linux Kernel Build Root:    /usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64
   * Linux Kernel Build Arch:    x86_64
   * fpu disable C flags:        -mno-80387 -mno-fp-ret-in-387
   * fpu enable C flags:         -m80387
   * SIMD disable C flags:       -mno-sse -mgeneral-regs-only
   * SIMD enable C flags:        -msse -mmmx -msse2 -msse4 -mavx -mavx2
   * No-auto-vectorize C flags:  -fno-builtin -fno-tree-vectorize -fno-tree-loop-vectorize -fno-tree-slp-vectorize
   * Auto-vectorize C flags:     -fbuiltin -ftree-vectorize -ftree-loop-vectorize -ftree-slp-vectorize
   * SIMD enable as flags:       -Wa,-march=+no87+no287+no387+no687+sse+sse2+sse3+ssse3+sse4.1+sse4.2+sse4+avx+avx2+avx512f
   * FPU enable as flags:        -Wa,-march=+387+687+nosse+nosse2+nosse3+nossse3+nosse4.1+nosse4.2+nosse4+noavx+noavx2+noavx512f
   * SIMD+FPU disable as flags:  -Wa,-march=+no387+no687+nosse+nosse2+nosse3+nossse3+nosse4.1+nosse4.2+nosse4+noavx+noavx2+noavx512f
   * SIMD+FPU enable as flags:   -Wa,-march=+387+687+sse+sse2+sse3+ssse3+sse4.1+sse4.2+sse4+avx+avx2+avx512f
   * Linux kernel module PIE:    no
   * Debug enabled:              no
   * Coverage enabled:           
   * Warnings as failure:        yes
   * make -j:                    17
   * VCS checkout:               yes

   Features
   * Experimental settings:      Forbidden
   * FIPS:                       no
   * Single threaded:            no
   * Filesystem:                 no
   * OpenSSH Build:              no
   * OpenSSL Extra API:          no
   * OpenSSL Coexist:            no
   * Old Names:                  yes
   * Max Strength Build:         no
   * Distro Build:               no
   * Reproducible Build:         no
   * Side-channel Hardening:     yes
   * Single Precision Math:      no
   * SP implementation:          all
   * Fast Math:                  no
   * Heap Math:                  no
   * Assembly Allowed:           yes
   * sniffer:                    no
   * snifftest:                  no
   * ARC4:                       yes
   * AES:                        yes
   * AES-NI:                     no
   * AES-CBC:                    yes
   * AES-CBC length checks:      yes
   * AES-GCM:                    yes
   * AES-GCM streaming:          yes
   * AES-CCM:                    yes
   * AES-CTR:                    yes
   * AES-CFB:                    yes
   * AES-OFB:                    yes
   * AES-XTS:                    yes
   * AES-XTS streaming:          yes
   * AES-SIV:                    yes
   * AES-EAX:                    yes
   * AES Bitspliced:             no
   * AES Key Wrap:               yes
   * ARIA:                       no
   * DES3:                       yes
   * DES3 TLS Suites:            no
   * Camellia:                   yes
   * CUDA:                       no
   * SM4-ECB:                    no
   * SM4-CBC:                    no
   * SM4-CTR:                    no
   * SM4-GCM:                    no
   * SM4-CCM:                    no
   * NULL Cipher:                yes
   * MD2:                        yes
   * MD4:                        yes
   * MD5:                        yes
   * RIPEMD:                     yes
   * SHA:                        yes
   * SHA-224:                    yes
   * SHA-384:                    yes
   * SHA-512:                    yes
   * SHA3:                       yes
   * SHAKE128:                   yes
   * SHAKE256:                   yes
   * SM3:                        no
   * BLAKE2:                     yes
   * BLAKE2S:                    yes
   * SipHash:                    yes
   * CMAC:                       yes
   * keygen:                     yes
   * acert:                      no
   * certgen:                    yes
   * certreq:                    yes
   * certext:                    yes
   * certgencache:               no
   * CHACHA:                     yes
   * XCHACHA:                    yes
   * Hash DRBG:                  yes
   * MmemUse Entropy:
   * (AKA: wolfEntropy):         no
   * PWDBASED:                   yes
   * Encrypted keys:             yes
   * scrypt:                     yes
   * wolfCrypt Only:             yes
   * HKDF:                       yes
   * HPKE:                       no
   * X9.63 KDF:                  yes
   * SRTP-KDF:                   yes
   * PSK:                        yes
   * Poly1305:                   yes
   * LEANPSK:                    no
   * LEANTLS:                    no
   * RSA:                        yes
   * RSA-PSS:                    yes
   * DSA:                        yes
   * DH:                         yes
   * DH Default Parameters:      yes
   * ECC:                        yes
   * ECC Custom Curves:          yes
   * ECC Minimum Bits:           224
   * FPECC:                      yes
   * ECC_ENCRYPT:                yes
   * Brainpool:                  yes
   * SM2:                        no
   * CURVE25519:                 noasm
   * ED25519:                    yes
   * ED25519 streaming:          yes
   * CURVE448:                   yes
   * ED448:                      yes
   * ED448 streaming:            yes
   * LMS:                        no
   * LMS wolfSSL impl:           
   * XMSS:                       no
   * XMSS wolfSSL impl:         
   * KYBER:                      no
   * KYBER wolfSSL impl:         no
   * DILITHIUM:                  no
   * ECCSI                       no
   * SAKKE                       no
   * ASN:                        yes
   * Anonymous cipher:           yes
   * CODING:                     yes
   * MEMORY:                     yes
   * I/O POOL:                   no
   * wolfSentry:                 no
   * LIGHTY:                     no
   * WPA Supplicant:             no
   * HAPROXY:                    no
   * STUNNEL:                    no
   * tcpdump:                    no
   * libssh2:                    no
   * ntp:                        no
   * rsyslog:                    no
   * Apache httpd:               no
   * NGINX:                      no
   * OpenResty:                  no
   * ASIO:                       no
   * LIBWEBSOCKETS:              no
   * Qt:                         no
   * Qt Unit Testing:            no
   * SIGNAL:                     no
   * chrony:                     no
   * strongSwan:                 no
   * OpenLDAP:                   no
   * hitch:                      no
   * memcached:                  no
   * Mosquitto                   no
   * ERROR_STRINGS:              yes
   * DTLS:                       no
   * DTLS v1.3:                  no
   * SCTP:                       no
   * SRTP:                       no
   * Indefinite Length:          yes
   * Multicast:                  no
   * SSL v3.0 (Old):             no
   * TLS v1.0 (Old):             no
   * TLS v1.1 (Old):             no
   * TLS v1.2:                   no
   * TLS v1.3:                   no
   * RPK:                        no
   * Post-handshake Auth:        no
   * Early Data:                 no
   * QUIC:                       no
   * Send State in HRR Cookie:   undefined
   * OCSP:                       yes
   * OCSP Stapling:              yes
   * OCSP Stapling v2:           yes
   * CRL:                        yes
   * CRL-MONITOR:                no
   * Persistent session cache:   no
   * Persistent cert    cache:   no
   * Atomic User Record Layer:   yes
   * Public Key Callbacks:       yes
   * libxmss:                    no
   * liblms:                     no
   * liboqs:                     no
   * Whitewood netRandom:        no
   * Server Name Indication:     yes
   * ALPN:                       yes
   * Maximum Fragment Length:    yes
   * Trusted CA Indication:      yes
   * Truncated HMAC:             yes
   * Supported Elliptic Curves:  yes
   * FFDHE only in client:       no
   * Session Ticket:             no
   * Extended Master Secret:     no
   * Renegotiation Indication:   no
   * Secure Renegotiation:       no
   * Fallback SCSV:              no
   * Keying Material Exporter:   no
   * All TLS Extensions:         yes
   * S/MIME:                     no
   * PKCS#7:                     yes
   * PKCS#8:                     yes
   * PKCS#11:                    no
   * PKCS#12:                    yes
   * wolfSSH:                    yes
   * wolfEngine:                 no
   * wolfTPM:                    no
   * wolfCLU:                    no
   * wolfSCEP:                   no
   * Secure Remote Password:     yes
   * Small Stack:                yes
   * Linux Kernel Module:        yes
   * Linux kernel module bench:  no
   * Linux kernel alg register:  none
   * valgrind unit tests:        no
   * LIBZ:                       no
   * Examples:                   no
   * Crypt tests:                no
   * Stack sizes in tests:       no
   * Heap stats in tests:        no
   * Asynchronous Crypto:        no
   * Asynchronous Crypto (sim):  no
   * Cavium Nitrox:              no
   * Cavium Octeon (Sync):       no
   * Intel Quick Assist:         no
   * ARM ASM:                    no
   * ARM ASM SHA512/SHA3 Crypto  no
   * ARM ASM SM3/SM4 Crypto      no
   * RISC-V ASM                  no
   * Write duplicate:            no
   * Xilinx Hardware Acc.:       no
   * C89:                        no
   * Inline Code:                yes
   * Linux AF_ALG:               no
   * Linux KCAPI:                no
   * Linux devcrypto:            no
   * PK callbacks:               yes
   * Crypto callbacks:           yes
   * i.MX CAAM:                  no
   * IoT-Safe:                   no
   * IoT-Safe HWRNG:             no
   * NXP SE050:                  no
   * Maxim Integrated MAXQ10XX:  no
   * PSA:                        no
   * System CA certs:            no
   * Dual alg cert support:      no
   * ERR Queues per Thread:      yes
   * rwlock:                     no
   * keylog export:              no
   * AutoSAR :                   no

---
./configure flags: '--enable-linuxkm' '--enable-all-crypto' '--enable-cryptonly' '--enable-blake2' '--enable-blake2s' '--enable-xchacha' '--enable-poly1305' '--enable-curve25519' '--with-linux-source=/usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64'
---

3

(4 replies, posted in wolfSSL)

Hi douzzer

Thank you very much for your prompt reply, greatly appreciate your help.

My follow-on question is how would I go about making a FIPS capable Wireguard + Wolfssl build ?

Do you also have a recipe for a FIPS WolfSSL + Wireguard ?

Thanks in advance for all the help !

Regards.

Alem

4

(4 replies, posted in wolfSSL)

Hi Wolfssl Devs,

How can I use libwolfssl.ko with Wireguard Kernel module ?

Do I need to compile my own Wireguard kernel module against the Wolfssl headers that are generated when I configure Wolfssl package ?

Can Wireguard directly use or consume libwolfssl.ko that I have already built using config "./configure --enable-linuxkm --with-linux-source=/usr/src/kernels/$(uname -r)" or does Wireguard itself have to be re-built against my libwolfssl.ko and or libwolfssl headers ?

What configure options are needed for Wolfssl for Wireguard to be able to use libwolfssl.ko for its crypto functions ?


Thanks in advance !

Hi Kareem and Wolfssl devs,

Thank you very much for the help, looks like it is at least building the unsigned kernel module now.

----
[4482970.809721] wolfSSL 5.7.4 loaded without valid module signature.
                 See https://www.wolfssl.com/ for more information.
                 wolfSSL Copyright (C) 2006-present wolfSSL Inc.  Licensed under GPL v2.
[4483325.021156] wolfSSL 5.7.4 cleanup complete.
[4483428.898786] wolfCrypt self-test passed.
[4483428.901679] wolfSSL 5.7.4 loaded without valid module signature.
                 See https://www.wolfssl.com/ for more information.
                 wolfSSL Copyright (C) 2006-present wolfSSL Inc.  Licensed under GPL v2.
---

it is still failing to build the signed Kernel module, I can live with this unsigned kernel module for a little bit, now I have two follow-up questions:

1) How can I make Wireguard use this libcrypt.ko, would I need to build my on version of Wireguard driver on my RHEL9.5 host against the libwolfssl headers somehow or can I just use this existing libwolfssl.ko kernel module I built with the standard RHEL9.5 Wireguard package ?

2) How do I enable FIPS mode for both Wireguard and libwolfssl Kernel module ?

--

Thanks all for your help !

Hi Kareem,

Yes, I am able to build other Kernel modules fine in this env.

After applying your suggestion, the build went further, it now fails at a different point as you can see below:

-----
[root@localhost.dev ~/wolfssl]# make KERNEL_THREAD_STACK_SIZE=16384
make -j17  all-recursive
make[1]: Entering directory '/root/wolfssl'
Making all in linuxkm
make[2]: Entering directory '/root/wolfssl/linuxkm'
make[2]: warning: -j17 forced in submake: resetting jobserver mode.
make ARCH='x86_64'  'CC=gcc' 'LD=/bin/ld -m elf_x86_64'  -C '/usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64' M='/root/wolfssl/linuxkm'
make[3]: Entering directory '/usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64'
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/hmac.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/hash.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/cpuid.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/kdf.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/random.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/sha256.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/rsa.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/sp_int.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/aes.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/sha.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/sha512.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/sha3.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/logging.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/wc_port.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/error.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/wc_encrypt.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/signature.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/wolfmath.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/memory.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/dh.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/asn.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/coding.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/poly1305.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/md5.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/pwdbased.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/pkcs12.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/chacha.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/chacha20_poly1305.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/ecc.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/wc_lms.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/wc_lms_impl.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/wc_xmss.o
  CC [M]  /root/wolfssl/linuxkm/wolfcrypt/src/wc_xmss_impl.o
  CC [M]  /root/wolfssl/linuxkm/src/internal.o
  CC [M]  /root/wolfssl/linuxkm/src/wolfio.o
  CC [M]  /root/wolfssl/linuxkm/src/keys.o
  CC [M]  /root/wolfssl/linuxkm/src/ssl.o
  CC [M]  /root/wolfssl/linuxkm/src/tls.o
  CC [M]  /root/wolfssl/linuxkm/src/tls13.o
  CC [M]  /root/wolfssl/linuxkm/linuxkm/module_hooks.o
  CC [M]  /root/wolfssl/linuxkm/linuxkm/module_exports.o
  LD [M]  /root/wolfssl/linuxkm/libwolfssl.o
  MODPOST /root/wolfssl/linuxkm/Module.symvers
  CC [M]  /root/wolfssl/linuxkm/libwolfssl.mod.o
  LD [M]  /root/wolfssl/linuxkm/libwolfssl.ko
  BTF [M] /root/wolfssl/linuxkm/libwolfssl.ko
Skipping BTF generation for /root/wolfssl/linuxkm/libwolfssl.ko due to unavailability of vmlinux
make[3]: Leaving directory '/usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64'
At main.c:167:
- SSL error:FFFFFFFF80000002:system library::No such file or directory: crypto/bio/bss_file.c:67
- SSL error:10000080:BIO routines::no such file: crypto/bio/bss_file.c:75
sign-file: certs/signing_key.pem: No such file or directory
make[2]: *** [Makefile:99: libwolfssl.ko.signed] Error 1
make[2]: Leaving directory '/root/wolfssl/linuxkm'
make[1]: *** [Makefile:9067: all-recursive] Error 1
make[1]: Leaving directory '/root/wolfssl'
make: *** [Makefile:5417: all] Error 2

-----

# make
make -j17  all-recursive
make[1]: Entering directory '/root/wolfssl'
Making all in linuxkm
make[2]: Entering directory '/root/wolfssl/linuxkm'
make[2]: warning: -j17 forced in submake: resetting jobserver mode.
make ARCH='x86_64'  'CC=gcc' 'LD=/bin/ld -m elf_x86_64'  -C '/usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64' M='/root/wolfssl/linuxkm'
make[3]: Entering directory '/usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64'
  HOSTCC  /root/wolfssl/linuxkm/linuxkm/get_thread_size
  CC [M]  /root/wolfssl/linuxkm/linuxkm/module_hooks.o
/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
make[4]: *** [scripts/Makefile.host:95: /root/wolfssl/linuxkm/linuxkm/get_thread_size] Error 1
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [Makefile:1936: /root/wolfssl/linuxkm] Error 2
make[3]: Leaving directory '/usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64'
make[2]: *** [Makefile:91: libwolfssl.ko] Error 2
make[2]: Leaving directory '/root/wolfssl/linuxkm'
make[1]: *** [Makefile:9067: all-recursive] Error 1
make[1]: Leaving directory '/root/wolfssl'
make: *** [Makefile:5417: all] Error 2
[root@localhost.dev ~/wolfssl]# cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.5 (Plow)"

---
Configuration summary for wolfssl version 5.7.4

   * Installation prefix:        /usr/local
   * System type:                pc-linux-gnu
   * Host CPU:                   x86_64
   * C Compiler:                 gcc
   * C Flags:                       -Werror -Wno-pragmas -Wall -Wextra -Wunknown-pragmas --param=ssp-buffer-size=1 -Waddress -Warray-bounds -Wbad-function-cast -Wchar-subscripts -Wcomment -Wfloat-equal -Wformat-security -Wformat=2 -Wmaybe-uninitialized -Wmissing-field-initializers -Wmissing-noreturn -Wmissing-prototypes -Wnested-externs -Wnormalized=id -Woverride-init -Wpointer-arith -Wpointer-sign -Wshadow -Wsign-compare -Wstrict-overflow=1 -Wswitch-enum -Wundef -Wunused -Wunused-result -Wunused-variable -Wwrite-strings -fwrapv
   * C++ Compiler:               
   * C++ Flags:                 
   * CPP Flags:                 
   * CCAS Flags:                   
   * LD Flags:                   
   * LIB Flags:                   -pie -z relro -z now -Werror
   * Library Suffix:             
   * Linux Kernel Build Root:    /usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64
   * Linux Kernel Build Arch:    x86_64
   * fpu disable C flags:        -mno-80387 -mno-fp-ret-in-387
   * fpu enable C flags:         -m80387
   * SIMD disable C flags:       -mno-sse -mgeneral-regs-only
   * SIMD enable C flags:        -msse -mmmx -msse2 -msse4 -mavx -mavx2
   * No-auto-vectorize C flags:  -fno-builtin -fno-tree-vectorize -fno-tree-loop-vectorize -fno-tree-slp-vectorize
   * Auto-vectorize C flags:     -fbuiltin -ftree-vectorize -ftree-loop-vectorize -ftree-slp-vectorize
   * SIMD enable as flags:       -Wa,-march=+no87+no287+no387+no687+sse+sse2+sse3+ssse3+sse4.1+sse4.2+sse4+avx+avx2+avx512f
   * FPU enable as flags:        -Wa,-march=+387+687+nosse+nosse2+nosse3+nossse3+nosse4.1+nosse4.2+nosse4+noavx+noavx2+noavx512f
   * SIMD+FPU disable as flags:  -Wa,-march=+no387+no687+nosse+nosse2+nosse3+nossse3+nosse4.1+nosse4.2+nosse4+noavx+noavx2+noavx512f
   * SIMD+FPU enable as flags:   -Wa,-march=+387+687+sse+sse2+sse3+ssse3+sse4.1+sse4.2+sse4+avx+avx2+avx512f
   * Linux kernel module PIE:    no
   * Debug enabled:              no
   * Coverage enabled:           
   * Warnings as failure:        yes
   * make -j:                    17
   * VCS checkout:               yes

   Features
   * Experimental settings:      Forbidden
   * FIPS:                       no
   * Single threaded:            no
   * Filesystem:                 no
   * OpenSSH Build:              no
   * OpenSSL Extra API:          no
   * OpenSSL Coexist:            no
   * Old Names:                  yes
   * Max Strength Build:         no
   * Distro Build:               no
   * Reproducible Build:         no
   * Side-channel Hardening:     yes
   * Single Precision Math:      no
   * SP implementation:          all
   * Fast Math:                  no
   * Heap Math:                  no
   * Assembly Allowed:           yes
   * sniffer:                    no
   * snifftest:                  no
   * ARC4:                       no
   * AES:                        yes
   * AES-NI:                     no
   * AES-CBC:                    yes
   * AES-CBC length checks:      no
   * AES-GCM:                    yes
   * AES-GCM streaming:          no
   * AES-CCM:                    no
   * AES-CTR:                    no
   * AES-CFB:                    no
   * AES-OFB:                    no
   * AES-XTS:                    no
   * AES-XTS streaming:          no
   * AES-SIV:                    no
   * AES-EAX:                    no
   * AES Bitspliced:             no
   * AES Key Wrap:               no
   * ARIA:                       no
   * DES3:                       no
   * DES3 TLS Suites:            no
   * Camellia:                   no
   * CUDA:                       no
   * SM4-ECB:                    no
   * SM4-CBC:                    no
   * SM4-CTR:                    no
   * SM4-GCM:                    no
   * SM4-CCM:                    no
   * NULL Cipher:                no
   * MD2:                        no
   * MD4:                        no
   * MD5:                        yes
   * RIPEMD:                     no
   * SHA:                        yes
   * SHA-224:                    yes
   * SHA-384:                    yes
   * SHA-512:                    yes
   * SHA3:                       yes
   * SHAKE128:                   no
   * SHAKE256:                   no
   * SM3:                        no
   * BLAKE2:                     no
   * BLAKE2S:                    no
   * SipHash:                    no
   * CMAC:                       no
   * keygen:                     no
   * acert:                      no
   * certgen:                    no
   * certreq:                    no
   * certext:                    no
   * certgencache:               no
   * CHACHA:                     yes
   * XCHACHA:                    no
   * Hash DRBG:                  yes
   * MmemUse Entropy:
   * (AKA: wolfEntropy):         no
   * PWDBASED:                   yes
   * Encrypted keys:             no
   * scrypt:                     no
   * wolfCrypt Only:             no
   * HKDF:                       yes
   * HPKE:                       no
   * X9.63 KDF:                  no
   * SRTP-KDF:                   no
   * PSK:                        no
   * Poly1305:                   yes
   * LEANPSK:                    no
   * LEANTLS:                    no
   * RSA:                        yes
   * RSA-PSS:                    yes
   * DSA:                        no
   * DH:                         yes
   * DH Default Parameters:      yes
   * ECC:                        yes
   * ECC Custom Curves:          no
   * ECC Minimum Bits:           224
   * FPECC:                      no
   * ECC_ENCRYPT:                no
   * Brainpool:                  no
   * SM2:                        no
   * CURVE25519:                 no
   * ED25519:                    no
   * ED25519 streaming:          no
   * CURVE448:                   no
   * ED448:                      no
   * ED448 streaming:            no
   * LMS:                        no
   * LMS wolfSSL impl:           
   * XMSS:                       no
   * XMSS wolfSSL impl:         
   * KYBER:                      no
   * KYBER wolfSSL impl:         no
   * DILITHIUM:                  no
   * ECCSI                       no
   * SAKKE                       no
   * ASN:                        yes
   * Anonymous cipher:           no
   * CODING:                     yes
   * MEMORY:                     yes
   * I/O POOL:                   no
   * wolfSentry:                 no
   * LIGHTY:                     no
   * WPA Supplicant:             no
   * HAPROXY:                    no
   * STUNNEL:                    no
   * tcpdump:                    no
   * libssh2:                    no
   * ntp:                        no
   * rsyslog:                    no
   * Apache httpd:               no
   * NGINX:                      no
   * OpenResty:                  no
   * ASIO:                       no
   * LIBWEBSOCKETS:              no
   * Qt:                         no
   * Qt Unit Testing:            no
   * SIGNAL:                     no
   * chrony:                     no
   * strongSwan:                 no
   * OpenLDAP:                   no
   * hitch:                      no
   * memcached:                  no
   * Mosquitto                   no
   * ERROR_STRINGS:              yes
   * DTLS:                       no
   * DTLS v1.3:                  no
   * SCTP:                       no
   * SRTP:                       no
   * Indefinite Length:          no
   * Multicast:                  no
   * SSL v3.0 (Old):             no
   * TLS v1.0 (Old):             no
   * TLS v1.1 (Old):             no
   * TLS v1.2:                   yes
   * TLS v1.3:                   yes
   * RPK:                        no
   * Post-handshake Auth:        no
   * Early Data:                 no
   * QUIC:                       no
   * Send State in HRR Cookie:   undefined
   * OCSP:                       no
   * OCSP Stapling:              no
   * OCSP Stapling v2:           no
   * CRL:                        no
   * CRL-MONITOR:                no
   * Persistent session cache:   no
   * Persistent cert    cache:   no
   * Atomic User Record Layer:   no
   * Public Key Callbacks:       no
   * libxmss:                    no
   * liblms:                     no
   * liboqs:                     no
   * Whitewood netRandom:        no
   * Server Name Indication:     yes
   * ALPN:                       no
   * Maximum Fragment Length:    no
   * Trusted CA Indication:      no
   * Truncated HMAC:             no
   * Supported Elliptic Curves:  yes
   * FFDHE only in client:       no
   * Session Ticket:             no
   * Extended Master Secret:     yes
   * Renegotiation Indication:   no
   * Secure Renegotiation:       no
   * Fallback SCSV:              no
   * Keying Material Exporter:   no
   * All TLS Extensions:         no
   * S/MIME:                     no
   * PKCS#7:                     no
   * PKCS#8:                     yes
   * PKCS#11:                    no
   * PKCS#12:                    yes
   * wolfSSH:                    no
   * wolfEngine:                 no
   * wolfTPM:                    no
   * wolfCLU:                    no
   * wolfSCEP:                   no
   * Secure Remote Password:     no
   * Small Stack:                yes
   * Linux Kernel Module:        yes
   * Linux kernel module bench:  no
   * Linux kernel alg register:  none
   * valgrind unit tests:        no
   * LIBZ:                       no
   * Examples:                   no
   * Crypt tests:                no
   * Stack sizes in tests:       no
   * Heap stats in tests:        no
   * Asynchronous Crypto:        no
   * Asynchronous Crypto (sim):  no
   * Cavium Nitrox:              no
   * Cavium Octeon (Sync):       no
   * Intel Quick Assist:         no
   * ARM ASM:                    no
   * ARM ASM SHA512/SHA3 Crypto  no
   * ARM ASM SM3/SM4 Crypto      no
   * RISC-V ASM                  no
   * Write duplicate:            no
   * Xilinx Hardware Acc.:       no
   * C89:                        no
   * Inline Code:                yes
   * Linux AF_ALG:               no
   * Linux KCAPI:                no
   * Linux devcrypto:            no
   * PK callbacks:               no
   * Crypto callbacks:           no
   * i.MX CAAM:                  no
   * IoT-Safe:                   no
   * IoT-Safe HWRNG:             no
   * NXP SE050:                  no
   * Maxim Integrated MAXQ10XX:  no
   * PSA:                        no
   * System CA certs:            no
   * Dual alg cert support:      no
   * ERR Queues per Thread:      yes
   * rwlock:                     no
   * keylog export:              no
   * AutoSAR :                   no

---
./configure flags: '--enable-linuxkm' '--with-linux-source=/usr/src/kernels/5.14.0-427.37.1.el9_4.x86_64'