CMMC 2.0, NIST 800-171, FIPS 140-3, CUI, FCI and DIB

This post will be about what all these acronyms mean, how they are all related to each other and the purpose they serve. Let’s begin with a few definitions:

  • CMMC 2.0 – Cybersecurity Maturity Model Certification: A set of cybersecurity best practices and assessments mandated by the US federal government.
  • NIST 800-171: A NIST special publication titled “Protecting Controlled Unclassified Information in Nonfederal Systems and Organizations”. It gives guidance to commercial entities that are handling data on behalf of the US federal government.
  • FIPS 140-3: federal Information Processing Standard 140-3; a NIST standard and certification regime that specifies requirements for cryptographic modules.
  • CUI: Controlled Unclassified Information; sensitive information used by the US federal government but is not considered classified. Examples include personal identification information such as social security numbers, medical records and tax records.
  • FCI: Federal Contract Information; non-public data generated by or for the US federal government under contract and protected under confidentiality guarantees. Examples include statements of work and internal process documentation.
  • DIB: Defence Industrial Base; the collection of commercial entities that works together with the US federal government to perform research and development of defense technologies and systems to strengthen national security.

CMMC 2.0 is a model designed to use the guidance in NIST 800-171 to get DIB entities to enact a set of practices and assessments that achieve standard levels of cybersecurity maturity. This model and these practices apply to CUI and FCI when at rest and during transmission. The cryptographic modules used as part of these practices to protect the CUI and FCI are certified under the FIPS 140-3 program.

It is important to note that the CMMC 2.0 model includes assessments, audits and certifications that are done both internally by an entity as well as by independent 3rd party auditors and labs. For example, cryptographic modules are certified by NIST’s CMVP (Cryptographic Module Validation Program) under FIPS 140-3.

Do you have CMMC 2.0 requirements? Were you confused about CMMC 2.0 before reading this post? Feeling better? Good!

Here at wolfSSL, we want you to understand that if CMMC 2.0 applies to you, we can help you with your FIPS 140-3 requirements. Our wolfCrypt library is already certified under FIPS 140-3 with a 5-year validity window. Send a message to facts@wolfssl.com or fips@wolfssl.com to find out how we can help.

If you have questions about any of the above, please contact us at facts@wolfssl.com or call us at +1 425 245 8247.
Download wolfSSL Now

Wells Fargo and wolfSSL Explore Quantum Safe TLS 1.3

wolfSSL is pleased to share a case study with Wells Fargo Technology on advancing Post Quantum Cryptography (PQC) in Transport Layer Security (TLS 1.3). Also known as Quantum TLS or QTLS, this work examined how quantum-resistant algorithms can be combined with conventional cryptographic authentication algorithms to secure future financial systems.

Quantum computing threatens RSA, DH, FFDH and ECC, which currently protect online transactions. NIST is standardizing PQC algorithms designed to withstand these attacks. The Wells Fargo and wolfSSL project tested hybrid PQC integration in TLS 1.3 to evaluate performance and interoperability while preparing for future NIST standards.

wolfSSL’s FIPS 140-3 validated cryptography library enabled hybrid key authentication that combines conventional and quantum-safe algorithms both in the X.509 certificates and TLS handshake CertificateVerify message. This approach allows financial institutions to begin migrating to PQC algorithms in a careful and conservative step-by-step approach in real environments without impacting current operations.

Read the full case study here!

If you have questions about any of the above, please contact us at facts@wolfssl.com or call at +1 425 245 8247.
Download wolfSSL Now

Xilinx Accelerated Crypto with FIPS

It’s already possible to use ARMv8 crypto extensions with FIPS 140-3 using PAA (Processor Algorithm Acceleration) but did you know that we have researched using Xilinx/AMD’s hardened crypto with wolfSSL while being FIPS certified? Many benefits can come from using Xilinx/AMD’s hardened crypto accelerators, for example it free’s up the CPU to be used for other operations and it also comes with additional side channel hardening. Leveraging these benefits in projects where FIPS 140-3 certification is required would be useful. If curious about a hybrid FIPS certification that can make use of the CSU, or newer ASU, while having a FIPS 140-3 certification contact us at facts@wolfssl.com.

Join our upcoming webinar “How to Secure AMD Xilinx Platforms with wolfSSL” on October 29 at 9 AM PT to learn how to leverage AMD/Xilinx’s hardened crypto with FIPS 140-3 certification for enhanced performance and security.
Register now!

If you have questions about any of the above, please contact us at facts@wolfssl.com or call +1 425 245 8247.
Download wolfSSL Now

FIPS 140-3 Enabled Linux Authentication & System Services with GnuTLS-wolfSSL

wolfSSL is thrilled to announce that critical enterprise security and system services can now achieve FIPS 140-3 compliance through our GnuTLS-wolfSSL integration. This breakthrough comes from our ongoing work integrating wolfSSL’s FIPS 140-3 certified cryptography (wolfCrypt) into GnuTLS, enabling a true drop-in solution for Linux applications.

For enterprises in government, defense, finance, healthcare, and other regulated industries, this eliminates a major hurdle to deploying essential security infrastructure that must meet federal compliance standards.

What We’ve Built

Unlike traditional approaches requiring extensive rewrites, our solution operates entirely behind the scenes. By patching GnuTLS at the library level with wolfCrypt’s certified cryptographic operations, applications gain FIPS 140-3 compliance without changing a single line of their code. Simply rebuild with our patched GnuTLS library, and your entire security infrastructure achieves FIPS compliance.

We’re continuously validating this integration through CI/CD testing against 17 applications, testing target versions, latest releases, and master branches to ensure rock-solid compatibility. Our fork is now debianized, making deployment as simple as installing a standard Debian package.

Enterprise Applications Now FIPS-Ready

OpenLDAP – The industry-standard directory services platform for authentication and authorization across enterprise networks.

Samba – Provides Windows-compatible file sharing, print services, and Active Directory integration for mixed Linux/Windows environments.

dirmngr – The GnuPG component handling certificate and CRL management for cryptographic operations.

TPM2-tools – Utilities for interacting with Trusted Platform Module 2.0 hardware for secure key storage and attestation.

rsyslog – High-performance system logging with TLS support for secure remote log transmission.

fwupd – The Linux firmware update daemon that securely manages firmware updates across hardware components.

How We Enable FIPS Compliance

These applications rely on GnuTLS for secure authentication, encrypted communications, certificate validation, and cryptographic operations. By integrating wolfSSL’s FIPS 140-3 certified wolfCrypt module into GnuTLS, we deliver a true drop-in solution. Depending on the algorithms your application uses, you may need no code changes at all, just rebuild with our patched library and achieve FIPS compliance across your enterprise security stack.

The debianized package makes deployment straightforward: install our GnuTLS-wolfSSL package on your Debian-based system, and your enterprise services automatically benefit from FIPS-certified cryptography.

Questions?

Take a more in-depth look at our integration on the wolfSSL GitHub, if you need support we are more than happy to help you out, you can email us at support@wolfssl.com.

If you have questions about any of the above, please contact us at facts@wolfssl.com or call +1 425 245 8247.
Download wolfSSL Now

FIPS 140-3 Enabled Linux Network Infrastructure with GnuTLS-wolfSSL

wolfSSL is thrilled to announce that core network infrastructure applications can now achieve FIPS 140-3 compliance through our GnuTLS-wolfSSL integration. This breakthrough comes from our ongoing work integrating wolfSSL’s FIPS 140-3 certified cryptography (wolfCrypt) into GnuTLS, enabling a true drop-in solution for Linux applications.

For developers and system administrators in government, defense, finance, healthcare, and other regulated industries, this eliminates a critical barrier to deploying secure network infrastructure that must meet federal compliance standards.

What We’ve Built

Unlike traditional approaches requiring extensive rewrites, our solution operates entirely behind the scenes. By patching GnuTLS at the library level with wolfCrypt’s certified cryptographic operations, applications can gain FIPS 140-3 compliance without changing a single line of their code. Simply rebuild with our patched GnuTLS library, and your entire networking stack achieves FIPS compliance.

We’re continuously validating this integration through CI/CD testing against 17 applications, testing target versions, latest releases, and master branches to ensure rock-solid compatibility. Our fork is now debianized, making deployment as simple as installing a standard Debian package.

Network Applications Now FIPS-Ready

chrony – The widely-deployed NTP implementation for time synchronization across Linux systems, critical for distributed infrastructure and audit logging.

NetworkManager – The standard Linux network connection manager that handles everything from WiFi to VPN connections in modern distributions.

libnice – Implements ICE protocol for NAT traversal, essential for WebRTC and real-time communication applications.

curl & wget – The ubiquitous data transfer utilities now gain a clear path to FIPS compliance for secure communications.

How We Enable FIPS Compliance

These applications rely on GnuTLS for TLS connections, certificate handling, and cryptographic operations. By integrating wolfSSL’s FIPS 140-3 certified wolfCrypt module into GnuTLS, we deliver a true drop-in solution. Depending on the algorithms your application uses, you may need no code changes at all, just rebuild with our patched library and achieve FIPS compliance across your network infrastructure.

The debianized package makes deployment straightforward: install our GnuTLS-wolfSSL package on your Debian-based system, and your network applications automatically benefit from FIPS-certified cryptography.

Questions?

Take a more in-depth look at our integration on the wolfSSL GitHub, if you need support we are more than happy to help you out, you can email us at support@wolfssl.com.

If you have questions about any of the above, please contact us at facts@wolfssl.com or call +1 425 245 8247.
Download wolfSSL Now

FIPS 140-3 Enabled Linux Desktop & Media Applications with GnuTLS-wolfSSL

wolfSSL is thrilled to announce that desktop, development, and media applications can now achieve FIPS 140-3 compliance through our GnuTLS-wolfSSL integration. This breakthrough comes from our ongoing work integrating wolfSSL’s FIPS 140-3 certified cryptography (wolfCrypt) into GnuTLS, enabling a true drop-in solution for Linux applications.

For developers and organizations in government, defense, finance, healthcare, and other regulated industries, this eliminates barriers to deploying user-facing applications and specialized libraries that must meet federal compliance standards.

What We’ve Built

Unlike traditional approaches requiring extensive rewrites, our solution operates entirely behind the scenes. By patching GnuTLS at the library level with wolfCrypt’s certified cryptographic operations, applications gain FIPS 140-3 compliance without changing a single line of their code. Simply rebuild with our patched GnuTLS library, and your entire application stack achieves FIPS compliance.

We’re continuously validating this integration through CI/CD testing against 17 applications, testing target versions, latest releases, and master branches to ensure rock-solid compatibility. Our fork is now debianized, making deployment as simple as installing a standard Debian package.

Desktop & Media Applications Now FIPS-Ready

glib-networking – The GNOME network stack that provides TLS support for countless GTK-based applications across Linux desktops.

libvnc – Enables VNC client and server functionality for remote desktop access and support tools.

libvte – The terminal emulator widget library used by GNOME Terminal and other popular Linux terminal applications.

libcups – The Common Unix Printing System library that handles secure printing operations across networks.

libcamera – Modern camera support library for Linux systems, handling secure camera data streams.

QPDF – PDF manipulation library for viewing, editing, and transforming PDF documents securely.

libjcat – Archive verification library used by fwupd and other tools for validating signed package integrity.

RTMP – Real-Time Messaging Protocol implementation for secure streaming media applications.

How We Enable FIPS Compliance

These applications rely on GnuTLS for TLS connections, certificate handling, secure communications, and cryptographic operations. By integrating wolfSSL’s FIPS 140-3 certified wolfCrypt module into GnuTLS, we deliver a true drop-in solution. Depending on the algorithms your application uses, you may need no code changes at all, just rebuild with our patched library and achieve FIPS compliance across your desktop and media applications.

The debianized package makes deployment straightforward: install our GnuTLS-wolfSSL package on your Debian-based system, and your applications automatically benefit from FIPS-certified cryptography.

Questions?

Take a more in-depth look at our integration on the wolfSSL GitHub, if you need support we are more than happy to help you out, you can email us at support@wolfssl.com.

If you have questions about any of the above, please contact us at facts@wolfssl.com or call +1 425 245 8247.
Download wolfSSL Now

New Docker containers for Python FIPS 140-3 integration

For developers seeking to implement FIPS 140-3 compliance in their secure Python applications, wolfSSL has already been offering effective solutions:

  • wolfProvider enables the use of wolfCrypt as the underlying crypto provider for OpenSSL.
  • The wolfSSL Python ports let you completely replace OpenSSL with wolfSSL in Python’s ssl module.

However, we understand that the initial setup – compiling wolfSSL with the right flags and correctly configuring the Python environment – can introduce friction, especially when you need to get a project off the ground quickly.

The wolfSSL Python containers

To streamline your development workflow, we’ve launched a new set of wolfSSL Docker containers which provide a ready-to-use Python environment pre-configured to use FIPS 140-3 validated wolfSSL technology.
We provide three different Dockerfiles. Which one you should choose depends on your needs:

  • Dockerfile.provider: uses wolfProvider to register wolfSSL as the default OpenSSL provider in the container. This results in a Python runtime that still uses OpenSSL, but with FIPS certified wolfSSL crypto underneath.
  • Dockerfile.provider-min: a simpler Dockerfile that achieves the same result as above. Instead of building Python on top of an Alpine base image, it directly uses the official Python Alpine image, making it easier to update to new Python versions.
  • Dockerfile.osp: uses the wolfSSL Python ports, resulting in a Python runtime that uses wolfSSL only. The Dockerfile also deletes traces of OpenSSL from the system to prevent OpenSSL usage, which may cause some non-Python applications to stop working. This solution is useful in strict FIPS scenarios where OpenSSL must be entirely excluded.

Getting started

Setting up these containers requires an active wolfCrypt FIPS license. Feel free to contact fips@wolfssl.com for more information.
Once you have the appropriate 7z archive password, building and running the containers is as simple as cloning the GitHub repository, writing your password to a password.txt file and executing make run-provider, make run-provider-min or make run-osp. Further information is available in the README.

If you have questions about any of the above, please contact us at facts@wolfssl.com or call us at +1 425 245 8247.

Download wolfSSL Now

FIPS 140-3 Enabled WebKit2GTK with wolfSSL

wolfSSL is thrilled to announce that it is now possible to build FIPS 140-3 compliant applications using WebKit2GTK. This achievement comes from our recent porting efforts, integrating wolfSSL’s FIPS 140-3 certified cryptography (wolfCrypt) into core cryptographic libraries: GnuTLS, OpenSSL, and Gcrypt.
For developers in government, defense, finance, healthcare, and other regulated industries, this eliminates a key hurdle to deploying modern, secure Linux applications that must meet federal standards.

What is WebKitGTK?

  • WebKitGTK is the engine that renders web content inside most Linux applications, bringing browser-like capabilities to custom software.
  • WebKit: The open-source core rendering engine used in Apple’s Safari browser. It’s responsible for parsing HTML, CSS, and JavaScript, then rendering to display webpages.
  • GTK: A widely used toolkit for crafting graphical user interfaces (GUIs) on Linux, handling elements like windows, buttons, menus, and user interactions.
  • WebKitGTK: The integration layer that lets developers embed WebKit’s rendering power directly into GTK-based apps. This is ideal for building kiosks, secure browsers, information dashboards, or any app that needs to display web content without relying on a standalone browser.

How We Enable FIPS Compliance

WebKitGTK relies on cryptographic libraries for secure operations, including establishing TLS connections (e.g., HTTPS via GnuTLS in libsoup), certificate handling, and data encryption (usually via OpenSSL or libgcrypt). By porting wolfSSL’s FIPS 140-3 certified wolfCrypt module into these libraries, we’ve delivered a true drop-in solution. Depending on the algorithms your application uses, you may need no code changes at all, just rebuild with our patched libraries and your entire stack achieves FIPS compliance.

Question?

If you have questions about any of the above, please contact us at facts@wolfssl.com or call us at +1 425 245 8247.
Download wolfSSL Now

wolfSSL giving Libgcrypt FIPS 140-3 cryptography

The wolfSSL-libgcrypt integration demonstrates how a shim layer architecture can bridge two large, independently developed cryptographic libraries while maintaining API compatibility and achieving FIPS 140-3 compliance. This project specifically targets libgcrypt version 1.11.0 and the current and future work of the port can be viewed in the wolfSSL/libgcrypt-wolfssl repo.

Architecture: The Shim Layer Approach

The integration was designed as a non-invasive shim layer that keeps libgcrypt’s public API completely intact. It uses conditional compilation and dynamic function pointer assignment to redirect crypto operations to wolfSSL, all while being totally invisible to the apps using it.
Function Redirection Mechanism
At its core, the shim layer acts like a proxy, intercepting API calls and sending them to the right backend. You’ll find the main implementation in cipher/cipher.c, where the _gcry_cipher_setup_mode_ops function is the central switchboard for cipher operations.
When HAVE_WOLFSSL is defined, special preprocessor blocks containing switch statements on algorithm identifiers (like GCRY_CIPHER_AES) decide which function pointers get assigned to the cipher handle’s c->mode_ops structure. For example, if wolfSSL is enabled, an AES-GCM operation sets the encrypt function pointer to _wc_cipher_aes_gcm_encrypt instead of the usual _gcry_cipher_gcm_encrypt.
Data Structure Extension
Instead of replacing libgcrypt’s main context structures, the project extends them to keep things stable. The gcry_cipher_handle struct has new unions containing new wolfSSL-specific context structures (like wc_ccm_context_t and wc_gcm_context_t). These are only included when HAVE_WOLFSSL is defined and store state and buffers used only by the wolfSSL backend.
FIPS Compliance Through Build-Time Enforcement
The project’s FIPS 140-3 compliance model is enforced during the build process through conditional compilation. This provides stronger security guarantees than just checking at runtime. The –enable-wolfssl-fips flag defines the ENABLED_WOLFSSL_FIPS preprocessor macro and modifies algorithm lists to include only FIPS-approved primitives.
Algorithm Status with FIPS
Enabled Algorithms (wolfSSL backend):

  • AES-128/192/256 (ECB, CBC, CTR, OFB modes)
  • AES-GCM and AES-CCM authenticated encryption
  • AES-CMAC message authentication
  • RSA operations (sign, verify, encrypt, decrypt with key size ? 2048)
  • ECDSA with NIST curves P-192, P-256, P-384, P-521
  • SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
  • SHA3-224, SHA3-256, SHA3-384, SHA3-512
  • HMAC with approved SHA algorithms

The codebase uses preprocessor macros like ENABLED_WOLFSSL_FIPS and HAVE_WOLFSSL to conditionally compile out entire algorithms, specific cipher modes, and non-compliant test cases. This means it’s impossible for the library to run non-approved algorithms in FIPS builds because the code simply isn’t there in the compiled binary.

Symmetric Cipher Implementation

AES Block Cipher Modes
The implementation for standard block cipher modes (ECB, CBC, OFB, CTR) in cipher/rijndael.c is a direct mapping between libgcrypt and wolfSSL APIs. Wrapper functions like _wc_aes_cbc_enc and _wc_aes_ctr_enc are just thin shims that translate libgcrypt calls into wolfSSL bulk API calls.
Necessary state (like initialization vectors and counter blocks) is managed within the wolfSSL Aes context. The wc_aes_setkey function initializes both encryption and decryption contexts within the RIJNDAEL_context struct, making sure all key schedules are ready when users set keys.

AES Authenticated Encryption (AEAD) Modes

Integrating AES-GCM and AES-CCM required solving a fundamental API mismatch. libgcrypt’s API supports streaming operations where data can be fed in incrementally.
The solution involves a buffering and re-computation strategy:

  • Contextual Buffers: wolfSSL-specific context structures hold dynamically allocated buffers for AAD, plaintext, and ciphertext, plus members to track length and capacity.
  • Data Accumulation: When users call libgcrypt functions, wolfSSL wrappers intercept and accumulate the data. For instance, _wc_cipher_aes_gcm_authenticate appends AAD chunks to internal buffers, resizing them as needed.
  • Deferred and Repeated Execution: The actual wolfSSL function call is deferred and re-executed with each new data chunk. The _wc_cipher_aes_gcm_encrypt function passes entire accumulated buffers to wc_AesGcmEncrypt on every invocation, then calculates the correct offset into the newly generated ciphertext and copies only the portion corresponding to the most recent input.

Asymmetric Cryptography Implementation

Multi-Precision Integer (MPI) Interoperability
The biggest technical challenge was the fundamental incompatibility between libgcrypt’s gcry_mpi_t and wolfSSL’s mp_int multi-precision integer representations. A robust data marshalling layer was developed using raw byte arrays as a standardized intermediary format.
Key helper functions _libgcrypt_mpi_to_wc_mpi and _wc_mpi_to_libgcrypt_mpi handle the conversion:

  • gcry_mpi_t to mp_int: Uses _gcry_mpi_aprint (with GCRYMPI_FMT_USG flag) to serialize libgcrypt MPI objects into unsigned, big-endian byte arrays, then mp_read_unsigned_bin to load values into wolfSSL mp_int structures.
  • mp_int to gcry_mpi_t: Uses mp_to_unsigned_bin to serialize mp_int into byte arrays, followed by _gcry_mpi_scan to create new gcry_mpi_t objects.

Critical details include padding and alignment handling, as wolfSSL functions often need fixed-length inputs, while libgcrypt produces minimally sized arrays omitting leading zero bytes.

RSA Implementation

RSA operations in cipher/rsa.c use the MPI marshalling layer to translate key components and data before calling wolfSSL primitives. The wc_rsa_sign function extracts key components (n, e, d, p, q, u) from libgcrypt S-Expressions, converts them to wolfSSL RsaKey structures, performs signing operations via wc_RsaPSS_Sign or wc_RsaDirect, then converts results back to gcry_mpi_t objects.

ECC/ECDSA Implementation

ECDSA implementation follows the same marshalling pattern, but with additional complexities for curve identification and parameter alignment. The _gcry_ecc_ecdsa_sign function maps libgcrypt’s string-based curve names to wolfSSL integer constants, converts private keys and message hashes to byte arrays, manually right-aligns private key material into fixed-size buffers matching curve field sizes, then imports into wolfSSL ecc_key structures for signing operations.

Hashing and Message Authentication

Hash Algorithm Integration
Hash algorithm replacement was done by modifying core digest specification structures. For each algorithm, gcry_md_spec_t structures were updated (using conditional compilation) to redirect function pointers to wolfSSL wrapper functions when HAVE_WOLFSSL is defined.
Context structures like SHA256_CONTEXT were extended to include wolfSSL objects (e.g., wc_Sha256). Wrapper functions operate on these embedded contexts, with wolfssl_sha256_init calling wc_InitSha256 and wolfssl_sha256_final calling wc_Sha256Final.

HMAC and CMAC Integration

HMAC integration uses the generic hashing framework. The _gcry_md_open function checks for GCRY_MD_FLAG_HMAC and routes calls to _gcry_wc_md_open for wolfSSL context setup. The gcry_wc_md_context structure contains linked lists of GcryWcDigestEntry nodes, each holding wolfSSL Hmac contexts and algorithm identifiers, allowing single libgcrypt handles to manage multiple concurrent HMAC.
CMAC implementation in cipher/mac-cmac.c is more direct, populating wc_aes_cmac_ops structures with wolfSSL wrapper functions that call wolfSSL CMAC APIs like wc_InitCmac, wc_CmacUpdate, and wc_CmacFinal. FIPS-related modifications replaced non-FIPS-approved functions with compliant equivalents.

Questions?

If you have questions about any of the above, please contact us at facts@wolfssl.com or call +1 425 245 8247.

Download wolfSSL Now

Securing BoringTun with wolfSSL’s FIPS 140-3 Cryptography

We’re excited to announce that wolfSSL is taking the next step in its journey to bring FIPS 140-3 compliance to the WireGuard ecosystem. Following our successful ports of our FIPS crypto into both WireGuard-linux and Wireguard-GO, we are setting our sights on a new target: BoringTun.

BoringTun is a popular, high-performance implementation of the WireGuard protocol written in Rust. It’s used by major players in the tech industry and as the demand for robust, certified cryptographic solutions grows — especially within government and highly regulated sectors — it is a logical next step to provide the same level of cryptographic assurance for this key WireGuard implementation.

wolfSSL has begun the process of integrating our FIPS 140-3 validated library wolfCrypt directly into BoringTun. This project will replace BoringTun’s existing cryptographic backend with a FIPS-compliant alternative, providing the same high-speed, modern protocol that WireGuard is known for, but with the added assurance of a government-certified cryptography module.

This will make BoringTun a viable option for organizations that have a CMMC 2.0, FEDRAMP, or FIPS 140-3 requirement. Are you interested in a FIPS certified BoringTun?

If you have questions about any of the above or need assistance, please contact us at facts@wolfSSL.com or call us at +1 425 245 8247.

Download wolfSSL Now

Posts navigation

1 2 3 4 5 6