Overview
Intel QuickAssist Technology BoringSSL Library is a prototype for accelerating asymmetric cryptographic algorithms with BoringSSL, Google’s OpenSSL fork. Since BoringSSL doesn’t support the traditional engine mechanism, the QAT library integrates using BoringSSL’s private key method interface. The build system automatically detects the SSL library type during configuration and builds:- A traditional engine library for OpenSSL
- A library using BoringSSL’s private key method for BoringSSL
Supported Features
QAT_HW Acceleration
Asynchronous and Synchronous PKE:- RSA: Key sizes 1024, 2048, 3072, 4096
- ECDSA: NIST Prime Curves P-256, P-384, P-521 (disabled by default)
QAT_SW Acceleration
Asynchronous PKE:- RSA: Key sizes 2048, 3072, 4096
- ECDSA: NIST Prime Curves P-256, P-384 (disabled by default)
RSA padding schemes are handled by BoringSSL rather than accelerated. The engine supports the same padding schemes as BoringSSL does natively.
Limitations
Requirements
- QAT-capable hardware (for QAT_HW) or compatible processor (for QAT_SW)
- BoringSSL source code
- QAT driver package (for QAT_HW)
- crypto_mb library (for QAT_SW RSA/ECDSA)
- IPSec_MB library (for QAT_SW)
Building for BoringSSL
Step 1: Build BoringSSL
Clone and build BoringSSL with shared library support:BoringSSL builds static libraries by default. For compatibility with QAT Engine in applications like NGINX, build as a shared library using the
-DBUILD_SHARED_LIBS=1 flag.Step 2: Organize BoringSSL Libraries
BoringSSL doesn’t provide amake install target. Create a unified library directory:
Step 3: Build QAT BoringSSL Library
Navigate to the QAT Engine source and run autogen:Ensure autotools (autoconf, automake, libtool, and pkg-config) are installed before running
autogen.sh.Build with QAT_HW
Build with QAT_SW
If qatlib is installed on the system when building QAT_SW, add
--disable-qat_hw to the configure command.--enable-qat_sw flag searches for required libraries in:
- Default paths:
/usr/local/liband/usr/lib - Custom paths via:
--with-qat_sw_crypto_mb_install_dir(for crypto_mb)--with-qat_sw_ipsec_mb_install_dir(for IPSec_MB)
Step 4: Installation
The QAT BoringSSL Librarylibqatengine.so is installed to /usr/local/lib by default. Use --prefix to specify a different installation path:
Testing
Test Tool
The test code is located in thetest_bssl/ directory and is compiled with the library.
Usage
Example Commands
Async mode cannot be used with the BoringSSL default method when both QAT_HW and QAT_SW are disabled.
Debug Mode
For detailed debug information, enable QAT debug mode during configuration:Use in Applications
The example test code intest_bssl/ is exclusively for functional testing of QATEngine APIs with BoringSSL enabled. For production use:
- Link your application against
libqatengine.so - Link BoringSSL libraries:
libcrypto.so,libssl.so,libdecrepit.so - Use BoringSSL’s private key method API to register QAT acceleration
- Ensure the BoringSSL library path is in
LD_LIBRARY_PATH
Library Path Setup
NGINX Integration
When using QAT BoringSSL Library with NGINX:- Build NGINX against your BoringSSL installation
- Configure NGINX to load the QAT engine library
- Set SSL certificate and key paths in NGINX configuration
- Ensure all library paths are accessible