Skip to content

Commit c7b0715

Browse files
venkatesh6911Yogaraj-Alamenda
authored andcommitted
Documentation updates for v2.1.0 release
Signed-off-by: Venkatesh J <venkatesh.j@intel.com>
1 parent 8d82287 commit c7b0715

14 files changed

Lines changed: 566 additions & 136 deletions

README.md

Lines changed: 66 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ Tongsuo(BabaSSL)\*, BoringSSL\*, etc. OpenSSL\* is a toolkit for TLS/SSL protoco
1111
has developed a modular system to plugin device-specific engines and provider.
1212
Depending on the particular use case, the QAT_Engine can be configured to accelerate
1313
via the QAT Hardware or QAT Software or both based on the platform to meet your specific
14-
acceleration needs.
14+
acceleration needs. QAT_Engine supports both the **Engine** interface (all OpenSSL versions)
15+
and the **Provider** interface (`qatprovider`, recommended for OpenSSL 3.x). Use
16+
`--enable-qat_provider` at build time to enable the Provider interface; see
17+
[OpenSSL v3 Provider Support](docs/qat_common.md#openssl-v3-provider-support) for details.
1518

1619
<p align=center>
1720
<img src="docs/images/qat_engine.png" alt="drawing" width="300"/>
@@ -28,16 +31,17 @@ Limitations and known issues for the QAT_Engine are described [here](docs/limita
2831
- [Software Requirements](docs/software_requirements.md)
2932

3033
## Installation Instructions
31-
Installation instructions are described [here](docs/install.md)
34+
Installation instructions, including build steps for the Engine and Provider
35+
interfaces across QAT_HW, QAT_SW and Co-existence configurations, are described [here](docs/install.md)
3236

3337
## Testing
34-
</details>
3538
<details>
36-
<summary>Test using OpenSSL Engine command </summary>
39+
<summary>Verify QAT Engine and Provider loading</summary>
40+
41+
### Verify QAT Engine loading
3742

38-
### Test using OpenSSL\* Engine command
3943
Run this command to verify the Intel&reg; QAT OpenSSL\* Engine is loaded
40-
correctly: This should not be used to determine QAT Engine capabilities as
44+
correctly. This should not be used to determine QAT Engine capabilities as
4145
it will not display all the algorithms that are supported in QAT Engine.
4246

4347
```text
@@ -72,13 +76,31 @@ qat_sw target output will be:
7276

7377
Detailed information about the engine specific messages is available [here](docs/engine_specific_messages.md).
7478
Also `./openssl engine -t -c -vvvv qatengine` gives brief description about each ctrl command.
75-
<br>
79+
80+
### Verify QAT Provider loading
81+
82+
When built with `--enable-qat_provider`, run the following to verify `qatprovider` is
83+
loaded correctly. Always load the `default` provider alongside `qatprovider` to ensure
84+
complete algorithm coverage.
85+
86+
```text
87+
cd /path/to/openssl_install/bin
88+
./openssl list -providers -provider qatprovider -provider default
89+
```
90+
91+
Expected output will list `qatprovider` with its name, version and loaded status.
92+
93+
> **Note:** Always activate the `default` provider alongside `qatprovider` — either via
94+
> `-provider default` on the command line or by adding it to your `openssl.cnf`.
95+
> See [OpenSSL Provider Support](docs/qat_common.md#openssl-provider-support) for details.
7696
</details>
7797
<details>
78-
<summary>Test using OpenSSL speed utility</summary>
98+
<summary>Test using OpenSSL* speed utility</summary>
7999
80100
### Test using OpenSSL\* speed utility
81101

102+
**QAT Engine (`-engine qatengine`)**
103+
82104
```text
83105
cd /path/to/openssl_install/bin
84106
@@ -110,14 +132,47 @@ qat_sw
110132
* AES-128-GCM
111133
taskset -c 1 ./openssl speed -engine qatengine -elapsed -evp aes-128-gcm
112134
```
113-
Note: Run the test without "-engine qatengine" for each algorithm to see the performance against OpenSSL.
114-
This only covers key algorithms, additional algorithms can be tested by changing algo parameter.
115135

136+
**QAT Provider (`-provider qatprovider -provider default`)**
137+
138+
```text
139+
cd /path/to/openssl_install/bin
140+
141+
qat_hw
142+
143+
* RSA 2K Sign/Verify
144+
taskset -c 1 ./openssl speed -provider qatprovider -provider default -elapsed -async_jobs 72 rsa2048
145+
* ECDH P-256 Compute Key
146+
taskset -c 1 ./openssl speed -provider qatprovider -provider default -elapsed -async_jobs 72 ecdhp256
147+
* ECDSA P-256 Sign/Verify
148+
taskset -c 1 ./openssl speed -provider qatprovider -provider default -elapsed -async_jobs 72 ecdsap256
149+
* AES-256-GCM
150+
taskset -c 1 ./openssl speed -provider qatprovider -provider default -elapsed -async_jobs 72 -evp aes-256-gcm
151+
152+
qat_sw
153+
154+
* RSA 2K Sign/Verify
155+
taskset -c 1 ./openssl speed -provider qatprovider -provider default -elapsed -async_jobs 8 rsa2048
156+
* ECDH X25519 Compute Key
157+
taskset -c 1 ./openssl speed -provider qatprovider -provider default -elapsed -async_jobs 8 ecdhx25519
158+
* ECDSA P-256 Sign/Verify
159+
taskset -c 1 ./openssl speed -provider qatprovider -provider default -elapsed -async_jobs 8 ecdsap256
160+
* AES-256-GCM
161+
taskset -c 1 ./openssl speed -provider qatprovider -provider default -elapsed -evp aes-256-gcm
162+
```
163+
164+
Note: Run the test without `-engine qatengine` or `-provider qatprovider` for each algorithm to
165+
compare against OpenSSL\* software. This covers key algorithms; additional algorithms can be tested
166+
by changing the algo parameter. Additional provider test commands are described in
167+
[docs/qat_common.md](docs/qat_common.md#openssl-provider-support).
116168
</details>
117169
<details>
118170
<summary>Test using inbuilt testapp utility</summary>
119171

120-
## Test using inbuilt testapp utility</summary>
172+
### Test using inbuilt testapp utility
173+
174+
> **Note:** The `testapp` utility supports the QAT Engine (`qatengine`) interface only.
175+
> It does not support the QAT Provider (`qatprovider`) interface.
121176
122177
```text
123178
cd /path/to/qat_engine

docs/apps.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,36 @@ repository:
88
* [Intel&reg; QuickAssist Technology (QAT) Async Mode NGINX\*](https://github.com/intel/asynch_mode_nginx)
99

1010
Follow the below link on how to enable Async mode Nginx\* with QAT Hardware and software
11-
Aceeleration using best known configuration.
11+
Acceleration using best known configuration.
1212
[Async mode for Nginx\*](https://intel.github.io/quickassist/qatlib/asynch_nginx.html)
1313

14-
### NGINX\* QUIC with QAT
15-
Experimental QUIC support for NGINX\* with Intel&reg; QAT Engine for
16-
BoringSSL\* Library can be found [here](https://www.intel.com/content/www/us/en/content-details/737522/experimental-quic-support-for-nginx.html)
17-
1814
### HAProxy\* with QAT
1915
HAProxy\* is a free, very fast and reliable reverse-proxy offering high availability,
2016
load balancing, and proxying for TCP and HTTP-based applications.
2117

22-
Follow the instructions from HAProxy [Install](https://github.com/haproxy/haproxy/blob/master/INSTALL)
23-
to build and install Haproxy. Use `USE_PTHREAD_EMULATION=1` option in the make command which improves performance
18+
Follow the instructions from the HAProxy [INSTALL](https://github.com/haproxy/haproxy/blob/master/INSTALL) file
19+
to build and install HAProxy. The validated release is listed in [Software Requirements](software_requirements.md#applications). Use `USE_PTHREAD_EMULATION=1` option in the make command which improves performance
2420
utilizing HAProxy's much lighter locks replacing OpensSL\* Pthread locks.
2521

2622
Add the following options along with other standard settings in the
2723
HAProxy\* [Configuration File](https://www.haproxy.com/documentation/haproxy-configuration-manual/latest)
2824
to utilize QAT Acceleration.
2925

26+
#### QAT Engine Configuration
3027
```bash
3128
ssl-engine qatengine algo ALL
3229
ssl-mode-async
3330
```
3431

32+
#### QAT Provider Configuration
33+
```bash
34+
ssl-provider qatprovider
35+
ssl-mode-async
36+
```
37+
3538
## Case Studies
36-
* [Intel&reg; QuickAssist Technology and OpenSSL-1.1.0:Performance](https://www.intel.com/content/www/us/en/content-details/709581/intel-quickassist-technology-and-openssl-1-1-0-performance.html)
3739
* [Intel® QuickAssist Technology - NGINX\* Performance White Paper](https://networkbuilders.intel.com/solutionslibrary/intel-quickassist-technology-nginx-performance-white-paper)
38-
* [Accelerate HAProxy\* with Intel QAT](https://www.intel.com/content/www/us/en/content-details/814574/accelerating-haproxy-with-intel-quickassist-technology.html)
40+
* [Accelerate HAProxy\* with Intel QAT](https://builders.intel.com/solutionslibrary/accelerating-haproxy-with-intel-quickassist-technology)
3941

4042
Other Application Integration and more case studies can be found at QAT link below
4143
* [Intel® QuickAssist Technology (Intel® QAT)](https://www.intel.com/content/www/us/en/developer/topic-technology/open/quick-assist-technology/overview.html)

docs/bssl_support.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ Some limitations specific for the current BoringSSL\* Library:
1717
* `RSA_padding_add_PKCS1_OAEP` function is exported by BoringSSL\* `libdecrepit.so`,
1818
so it needs to be linked in the BoringSSL\* Library. It may cause linking error while
1919
building with the system lack of that library.
20+
* The QAT Provider (`qatprovider`) is not supported with BoringSSL\*. Only the QAT
21+
Engine interface is available for BoringSSL\* builds.
2022

2123
## Requirements
2224
- [Hardware Requirements](hardware_requirements.md)

docs/config_options.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,9 @@ The following is a list of the options that can be used with the
2929
`/usr/local/ssl` then you would use the following setting:
3030
--with-openssl_install_dir=/usr/local/ssl
3131
32-
If your system already includes OpenSSL 1.1.1 library and devel package this
33-
option is not required.
34-
In this case qatengine.so is installed in the system enginesdir
35-
(eg: /usr/lib64/engine-1.1).
32+
If using the system OpenSSL, this option is not required.
33+
In this case qatengine.so is installed in the system engines directory
34+
(e.g., `/usr/lib64/engines-3` for OpenSSL 3.x).
3635
3736
```
3837
### qat_sw options
@@ -108,15 +107,19 @@ The following is a list of the options that can be used with the
108107
is different from the default.
109108
110109
--enable-qat_provider
111-
Enables Provider support instead of engine for OpenSSL. Valid only
112-
when built against OpenSSL 3.0, default if not specified will use engine
113-
interface. Currently RSA, ECDSA, ECDH, ECX and AES-GCM algorithms are
114-
only supported (disabled by default).
110+
Enables the QAT Provider (`qatprovider`) interface for OpenSSL 3.x.
111+
The default, if not specified, is the Engine interface.
112+
```
113+
Refer to [OpenSSL Provider Support](qat_common.md#openssl-provider-support) for supported algorithms and test examples.
114+
```
115115
116116
--enable-qat_fips
117117
Enables FIPS support when provider is enabled. Valid only
118-
when built against OpenSSL 3.0 along with the flag `--enable-qat_provider`,
118+
when built against OpenSSL 3.0.8 along with the flag `--enable-qat_provider`,
119119
(disabled by default).
120+
```
121+
Refer to [FIPS 140-3 Certification](qat_common.md#fips-140-3-certification) for more details.
122+
```
120123
121124
--disable-qat_hw_rsa/--enable-qat_hw_rsa
122125
Disable/Enable Intel(R) QAT Hardware RSA acceleration (enabled by default).

docs/features.md

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* AES128-GCM, AES256-GCM.
2323
* ChaCha20-Poly1305
2424
* SM4-CBC
25-
* Key Derivation
25+
* Key Derivation
2626
* PRF
2727
* HKDF
2828
* Hashing
@@ -33,32 +33,42 @@
3333
* [Intel&reg; QAT OpenSSL\* Engine Software Fallback](qat_hw.md#intel-qat-openssl-engine-software-fallback-feature)
3434
* [Key Protection Technology (KPT) Support using QAT_HW driver v2.0](qat_hw_kpt.md)
3535

36-
Please refer [here](qat_hw_algo.md) for applicable QAT Hardware versions and algorithms enabled by default.
36+
> **Algorithm default status:**
37+
> - **Enabled by default:** RSA (2048–4096 on all platforms; up to 8192 on QAT Gen4/v2.x and intree),
38+
> ECDH/ECDSA (curves ≥256-bit, X25519/X448), PRF,
39+
> AES-256-CBC-HMAC-SHA256, AES-256-CCM (v2.x/intree only).
40+
> - **Insecure — disabled by default** (enable with `--enable-qat_insecure_algorithms`):
41+
> RSA (<2048), DSA, DH (all key sizes), ECDH/ECDSA on curves <256-bit (Binary/Koblitz),
42+
> AES-128-GCM, AES-128/192-CCM, AES-128/256-CBC-HMAC-SHA1, AES-128-CBC-HMAC-SHA256, SHA3-224.
43+
> - **Experimental — disabled by default** (enable with corresponding `--enable-qat_hw_*` flag):
44+
> AES-256-GCM, HKDF, SHA3-256/384/512, ChaCha20-Poly1305, SM2, SM3.
45+
> - **Tongsuo/BabaSSL only — disabled by default:** SM4-CBC.
46+
>
47+
> See [qat_hw_algo.md](qat_hw_algo.md) for the full per-platform default status and configure flags.
3748
3849
## qat_sw Features
39-
* [Intel&reg; QAT Software Acceleration](qat_sw.md)
40-
* Asymmetric PKE
41-
* RSA for Key size 2048, 3072, 4096
42-
* ECDH for the following curves:
43-
* Montgomery EC Curve: X25519
44-
* NIST Prime Curves: P-256/P-384
45-
* SM2
46-
* ECDSA for the following curves:
47-
* NIST Prime Curves: P-256/P-384
48-
* SM2
49-
* Symmetric Ciphers
50-
* AES128-GCM, AES192-GCM and AES256-GCM
51-
* SM4-CBC using 16 Multibuffer requests (Tongsuo only)
52-
* SM4-GCM using 16 Multibuffer requests (Tongsuo only)
53-
* SM4-CCM using 16 Multibuffer requests (Tongsuo only)
54-
* Hashing
55-
* SM3 Hash using 16 Multibuffer requests (Experimental)
50+
[Intel&reg; QAT Software Acceleration](qat_sw.md) provides multi-buffer based acceleration
51+
for the following algorithms:
52+
53+
| QAT_SW Algorithm | Status |
54+
| :--- | :---: |
55+
| RSA 2048/3072/4096 | \* |
56+
| ECDH X25519, P-256/P-384, SM2 | \* |
57+
| ECDSA P-256/P-384, SM2 | \* |
58+
| AES128-GCM, AES192-GCM, AES256-GCM | \* |
59+
| SM4-CBC, SM4-GCM, SM4-CCM (16 multibuffer requests) | \# |
60+
| SM3 (16 multibuffer requests) | \*\* |
61+
62+
\* Enabled by default in the standard build.<br>
63+
\# Disabled by default; applicable to Tongsuo/BabaSSL builds only.<br>
64+
\*\* Disabled by default due to performance degradation in multithreaded scenarios; see [Known Issues](limitations.md#known-issues).
5665

5766
## Common Features to qat_hw & qat_sw
5867
* [BoringSSL Support](bssl_support.md)
59-
* [OpenSSL 3.0 Provider Support](qat_common.md#openssl-30-provider-support)
68+
* [OpenSSL Provider Support](qat_common.md#openssl-provider-support)
6069
* [QAT_HW & QAT_SW Co-existence](qat_coex.md#qat-hw-and-qat-sw-co-existence)
6170
* [FIPS 140-3 Certification](qat_common.md#fips-140-3-certification)
71+
* [Hybrid PQC Interoperability](qat_common.md#interoperability-with-openssl-default-provider-for-hybrid-pqc)
6272

6373
Note: RSA Padding schemes are handled by OpenSSL\* or BoringSSL\* rather than accelerated, so the
6474
engine supports the same padding schemes as OpenSSL\* or BoringSSL\* does natively.

docs/install.md

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ libtool and pkg-config) installed in the system.
3939
- [Build QAT Engine for QAT_HW](#build-qat-engine-for-qat_hw)
4040
- [Build QAT Engine for QAT_SW](#build-qat-engine-for-qat_sw)
4141
- [Build QAT Engine with QAT_HW & QAT_SW Co-existence ](#build-qat-engine-with-qat_hw--qat_sw-co-existence)
42+
- [Build with QAT Provider Interface](#build-with-qat-provider-interface)
4243
- [Build Instructions for BoringSSL Library](bssl_support.md)
4344

4445
### Install with make depend target
@@ -100,7 +101,16 @@ at OpenSSL\*
100101
```
101102
export OPENSSL_ENGINES=/usr/local/ssl/lib64/engines-3
102103
```
103-
Load/Initialize Engine using the the OpenSSL conf file is located [here](openssl_config.md)
104+
105+
For the QAT Provider, the `qatprovider.so` module must be placed in the OpenSSL\*
106+
modules directory. Set `OPENSSL_MODULES` if the module is installed outside the
107+
default location (e.g. `<openssl-install>/lib64/ossl-modules/`):
108+
109+
```
110+
export OPENSSL_MODULES=/usr/local/ssl/lib64/ossl-modules
111+
```
112+
113+
Load/Initialize Engine or Provider using the OpenSSL conf file is located [here](openssl_config.md)
104114

105115
### Install QAT_HW & QAT_SW dependencies
106116

@@ -276,7 +286,25 @@ make install
276286
The default behaviour and working mechanism of co-existence is described
277287
[here](qat_coex.md#qat_hw-and-qat_sw-co-existence)
278288

279-
### Build Instructions for BoringSSL Library
289+
### Build with QAT Provider Interface
290+
291+
The QAT Provider (`qatprovider`) is the recommended interface for OpenSSL 3.x
292+
applications. Add `--enable-qat_provider` to any of the build configurations
293+
above to build `qatprovider.so` instead of (or alongside) the engine.
294+
295+
After installation, `qatprovider.so` is placed in the OpenSSL\* modules
296+
directory (`<openssl-install>/lib64/ossl-modules/`). Set `OPENSSL_MODULES`
297+
if using a non-default path:
298+
299+
```
300+
export OPENSSL_MODULES=/usr/local/ssl/lib64/ossl-modules
301+
```
302+
303+
Refer to [OpenSSL\* Configuration File](openssl_config.md) for loading the
304+
provider via `openssl.cnf`, and to [qat_common.md](qat_common.md#openssl-v3-provider-support)
305+
for test commands and further details. Note that when `qatprovider` is activated via
306+
`openssl.cnf`, the `default` provider is not loaded automatically — ensure it is also
307+
listed in the providers section to avoid "unknown algorithm" errors.
280308

281309
Refer [BoringSSL section](bssl_support.md)
282310
for steps to build the Intel® QAT Engine for BoringSSL\* library

0 commit comments

Comments
 (0)