Git Product home page Git Product logo

intel-ipsec-mb's Introduction

Linux Windows FreeBSD Coverity Status OpenSSF Scorecard

Intel(R) Multi-Buffer Crypto for IPsec Library

The library provides software crypto acceleration primarily targeting packet processing applications. It can be used for application such as: IPsec, TLS, Wireless (RAN), Cable or MPEG DRM.

The library is hosted on GitHub and is used as software crypto provider in DPDK, Intel(R) QAT Engine and FD.io.

Using crypto interfaces from the above frameworks gives freedom to change providers without subsequent application modifications. The library can also be used directly through its native API.

Key differentiating features:

  • operation chaining (encryption and authentication)
  • advanced cryptographic pipelining
    • job manager with scheduling and dispatching functions
    • API hides underlying implementation details from an application
  • multi-buffer and function stitching innovations
  • low level implementations using latest instruction extensions

Contents

  1. Overview
  2. Processor Extensions
  3. Recommendations
  4. Package Content
  5. Documentation
  6. Compilation
  7. Installation
  8. Security Considerations & Options for Increased Security
  9. Backwards compatibility
  10. Disclaimer (ZUC, KASUMI, SNOW3G)
  11. Legal Disclaimer
  12. FIPS Compliance
  13. DLL Injection

1. Overview

Intel Multi-Buffer Crypto for IPsec Library is highly-optimized software implementations of the core cryptographic processing for IPsec, which provides industry-leading performance on a range of Intel(R) Processors.

For information on how the library works, see the Intel White Paper: "Fast Multi-buffer IPsec Implementations on Intel Architecture Processors". Jim Guilford, Sean Gulley, et. al.

Table 1. List of supported cipher algorithms and their implementations.

+----------------------------------------------------------------------+
|                |                   Implementation                    |
| Encryption     +-----------------------------------------------------|
|                | x86_64 | SSE    | AVX    | AVX2   | AVX512 | VAES(5)|
|----------------+--------+--------+--------+--------+--------+--------|
| AES128-GCM     | N      | Y  by8 | N      | Y(10)  | Y  by8 | Y by32 |
| AES192-GCM     | N      | Y  by8 | N      | Y(10)  | Y  by8 | Y by32 |
| AES256-GCM     | N      | Y  by8 | N      | Y(10)  | Y  by8 | Y by32 |
| AES128-CCM     | N      | Y  by8 | Y  by8 | N      | N      | Y by16 |
| AES256-CCM     | N      | Y  by8 | Y  by8 | N      | N      | Y by16 |
| AES128-CBC     | N      | Y(1)   | Y(3)   | N      | N      | Y(6)   |
| AES192-CBC     | N      | Y(1)   | Y(3)   | N      | N      | Y(6)   |
| AES256-CBC     | N      | Y(1)   | Y(3)   | N      | N      | Y(6)   |
| AES128-CTR     | N      | Y  by8 | Y  by8 | Y(10)  | N      | Y by16 |
| AES192-CTR     | N      | Y  by8 | Y  by8 | Y(10)  | N      | Y by16 |
| AES256-CTR     | N      | Y  by8 | Y  by8 | Y(10)  | N      | Y by16 |
| AES128-ECB     | N      | Y(1)   | Y  by8 | Y(10)  | N      | Y by16 |
| AES192-ECB     | N      | Y(1)   | Y  by8 | Y(10)  | N      | Y by16 |
| AES256-ECB     | N      | Y(1)   | Y  by8 | Y(10)  | N      | Y by16 |
| NULL           | Y      | N      | N      | N      | N      | N      |
| AES128-DOCSIS  | N      | Y(2)   | Y(4)   | N      | Y(7)   | Y(8)   |
| AES256-DOCSIS  | N      | Y(2)   | Y(4)   | N      | Y(7)   | Y(8)   |
| DES-DOCSIS     | Y      | N      | N      | N      | Y  x16 | N      |
| 3DES           | Y      | N      | N      | N      | Y  x16 | N      |
| DES            | Y      | N      | N      | N      | Y  x16 | N      |
| KASUMI-F8      | Y      | N      | N      | N      | N      | N      |
| ZUC-EEA3       | N      | Y  x4  | Y  x4  | Y  x8  | Y  x16 | Y  x16 |
| ZUC-EEA3-256   | N      | Y  x4  | Y  x4  | Y  x8  | Y  x16 | Y  x16 |
| SNOW3G-UEA2    | N      | Y  x4  | Y      | Y      | Y  x16 | Y  x16 |
| AES128-CBCS(9) | N      | Y(1)   | Y(3)   | N      | N      | Y(6)   |
| Chacha20       | N      | Y      | Y      | Y      | Y      | N      |
| Chacha20 AEAD  | N      | Y      | Y      | Y      | Y      | N      |
| SNOW-V         | N      | Y      | Y      | N      | N      | N      |
| SNOW-V AEAD    | N      | Y      | Y      | N      | N      | N      |
| PON-CRC-BIP    | N      | Y  by8 | Y  by8 | N      | N      | Y      |
| SM4-ECB        | N      | Y      | N      | N      | N      | N      |
| SM4-CBC        | N      | Y      | N      | N      | N      | N      |
+----------------------------------------------------------------------+

Notes:
(1,2) - By default, decryption is by4 and encryption is x4.
On CPU's supporting GFNI, decryption is by8 and encryption is x8.
(3,4) - decryption is by8 and encryption is x8
(5) - AVX512 plus VAES, VPCLMULQDQ and GFNI extensions
(6) - decryption is by16 and encryption is x16
(7) - same as AES128-CBC for AVX, combines cipher and CRC32
(8) - decryption is by16 and encryption is x16
(9) - currently 1:9 crypt:skip pattern supported
(10) - by default, decryption and encryption are AVX by8.
On CPUs supporting VAES, decryption and encryption might use AVX2-VAES by16, if beneficial.

Legend:
byY - single buffer Y blocks at a time
xY - Y buffers at a time

As an example of how to read table 1 and 2, if one uses AVX512 interface to perform AES128-CBC encryption then there is no native AVX512 implementation for this cipher. In such case, the library uses best available implementation which is AVX for AES128-CBC.

Table 2. List of supported integrity algorithms and their implementations.

+-------------------------------------------------------------------------+
|                   |                   Implementation                    |
| Integrity         +-----------------------------------------------------|
|                   | x86_64 | SSE    | AVX    | AVX2   | AVX512 | VAES(3)|
|-------------------+--------+--------+--------+--------+--------+--------|
| AES-XCBC-96       | N      | Y   x4 | Y   x8 | N      | N      | Y x16  |
| HMAC-MD5-96       | Y(1)   | Y x4x2 | Y x4x2 | Y x8x2 | N      | N      |
| HMAC-SHA1-96      | N      | Y(2)x4 | Y(2)x4 | Y(2)x8 | Y  x16 | N      |
| HMAC-SHA2-224_112 | N      | Y(2)x4 | Y(2)x4 | Y(2)x8 | Y  x16 | N      |
| HMAC-SHA2-256_128 | N      | Y(2)x4 | Y(2)x4 | Y(2)x8 | Y  x16 | N      |
| HMAC-SHA2-384_192 | N      | Y   x2 | Y   x2 | Y   x4 | Y   x8 | N      |
| HMAC-SHA2-512_256 | N      | Y   x2 | Y   x2 | Y   x4 | Y   x8 | N      |
| SHA1              | N      | Y(2)x4 | Y(2)x4 | Y(2)x8 | Y  x16 | N      |
| SHA2-224          | N      | Y(2)x4 | Y(2)x4 | Y(2)x8 | Y  x16 | N      |
| SHA2-256          | N      | Y(2)x4 | Y(2)x4 | Y(2)x8 | Y  x16 | N      |
| SHA2-384          | N      | Y   x2 | Y   x2 | Y   x4 | Y   x8 | N      |
| SHA2-512          | N      | Y   x2 | Y   x2 | Y   x4 | Y   x8 | N      |
| AES128-GMAC       | N      | Y  by8 | N      | Y  by8 | Y  by8 | Y by32 |
| AES192-GMAC       | N      | Y  by8 | N      | Y  by8 | Y  by8 | Y by32 |
| AES256-GMAC       | N      | Y  by8 | N      | Y  by8 | Y  by8 | Y by32 |
| NULL              | Y      | N      | N      | N      | N      | N      |
| AES128-CCM        | N      | Y(5)x4 | Y   x8 | N      | N      | Y x16  |
| AES256-CCM        | N      | Y(5)x4 | Y   x8 | N      | N      | Y x16  |
| AES128-CMAC-96    | Y      | Y(5)x4 | Y   x8 | N      | N      | Y x16  |
| AES256-CMAC-96    | Y      | Y(5)x4 | Y   x8 | N      | N      | Y x16  |
| KASUMI-F9         | Y      | N      | N      | N      | N      | N      |
| ZUC-EIA3          | N      | Y  x4  | Y  x4  | Y  x8  | Y  x16 | Y  x16 |
| ZUC-EIA3-256      | N      | Y  x4  | Y  x4  | Y  x8  | Y  x16 | Y  x16 |
| SNOW3G-UIA2(8)    | N      | Y by4  | Y by4  | N      | Y by32 | Y by32 |
| DOCSIS-CRC32(4)   | N      | Y      | Y      | N      | Y      | Y      |
| HEC               | N      | Y      | Y      | N      | N      | N      |
| POLY1305          | Y      | N      | N      | Y(9)   | Y      | Y      |
| POLY1305 AEAD     | Y      | N      | N      | Y(9)   | Y      | Y      |
| SNOW-V AEAD       | N      | Y  by8 | Y  by8 | Y  by8 | Y  by8 | Y by32 |
| GHASH             | N      | Y  by8 | N      | Y  by8 | Y  by8 | Y by32 |
| CRC(6)            | N      | Y  by8 | Y  by8 | N      | N      | Y by16 |
| PON-CRC-BIP(7)    | N      | Y      | Y      | N      | N      | Y      |
| SM3               | Y      | N      | N      | N      | N      | N      |
| HMAC-SM3          | Y      | N      | N      | N      | N      | N      |
+-------------------------------------------------------------------------+

Notes:
(1) - MD5 over one block implemented in C
(2) - Implementation using SHANI extensions is x2
(3) - AVX512 plus VAES, VPCLMULQDQ, GFNI and IFMA extensions
(4) - used only with AES256-DOCSIS and AES128-DOCSIS ciphers
(5) - x8 on selected CPU's supporting GFNI
(6) - Supported CRC types:

  • CRC32: Ethernet FCS, SCTP, WIMAX OFDMA
  • CRC24: LTE A, LTE B
  • CRC16: X25, FP data
  • CRC11: FP header
  • CRC10: IUUP data
  • CRC8: WIMAX OFDMA HCS
  • CRC7: FP header
  • CRC6: IUUP header
    (7) - used only with PON-AES128-CTR cipher
    (8) - x4/x16 for init keystream generation, then by4/by32
    (9) - Only if AVX-IFMA instructions are supported

Legend:
byY- single buffer Y blocks at a time
xY- Y buffers at a time

Table 3. Encryption and integrity algorithm combinations

+---------------------------------------------------------------------+
| Encryption    | Allowed Integrity Algorithms                        |
|---------------+-----------------------------------------------------|
| AES128-GCM    | AES128-GMAC                                         |
|---------------+-----------------------------------------------------|
| AES192-GCM    | AES192-GMAC                                         |
|---------------+-----------------------------------------------------|
| AES256-GCM    | AES256-GMAC                                         |
|---------------+-----------------------------------------------------|
| AES128-CCM    | AES128-CCM                                          |
|---------------+-----------------------------------------------------|
| AES256-CCM    | AES256-CCM                                          |
|---------------+-----------------------------------------------------|
| AES128-CBC,   | AES-XCBC-96,                                        |
| AES192-CBC,   | HMAC-SHA1-96, HMAC-SHA2-224_112, HMAC-SHA2-256_128, |
| AES256-CBC,   | HMAC-SHA2-384_192, HMAC-SHA2-512_256,               |
| AES128-CTR,   | AES128-CMAC-96,                                     |
| AES192-CTR,   | NULL,                                               |
| AES256-CTR,   | KASUMI-F9,                                          |
| AES128-ECB,   | ZUC-EIA3, ZUC-EIA3-256,                             |
| AES192-ECB,   | SNOW3G-UIA3,                                        |
| AES256-ECB,   | POLY1305,                                           |
| NULL,         | AES128-GMAC, AES192-GMAC, AES256-GMAC, GHASH,       |
| AES128-DOCSIS,| SM3, HMAC-SM3                                       |
| AES256-DOCSIS,|                                                     |
| DES-DOCSIS,   |                                                     |
| 3DES,         |                                                     |
| DES,          |                                                     |
| Chacha20,     |                                                     |
| KASUMI-F8,    |                                                     |
| ZUC-EEA3,     |                                                     |
| ZUC-EEA3-256, |                                                     |
| SNOW3G-UEA3   |                                                     |
| SNOW-V        |                                                     |
| SM4-ECB       |                                                     |
| SM4-CBC       |                                                     |
|---------------+-----------------------------------------------------|
| AES128-DOCSIS,| DOCSIS-CRC32                                        |
| AES256-DOCSIS |                                                     |
|---------------+-----------------------------------------------------|
| PON-AES128-CTR| PON-CRC-BIP                                         |
|---------------+-----------------------------------------------------|
| CHACHA20 AEAD | POLY1305 AEAD                                       |
+---------------+-----------------------------------------------------+
| SNOW-V AEAD   | SNOW-V AEAD (GHASH)                                 |
+---------------+-----------------------------------------------------+

2. Processor Extensions

Table 4. Processor extensions used in the library

+-------------------------------------------------------------------------+
| Algorithm         | Interface | Extensions                              |
|-------------------+-----------+-----------------------------------------|
| HMAC-SHA1-96,     | AVX512    | AVX512F, AVX512BW, AVX512VL             |
| HMAC-SHA2-224_112,|           |                                         |
| HMAC-SHA2-256_128,|           |                                         |
| HMAC-SHA2-384_192,|           |                                         |
| HMAC-SHA2-512_256 |           |                                         |
|-------------------+-----------+-----------------------------------------|
| DES, 3DES,        | AVX512    | AVX512F, AVX512BW                       |
| DOCSIS-DES        |           |                                         |
|-------------------+-----------+-----------------------------------------|
| HMAC-SHA1-96,     | SSE       | SHANI                                   |
| HMAC-SHA2-224_112,|           | - presence is autodetected and library  |
| HMAC-SHA2-256_128,|           |   falls back to SSE implementation      |
| HMAC-SHA2-384_192,|           |   if not present                        |
| HMAC-SHA2-512_256 |           |                                         |
+-------------------+-----------+-----------------------------------------+

3. Recommendations

Legacy or to be avoided algorithms listed in the table below are implemented in the library in order to support legacy applications. Please use corresponding alternative algorithms instead.

+--------------------------------------------------------------+
| # | Algorithm           | Recommendation | Alternative       |
|---+---------------------+----------------+-------------------|
| 1 | DES encryption      | Avoid          | AES encryption    |
|---+---------------------+----------------+-------------------|
| 2 | 3DES encryption     | Avoid          | AES encryption    |
|---+---------------------+----------------+-------------------|
| 3 | HMAC-MD5 integrity  | Legacy         | HMAC-SHA256       |
|---+---------------------+----------------+-------------------|
| 4 | AES-ECB encryption  | Avoid          | AES-CBC, AES-CNTR |
|---+---------------------+----------------+-------------------|
| 3 | HMAC-SHA1 integrity | Avoid          | HMAC-SHA256       |
+--------------------------------------------------------------+

Intel(R) Multi-Buffer Crypto for IPsec Library depends on C library and it is recommended to use its latest version.

Applications using the Intel(R) Multi-Buffer Crypto for IPsec Library rely on Operating System to provide process isolation. As the result, it is recommended to use latest Operating System patches and security updates.

4. Package Content

  • test - Library test applications
  • perf - Library performance application
  • lib - Library source files
  • lib/x86_64 - Non-SIMD routines
  • lib/sse_* - Intel(R) SSE optimized routines
  • lib/avx_* - Intel(R) AVX optimized routines
  • lib/avx2_* - Intel(R) AVX2 optimized routines
  • lib/avx512_* - Intel(R) AVX512 optimized routines
  • lib/no-aesni - Non-AESNI accelerated routines

Note:
There is just one branch used in the project. All development is done on the main branch.
Code taken from the tip of the main branch should not be considered fit for production.

Refer to the releases tab for stable code versions:
https://github.com/intel/intel-ipsec-mb/releases

5. Documentation

Full documentation can be found at: https://intel.github.io/intel-ipsec-mb

To generate documentation locally, run:
> make doxy

6. Compilation

Refer to the compilation section of the INSTALL file for instructions.

7. Installation

Refer to the installation section of the INSTALL file for instructions.

8. Security Considerations & Options for Increased Security

Refer to the SECURITY file for security related information.

9. Backwards compatibility

In version 1.4, backward compile time symbol compatibility with library version 0.53 has been removed.

Applications are encouraged to use new symbol names introduced in version 0.54.

If required, compatibility symbol mapping can be implemented in the application. See compatibility symbol mapping in v1.3 header file: https://github.com/intel/intel-ipsec-mb/blob/v1.3/lib/intel-ipsec-mb.h#L246

10. Disclaimer (ZUC, KASUMI, SNOW3G)

Please note that cryptographic material, such as ciphering algorithms, may be subject to national regulations. What is more, use of some algorithms in real networks and production equipment can be subject to agreement or licensing by the GSMA and/or the ETSI.

For more details please see:

11. Legal Disclaimer

THIS SOFTWARE IS PROVIDED BY INTEL"AS IS". NO LICENSE, EXPRESS OR
IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS
ARE GRANTED THROUGH USE. EXCEPT AS PROVIDED IN INTEL'S TERMS AND
CONDITIONS OF SALE, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL
DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR
USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO
FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT
OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.

12. FIPS Compliance

The library does not fulfill technical requirements to achieve Cryptographic Module (CMVP) certification as a standalone component. It is fit for Cryptographic Algorithm validation and certification (CAVP) and it can be part of CMVP as one of the components.

CAVP

ACVP test application located in test directory is to support CAVP process. It implements validation of the following algorithms:

  • AES-GCM
  • AES-GMAC
  • AES-CCM
  • AES-CBC
  • AES-EBC
  • TDES-EDE-CBC
  • AES-CTR
  • AES-CMAC
  • SHA1 (SHA-1)
  • SHA224 (SHA2-224)
  • SHA256 (SHA2-256)
  • SHA384 (SHA2-384)
  • SHA512 (SHA2-512)
  • HMAC-SHA1 (HMAC-SHA-1)
  • HMAC-SHA224 (HMAC-SHA2-224)
  • HMAC-SHA256 (HMAC-SHA2-256)
  • HMAC-SHA384 (HMAC-SHA2-384)
  • HMAC-SHA512 (HMAC-SHA2-512)

Note: the acvp-app requires libacvp 2.0+ to be built.

CAVP Algorithm Parameters

Note: all sizes in bits

+--------------------------------------------------------------------------------------------+
| Algorithm           | Standard  | Parameters                                               |
|---------------------+-----------+----------------------------------------------------------|
| AES-GCM             | SP800-38D | Key size: 128, 192, 256                                  |
|                     |           | Direction: encrypt and decrypt                           |
|                     |           | ivLen: [min = 8, max = 1024, increment 8]                |
|                     |           | tagLen: 32, 64, 96, 104, 112, 120, 128                   |
|                     |           | payloadLen: [min = 0, max = 65536, increment = 8]        |
|                     |           | aadLen: [min = 0, max = 65536, increment = 8]            |
|---------------------+-----------+----------------------------------------------------------|
| AES-CBC             | SP800-38A | Key size: 128, 192, 256                                  |
|                     |           | Direction: encrypt and decrypt                           |
|---------------------+-----------+----------------------------------------------------------|
| AES-CTR             | SP800-38A | Key size: 128, 192, 256                                  |
|                     |           | Direction: encrypt and decrypt                           |
|                     |           | payloadLen: [min = 8, max = 128, increment = 8]          |
|---------------------+-----------+----------------------------------------------------------|
| AES-ECB             | SP800-38A | Key size: 128, 192, 256                                  |
|                     |           | Direction: encrypt and decrypt                           |
|---------------------+-----------+----------------------------------------------------------|
| TDES-EDE-CBC        | SP800-38A | Key size: 192                                            |
|                     |           | Direction: encrypt and decrypt                           |
|---------------------+-----------+----------------------------------------------------------|
| SHA1 (SHA-1)        | FIPS180-4 | messageLength: [min = 0, max = 65528, increment = 8]     |
|---------------------+-----------+----------------------------------------------------------|
| SHA224 (SHA2-224)   | FIPS180-4 | messageLength: [min = 0, max = 65528, increment = 8]     |
|---------------------+-----------+----------------------------------------------------------|
| SHA256 (SHA2-256)   | FIPS180-4 | messageLength: [min = 0, max = 65528, increment = 8]     |
|---------------------+-----------+----------------------------------------------------------|
| SHA384 (SHA2-384)   | FIPS180-4 | messageLength: [min = 0, max = 65528, increment = 8]     |
|---------------------+-----------+----------------------------------------------------------|
| SHA512 (SHA2-512)   | FIPS180-4 | messageLength: [min = 0, max = 65528, increment = 8]     |
|---------------------+-----------+----------------------------------------------------------|
| AES-CCM             | SP800-38C | Key size: 128, 256                                       |
|                     |           | Direction: encrypt and decrypt                           |
|                     |           | ivLen: [min = 56, max = 104, increment 8]                |
|                     |           | tagLen: 32, 48, 64, 80, 96, 112, 128                     |
|                     |           | payloadLen: [min = 0, max = 256, increment = 8]          |
|                     |           | aadLen: [min = 0, max = 368, increment = 8]              |
|---------------------+-----------+----------------------------------------------------------|
| AES-GMAC            | SP800-38B | Key size: 128, 192, 256                                  |
|                     |           | ivLen: [min = 8, max = 1024, increment 8]                |
|                     |           | tagLen: 32, 64, 96, 104, 112, 120, 128                   |
|                     |           | aadLen: [min = 0, max = 65536, increment = 8]            |
|---------------------+-----------+----------------------------------------------------------|
| AES-CMAC            | SP800-38B | Key size: 128, 256                                       |
|                     |           | msgLen: [min = 8, max = 65528, increment 8]              |
|                     |           | macLen: [min = 8, max = 128, increment = 8]              |
|---------------------+-----------+----------------------------------------------------------|
| HMAC-SHA1           | FIPS198-1 | keyLen: [min = 8, max = 524288, increment = 8]           |
| (HMAC-SHA-1)        |           | macLen: [min = 32, max = 160, increment = 8]             |
|---------------------+-----------+----------------------------------------------------------|
| HMAC-SHA224         | FIPS198-1 | keyLen: [min = 8, max = 524288, increment = 8]           |
| (HMAC-SHA2-224)     |           | macLen: [min = 32, max = 224, increment = 8]             |
|---------------------+-----------+----------------------------------------------------------|
| HMAC-SHA256         | FIPS198-1 | keyLen: [min = 8, max = 524288, increment = 8]           |
| (HMAC-SHA2-256)     |           | macLen: [min = 32, max = 256, increment = 8]             |
|---------------------+-----------+----------------------------------------------------------|
| HMAC-SHA384         | FIPS198-1 | keyLen: [min = 8, max = 524288, increment = 8]           |
| (HMAC-SHA2-384)     |           | macLen: [min = 32, max = 384, increment = 8]             |
|---------------------+-----------+----------------------------------------------------------|
| HMAC-SHA512         | FIPS198-1 | keyLen: [min = 8, max = 524288, increment = 8]           |
| (HMAC-SHA2-512)     |           | macLen: [min = 32, max = 512, increment = 8]             |
+--------------------------------------------------------------------------------------------+

Self-Test

In order to support CMVP, the library implements Self-Test functionality that is available with all compilation options. The test is always performed as part of library initialization (power-up). There is no conditional self-test functionality as none of such conditions occur (i.e. pair-wise consistency test, software/firmware load test, manual key entry test, continuous random number generator test, and bypass test).

Application can register self-test callback function to track test progress. Optionally application can corrupt input message for selected tests and observe change in the test result.

Example sequence of callbacks received by an application is:

  • callback(data.phase = IMB_SELF_TEST_PHASE_START, data.type = IMB_SELF_TEST_TYPE_KAT_CIPHER, data.descr = "AES128-CBC") => return 1
  • callback(data.phase = IMB_SELF_TEST_PHASE_CORRUPT)
    • return 1: no message corruption
    • return 0: corrupt single bit in the 1st byte
  • callback(data.phase = IMB_SELF_TEST_PHASE_PASS or IMB_SELF_TEST_PHASE_PASS) => return 1
  • callback(data.phase = IMB_SELF_TEST_PHASE_START, data.type = IMB_SELF_TEST_TYPE_KAT_CIPHER, data.descr = "AES192-CBC") => return 1
  • ... Note that value returned by application self-test callback function only matters in the corrupt phase.

The self-test consists of Cryptographic algorithm test (known answer test) on following types and algorithms:

  • KAT_AEAD:
    • AES-GCM
    • AES-CCM
  • KAT_Cipher:
    • AES-CBC
    • AES-CTR
    • AES-ECB
    • TDES-EDE-CBC
  • KAT_Auth:
    • AES-GMAC
    • AES-CMAC
    • SHA1
    • SHA224
    • SHA256
    • SHA384
    • SHA512
    • HMAC-SHA1
    • HMAC-SHA224
    • HMAC-SHA256
    • HMAC-SHA384
    • HMAC-SHA512

KAT_Cipher and KAT_AEAD types conduct tests in encrypt and decrypt cipher directions. However, the corrupt callback is made only for the encrypt direction. No callback is made for the decrypt direction at the moment.

Example detection of library self-test completion & error in the application:

IMB_ARCH arch;
IMB_MGR *p_mgr = alloc_mb_mgr(0);

init_mb_mgr_auto(p_mgr, &arch); /* or init_mb_mgr_sse/avx/avx2/avx512 */

/*
 * check for self-test presence and successful
 * - requires library version v1.3 or newer
 */
if (p_mgr->features & IMB_FEATURE_SELF_TEST) {
        /* self-test feature present */
        if (p_mgr->features & IMB_FEATURE_SELF_TEST_PASS) {
                printf("SELF-TEST: PASS\n");
        } else {
                printf("SELF-TEST: FAIL\n");
	}
} else {
        printf("SELF-TEST: N/A (requires library >= v1.3)\n");
}

/* check for initialization self-test error */
if (imb_get_errno(p_mgr) == IMB_ERR_SELFTEST) {
        /* self-test error */
        exit(EXIT_FAILURE);
}

Example registration of self-test callback function:

int self_test_corrupt = 0;

int callback(void *arg, const IMB_SELF_TEST_CALLBACK_DATA *data)
{
        const char *phase = "";
        const char *type = "";
        const char *descr = "";

        (void) arg;

        if (data != NULL) {
                if (data->phase != NULL)
                        phase = data->phase;
                if (data->type != NULL)
                        type = data->type;
                if (data->descr != NULL)
                        descr = data->descr;
        }

        if (strcmp(phase, IMB_SELF_TEST_PHASE_START) == 0)
                printf("%s : %s : ", type, descr);

        if ((strcmp(phase, IMB_SELF_TEST_PHASE_CORRUPT) == 0) && (self_test_corrupt == 1))
                return 0; /* corrupt input message */

        if (strcmp(phase, IMB_SELF_TEST_PHASE_PASS) == 0 ||
            strcmp(phase, IMB_SELF_TEST_PHASE_FAIL) == 0)
                printf("%s\n", phase);

        return 1;
}

...

IMB_ARCH arch;
IMB_MGR *p_mgr = alloc_mb_mgr(0);

/*
 * Register self-test callback that will be invoked during
 * subsequent init operation
 */
imb_self_test_set_cb(p_mgr, callback, NULL);

init_mb_mgr_auto(p_mgr, &arch); /* or init_mb_mgr_sse/avx/avx2/avx512 */

...

13.DLL Injection Attack

Problem

The Windows OS has an insecure predefined search order and set of defaults when trying to locate a resource. If the resource location is not specified by the software, an attacker need only place a malicious version in one of the locations Windows will search, and it will be loaded instead. Although this weakness can occur with any resource, it is especially common with DLL files.

Solutions

Applications using intel-ipsec-mb DLL library may need to apply one of the solutions to prevent from DLL injection attack.

Two solutions are available:

  • Using a Fully Qualified Path is the most secure way to load a DLL
  • Signature verification of the DLL

Resources and Solution Details

intel-ipsec-mb's People

Contributors

atypicalnewbie avatar bdoole1 avatar billyoneal avatar colinianking avatar deadcafe avatar dr-m avatar emmaurquhart avatar gbtucker avatar hanblee avatar ikania501 avatar imadibra avatar ipuustin avatar jamesguilford avatar jean-mick avatar julienmeunier avatar kevintraynor avatar kkaras169169 avatar klipinsk avatar kloczek avatar mdcornu avatar mmozejkx avatar nhennigan avatar pablodelara avatar piotrxkleski avatar smcintyre20 avatar svenkata9 avatar tfherbert avatar tkanteck avatar uilianries avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intel-ipsec-mb's Issues

Removing NO_GCM compile option

This is just to let you know that this compile option will be removed soon. There doesn't seem to be any practical use of this option these days.

Build failure on Debian Jessie

Hello,

On Debian Jessie I have encountered following error during build:
Making object file obj/sha1_x16_avx512.o nasm -o obj/sha1_x16_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/sha1_x16_avx512.asm avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands avx512/sha1_x16_avx512.asm:466: error: invalid combination of opcode and operands Makefile:273: recipe for target 'obj/sha1_x16_avx512.o' failed make: *** [obj/sha1_x16_avx512.o] Error 1

My gcc version is supported according to readme(>=4.8.3):
intel-ipsec-mb-0.45$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.2-10' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --with-arch-32=i586 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.9.2 (Debian 4.9.2-10)

Windows compilation broken with DEBUG=y

When compiling with MS Visual Studio 2015, with DEBUG=y, the compilation of the test applications fail due to undeclared "func":

api_test.c(51): error C2065: 'func': undeclared identifier
api_test.c(61): error C2065: 'func': undeclared identifier

Found a bunch of spelling mistakes.

Found a bunch of spelling mistakes. Probably should be fixed. I used "codespell" to find these.

./CONTRIBUTING:225: specifiying ==> specifying
./README.md:115: extentions ==> extensions
./README:122: extentions ==> extensions
./ReleaseNotes.txt:363: enqueing ==> enqueuing
./ReleaseNotes.txt:444: refered ==> referred
./ReleaseNotes.txt:542: algorith ==> algorithm
./test/direct_api_test.c:80: occured ==> occurred
./test/direct_api_test.c:360: occured ==> occurred
./test/direct_api_test.c:445: occured ==> occurred
./test/direct_api_test.c:575: occured ==> occurred
./test/direct_api_test.c:618: occured ==> occurred
./test/direct_api_test.c:720: occured ==> occurred
./test/direct_api_test.c:894: occured ==> occurred
./test/direct_api_test.c:1073: occured ==> occurred
./test/win_x64.mak:48: Od ==> Of
./test/ipsec_xvalid.c:747: substracting ==> subtracting
./test/ipsec_xvalid.c:759: Substract ==> Subtract
./test/aes_cbcs_test.c:3099: lenghts ==> lengths
./test/aes_cbcs_test.c:3548: recieved ==> received
./test/misc.asm:34: funtion ==> function
./test/misc.asm:42: funtion ==> function
./test/gcm_ctr_vectors_test.h:62: Authenication ==> Authentication
./lib/intel-ipsec-mb.h:1659: accomodate ==> accommodate
./lib/intel-ipsec-mb.h:1661: accomodate ==> accommodate
./lib/intel-ipsec-mb.h:1819: availabe ==> available
./lib/const.asm:41: dependant ==> dependent
./lib/des_basic.c:49: inital ==> initial
./lib/des_basic.c:60: permuation ==> permutation
./lib/alloc.c:45: algorthmic ==> algorithmic
./lib/alloc.c:147: extenstions ==> extensions
./lib/libipsec-mb.7:72: UE ==> USE, DUE
./lib/libipsec-mb.7:137: UE ==> USE, DUE
./lib/sse/gcm_sse.asm:1815: tahn ==> than
./lib/sse/gcm_sse.asm:1951: seperately ==> separately
./lib/sse/aes_cfb_sse.asm:154: primarly ==> primarily
./lib/sse/aes_cfb_sse.asm:181: primarly ==> primarily
./lib/avx/gcm_avx_gen2.asm:1744: tahn ==> than
./lib/avx/gcm_avx_gen2.asm:1885: seperately ==> separately
./lib/avx/aes_cfb_avx.asm:150: primarly ==> primarily
./lib/avx/aes_cfb_avx.asm:180: primarly ==> primarily
./lib/avx2/gcm_avx_gen4.asm:1196: lenght ==> length
./lib/avx2/gcm_avx_gen4.asm:2815: tahn ==> than
./lib/avx2/zuc_avx2.asm:1124: Brodcast ==> Broadcast
./lib/include/transpose_avx2.asm:233: outputing ==> outputting
./lib/include/os.asm:45: funtion ==> function
./lib/include/os.asm:53: funtion ==> function
./lib/include/constant_lookup.h:33: instrinsic ==> intrinsic
./lib/include/snow3g_common.h:1644: selectes ==> selects
./lib/include/zuc_internal.h:78: swaped ==> swapped
./lib/include/zuc_internal.h:772: varient ==> variant
./lib/include/const.inc:206: multipled ==> multiplied
./lib/avx512/gcm_vaes_avx512.asm:1352: lenghts ==> lengths
./lib/avx512/gcm_vaes_avx512.asm:1509: lenght ==> length
./lib/avx512/gcm_vaes_avx512.asm:3372: intial ==> initial
./lib/avx512/gcm_vaes_avx512.asm:3707: mulitple ==> multiple
./lib/avx512/gcm_vaes_avx512.asm:3942: intermidiate ==> intermediate
./lib/avx512/gcm_avx512.asm:1123: lenght ==> length
./lib/avx512/gcm_avx512.asm:2704: tahn ==> than
./lib/avx512/mb_mgr_des_avx512.asm:111: unsued ==> unused
./lib/avx512/zuc_avx512.asm:877: ouput ==> output
./lib/avx512/chacha20_avx512.asm:582: Brodcast ==> Broadcast
./lib/avx512/des_x16_avx512.asm:936: temprary ==> temporary, temporarily
./lib/avx512/des_x16_avx512.asm:951: temprary ==> temporary, temporarily
./lib/avx512/des_x16_avx512.asm:1034: temprary ==> temporary, temporarily
./lib/avx512/des_x16_avx512.asm:1051: temprary ==> temporary, temporarily
./lib/avx512/sha1_x16_avx512.asm:210: wil ==> will, well
./lib/avx512/sha256_x16_avx512.asm:187: unneccessary ==> unnecessary
./lib/avx512/sha256_x16_avx512.asm:272: wil ==> will, well
./lib/avx512/aes_docsis_enc_vaes_avx512.asm:1467: lenghts ==> lengths
./perf/ipsec_perf.c:878: beginnig ==> beginning
./perf/ipsec_diff_tool.py:126: occurence ==> occurrence
./perf/ipsec_diff_tool.py:237: contaning ==> containing
./perf/ipsec_diff_tool.py:257: comparision ==> comparison
./perf/ipsec_diff_tool.py:272: ommiting ==> omitting
./perf/ipsec_diff_tool.py:280: contaning ==> containing
./perf/ipsec_diff_tool.py:328: calulates ==> calculates
./perf/README:41: contaning ==> containing

NASM version requirement should be 2.14

Hello,
I can see invalid opcode error when building on Ubuntu 18.04 where NASM is 2.13.02:
avx512/gcm_vaes_avx512.asm:4960: error: invalid combination of opcode and operand
It compiles fine with NASM 2.14, I think this version is required for vaesenc instructions.
Please confirm && update the doc!
Thanks,
Jean-Mickael

Why all my requests get distributed in a single core in a scenario when I have 4 cores availble?Is that a IPSec bottleneck?

Hei,
I am using this repository for a multi-threaded application. When I disable IPSec and send requests from a client to the server the requests got distributed (not uniformly though) to all the cores. Let say if I initiate 4 cores in server side then requests got distributed in all cores. When I do the same but with IPSec enabled all requests get distributed to a single core and the 3 other cores get no requests. Now my guess is that in a client side where I use IPsec gateway I have configured it with a single tunnel and that may be the reason why I get all my requests distributed to a single core. I am not very familiar with IPSec but I assume that if I configure my IPSec gateway with multiple tunnel then my requests get distributed to all the cores I have initiated or is this simply a IPSec bottleneck in Linux distributions?

the KEY information in gcm_data is changed to pointer reference from substance

Hi

I am using this library for DPDK APP, but there are some problems.

CBC mode, CTR mode and GCM are intermingled and are used at the same time in IPsec.
So an abstraction layer is being prepared by APP and MB API and GCM API are being used appropriately.

The gcm_data has substance of KEY information.Therefore it's necessary to copy KEY information in gcm_data from IPsec SA and eliminate after use.

If the KEY information in gcm_data is changed to pointer reference from substance, it becomes easier to use.

It's an ideal that GCM is also integrated into MB API, but that makes that a different issue about that.

LibTestApp fails with GCC 8.x for AESNI emulation code path

A few facts about the issue:

  • SSE, AVX, AVX2 and AVX512 code paths are fine
  • LibTestApp reports failure for AESNI emulation code
  • this cannot be reproduced with older GCC versions
  • the issue only affects the code that emulates AESNI instructions (no feature support in the CPU).

Nature of the problem is not know at this stage and it is under investigation.

A few issues found with static analysis by CoverityScan

These may be false positives or real issues, but CoverityScan has found some issues:

https://scan4.coverity.com/reports.htm#v30743/p15480

sha_one_block.c:

251 return;
252
CID 308771 (#1 of 1): Out-of-bounds access (OVERRUN)
overrun-buffer-val: Overrunning buffer pointed to by ld of 32 bytes by passing it to a function which accesses it at byte offset 56.
253 sha_generic_init(ld, sha_type);
254
255 for (idx = 0; (idx + blk_size) <= length; idx += blk_size)
256 sha_generic_one_block(&inp[idx], ld, is_avx, sha_type);

mb_mgr_code.h:

340 state->init_done[min_idx] = 2;
341 state->lens[min_idx] = AES_BLOCK_SIZE;
CID 308774 (#2 of 2): Wrong size argument (SIZEOF_MISMATCH)
suspicious_sizeof: Passing argument &pb[16] of type uint8_t * and argument 16UL to function memset is suspicious because sizeof (uint8_t) /1/ is expected.
342 memset(&pb[AES_BLOCK_SIZE], 0, AES_BLOCK_SIZE);

Decryption when using CIPHER_HASH order does not produce right output

When flushing a job decrypting before hashing (where hash operation is not completed, but decryption operation is), the buffer is again decrypted, producing an incorrect output.

Currently, the unit tests do not expose this issue, as this combination is not tested (chain_order = CIPHER_HASH, cipher_direction = DECRYPT, hash_alg != NULL_HASH). New tests will be added, testing this and other chained operation combinations.

symbol `vmovdqu32' redefined

Hi,

I am trying to compile this code in Centos 7(3.10.0-514.10.2.el7.x86_64), getting this below error in .45 and .44 versions, is there any workaround for this issue
mb_mgr_hmac_sha_256_submit_avx512.asm:170: error: parser: instruction expected
mb_mgr_hmac_sha_256_submit_avx512.asm:171: error: symbol `vmovdqu32' redefined
mb_mgr_hmac_sha_256_submit_avx512.asm:171: error: parser: instruction expected
make: *** [obj/mb_mgr_hmac_sha_224_submit_avx512.o] Error 1

Thanks,
Mohan

The exported sha256_sse() function fails to properly hash blocks that are larger than 65536 bytes in size

Note that this is true of all of the exported sha256_*() functions, not just the sse version. I am just using the sse version to demonstrate. I was hoping to use these functions to efficiently hash large files on an Intel based system, but if only blocks up to 64KB are supported for hashing, these functions are far less useful!

Here is a sample C++ program. You can try it on files that are <=65536 bytes in size and then on files that are >65536 bytes in size. It will fail to produce a correct hash for files that are >65536 bytes in size.

Examples:

Generate data files:

~/dev/sha256$ # Generate two files containing the character '0' repeated 65536 times
~/dev/sha256$ # and 65537 times, respectively
~/dev/sha256$ printf '0%.0s' {1..65536} >test-file.65536-bytes
~/dev/sha256$ printf '0%.0s' {1..65537} >test-file.65537-bytes
~/dev/sha256$ ls -l test-file*
-rw-rw-r-- 1 michael michael 65536 Aug 10 16:21 test-file.65536-bytes
-rw-rw-r-- 1 michael michael 65537 Aug 10 16:21 test-file.65537-bytes

65536 byte example - SUCCESS

Output of application using sha256_sse() to compute the SHA256 hash:

~/dev/sha256$ ./sha256_test test-file.65536-bytes 65536
Processing test-file.65536-bytes of size: 65536

00000000: 34 dd 67 58 c2 90 8c f5 be 0e 41 11 73 f6 18 77 | 4.gX......A.s..w
00000010: f8 fa f2 dc dc fe d1 35 b5 a5 fa 90 57 74 47 bc | .......5....WtG.

Correct sha256sum output for comparison (matches above output at the hex level):

~/dev/sha256$ sha256sum test-file.65536-bytes
34dd6758c2908cf5be0e411173f61877f8faf2dcdcfed135b5a5fa90577447bc  test-file.65536-bytes

65537 byte example - FAILURE

Output of application using sha256_sse() to compute the SHA256 hash:

~/dev/sha256$ ./sha256_test test-file.65537-bytes 65537
Processing test-file.65537-bytes of size: 65537

00000000: 59 73 28 91 be bc c7 c6 74 d5 a0 e9 2e 0a 4e 04 | Ys(.....t.....N.
00000010: 08 f2 1d 9e 6c ce ca 1f ac e0 3c c1 ab 1c b6 7a | ....l.....<....z

Correct sha256sum output for comparison (does not match above output at the hex level):

~/dev/sha256$ sha256sum test-file.65537-bytes
5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9  test-file.65537-bytes

Source code:

// sha256_test.cpp

#include <cstdint>
#include <fstream>
#include <intel-ipsec-mb.h>
#include <iomanip>
#include <iostream>
#include <string>

void
hexdump(FILE *fp,
        const char *msg,
        const void *p,
        size_t len)
{
        unsigned int i, out, ofs;
        const unsigned char *data = (const unsigned char *) p;

        fprintf(fp, "%s\n", msg);

        ofs = 0;
        while (ofs < len) {
                char line[120];

                out = snprintf(line, sizeof(line), "%08x:", ofs);
                for (i = 0; ((ofs + i) < len) && (i < 16); i++)
                        out += snprintf(line + out, sizeof(line) - out,
                                        " %02x", (data[ofs + i] & 0xff));
                for (; i <= 16; i++)
                        out += snprintf(line + out, sizeof(line) - out, " | ");
                for (i = 0; (ofs < len) && (i < 16); i++, ofs++) {
                        unsigned char c = data[ofs];

                        if ((c < ' ') || (c > '~'))
                                c = '.';
                        out += snprintf(line + out,
                                        sizeof(line) - out, "%c", c);
                }
                fprintf(fp, "%s\n", line);
        }
}

int main(int argc, char *argv[])
{
    using namespace std;
    std::cout << std::fixed;

    if (argc!=3)
    {
        std::cerr << "Usage: file_to_be_hashed size_of_file_in_bytes\n";
        return 1;
    }
    ifstream infile(argv[1]);

    size_t BUF_SIZE=stoul(argv[2]);
    char *buf=new char[BUF_SIZE];

    std::clog << "Processing " << argv[1] << " of size: " << BUF_SIZE << '\n';
    if (!infile.read(buf,BUF_SIZE))
    {
        std::cerr << "Could not read log file\n";
        return 1;
    }

    infile.close();

    uint8_t digest[SHA256_DIGEST_SIZE_IN_BYTES]={0}; // 32-byte buffer

    sha256_sse(buf,BUF_SIZE,digest);
     
    hexdump(stdout,"",digest,sizeof(digest));

    delete [] buf;
}

Compilation issue when building with NASM 2.15RC0

When compiling with NASM 2.15rc0, following compilation warnings can be seen in GCM code (affecting all architectures).

warning: single-line macro `MKGLOBAL' exists, but not taking 4 parameters [-w+macro-params-single]

Fill Job Fields

I am developing a kind of ipsec gateway and using this library as a encryption/decryption engine.

I have to encrypt and decrypt the payload data based on configuration like following:

SP IPv4 rules

sp ipv4 out esp protect 7 pri 1 dst 0.0.0.0/0 sport 0:65535 dport 0:65535

sp ipv4 in esp protect 8 pri 1 dst 0.0.0.0/0 sport 0:65535 dport 0:65535

SA rules

sa out 7 cipher_algo aes-128-cbc
cipher_key AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB:AB
auth_algo sha1-hmac auth_key C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1:C1
mode ipv4-tunnel src 169.254.9.10 dst 169.254.9.9

sa in 8 cipher_algo aes-128-cbc
cipher_key 12:12:12:12:12:12:12:12:12:12:12:12:12:12:12:12
auth_algo sha1-hmac auth_key B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5:B5
mode ipv4-tunnel src 169.254.9.9 dst 169.254.9.10

Routing rules

rt ipv4 dst 169.254.9.0/24 port 0

Neighbour rules

neigh port 0 54:B2:03:8C:F3:64

There are too many parameters and I cannot find any sample code to initialize the mb_mgr and fill the job parameters based on the above configuration.

Help me, Help me, please...
Any guides or sample code would be helpful to me.

CentOS 7 & gcc4.8 compilation problem

What?

v0.53 may not compile with gcc versions < 5.0

Workaround

'make -j EXTRA_CFLAGS="-msse4.2 -maes"

Root cause

Architecture flags are not set for gcc versions older than 5.0

Incorrect expected chain order for AES-CCM

Currently in the code, when performing AES-CCM, CIPHER_HASH chain order is expected when encrypting and HASH_CIPHER when decrypting.
This setting is wrong, since when encrypting on CCM, authentication needs to be performed first and encryption last, and the other way around whene decrypting.
Therefore, chain order needs to be reversed.

This means that all apps using CCM will need to be modified to correct the chain order from 0.53 version.

Code changes are expected in CCM which will enforce the chain_order change, as job submission will be split into two functions, submit_job_aes_ccm_enc/dec and submit_aes_ccm_auth, requiring the proper chain order to be set.

cant build master/0.52 on Ubuntu 18.04

latest NASM/GCC from official repo of Ubuntu Bionic
running make and I get the following

avx512/gcm_vaes_avx512.asm:5019: error: invalid combination of opcode and operands
avx512/gcm_vaes_avx512.asm:4374: ... from macro GCM_FINALIZE_x4' defined here avx512/gcm_vaes_avx512.asm:4126: ... from macro GCM_ENC_DEC_4x128' defined here
avx512/gcm_vaes_avx512.asm:3744: ... from macro GHASH_LAST_8x4' defined here avx512/gcm_vaes_avx512.asm:222: ... from macro VCLMUL_STEP2' defined here
avx512/gcm_vaes_avx512.asm:5019: error: invalid combination of opcode and operands

Any ideas?

out-of-bounds read detected with static analysis on tmp.byte[]

Static analysis on function shift_rows() in source no-aesni/aesni_emu.c has found a potential out-of-bounds read on an array. The full coverity scan static analysis report is below:

251 static void shift_rows(union xmm_reg *dst, const union xmm_reg src)
252 {
253 /
cyclic shift last 3 rows of the input */
254 int j;
255 union xmm_reg tmp = src;
256
257 /
bytes to matrix:
258 0 1 2 3 < columns (i)
259 ----------+
260 0 4 8 C | 0 < rows (j)
261 1 5 9 D | 1
262 2 6 A E | 2
263 3 7 B F | 3
264
265 THIS IS THE KEY: progressively move elements to HIGHER
266 numbered columnar values within a row.
267
268 Each dword is a column with the MSB as the bottom element
269 i is the column index, selects the dword
270 j is the row index,
271 we shift row zero by zero, row 1 by 1 and row 2 by 2 and
272 row 3 by 3, cyclically */

  1. Condition j < 4, taking true branch.
  2. Condition j < 4, taking true branch.
  3. cond_at_most: Checking j < 4 implies that j may be up to 3 on the true branch.

273 for (j = 0; j < MAX_DWORDS_PER_XMM; j++) {
274 int i;
275

  1. Condition i < 4, taking true branch.
  2. Condition i < 4, taking true branch.
  3. Condition i < 4, taking false branch.
  4. Condition i < 4, taking true branch.
  5. Condition i < 4, taking true branch.
  6. cond_at_most: Checking i < 4 implies that i may be up to 3 on the true branch.

276 for (i = 0; i < MAX_DWORDS_PER_XMM; i++)
3. Jumping back to the beginning of the loop.
5. Jumping back to the beginning of the loop.
11. Jumping back to the beginning of the loop.
14. identity_transfer: Passing i + j as argument 1 to function wrap_pos, which returns that argument.
CID 84512 (#1 of 1): Out-of-bounds read (OVERRUN)15. overrun-local: Overrunning array tmp.byte of 16 bytes at byte offset 27 using index wrap_pos(i + j) * 4U + j (which evaluates to 27).

277 dst->byte[i*4+j] = tmp.byte[wrap_pos(i+j)*4+j];
7. Jumping back to the beginning of the loop.
278 }
279
280 }

Port for FreeBSD

I made port for FreeBSD with patches but have small issue.

this is link for port and patches.
https://github.com/Martinfx/FreeBSD-Ports/tree/max-intel-ipsec/intel-ipsec-mb

Detected library version: 0.54.0
Detected hardware features:
	SHANI        : n/a
	AESNI        : OK
	PCLMULQDQ    : OK
	CMOV         : OK
	SSE4.2       : OK
	AVX          : OK
	AVX2         : n/a
	AVX512(SKX)  : n/a
	VAES         : n/a
	VPCLMULQDQ   : n/a
	GFNI         : n/a
Testing SSE interface
Known answer passes
Testing aux funcs
AES-CTR standard test vectors:
...............
AES-CTR standard test vectors:
......
...Pass
PON (AES128-CTR/CRC/BIP) test vectors:
.............
...Pass
AES-GCM standard test vectors:

Program received signal SIGBUS, Bus error.
0x00000000002edb36 in aes_keyexp_128_enc_sse ()
(gdb) bt
#0  0x00000000002edb36 in aes_keyexp_128_enc_sse ()
#1  0x00000000016b51ce in aes_gcm_pre_128_sse ()
#2  0x0000000000238a1a in test_gcm_vectors (vector=0x204be0 <gcm_vectors>, encfn=0x239140 <aes_gcm_enc_128>, decfn=0x239220 <aes_gcm_dec_128>) at gcm_test.c:1541
#3  0x00000000002382d6 in test_gcm_std_vectors () at gcm_test.c:1647
#4  gcm_test (p_mgr=<optimized out>) at gcm_test.c:1732
#5  0x00000000002380a9 in main (argc=<optimized out>, argv=<optimized out>) at main.c:288
(gdb) Quit
(gdb) quit

Can this cryptographic library be used as IPSec endpoints in user space?

Hi,

I am planning to use this software implementation for implementing an IPSec protocol between two of my ubuntu machines. One concern I have is that in the recieving machine one my NICs (I have two physical NICs at both of them) is configured as DPDK interface naming dpdk0. So therefore I wonder if its possible to create an IPSEC in which the encrypted packets are recived through dpdk interface?
The last question is can I use these cryptographic library as IPSEC endpoints on application layer rather than IP layer? I am askinng that because my application use a bypass kernel mechanism so basically the normal TCP layer is in user space

potential uninitialized data, may be false positive find by static analysis

Not sure if this is a false positive, but static analysis by Coverity picked up a potential use of uninitailized data. Report is as follows:

/lib/include/kasumi_internal.h

 849 static inline void
 850 kasumi_f8_1_buffer_bit(const kasumi_key_sched_t *pCtx, const uint64_t IV,
 851                       const void *pIn, void *pOut,
 852                       const uint32_t lengthInBits,
 853                       const uint32_t offsetInBits)
 854 {
 855 #ifdef SAFE_DATA
 856        CLEAR_SCRATCH_SIMD_REGS();
 857 #endif /* SAFE_DATA */
 858
 859        const uint8_t *pBufferIn = (const uint8_t *) pIn;
 860        uint8_t *pBufferOut = (uint8_t *) pOut;
 861        uint32_t cipherLengthInBits = lengthInBits;
 862        uint32_t blkcnt;
 863        uint64_t shiftrem = 0;
 864        kasumi_union_t a, b, c; /* the modifier */
 865        const uint8_t *pcBufferIn = pBufferIn + (offsetInBits / 8);
 866        uint8_t *pcBufferOut = pBufferOut + (offsetInBits / 8);
 867        /* Offset into the first byte (0 - 7 bits) */
 868        uint32_t remainOffset = offsetInBits % 8;
 869        uint32_t byteLength = (cipherLengthInBits + 7) / 8;
 870        SafeBuf safeOutBuf = {0};

    1. var_decl: Declaring variable safeInBuf without initializer.
 871        SafeBuf safeInBuf;
 872
 873        /* IV Endianity  */
 874        a.b64[0] = BSWAP64(IV);
 875
 876        /* First encryption to create modifier */
 877        kasumi_1_block(pCtx->msk16, a.b16);
 878
 879        /* Final initialisation steps */
 880        blkcnt = 0;
 881        b.b64[0] = a.b64[0];
 882        /* Now run the block cipher */
 883
 884        /* Start with potential partial block (due to offset and length) */
 885        kasumi_1_block(pCtx->sk16, b.b16);
 886        c.b64[0] = b.b64[0] >> remainOffset;
 887        /* Only one block to encrypt */

    2. Condition cipherLengthInBits < 64 - remainOffset, taking true branch.
 888        if (cipherLengthInBits < (64 - remainOffset)) {
 889                byteLength = (cipherLengthInBits + 7) / 8;
 890                memcpy_keystrm(safeInBuf.b8, pcBufferIn, byteLength);
 891                /*
 892                 * If operation is Out-of-place and there is offset
 893                 * to be applied, "remainOffset" bits from the output buffer
 894                 * need to be preserved (only applicable to first byte,
 895                 * since remainOffset is up to 7 bits)
 896                 */

    3. Condition pIn != pOut, taking true branch.
    4. Condition remainOffset, taking true branch.
 897                if ((pIn != pOut) && remainOffset) {
 898                        const uint8_t mask8 =
 899                                (const uint8_t)(1 << (8 - remainOffset)) - 1;
 900

 Uninitialized scalar variable (UNINIT)
    5. uninit_use: Using uninitialized value safeInBuf.b8[0].

 901                        safeInBuf.b8[0] = (safeInBuf.b8[0] & mask8) |
 902                                        (pcBufferOut[0] & ~mask8);
 903                }
 904

redundant assignment of bytes_left

Static analysis with Coverity has detected an assignment that is not used In lib/include/snow3g_common.h in function snow3g_8_buffer_ks_32_8():

3280 if (bytes_left >= small_block_size) {
3281 const uint32_t blocks = bytes_left / small_block_size;
3282
3283 length_sub(lengthInBytes, num_lanes, blocks * small_block_size);

CID 98731 (#1 of 1): Unused value (UNUSED_VALUE)
assigned_value: Assigning value from bytes_left - blocks * 8UL to bytes_left here, but that stored value is not used.

3284 bytes_left -= blocks * small_block_size;
3285

Same issue also in lines:

3151 if (bytes_left >= small_block_size) {
3152 const uint32_t blocks = bytes_left / small_block_size;
3153
3154 length_sub(tLenInBytes, num_lanes, blocks * small_block_size);

CID 98724 (#1 of 1): Unused value (UNUSED_VALUE)
assigned_value: Assigning value from bytes_left - blocks * 8UL to bytes_left here, but that stored value is not used.

3155 bytes_left -= blocks * small_block_size;
3156

Perhaps this can be removed?

FreeBSD compilation broken with SHARED=y

When compiling with clang , with SHARE=y, the compilation of the test applications fail due to Undefined symbol "_aligned_malloc"

test@ ~/D/i/test> ./ipsec_xvalid_test
ld-elf.so.1: /usr/local/lib/libIPSec_MB.so.0: Undefined symbol "_aligned_malloc"
test@ ~/D/i/test> ./ipsec_MB_testapp 
ld-elf.so.1: /intel-ipsec-mb/test/ipsec_MB_testapp: Undefined symbol "imb_get_errno"
test@ ~/D/i/test>

potential access of an uninitialized value

Maybe a false positive but worth checking out: static analysis with Coverity detected a potential uninitialized scalar variable issue in lib/include/snow3g_common.h:

``
3225static inline void
3226snow3g_8_buffer_ks_32_8(const snow3g_key_schedule_t *pKey,
3227 const void * const IV[],
3228 const uint8_t *pBufferIn[],
3229 uint8_t *pBufferOut[],
3230 uint32_t lengthInBytes)
3231{
3232 const size_t num_lanes = 8;
3233 const size_t big_block_size = 32;
3234 const size_t small_block_size = SNOW3G_8_BYTES;
3235 const uint32_t bytes = length_find_min(lengthInBytes, num_lanes);
3236 snow3gKeyState8_t ctx;
3237 uint32_t i, bytes_left = bytes & (~(small_block_size - 1));
3238
3239 / Initialize the schedule from the IV /
3240 snow3gStateInitialize_8(&ctx, pKey, IV[0], IV[1], IV[2],
3241 IV[3], IV[4], IV[5], IV[6], IV[7]);
3242
3243 / Clock FSM and LFSR once, ignore the key stream */
3244 (void) snow3g_keystream_8_4(&ctx);
3245

  1. Condition bytes_left >= 32UL /* big_block_size */, taking true branch.

3246 if (bytes_left >= big_block_size) {
3247 const uint32_t blocks = bytes_left / big_block_size;

  1. var_decl: Declaring variable ks without initializer.

3248 __m256i ks[8];
3249
3250 length_sub(lengthInBytes, num_lanes, blocks * big_block_size);
3251 bytes_left -= blocks * big_block_size;
3252
3253 /* generates 8 sets at a time on all streams */

  1. Condition i < blocks, taking true branch.

3254 for (i = 0; i < blocks; i++) {
3255 uint32_t j;
3256
3257 snow3g_keystream_8_32(&ctx, ks);
3258

  1. Condition j < 8UL /* num_lanes */, taking true branch.

3259 for (j = 0; j < num_lanes; j++) {
3260 const __m256i *in_ptr =
3261 (const __m256i *)pBufferIn[j];
3262 const __m256i in_val =
3263 _mm256_loadu_si256(in_ptr);

CID 98739 (#1 of 1): Uninitialized scalar variable (UNINIT)
5. uninit_use_in_call: Using uninitialized value ks[j]. Field ks[j].elems is uninitialized when calling _mm256_xor_si256.

3264 const __m256i xor_val =
3265 _mm256_xor_si256(in_val, ks[j]);

Possible cut-n-paste typo in snow3g_test.c

Static analysis found a potential problem. I'm not 100% sure if this is a false positive or not, but I thought I should report it anyhow.

In function validate_snow3g_f8_1_bitblock():

616                /*check against the ciphertext in the vector against the
617                 * encrypted plaintext*/

   original: midBuff looks like the original copy.

618                if (membitcmp(midBuff, dstBuff, bit_len, 4) != 0) {
619                        printf("Test5:snow3g_f8_1_bitbuffer(Enc) buffer:%d "
620                               "size:%d offset:4\n", i, bit_len);
621                        snow3g_hexdump("Actual:", &midBuff[0],
622                                       (length * 8 + 4 + 7) / 8);
623                        snow3g_hexdump("Expected:", &dstBuff[0],
624                                       (length * 8 + 4 + 7) / 8);
625                        goto snow3g_f8_1_buffer_bit_exit;
626                }
627                printf(".");
628
629                /*Validate Decrypt*/
630                if (job_api)
631                        submit_uea2_jobs(mb_mgr, (uint8_t **)&pKeySched,
632                                         &pIV, &dstBufBefPad, &midBufBefPad,
633                                         &bit_len, &head_offset,
634                                         IMB_DIR_DECRYPT, 1);
635                else
636                        IMB_SNOW3G_F8_1_BUFFER_BIT(mb_mgr, pKeySched, pIV,
637                                                   /*midBuff*/ dstBuff,
638                                                   /*dstBuff*/ midBuff,
639                                                   bit_len, head_offset);
640

   CID 99586 (#1 of 1): Copy-paste error (COPY_PASTE_ERROR)
copy_paste_error: midBuff looks like a copy-paste error.
   Should it say dstBuff instead?

641                if (membitcmp(midBuff /*dstBuff*/, srcBuff, bit_len, 4) != 0) {
642                        printf("Test6: snow3g_f8_1_bitbuffer(Dec) buffer:%d "
643                               "size:%d offset:4\n", i, bit_len);
644                        snow3g_hexdump("Actual:", &dstBuff[0],
645                                       (length * 8 + 4 + 7) / 8);
646                        snow3g_hexdump("Expected:", &srcBuff[0],
647                                       (length * 8 + 4 + 7) / 8);
648                        goto snow3g_f8_1_buffer_bit_exit;
649                }

Memory leak of allocations pointed to by variant_list[i].avg_times

In function run_tests in ipsec_perf.c any allocated avg_times buffers probably should be free'd before free'ing variant_list. This is a moot point because _exit() is being called afterwards anyhow, but it's nice to clean up correctly to clean up static analysis warnings :-)

2230        for (variant = 0, variant_ptr = variant_list;
2231             variant < total_variants;
2232             variant++, variant_ptr++) {
    CID 99591 (#4 of 4): Resource leak (RESOURCE_LEAK) 

    41. alloc_fn: Storage is returned from allocation function malloc.
    42. var_assign: Assigning: variant_ptr->avg_times = storage returned from malloc(at_size).
    43. var_assign: Assigning: variant_list->avg_times = variant_ptr->avg_times.

2233                variant_ptr->avg_times = (uint64_t *) malloc(at_size);

    44. Condition !variant_ptr->avg_times, taking false branch.
    47. Condition !variant_ptr->avg_times, taking false branch.

2234                if (!variant_ptr->avg_times) {
2235                        fprintf(stderr, "Cannot allocate memory\n");
2236                        goto exit_failure;
2237                }

and the free'ing:

2296exit_failure:
2297        if (variant_list != NULL)
    CID 99591 (#2 of 4): Resource leak (RESOURCE_LEAK) [select issue]
2298                free(variant_list);
2299        free_mem(&buf, &keys);
2300        free_mb_mgr(p_mgr);
2301        exit(EXIT_FAILURE);

freebsd: error: duplicate symbol: imb_errno

Hello,
we have still issue on version 0.54.3-dev and only 13.0-CURRENT

nasm -MD obj/gcm192_avx_gen2.d -MT obj/gcm192_avx_gen2.o -o obj/gcm192_avx_gen2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx/gcm192_avx_gen2.asm
nasm -MD obj/gcm256_avx_gen2.d -MT obj/gcm256_avx_gen2.o -o obj/gcm256_avx_gen2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx/gcm256_avx_gen2.asm
nasm -MD obj/md5_x8x2_avx2.d -MT obj/md5_x8x2_avx2.o -o obj/md5_x8x2_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/md5_x8x2_avx2.asm
nasm -MD obj/sha1_x8_avx2.d -MT obj/sha1_x8_avx2.o -o obj/sha1_x8_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/sha1_x8_avx2.asm
nasm -MD obj/sha256_oct_avx2.d -MT obj/sha256_oct_avx2.o -o obj/sha256_oct_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/sha256_oct_avx2.asm
nasm -MD obj/sha512_x4_avx2.d -MT obj/sha512_x4_avx2.o -o obj/sha512_x4_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/sha512_x4_avx2.asm
nasm -MD obj/zuc_avx2.d -MT obj/zuc_avx2.o -o obj/zuc_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/zuc_avx2.asm
nasm -MD obj/mb_mgr_hmac_md5_flush_avx2.d -MT obj/mb_mgr_hmac_md5_flush_avx2.o -o obj/mb_mgr_hmac_md5_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_md5_flush_avx2.asm
nasm -MD obj/mb_mgr_hmac_md5_submit_avx2.d -MT obj/mb_mgr_hmac_md5_submit_avx2.o -o obj/mb_mgr_hmac_md5_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_md5_submit_avx2.asm
nasm -MD obj/mb_mgr_hmac_flush_avx2.d -MT obj/mb_mgr_hmac_flush_avx2.o -o obj/mb_mgr_hmac_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_flush_avx2.asm
nasm -MD obj/mb_mgr_hmac_submit_avx2.d -MT obj/mb_mgr_hmac_submit_avx2.o -o obj/mb_mgr_hmac_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_submit_avx2.asm
nasm -MD obj/mb_mgr_hmac_sha_224_flush_avx2.d -MT obj/mb_mgr_hmac_sha_224_flush_avx2.o -o obj/mb_mgr_hmac_sha_224_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_sha_224_flush_avx2.asm
nasm -MD obj/mb_mgr_hmac_sha_224_submit_avx2.d -MT obj/mb_mgr_hmac_sha_224_submit_avx2.o -o obj/mb_mgr_hmac_sha_224_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_sha_224_submit_avx2.asm
nasm -MD obj/mb_mgr_hmac_sha_256_flush_avx2.d -MT obj/mb_mgr_hmac_sha_256_flush_avx2.o -o obj/mb_mgr_hmac_sha_256_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_sha_256_flush_avx2.asm
nasm -MD obj/mb_mgr_hmac_sha_256_submit_avx2.d -MT obj/mb_mgr_hmac_sha_256_submit_avx2.o -o obj/mb_mgr_hmac_sha_256_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_sha_256_submit_avx2.asm
nasm -MD obj/mb_mgr_hmac_sha_384_flush_avx2.d -MT obj/mb_mgr_hmac_sha_384_flush_avx2.o -o obj/mb_mgr_hmac_sha_384_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_sha_384_flush_avx2.asm
nasm -MD obj/mb_mgr_hmac_sha_384_submit_avx2.d -MT obj/mb_mgr_hmac_sha_384_submit_avx2.o -o obj/mb_mgr_hmac_sha_384_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_sha_384_submit_avx2.asm
nasm -MD obj/mb_mgr_hmac_sha_512_flush_avx2.d -MT obj/mb_mgr_hmac_sha_512_flush_avx2.o -o obj/mb_mgr_hmac_sha_512_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_sha_512_flush_avx2.asm
nasm -MD obj/mb_mgr_hmac_sha_512_submit_avx2.d -MT obj/mb_mgr_hmac_sha_512_submit_avx2.o -o obj/mb_mgr_hmac_sha_512_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_hmac_sha_512_submit_avx2.asm
nasm -MD obj/mb_mgr_zuc_submit_flush_avx2.d -MT obj/mb_mgr_zuc_submit_flush_avx2.o -o obj/mb_mgr_zuc_submit_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/mb_mgr_zuc_submit_flush_avx2.asm
nasm -MD obj/gcm128_avx_gen4.d -MT obj/gcm128_avx_gen4.o -o obj/gcm128_avx_gen4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/gcm128_avx_gen4.asm
nasm -MD obj/gcm192_avx_gen4.d -MT obj/gcm192_avx_gen4.o -o obj/gcm192_avx_gen4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/gcm192_avx_gen4.asm
nasm -MD obj/gcm256_avx_gen4.d -MT obj/gcm256_avx_gen4.o -o obj/gcm256_avx_gen4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx2/gcm256_avx_gen4.asm
nasm -MD obj/sha1_x16_avx512.d -MT obj/sha1_x16_avx512.o -o obj/sha1_x16_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/sha1_x16_avx512.asm
nasm -MD obj/sha256_x16_avx512.d -MT obj/sha256_x16_avx512.o -o obj/sha256_x16_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/sha256_x16_avx512.asm
nasm -MD obj/sha512_x8_avx512.d -MT obj/sha512_x8_avx512.o -o obj/sha512_x8_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/sha512_x8_avx512.asm
nasm -MD obj/des_x16_avx512.d -MT obj/des_x16_avx512.o -o obj/des_x16_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/des_x16_avx512.asm
nasm -MD obj/cntr_vaes_avx512.d -MT obj/cntr_vaes_avx512.o -o obj/cntr_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/cntr_vaes_avx512.asm
nasm -MD obj/cntr_ccm_vaes_avx512.d -MT obj/cntr_ccm_vaes_avx512.o -o obj/cntr_ccm_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/cntr_ccm_vaes_avx512.asm
nasm -MD obj/aes_cbc_dec_vaes_avx512.d -MT obj/aes_cbc_dec_vaes_avx512.o -o obj/aes_cbc_dec_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/aes_cbc_dec_vaes_avx512.asm
nasm -MD obj/aes_cbc_enc_vaes_avx512.d -MT obj/aes_cbc_enc_vaes_avx512.o -o obj/aes_cbc_enc_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/aes_cbc_enc_vaes_avx512.asm
nasm -MD obj/aes_cbcs_enc_vaes_avx512.d -MT obj/aes_cbcs_enc_vaes_avx512.o -o obj/aes_cbcs_enc_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/aes_cbcs_enc_vaes_avx512.asm
nasm -MD obj/aes_cbcs_dec_vaes_avx512.d -MT obj/aes_cbcs_dec_vaes_avx512.o -o obj/aes_cbcs_dec_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/aes_cbcs_dec_vaes_avx512.asm
nasm -MD obj/aes_docsis_dec_avx512.d -MT obj/aes_docsis_dec_avx512.o -o obj/aes_docsis_dec_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/aes_docsis_dec_avx512.asm
nasm -MD obj/aes_docsis_enc_avx512.d -MT obj/aes_docsis_enc_avx512.o -o obj/aes_docsis_enc_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/aes_docsis_enc_avx512.asm
nasm -MD obj/aes_docsis_dec_vaes_avx512.d -MT obj/aes_docsis_dec_vaes_avx512.o -o obj/aes_docsis_dec_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/aes_docsis_dec_vaes_avx512.asm
nasm -MD obj/aes_docsis_enc_vaes_avx512.d -MT obj/aes_docsis_enc_vaes_avx512.o -o obj/aes_docsis_enc_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/aes_docsis_enc_vaes_avx512.asm
nasm -MD obj/zuc_avx512.d -MT obj/zuc_avx512.o -o obj/zuc_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/zuc_avx512.asm
nasm -MD obj/mb_mgr_aes_submit_avx512.d -MT obj/mb_mgr_aes_submit_avx512.o -o obj/mb_mgr_aes_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes_submit_avx512.asm
nasm -MD obj/mb_mgr_aes_flush_avx512.d -MT obj/mb_mgr_aes_flush_avx512.o -o obj/mb_mgr_aes_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes_flush_avx512.asm
nasm -MD obj/mb_mgr_aes192_submit_avx512.d -MT obj/mb_mgr_aes192_submit_avx512.o -o obj/mb_mgr_aes192_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes192_submit_avx512.asm
nasm -MD obj/mb_mgr_aes192_flush_avx512.d -MT obj/mb_mgr_aes192_flush_avx512.o -o obj/mb_mgr_aes192_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes192_flush_avx512.asm
nasm -MD obj/mb_mgr_aes256_submit_avx512.d -MT obj/mb_mgr_aes256_submit_avx512.o -o obj/mb_mgr_aes256_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes256_submit_avx512.asm
nasm -MD obj/mb_mgr_aes256_flush_avx512.d -MT obj/mb_mgr_aes256_flush_avx512.o -o obj/mb_mgr_aes256_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes256_flush_avx512.asm
nasm -MD obj/mb_mgr_hmac_flush_avx512.d -MT obj/mb_mgr_hmac_flush_avx512.o -o obj/mb_mgr_hmac_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_flush_avx512.asm
nasm -MD obj/mb_mgr_hmac_submit_avx512.d -MT obj/mb_mgr_hmac_submit_avx512.o -o obj/mb_mgr_hmac_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_submit_avx512.asm
nasm -MD obj/mb_mgr_hmac_sha_224_flush_avx512.d -MT obj/mb_mgr_hmac_sha_224_flush_avx512.o -o obj/mb_mgr_hmac_sha_224_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_sha_224_flush_avx512.asm
nasm -MD obj/mb_mgr_hmac_sha_224_submit_avx512.d -MT obj/mb_mgr_hmac_sha_224_submit_avx512.o -o obj/mb_mgr_hmac_sha_224_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_sha_224_submit_avx512.asm
nasm -MD obj/mb_mgr_hmac_sha_256_flush_avx512.d -MT obj/mb_mgr_hmac_sha_256_flush_avx512.o -o obj/mb_mgr_hmac_sha_256_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_sha_256_flush_avx512.asm
nasm -MD obj/mb_mgr_hmac_sha_256_submit_avx512.d -MT obj/mb_mgr_hmac_sha_256_submit_avx512.o -o obj/mb_mgr_hmac_sha_256_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_sha_256_submit_avx512.asm
nasm -MD obj/mb_mgr_hmac_sha_384_flush_avx512.d -MT obj/mb_mgr_hmac_sha_384_flush_avx512.o -o obj/mb_mgr_hmac_sha_384_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_sha_384_flush_avx512.asm
nasm -MD obj/mb_mgr_hmac_sha_384_submit_avx512.d -MT obj/mb_mgr_hmac_sha_384_submit_avx512.o -o obj/mb_mgr_hmac_sha_384_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_sha_384_submit_avx512.asm
nasm -MD obj/mb_mgr_hmac_sha_512_flush_avx512.d -MT obj/mb_mgr_hmac_sha_512_flush_avx512.o -o obj/mb_mgr_hmac_sha_512_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_sha_512_flush_avx512.asm
nasm -MD obj/mb_mgr_hmac_sha_512_submit_avx512.d -MT obj/mb_mgr_hmac_sha_512_submit_avx512.o -o obj/mb_mgr_hmac_sha_512_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_hmac_sha_512_submit_avx512.asm
nasm -MD obj/mb_mgr_des_avx512.d -MT obj/mb_mgr_des_avx512.o -o obj/mb_mgr_des_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_des_avx512.asm
nasm -MD obj/mb_mgr_aes_cmac_submit_flush_vaes_avx512.d -MT obj/mb_mgr_aes_cmac_submit_flush_vaes_avx512.o -o obj/mb_mgr_aes_cmac_submit_flush_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes_cmac_submit_flush_vaes_avx512.asm
nasm -MD obj/mb_mgr_aes256_cmac_submit_flush_vaes_avx512.d -MT obj/mb_mgr_aes256_cmac_submit_flush_vaes_avx512.o -o obj/mb_mgr_aes256_cmac_submit_flush_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes256_cmac_submit_flush_vaes_avx512.asm
nasm -MD obj/mb_mgr_aes_ccm_auth_submit_flush_vaes_avx512.d -MT obj/mb_mgr_aes_ccm_auth_submit_flush_vaes_avx512.o -o obj/mb_mgr_aes_ccm_auth_submit_flush_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes_ccm_auth_submit_flush_vaes_avx512.asm
nasm -MD obj/mb_mgr_aes256_ccm_auth_submit_flush_vaes_avx512.d -MT obj/mb_mgr_aes256_ccm_auth_submit_flush_vaes_avx512.o -o obj/mb_mgr_aes256_ccm_auth_submit_flush_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes256_ccm_auth_submit_flush_vaes_avx512.asm
nasm -MD obj/mb_mgr_aes_xcbc_submit_flush_vaes_avx512.d -MT obj/mb_mgr_aes_xcbc_submit_flush_vaes_avx512.o -o obj/mb_mgr_aes_xcbc_submit_flush_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes_xcbc_submit_flush_vaes_avx512.asm
nasm -MD obj/mb_mgr_zuc_submit_flush_avx512.d -MT obj/mb_mgr_zuc_submit_flush_avx512.o -o obj/mb_mgr_zuc_submit_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_zuc_submit_flush_avx512.asm
nasm -MD obj/mb_mgr_zuc_submit_flush_gfni_avx512.d -MT obj/mb_mgr_zuc_submit_flush_gfni_avx512.o -o obj/mb_mgr_zuc_submit_flush_gfni_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_zuc_submit_flush_gfni_avx512.asm
nasm -MD obj/chacha20_avx512.d -MT obj/chacha20_avx512.o -o obj/chacha20_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/chacha20_avx512.asm
nasm -MD obj/ethernet_fcs_avx512.d -MT obj/ethernet_fcs_avx512.o -o obj/ethernet_fcs_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/ethernet_fcs_avx512.asm
nasm -MD obj/crc16_x25_avx512.d -MT obj/crc16_x25_avx512.o -o obj/crc16_x25_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/crc16_x25_avx512.asm
nasm -MD obj/crc32_refl_by16_vclmul_avx512.d -MT obj/crc32_refl_by16_vclmul_avx512.o -o obj/crc32_refl_by16_vclmul_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/crc32_refl_by16_vclmul_avx512.asm
nasm -MD obj/crc32_by16_vclmul_avx512.d -MT obj/crc32_by16_vclmul_avx512.o -o obj/crc32_by16_vclmul_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/crc32_by16_vclmul_avx512.asm
nasm -MD obj/mb_mgr_aes_cbcs_1_9_submit_avx512.d -MT obj/mb_mgr_aes_cbcs_1_9_submit_avx512.o -o obj/mb_mgr_aes_cbcs_1_9_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes_cbcs_1_9_submit_avx512.asm
nasm -MD obj/mb_mgr_aes_cbcs_1_9_flush_avx512.d -MT obj/mb_mgr_aes_cbcs_1_9_flush_avx512.o -o obj/mb_mgr_aes_cbcs_1_9_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/mb_mgr_aes_cbcs_1_9_flush_avx512.asm
nasm -MD obj/crc32_sctp_avx512.d -MT obj/crc32_sctp_avx512.o -o obj/crc32_sctp_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/crc32_sctp_avx512.asm
nasm -MD obj/crc32_lte_avx512.d -MT obj/crc32_lte_avx512.o -o obj/crc32_lte_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/crc32_lte_avx512.asm
nasm -MD obj/crc32_fp_avx512.d -MT obj/crc32_fp_avx512.o -o obj/crc32_fp_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/crc32_fp_avx512.asm
nasm -MD obj/crc32_iuup_avx512.d -MT obj/crc32_iuup_avx512.o -o obj/crc32_iuup_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/crc32_iuup_avx512.asm
nasm -MD obj/crc32_wimax_avx512.d -MT obj/crc32_wimax_avx512.o -o obj/crc32_wimax_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/crc32_wimax_avx512.asm
nasm -MD obj/gcm128_vaes_avx512.d -MT obj/gcm128_vaes_avx512.o -o obj/gcm128_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/gcm128_vaes_avx512.asm
nasm -MD obj/gcm192_vaes_avx512.d -MT obj/gcm192_vaes_avx512.o -o obj/gcm192_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/gcm192_vaes_avx512.asm
nasm -MD obj/gcm256_vaes_avx512.d -MT obj/gcm256_vaes_avx512.o -o obj/gcm256_vaes_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/gcm256_vaes_avx512.asm
nasm -MD obj/gcm128_avx512.d -MT obj/gcm128_avx512.o -o obj/gcm128_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/gcm128_avx512.asm
nasm -MD obj/gcm192_avx512.d -MT obj/gcm192_avx512.o -o obj/gcm192_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/gcm192_avx512.asm
nasm -MD obj/gcm256_avx512.d -MT obj/gcm256_avx512.o -o obj/gcm256_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -I./ -DSAFE_LOOKUP avx512/gcm256_avx512.asm
cc -MMD -march=sandybridge -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC avx/mb_mgr_avx.c -o obj/mb_mgr_avx.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=haswell -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC avx2/mb_mgr_avx2.c -o obj/mb_mgr_avx2.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=broadwell -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC avx512/mb_mgr_avx512.c -o obj/mb_mgr_avx512.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=nehalem -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC sse/mb_mgr_sse.c -o obj/mb_mgr_sse.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=nehalem -mno-pclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC -O1 no-aesni/mb_mgr_sse_no_aesni.c -o obj/mb_mgr_sse_no_aesni.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC alloc.c -o obj/alloc.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC aes_xcbc_expand_key.c -o obj/aes_xcbc_expand_key.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC md5_one_block.c -o obj/md5_one_block.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC sha_one_block.c -o obj/sha_one_block.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC des_key.c -o obj/des_key.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC des_basic.c -o obj/des_basic.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC chacha20.c -o obj/chacha20.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC version.c -o obj/version.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC cpu_feature.c -o obj/cpu_feature.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=nehalem -mno-pclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC -O1 no-aesni/aesni_emu.c -o obj/aesni_emu.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=sandybridge -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC avx/kasumi_avx.c -o obj/kasumi_avx.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC kasumi_iv.c -o obj/kasumi_iv.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=nehalem -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC sse/kasumi_sse.c -o obj/kasumi_sse.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=nehalem -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC sse/zuc_sse_top.c -o obj/zuc_sse_top.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=nehalem -mno-pclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC -O1 no-aesni/zuc_sse_no_aesni_top.c -o obj/zuc_sse_no_aesni_top.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=sandybridge -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC avx/zuc_avx_top.c -o obj/zuc_avx_top.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=haswell -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC avx2/zuc_avx2_top.c -o obj/zuc_avx2_top.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=broadwell -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC avx512/zuc_avx512_top.c -o obj/zuc_avx512_top.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC zuc_iv.c -o obj/zuc_iv.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=nehalem -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC sse/snow3g_sse.c -o obj/snow3g_sse.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=nehalem -mno-pclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC -O1 no-aesni/snow3g_sse_no_aesni.c -o obj/snow3g_sse_no_aesni.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=sandybridge -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC avx/snow3g_avx.c -o obj/snow3g_avx.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -march=haswell -maes -mpclmul -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC avx2/snow3g_avx2.c -o obj/snow3g_avx2.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC snow3g_tables.c -o obj/snow3g_tables.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC snow3g_iv.c -o obj/snow3g_iv.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC mb_mgr_auto.c -o obj/mb_mgr_auto.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC error.c -o obj/error.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -MMD -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fstack-protector -D_FORTIFY_SOURCE=2 -DSAFE_LOOKUP -O3 -fPIC gcm.c -o obj/gcm.o
cc: warning: argument unused during compilation: '-fno-strict-overflow' [-Wunused-command-line-argument]
cc -shared -Wl,-soname,libIPSec_MB.so.0 -o libIPSec_MB.so.0.54.1-dev obj/aes_keyexp_128.o obj/aes_keyexp_192.o obj/aes_keyexp_256.o obj/aes_cmac_subkey_gen.o obj/save_xmms.o obj/clear_regs_mem_fns.o obj/const.o obj/aes128_ecbenc_x3.o obj/zuc_common.o obj/wireless_common.o obj/constant_lookup.o obj/crc32_refl_const.o obj/crc32_const.o obj/aes128_cbc_dec_by4_sse_no_aesni.o obj/aes192_cbc_dec_by4_sse_no_aesni.o obj/aes256_cbc_dec_by4_sse_no_aesni.o obj/aes_cbc_enc_128_x4_no_aesni.o obj/aes_cbc_enc_192_x4_no_aesni.o obj/aes_cbc_enc_256_x4_no_aesni.o obj/aes128_cntr_by8_sse_no_aesni.o obj/aes192_cntr_by8_sse_no_aesni.o obj/aes256_cntr_by8_sse_no_aesni.o obj/aes_ecb_by4_sse_no_aesni.o obj/aes128_cntr_ccm_by8_sse_no_aesni.o obj/aes256_cntr_ccm_by8_sse_no_aesni.o obj/pon_sse_no_aesni.o obj/zuc_sse_no_aesni.o obj/aes_cfb_sse_no_aesni.o obj/aes128_cbc_mac_x4_no_aesni.o obj/aes256_cbc_mac_x4_no_aesni.o obj/aes_xcbc_mac_128_x4_no_aesni.o obj/mb_mgr_aes_flush_sse_no_aesni.o obj/mb_mgr_aes_submit_
 sse_no_aesni.o obj/mb_mgr_aes192_flush_sse_no_aesni.o obj/mb_mgr_aes192_submit_sse_no_aesni.o obj/mb_mgr_aes256_flush_sse_no_aesni.o obj/mb_mgr_aes256_submit_sse_no_aesni.o obj/mb_mgr_aes_cmac_submit_flush_sse_no_aesni.o obj/mb_mgr_aes256_cmac_submit_flush_sse_no_aesni.o obj/mb_mgr_aes_ccm_auth_submit_flush_sse_no_aesni.o obj/mb_mgr_aes256_ccm_auth_submit_flush_sse_no_aesni.o obj/mb_mgr_aes_xcbc_flush_sse_no_aesni.o obj/mb_mgr_aes_xcbc_submit_sse_no_aesni.o obj/mb_mgr_zuc_submit_flush_sse_no_aesni.o obj/ethernet_fcs_sse_no_aesni.o obj/crc16_x25_sse_no_aesni.o obj/aes_cbcs_1_9_enc_128_x4_no_aesni.o obj/aes128_cbcs_1_9_dec_by4_sse_no_aesni.o obj/mb_mgr_aes128_cbcs_1_9_submit_sse.o obj/mb_mgr_aes128_cbcs_1_9_flush_sse.o obj/mb_mgr_aes128_cbcs_1_9_submit_sse_no_aesni.o obj/mb_mgr_aes128_cbcs_1_9_flush_sse_no_aesni.o obj/crc32_refl_by8_sse_no_aesni.o obj/crc32_by8_sse_no_aesni.o obj/crc32_sctp_sse_no_aesni.o obj/crc32_lte_sse_no_aesni.o obj/crc32_fp_sse_no_aesni.o obj/crc32_iuup_sse_no_a
 esni.o obj/crc32_wimax_sse_no_aesni.o obj/gc!
 m128_sse_no_aesni.o obj/gcm192_sse_no_aesni.o obj/gcm256_sse_no_aesni.o obj/aes128_cbc_dec_by4_sse.o obj/aes128_cbc_dec_by8_sse.o obj/aes192_cbc_dec_by4_sse.o obj/aes192_cbc_dec_by8_sse.o obj/aes256_cbc_dec_by4_sse.o obj/aes256_cbc_dec_by8_sse.o obj/aes_cbc_enc_128_x4.o obj/aes_cbc_enc_192_x4.o obj/aes_cbc_enc_256_x4.o obj/aes_cbc_enc_128_x8_sse.o obj/aes_cbc_enc_192_x8_sse.o obj/aes_cbc_enc_256_x8_sse.o obj/pon_sse.o obj/aes128_cntr_by8_sse.o obj/aes192_cntr_by8_sse.o obj/aes256_cntr_by8_sse.o obj/aes_ecb_by4_sse.o obj/aes128_cntr_ccm_by8_sse.o obj/aes256_cntr_ccm_by8_sse.o obj/aes_cfb_sse.o obj/aes128_cbc_mac_x4.o obj/aes256_cbc_mac_x4.o obj/aes128_cbc_mac_x8_sse.o obj/aes256_cbc_mac_x8_sse.o obj/aes_xcbc_mac_128_x4.o obj/md5_x4x2_sse.o obj/sha1_mult_sse.o obj/sha1_one_block_sse.o obj/sha224_one_block_sse.o obj/sha256_one_block_sse.o obj/sha384_one_block_sse.o obj/sha512_one_block_sse.o obj/sha512_x2_sse.o obj/sha_256_mult_sse.o obj/sha1_ni_x2_sse.o obj/sha256_ni_x2_sse.o obj/zuc_
 sse.o obj/zuc_sse_gfni.o obj/mb_mgr_aes_flush_sse.o obj/mb_mgr_aes_submit_sse.o obj/mb_mgr_aes192_flush_sse.o obj/mb_mgr_aes192_submit_sse.o obj/mb_mgr_aes256_flush_sse.o obj/mb_mgr_aes256_submit_sse.o obj/mb_mgr_aes_flush_sse_x8.o obj/mb_mgr_aes_submit_sse_x8.o obj/mb_mgr_aes192_flush_sse_x8.o obj/mb_mgr_aes192_submit_sse_x8.o obj/mb_mgr_aes256_flush_sse_x8.o obj/mb_mgr_aes256_submit_sse_x8.o obj/mb_mgr_aes_cmac_submit_flush_sse.o obj/mb_mgr_aes256_cmac_submit_flush_sse.o obj/mb_mgr_aes_cmac_submit_flush_sse_x8.o obj/mb_mgr_aes256_cmac_submit_flush_sse_x8.o obj/mb_mgr_aes_ccm_auth_submit_flush_sse.o obj/mb_mgr_aes_ccm_auth_submit_flush_sse_x8.o obj/mb_mgr_aes256_ccm_auth_submit_flush_sse.o obj/mb_mgr_aes256_ccm_auth_submit_flush_sse_x8.o obj/mb_mgr_aes_xcbc_flush_sse.o obj/mb_mgr_aes_xcbc_submit_sse.o obj/mb_mgr_hmac_md5_flush_sse.o obj/mb_mgr_hmac_md5_submit_sse.o obj/mb_mgr_hmac_flush_sse.o obj/mb_mgr_hmac_submit_sse.o obj/mb_mgr_hmac_sha_224_flush_sse.o obj/mb_mgr_hmac_sha_224_s
 ubmit_sse.o obj/mb_mgr_hmac_sha_256_flush_ss!
 e.o obj/m!
 b_mgr_hmac_sha_256_submit_sse.o obj/mb_mgr_hmac_sha_384_flush_sse.o obj/mb_mgr_hmac_sha_384_submit_sse.o obj/mb_mgr_hmac_sha_512_flush_sse.o obj/mb_mgr_hmac_sha_512_submit_sse.o obj/mb_mgr_hmac_flush_ni_sse.o obj/mb_mgr_hmac_submit_ni_sse.o obj/mb_mgr_hmac_sha_224_flush_ni_sse.o obj/mb_mgr_hmac_sha_224_submit_ni_sse.o obj/mb_mgr_hmac_sha_256_flush_ni_sse.o obj/mb_mgr_hmac_sha_256_submit_ni_sse.o obj/mb_mgr_zuc_submit_flush_sse.o obj/mb_mgr_zuc_submit_flush_gfni_sse.o obj/ethernet_fcs_sse.o obj/crc16_x25_sse.o obj/crc32_sctp_sse.o obj/aes_cbcs_1_9_enc_128_x4.o obj/aes128_cbcs_1_9_dec_by4_sse.o obj/crc32_refl_by8_sse.o obj/crc32_by8_sse.o obj/crc32_lte_sse.o obj/crc32_fp_sse.o obj/crc32_iuup_sse.o obj/crc32_wimax_sse.o obj/gcm128_sse.o obj/gcm192_sse.o obj/gcm256_sse.o obj/aes_cbc_enc_128_x8.o obj/aes_cbc_enc_192_x8.o obj/aes_cbc_enc_256_x8.o obj/aes128_cbc_dec_by8_avx.o obj/aes192_cbc_dec_by8_avx.o obj/aes256_cbc_dec_by8_avx.o obj/pon_avx.o obj/aes128_cntr_by8_avx.o obj/aes192_cntr_b
 y8_avx.o obj/aes256_cntr_by8_avx.o obj/aes128_cntr_ccm_by8_avx.o obj/aes256_cntr_ccm_by8_avx.o obj/aes_ecb_by4_avx.o obj/aes_cfb_avx.o obj/aes128_cbc_mac_x8.o obj/aes256_cbc_mac_x8.o obj/aes_xcbc_mac_128_x8.o obj/md5_x4x2_avx.o obj/sha1_mult_avx.o obj/sha1_one_block_avx.o obj/sha224_one_block_avx.o obj/sha256_one_block_avx.o obj/sha_256_mult_avx.o obj/sha384_one_block_avx.o obj/sha512_one_block_avx.o obj/sha512_x2_avx.o obj/zuc_avx.o obj/mb_mgr_aes_flush_avx.o obj/mb_mgr_aes_submit_avx.o obj/mb_mgr_aes192_flush_avx.o obj/mb_mgr_aes192_submit_avx.o obj/mb_mgr_aes256_flush_avx.o obj/mb_mgr_aes256_submit_avx.o obj/mb_mgr_aes_cmac_submit_flush_avx.o obj/mb_mgr_aes256_cmac_submit_flush_avx.o obj/mb_mgr_aes_ccm_auth_submit_flush_avx.o obj/mb_mgr_aes256_ccm_auth_submit_flush_avx.o obj/mb_mgr_aes_xcbc_flush_avx.o obj/mb_mgr_aes_xcbc_submit_avx.o obj/mb_mgr_hmac_md5_flush_avx.o obj/mb_mgr_hmac_md5_submit_avx.o obj/mb_mgr_hmac_flush_avx.o obj/mb_mgr_hmac_submit_avx.o obj/mb_mgr_hmac_sha_224_f
 lush_avx.o obj/mb_mgr_hmac_sha_224_submit_av!
 x.o obj/m!
 b_mgr_hmac_sha_256_flush_avx.o obj/mb_mgr_hmac_sha_256_submit_avx.o obj/mb_mgr_hmac_sha_384_flush_avx.o obj/mb_mgr_hmac_sha_384_submit_avx.o obj/mb_mgr_hmac_sha_512_flush_avx.o obj/mb_mgr_hmac_sha_512_submit_avx.o obj/mb_mgr_zuc_submit_flush_avx.o obj/ethernet_fcs_avx.o obj/crc16_x25_avx.o obj/aes_cbcs_1_9_enc_128_x8.o obj/aes128_cbcs_1_9_dec_by8_avx.o obj/mb_mgr_aes128_cbcs_1_9_submit_avx.o obj/mb_mgr_aes128_cbcs_1_9_flush_avx.o obj/crc32_refl_by8_avx.o obj/crc32_by8_avx.o obj/crc32_sctp_avx.o obj/crc32_lte_avx.o obj/crc32_fp_avx.o obj/crc32_iuup_avx.o obj/crc32_wimax_avx.o obj/gcm128_avx_gen2.o obj/gcm192_avx_gen2.o obj/gcm256_avx_gen2.o obj/md5_x8x2_avx2.o obj/sha1_x8_avx2.o obj/sha256_oct_avx2.o obj/sha512_x4_avx2.o obj/zuc_avx2.o obj/mb_mgr_hmac_md5_flush_avx2.o obj/mb_mgr_hmac_md5_submit_avx2.o obj/mb_mgr_hmac_flush_avx2.o obj/mb_mgr_hmac_submit_avx2.o obj/mb_mgr_hmac_sha_224_flush_avx2.o obj/mb_mgr_hmac_sha_224_submit_avx2.o obj/mb_mgr_hmac_sha_256_flush_avx2.o obj/mb_mgr_hma
 c_sha_256_submit_avx2.o obj/mb_mgr_hmac_sha_384_flush_avx2.o obj/mb_mgr_hmac_sha_384_submit_avx2.o obj/mb_mgr_hmac_sha_512_flush_avx2.o obj/mb_mgr_hmac_sha_512_submit_avx2.o obj/mb_mgr_zuc_submit_flush_avx2.o obj/gcm128_avx_gen4.o obj/gcm192_avx_gen4.o obj/gcm256_avx_gen4.o obj/sha1_x16_avx512.o obj/sha256_x16_avx512.o obj/sha512_x8_avx512.o obj/des_x16_avx512.o obj/cntr_vaes_avx512.o obj/cntr_ccm_vaes_avx512.o obj/aes_cbc_dec_vaes_avx512.o obj/aes_cbc_enc_vaes_avx512.o obj/aes_cbcs_enc_vaes_avx512.o obj/aes_cbcs_dec_vaes_avx512.o obj/aes_docsis_dec_avx512.o obj/aes_docsis_enc_avx512.o obj/aes_docsis_dec_vaes_avx512.o obj/aes_docsis_enc_vaes_avx512.o obj/zuc_avx512.o obj/mb_mgr_aes_submit_avx512.o obj/mb_mgr_aes_flush_avx512.o obj/mb_mgr_aes192_submit_avx512.o obj/mb_mgr_aes192_flush_avx512.o obj/mb_mgr_aes256_submit_avx512.o obj/mb_mgr_aes256_flush_avx512.o obj/mb_mgr_hmac_flush_avx512.o obj/mb_mgr_hmac_submit_avx512.o obj/mb_mgr_hmac_sha_224_flush_avx512.o obj/mb_mgr_hmac_sha_224_
 submit_avx512.o obj/mb_mgr_hmac_sha_256_flus!
 h_avx512.!
 o obj/mb_mgr_hmac_sha_256_submit_avx512.o obj/mb_mgr_hmac_sha_384_flush_avx512.o obj/mb_mgr_hmac_sha_384_submit_avx512.o obj/mb_mgr_hmac_sha_512_flush_avx512.o obj/mb_mgr_hmac_sha_512_submit_avx512.o obj/mb_mgr_des_avx512.o obj/mb_mgr_aes_cmac_submit_flush_vaes_avx512.o obj/mb_mgr_aes256_cmac_submit_flush_vaes_avx512.o obj/mb_mgr_aes_ccm_auth_submit_flush_vaes_avx512.o obj/mb_mgr_aes256_ccm_auth_submit_flush_vaes_avx512.o obj/mb_mgr_aes_xcbc_submit_flush_vaes_avx512.o obj/mb_mgr_zuc_submit_flush_avx512.o obj/mb_mgr_zuc_submit_flush_gfni_avx512.o obj/chacha20_avx512.o obj/ethernet_fcs_avx512.o obj/crc16_x25_avx512.o obj/crc32_refl_by16_vclmul_avx512.o obj/crc32_by16_vclmul_avx512.o obj/mb_mgr_aes_cbcs_1_9_submit_avx512.o obj/mb_mgr_aes_cbcs_1_9_flush_avx512.o obj/crc32_sctp_avx512.o obj/crc32_lte_avx512.o obj/crc32_fp_avx512.o obj/crc32_iuup_avx512.o obj/crc32_wimax_avx512.o obj/gcm128_vaes_avx512.o obj/gcm192_vaes_avx512.o obj/gcm256_vaes_avx512.o obj/gcm128_avx512.o obj/gcm192_avx5
 12.o obj/gcm256_avx512.o obj/mb_mgr_avx.o obj/mb_mgr_avx2.o obj/mb_mgr_avx512.o obj/mb_mgr_sse.o obj/mb_mgr_sse_no_aesni.o obj/alloc.o obj/aes_xcbc_expand_key.o obj/md5_one_block.o obj/sha_one_block.o obj/des_key.o obj/des_basic.o obj/chacha20.o obj/version.o obj/cpu_feature.o obj/aesni_emu.o obj/kasumi_avx.o obj/kasumi_iv.o obj/kasumi_sse.o obj/zuc_sse_top.o obj/zuc_sse_no_aesni_top.o obj/zuc_avx_top.o obj/zuc_avx2_top.o obj/zuc_avx512_top.o obj/zuc_iv.o obj/snow3g_sse.o obj/snow3g_sse_no_aesni.o obj/snow3g_avx.o obj/snow3g_avx2.o obj/snow3g_tables.o obj/snow3g_iv.o obj/mb_mgr_auto.o obj/error.o obj/gcm.o -lc
ld: error: duplicate symbol: imb_errno

            defined at mb_mgr_avx.c
                       obj/mb_mgr_avx.o:(imb_errno)
            defined at mb_mgr_avx2.c
                       obj/mb_mgr_avx2.o:(.bss+0x0)


ld: error: duplicate symbol: imb_errno

            defined at mb_mgr_avx.c
                       obj/mb_mgr_avx.o:(imb_errno)
            defined at mb_mgr_avx512.c
                       obj/mb_mgr_avx512.o:(.bss+0x0)


ld: error: duplicate symbol: imb_errno

            defined at mb_mgr_avx.c
                       obj/mb_mgr_avx.o:(imb_errno)
            defined at mb_mgr_sse.c
                       obj/mb_mgr_sse.o:(.bss+0x0)


ld: error: duplicate symbol: imb_errno

            defined at mb_mgr_avx.c
                       obj/mb_mgr_avx.o:(imb_errno)
            defined at mb_mgr_sse_no_aesni.c
                       obj/mb_mgr_sse_no_aesni.o:(.bss+0x0)


ld: error: duplicate symbol: imb_errno

            defined at mb_mgr_avx.c
                       obj/mb_mgr_avx.o:(imb_errno)
            defined at alloc.c
                       obj/alloc.o:(.bss+0x0)


ld: error: duplicate symbol: imb_errno

            defined at mb_mgr_avx.c
                       obj/mb_mgr_avx.o:(imb_errno)
            defined at mb_mgr_auto.c
                       obj/mb_mgr_auto.o:(.bss+0x0)


ld: error: duplicate symbol: imb_errno

            defined at mb_mgr_avx.c
                       obj/mb_mgr_avx.o:(imb_errno)
            defined at error.c
                       obj/error.o:(.bss+0x0)

cc: error: linker command failed with exit code 1 (use -v to see invocation)
gmake[2]: *** [Makefile:600: libIPSec_MB.so.0.54.1-dev] Error 1
gmake[2]: Leaving directory '/wrkdirs/usr/ports/security/intel-ipsec-mb/work/intel-ipsec-mb-0.54.1-dev/lib'
gmake[1]: *** [Makefile:31: all] Error 2
gmake[1]: Leaving directory '/wrkdirs/usr/ports/security/intel-ipsec-mb/work/intel-ipsec-mb-0.54.1-dev'
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

@pablodelara @tkanteck

Porting build system to CMake

ITNOA

Hi,

I think it is very good choice to port build system to popular cross platform build system who call is CMake, cause to remove platform specific build system and increasing maintainability and usage.

Possible executable stack in shared library

When packaging the library for Debian/Ubuntu the lintian checker reports that the shared library stack is executable. The lintian warning is: shlib-with-executable-stack as follows:

"The listed shared library declares the stack as executable.

Executable stack is usually an error as it is only needed if the code contains GCC trampolines or similar constructs which uses code on the stack. One possible source for false positives are object files built from assembler files which don't define a proper .note.GNU-stack section.

To see the permissions on the stack, run readelf -l on the shared library and look for the program header of type GNU_STACK. In the flag column, there should not be an E flag set."

I was wondering if this can be investigated and fixed

IMB_SNOW3G_F8_4_BUFFER() Direct API failing on Windows with VS2017+

IMB_SNOW3G_F8_4_BUFFER() direct API tests fail on Windows when compiled using Microsoft Visual Studio 2017 or later with compiler optimizations enabled. Tests pass when compiled without optimizations.

Affected interfaces:

  • AVX
  • AVX2
  • AVX512

This issue is currently being investigated.

Example ipsec_MB_testapp output:



Testing IMB_SNOW3G_F8_4_BUFFER: (Direct API):

IMB_SNOW3G_F8_4_BUFFER(Enc) vector:0 buffer:0

Actual::

0xA0 0xD3 0x82 0xB5 0x96 0x64 0xE2 0xE2 0x0D 0x2D 0x5E 0xDF 0xCC 0xE8 0x6D 0xC3 

0x4B 0x80 0xB4 0xF4 0xCC 0x11 0x41 0x93 0xE1 0x88 0xAA 0xEB 0x41 0x7C 0xAA 0x34 





Expected::

0x5D 0x5B 0xFE 0x75 0xEB 0x04 0xF6 0x8C 0xE0 0xA1 0x23 0x77 0xEA 0x00 0xB3 0x7D 

0x47 0xC6 0xA0 0xBA 0x06 0x30 0x91 0x55 0x08 0x6A 0x85 0x9C 0x43 0x41 0xB3 0x7C 







validate_snow3g_f8_4_blocks:: FAIL

Testing IMB_SNOW3G_F8_8_BUFFER: (Direct API):

IMB_SNOW3G_F8_8_BUFFER(Enc) vector:0 buffer:0

Actual::

0xA0 0xD3 0x82 0xB5 0x96 0x64 0xE2 0xE2 0x0D 0x2D 0x5E 0xDF 0xCC 0xE8 0x6D 0xC3 

0x4B 0x80 0xB4 0xF4 0xCC 0x11 0x41 0x93 0xE1 0x88 0xAA 0xEB 0x41 0x7C 0xAA 0x34 





Expected::

0x5D 0x5B 0xFE 0x75 0xEB 0x04 0xF6 0x8C 0xE0 0xA1 0x23 0x77 0xEA 0x00 0xB3 0x7D 

0x47 0xC6 0xA0 0xBA 0x06 0x30 0x91 0x55 0x08 0x6A 0x85 0x9C 0x43 0x41 0xB3 0x7C 







validate_snow3g_f8_8_blocks:: FAIL

Testing IMB_SNOW3G_F8_8_BUFFER_MULTIKEY: (Direct API):

................

Testing IMB_SNOW3G_F8_N_BUFFER: (Direct API):

......IMB_SNOW3G_F8_N_BUFFER(Enc) , vector:3

Actual::

0xA0 0xD3 0x82 0xB5 0x96 0x64 0xE2 0xE2 0x0D 0x2D 0x5E 0xDF 0xCC 0xE8 0x6D 0xC3 

0x4B 0x80 0xB4 0xF4 0xCC 0x11 0x41 0x93 0xE1 0x88 0xAA 0xEB 0x41 0x7C 0xAA 0x34 





Expected::

0x5D 0x5B 0xFE 0x75 0xEB 0x04 0xF6 0x8C 0xE0 0xA1 0x23 0x77 0xEA 0x00 0xB3 0x7D 

0x47 0xC6 0xA0 0xBA 0x06 0x30 0x91 0x55 0x08 0x6A 0x85 0x9C 0x43 0x41 0xB3 0x7C 







validate_snow3g_f8_n_blocks:: FAIL


VAES DOCSIS encryption combined with CRC32 flush problem (13 or more jobs)

Description:
Wrong CRC value is computed when 13 or more jobs are queued in OOO manager of different sizes. This problem occurs during flash operation. Problem seen when smallest job (out of 13) is 62 bytes or 142 bytes.
Some calculations for 62 byte case:

  • 62 - 12 => 50 bytes to cipher (3 x AES block + 2 bytes)
  • 62 - 4 => 58 bytes to authenticate/CRC in two chunks: 12 bytes + 46 bytes

Detected through:
Development version of x-validation tool with imix support.

Uninitialized pointer reads on arrays pSrcData and pDstData

Potential free's of uninitialized array elements in zuc_test(), test/zuc_test.c

Static analysis is reporting that accesses to arrays pSrcData and pDstData may be referencing elements that have not been initialized on the freePtrArray calls:

187int zuc_test(struct IMB_MGR *mb_mgr)
188{
189
190        const uint32_t numBuffs[] = {4, 8, 9, 16, 17};
191        uint32_t i;
192        uint32_t status = PASS_STATUS;
193        uint8_t *pKeys[MAXBUFS];
194        uint8_t *pIV[MAXBUFS];
195        uint8_t *pSrcData[MAXBUFS];
   1. var_decl: Declaring variable pDstData without initializer.

196        uint8_t *pDstData[MAXBUFS];
197
198        printf("Running Functional Tests\n");
199        fflush(stdout);
200
201        /*Create test data buffers + populate with random data*/
   2. Condition createData(pSrcData, 17), taking false branch.

202        if (createData(pSrcData, MAXBUFS)) {
203                printf("createData() error\n");
204                return FAIL_STATUS;
205        }
   3. Condition createData(pDstData, 17), taking false branch.

206        if (createData(pDstData, MAXBUFS)) {
207                printf("createData() error\n");
208                return FAIL_STATUS;
209        }
210
211        /*Create random keys and vectors*/
   4. Condition createKeyVecData(16, pKeys, 16, pIV, 17), taking true branch.

212        if (createKeyVecData(ZUC_KEY_LEN_IN_BYTES, pKeys, ZUC_IV_LEN_IN_BYTES,
213                             pIV, MAXBUFS)) {
214                printf("createKeyVecData() error\n");
   CID 99600: Uninitialized pointer read (UNINIT)

215                freePtrArray(pSrcData, MAXBUFS);
   CID 99597 (#1 of 1): Uninitialized scalar variable (UNINIT)5. uninit_use_in_call: Using uninitialized element of array pDstData when calling freePtrArray.

216                freePtrArray(pDstData, MAXBUFS);
217                return FAIL_STATUS;
218        }

I suspect memset'ing these arrays at the start of the function is a simple fix.

building intel-ipsec-mb on Debian sid with NASM 2.14-1 produces negative-rep count warnings

Building with NASM 2.14-1 throws up warnings (see far below in build output):

king@debian:~/intel-ipsec-mb$ dpkg -l | grep nasm
ii  nasm                             2.14-1                       amd64        General-purpose x86 assembler
king@debian:~/intel-ipsec-mb$ make
nasm -o obj/aes128_cbc_dec_by4_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes128_cbc_dec_by4_sse.asm
nasm -o obj/aes128_cbc_dec_by4_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes128_cbc_dec_by4_sse_no_aesni.asm
nasm -o obj/aes128_cbc_dec_by8_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes128_cbc_dec_by8_avx.asm
nasm -o obj/aes128_cntr_by4_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes128_cntr_by4_sse.asm
nasm -o obj/aes128_cntr_by4_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes128_cntr_by4_sse_no_aesni.asm
nasm -o obj/aes128_cntr_by8_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes128_cntr_by8_avx.asm
nasm -o obj/aes128_ecbenc_x3.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ aes128_ecbenc_x3.asm
nasm -o obj/aes192_cbc_dec_by4_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes192_cbc_dec_by4_sse.asm
nasm -o obj/aes192_cbc_dec_by4_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes192_cbc_dec_by4_sse_no_aesni.asm
nasm -o obj/aes192_cbc_dec_by8_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes192_cbc_dec_by8_avx.asm
nasm -o obj/aes192_cntr_by4_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes192_cntr_by4_sse.asm
nasm -o obj/aes192_cntr_by4_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes192_cntr_by4_sse_no_aesni.asm
nasm -o obj/aes192_cntr_by8_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes192_cntr_by8_avx.asm
nasm -o obj/aes256_cbc_dec_by4_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes256_cbc_dec_by4_sse.asm
nasm -o obj/aes256_cbc_dec_by4_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes256_cbc_dec_by4_sse_no_aesni.asm
nasm -o obj/aes256_cbc_dec_by8_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes256_cbc_dec_by8_avx.asm
nasm -o obj/aes256_cntr_by4_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes256_cntr_by4_sse.asm
nasm -o obj/aes256_cntr_by4_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes256_cntr_by4_sse_no_aesni.asm
nasm -o obj/aes256_cntr_by8_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes256_cntr_by8_avx.asm
nasm -o obj/aes_cfb_128_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes_cfb_128_sse.asm
nasm -o obj/aes_cfb_128_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes_cfb_128_sse_no_aesni.asm
nasm -o obj/aes_cfb_128_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes_cfb_128_avx.asm
nasm -o obj/aes128_cbc_mac_x4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes128_cbc_mac_x4.asm
nasm -o obj/aes128_cbc_mac_x4_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes128_cbc_mac_x4_no_aesni.asm
nasm -o obj/aes128_cbc_mac_x8.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes128_cbc_mac_x8.asm
nasm -o obj/aes_cbc_enc_128_x4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes_cbc_enc_128_x4.asm
nasm -o obj/aes_cbc_enc_128_x4_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes_cbc_enc_128_x4_no_aesni.asm
nasm -o obj/aes_cbc_enc_128_x8.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes_cbc_enc_128_x8.asm
nasm -o obj/aes_cbc_enc_192_x4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes_cbc_enc_192_x4.asm
nasm -o obj/aes_cbc_enc_192_x4_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes_cbc_enc_192_x4_no_aesni.asm
nasm -o obj/aes_cbc_enc_192_x8.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes_cbc_enc_192_x8.asm
nasm -o obj/aes_cbc_enc_256_x4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes_cbc_enc_256_x4.asm
nasm -o obj/aes_cbc_enc_256_x4_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes_cbc_enc_256_x4_no_aesni.asm
nasm -o obj/aes_cbc_enc_256_x8.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes_cbc_enc_256_x8.asm
nasm -o obj/aes_keyexp_128.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ aes_keyexp_128.asm
nasm -o obj/aes_keyexp_192.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ aes_keyexp_192.asm
nasm -o obj/aes_keyexp_256.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ aes_keyexp_256.asm
nasm -o obj/aes_xcbc_mac_128_x4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/aes_xcbc_mac_128_x4.asm
nasm -o obj/aes_xcbc_mac_128_x4_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/aes_xcbc_mac_128_x4_no_aesni.asm
nasm -o obj/aes_xcbc_mac_128_x8.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/aes_xcbc_mac_128_x8.asm
nasm -o obj/aes_cmac_subkey_gen.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ aes_cmac_subkey_gen.asm
nasm -o obj/mb_mgr_aes192_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_aes192_flush_avx.asm
nasm -o obj/mb_mgr_aes192_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_aes192_flush_sse.asm
nasm -o obj/mb_mgr_aes192_flush_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/mb_mgr_aes192_flush_sse_no_aesni.asm
nasm -o obj/mb_mgr_aes192_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_aes192_submit_avx.asm
nasm -o obj/mb_mgr_aes192_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_aes192_submit_sse.asm
nasm -o obj/mb_mgr_aes192_submit_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/mb_mgr_aes192_submit_sse_no_aesni.asm
nasm -o obj/mb_mgr_aes256_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_aes256_flush_avx.asm
nasm -o obj/mb_mgr_aes256_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_aes256_flush_sse.asm
nasm -o obj/mb_mgr_aes256_flush_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/mb_mgr_aes256_flush_sse_no_aesni.asm
nasm -o obj/mb_mgr_aes256_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_aes256_submit_avx.asm
nasm -o obj/mb_mgr_aes256_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_aes256_submit_sse.asm
nasm -o obj/mb_mgr_aes256_submit_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/mb_mgr_aes256_submit_sse_no_aesni.asm
nasm -o obj/mb_mgr_aes_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_aes_flush_avx.asm
nasm -o obj/mb_mgr_aes_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_aes_flush_sse.asm
nasm -o obj/mb_mgr_aes_flush_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/mb_mgr_aes_flush_sse_no_aesni.asm
nasm -o obj/mb_mgr_aes_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_aes_submit_avx.asm
nasm -o obj/mb_mgr_aes_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_aes_submit_sse.asm
nasm -o obj/mb_mgr_aes_submit_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/mb_mgr_aes_submit_sse_no_aesni.asm
nasm -o obj/mb_mgr_aes_cmac_submit_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_aes_cmac_submit_flush_sse.asm
nasm -o obj/mb_mgr_aes_cmac_submit_flush_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/mb_mgr_aes_cmac_submit_flush_sse_no_aesni.asm
nasm -o obj/mb_mgr_aes_cmac_submit_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_aes_cmac_submit_flush_avx.asm
nasm -o obj/mb_mgr_aes_xcbc_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_aes_xcbc_flush_avx.asm
nasm -o obj/mb_mgr_aes_xcbc_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_aes_xcbc_flush_sse.asm
nasm -o obj/mb_mgr_aes_xcbc_flush_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/mb_mgr_aes_xcbc_flush_sse_no_aesni.asm
nasm -o obj/mb_mgr_aes_xcbc_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_aes_xcbc_submit_avx.asm
nasm -o obj/mb_mgr_aes_xcbc_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_aes_xcbc_submit_sse.asm
nasm -o obj/mb_mgr_aes_xcbc_submit_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/mb_mgr_aes_xcbc_submit_sse_no_aesni.asm
nasm -o obj/mb_mgr_hmac_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_flush_avx.asm
nasm -o obj/mb_mgr_hmac_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_flush_avx2.asm
nasm -o obj/mb_mgr_hmac_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_flush_sse.asm
nasm -o obj/mb_mgr_hmac_flush_ni_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_flush_ni_sse.asm
nasm -o obj/mb_mgr_hmac_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_flush_avx512.asm
nasm -o obj/mb_mgr_hmac_md5_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_md5_flush_avx.asm
nasm -o obj/mb_mgr_hmac_md5_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_md5_flush_avx2.asm
nasm -o obj/mb_mgr_hmac_md5_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_md5_flush_sse.asm
nasm -o obj/mb_mgr_hmac_md5_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_md5_submit_avx.asm
nasm -o obj/mb_mgr_hmac_md5_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_md5_submit_avx2.asm
nasm -o obj/mb_mgr_hmac_md5_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_md5_submit_sse.asm
nasm -o obj/mb_mgr_hmac_sha_224_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_sha_224_flush_avx.asm
nasm -o obj/mb_mgr_hmac_sha_224_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_sha_224_flush_avx2.asm
nasm -o obj/mb_mgr_hmac_sha_224_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_sha_224_flush_avx512.asm
nasm -o obj/mb_mgr_hmac_sha_224_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_224_flush_sse.asm
nasm -o obj/mb_mgr_hmac_sha_224_flush_ni_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_224_flush_ni_sse.asm
nasm -o obj/mb_mgr_hmac_sha_224_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_sha_224_submit_avx.asm
nasm -o obj/mb_mgr_hmac_sha_224_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_sha_224_submit_avx2.asm
nasm -o obj/mb_mgr_hmac_sha_224_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_sha_224_submit_avx512.asm
nasm -o obj/mb_mgr_hmac_sha_224_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_224_submit_sse.asm
nasm -o obj/mb_mgr_hmac_sha_224_submit_ni_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_224_submit_ni_sse.asm
nasm -o obj/mb_mgr_hmac_sha_256_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_sha_256_flush_avx.asm
nasm -o obj/mb_mgr_hmac_sha_256_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_sha_256_flush_avx2.asm
nasm -o obj/mb_mgr_hmac_sha_256_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_256_flush_sse.asm
nasm -o obj/mb_mgr_hmac_sha_256_flush_ni_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_256_flush_ni_sse.asm
nasm -o obj/mb_mgr_hmac_sha_256_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_sha_256_flush_avx512.asm
nasm -o obj/mb_mgr_hmac_sha_256_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_sha_256_submit_avx.asm
nasm -o obj/mb_mgr_hmac_sha_256_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_sha_256_submit_avx2.asm
nasm -o obj/mb_mgr_hmac_sha_256_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_256_submit_sse.asm
nasm -o obj/mb_mgr_hmac_sha_256_submit_ni_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_256_submit_ni_sse.asm
nasm -o obj/mb_mgr_hmac_sha_256_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_sha_256_submit_avx512.asm
nasm -o obj/mb_mgr_hmac_sha_384_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_sha_384_flush_avx.asm
nasm -o obj/mb_mgr_hmac_sha_384_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_sha_384_flush_avx2.asm
nasm -o obj/mb_mgr_hmac_sha_384_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_sha_384_flush_avx512.asm
nasm -o obj/mb_mgr_hmac_sha_384_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_384_flush_sse.asm
nasm -o obj/mb_mgr_hmac_sha_384_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_sha_384_submit_avx.asm
nasm -o obj/mb_mgr_hmac_sha_384_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_sha_384_submit_avx2.asm
nasm -o obj/mb_mgr_hmac_sha_384_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_sha_384_submit_avx512.asm
nasm -o obj/mb_mgr_hmac_sha_384_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_384_submit_sse.asm
nasm -o obj/mb_mgr_hmac_sha_512_flush_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_sha_512_flush_avx.asm
nasm -o obj/mb_mgr_hmac_sha_512_flush_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_sha_512_flush_avx2.asm
nasm -o obj/mb_mgr_hmac_sha_512_flush_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_sha_512_flush_avx512.asm
nasm -o obj/mb_mgr_hmac_sha_512_flush_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_512_flush_sse.asm
nasm -o obj/mb_mgr_hmac_sha_512_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_sha_512_submit_avx.asm
nasm -o obj/mb_mgr_hmac_sha_512_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_sha_512_submit_avx2.asm
nasm -o obj/mb_mgr_hmac_sha_512_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_sha_512_submit_avx512.asm
nasm -o obj/mb_mgr_hmac_sha_512_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_sha_512_submit_sse.asm
nasm -o obj/mb_mgr_hmac_submit_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/mb_mgr_hmac_submit_avx.asm
nasm -o obj/mb_mgr_hmac_submit_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/mb_mgr_hmac_submit_avx2.asm
nasm -o obj/mb_mgr_hmac_submit_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_submit_sse.asm
nasm -o obj/mb_mgr_hmac_submit_ni_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/mb_mgr_hmac_submit_ni_sse.asm
nasm -o obj/mb_mgr_hmac_submit_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_hmac_submit_avx512.asm
nasm -o obj/mb_mgr_des_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/mb_mgr_des_avx512.asm
nasm -o obj/md5_x4x2_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/md5_x4x2_avx.asm
nasm -o obj/md5_x4x2_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/md5_x4x2_sse.asm
nasm -o obj/md5_x8x2_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/md5_x8x2_avx2.asm
nasm -o obj/save_xmms.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ include/save_xmms.asm
nasm -o obj/sha1_mult_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/sha1_mult_avx.asm
nasm -o obj/sha1_mult_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha1_mult_sse.asm
nasm -o obj/sha1_ni_x2_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha1_ni_x2_sse.asm
nasm -o obj/sha1_one_block_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/sha1_one_block_avx.asm
nasm -o obj/sha1_one_block_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha1_one_block_sse.asm
nasm -o obj/sha1_x8_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/sha1_x8_avx2.asm
nasm -o obj/sha1_x16_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/sha1_x16_avx512.asm
nasm -o obj/sha224_one_block_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/sha224_one_block_avx.asm
nasm -o obj/sha224_one_block_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha224_one_block_sse.asm
nasm -o obj/sha256_oct_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/sha256_oct_avx2.asm
nasm -o obj/sha256_one_block_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/sha256_one_block_avx.asm
nasm -o obj/sha256_one_block_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha256_one_block_sse.asm
nasm -o obj/sha256_ni_x2_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha256_ni_x2_sse.asm
nasm -o obj/sha256_x16_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/sha256_x16_avx512.asm
nasm -o obj/sha384_one_block_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/sha384_one_block_avx.asm
nasm -o obj/sha384_one_block_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha384_one_block_sse.asm
nasm -o obj/sha512_one_block_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/sha512_one_block_avx.asm
nasm -o obj/sha512_one_block_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha512_one_block_sse.asm
nasm -o obj/sha512_x2_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/sha512_x2_avx.asm
nasm -o obj/sha512_x2_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha512_x2_sse.asm
nasm -o obj/sha512_x4_avx2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/sha512_x4_avx2.asm
nasm -o obj/sha512_x8_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/sha512_x8_avx512.asm
nasm -o obj/sha_256_mult_avx.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/sha_256_mult_avx.asm
nasm -o obj/sha_256_mult_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/sha_256_mult_sse.asm
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC aes_xcbc_expand_key.c -o obj/aes_xcbc_expand_key.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC alloc.c -o obj/alloc.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC avx/mb_mgr_avx.c -o obj/mb_mgr_avx.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC avx2/mb_mgr_avx2.c -o obj/mb_mgr_avx2.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC avx512/mb_mgr_avx512.c -o obj/mb_mgr_avx512.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC sse/mb_mgr_sse.c -o obj/mb_mgr_sse.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC -O1 no-aesni/mb_mgr_sse_no_aesni.c -o obj/mb_mgr_sse_no_aesni.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC md5_one_block.c -o obj/md5_one_block.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC sha_one_block.c -o obj/sha_one_block.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC des_key.c -o obj/des_key.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC des_basic.c -o obj/des_basic.o
nasm -o obj/des_x16_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/des_x16_avx512.asm
nasm -o obj/const.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ const.asm
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC version.c -o obj/version.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC cpu_feature.c -o obj/cpu_feature.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC -O1 no-aesni/aesni_emu.c -o obj/aesni_emu.o
cc -c -DLINUX  -I include -I . -I no-aesni -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fstack-protector -D_FORTIFY_SOURCE=2 -O3 -fPIC gcm.c -o obj/gcm.o
nasm -o obj/gcm128_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/gcm128_sse.asm
nasm -o obj/gcm192_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/gcm192_sse.asm
nasm -o obj/gcm256_sse.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ sse/gcm256_sse.asm
nasm -o obj/gcm128_avx_gen2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/gcm128_avx_gen2.asm
nasm -o obj/gcm192_avx_gen2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/gcm192_avx_gen2.asm
nasm -o obj/gcm256_avx_gen2.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx/gcm256_avx_gen2.asm
nasm -o obj/gcm128_avx_gen4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/gcm128_avx_gen4.asm
avx2/gcm_avx_gen4.asm:3243: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2841: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2750: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:1499: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3243: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3264: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2841: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2750: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:1499: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3264: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3365: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3393: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
nasm -o obj/gcm192_avx_gen4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/gcm192_avx_gen4.asm
avx2/gcm_avx_gen4.asm:3243: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2841: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2750: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:1499: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3243: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3264: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2841: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2750: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:1499: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3264: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3365: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3393: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
nasm -o obj/gcm256_avx_gen4.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx2/gcm256_avx_gen4.asm
avx2/gcm_avx_gen4.asm:3243: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2841: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2750: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:1499: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3243: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3264: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2841: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2750: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:1499: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3264: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3365: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:3393: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx2/gcm_avx_gen4.asm:2911: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx2/gcm_avx_gen4.asm:815: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
nasm -o obj/gcm128_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/gcm128_sse_no_aesni.asm
nasm -o obj/gcm192_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/gcm192_sse_no_aesni.asm
nasm -o obj/gcm256_sse_no_aesni.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ no-aesni/gcm256_sse_no_aesni.asm
nasm -o obj/gcm128_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/gcm128_avx512.asm
avx512/gcm_avx512.asm:4785: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2820: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4785: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4806: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2820: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4806: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4905: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4933: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4953: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4579: ... from macro `GCM_SUBMIT_MB' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4976: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4993: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4579: ... from macro `GCM_SUBMIT_MB' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:5016: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
nasm -o obj/gcm192_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/gcm192_avx512.asm
avx512/gcm_avx512.asm:4785: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2820: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4785: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4806: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2820: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4806: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4905: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4933: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4953: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4579: ... from macro `GCM_SUBMIT_MB' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4976: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4993: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4579: ... from macro `GCM_SUBMIT_MB' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:5016: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
nasm -o obj/gcm256_avx512.o -felf64 -Xgnu -gdwarf -DLINUX -D__linux__ -Iinclude/ -I./ -Iavx/ -Iavx2/ -Iavx512/ -Isse/ avx512/gcm256_avx512.asm
avx512/gcm_avx512.asm:4785: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2820: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4785: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4806: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2820: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4806: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4905: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4933: warning: (INITIAL_BLOCKS:94) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:2890: ... from macro `GCM_ENC_DEC' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:745: ... from macro `INITIAL_BLOCKS' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4953: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4579: ... from macro `GCM_SUBMIT_MB' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4976: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4993: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4579: ... from macro `GCM_SUBMIT_MB' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:5016: warning: (INITIAL_BLOCKS_PARTIAL:240) negative `%rep' count: -1 [-w+negative-rep]
avx512/gcm_avx512.asm:4375: ... from macro `GCM_FINALIZE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:4272: ... from macro `GCM_COMPLETE_x4' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:2696: ... from macro `GCM_ENC_DEC_SMALL' defined here [-w+negative-rep]
avx512/gcm_avx512.asm:1429: ... from macro `INITIAL_BLOCKS_PARTIAL' defined here [-w+negative-rep]
cc -shared -Wl,-soname,libIPSec_MB.so.0 -o libIPSec_MB.so.0.52 obj/aes128_cbc_dec_by4_sse.o obj/aes128_cbc_dec_by4_sse_no_aesni.o obj/aes128_cbc_dec_by8_avx.o obj/aes128_cntr_by4_sse.o obj/aes128_cntr_by4_sse_no_aesni.o obj/aes128_cntr_by8_avx.o obj/aes128_ecbenc_x3.o obj/aes192_cbc_dec_by4_sse.o obj/aes192_cbc_dec_by4_sse_no_aesni.o obj/aes192_cbc_dec_by8_avx.o obj/aes192_cntr_by4_sse.o obj/aes192_cntr_by4_sse_no_aesni.o obj/aes192_cntr_by8_avx.o obj/aes256_cbc_dec_by4_sse.o obj/aes256_cbc_dec_by4_sse_no_aesni.o obj/aes256_cbc_dec_by8_avx.o obj/aes256_cntr_by4_sse.o obj/aes256_cntr_by4_sse_no_aesni.o obj/aes256_cntr_by8_avx.o obj/aes_cfb_128_sse.o obj/aes_cfb_128_sse_no_aesni.o obj/aes_cfb_128_avx.o obj/aes128_cbc_mac_x4.o obj/aes128_cbc_mac_x4_no_aesni.o obj/aes128_cbc_mac_x8.o obj/aes_cbc_enc_128_x4.o obj/aes_cbc_enc_128_x4_no_aesni.o obj/aes_cbc_enc_128_x8.o obj/aes_cbc_enc_192_x4.o obj/aes_cbc_enc_192_x4_no_aesni.o obj/aes_cbc_enc_192_x8.o obj/aes_cbc_enc_256_x4.o obj/aes_cbc_enc_256_x4_no_aesni.o obj/aes_cbc_enc_256_x8.o obj/aes_keyexp_128.o obj/aes_keyexp_192.o obj/aes_keyexp_256.o obj/aes_xcbc_mac_128_x4.o obj/aes_xcbc_mac_128_x4_no_aesni.o obj/aes_xcbc_mac_128_x8.o obj/aes_cmac_subkey_gen.o obj/mb_mgr_aes192_flush_avx.o obj/mb_mgr_aes192_flush_sse.o obj/mb_mgr_aes192_flush_sse_no_aesni.o obj/mb_mgr_aes192_submit_avx.o obj/mb_mgr_aes192_submit_sse.o obj/mb_mgr_aes192_submit_sse_no_aesni.o obj/mb_mgr_aes256_flush_avx.o obj/mb_mgr_aes256_flush_sse.o obj/mb_mgr_aes256_flush_sse_no_aesni.o obj/mb_mgr_aes256_submit_avx.o obj/mb_mgr_aes256_submit_sse.o obj/mb_mgr_aes256_submit_sse_no_aesni.o obj/mb_mgr_aes_flush_avx.o obj/mb_mgr_aes_flush_sse.o obj/mb_mgr_aes_flush_sse_no_aesni.o obj/mb_mgr_aes_submit_avx.o obj/mb_mgr_aes_submit_sse.o obj/mb_mgr_aes_submit_sse_no_aesni.o obj/mb_mgr_aes_cmac_submit_flush_sse.o obj/mb_mgr_aes_cmac_submit_flush_sse_no_aesni.o obj/mb_mgr_aes_cmac_submit_flush_avx.o obj/mb_mgr_aes_xcbc_flush_avx.o obj/mb_mgr_aes_xcbc_flush_sse.o obj/mb_mgr_aes_xcbc_flush_sse_no_aesni.o obj/mb_mgr_aes_xcbc_submit_avx.o obj/mb_mgr_aes_xcbc_submit_sse.o obj/mb_mgr_aes_xcbc_submit_sse_no_aesni.o obj/mb_mgr_hmac_flush_avx.o obj/mb_mgr_hmac_flush_avx2.o obj/mb_mgr_hmac_flush_sse.o obj/mb_mgr_hmac_flush_ni_sse.o obj/mb_mgr_hmac_flush_avx512.o obj/mb_mgr_hmac_md5_flush_avx.o obj/mb_mgr_hmac_md5_flush_avx2.o obj/mb_mgr_hmac_md5_flush_sse.o obj/mb_mgr_hmac_md5_submit_avx.o obj/mb_mgr_hmac_md5_submit_avx2.o obj/mb_mgr_hmac_md5_submit_sse.o obj/mb_mgr_hmac_sha_224_flush_avx.o obj/mb_mgr_hmac_sha_224_flush_avx2.o obj/mb_mgr_hmac_sha_224_flush_avx512.o obj/mb_mgr_hmac_sha_224_flush_sse.o obj/mb_mgr_hmac_sha_224_flush_ni_sse.o obj/mb_mgr_hmac_sha_224_submit_avx.o obj/mb_mgr_hmac_sha_224_submit_avx2.o obj/mb_mgr_hmac_sha_224_submit_avx512.o obj/mb_mgr_hmac_sha_224_submit_sse.o obj/mb_mgr_hmac_sha_224_submit_ni_sse.o obj/mb_mgr_hmac_sha_256_flush_avx.o obj/mb_mgr_hmac_sha_256_flush_avx2.o obj/mb_mgr_hmac_sha_256_flush_sse.o obj/mb_mgr_hmac_sha_256_flush_ni_sse.o obj/mb_mgr_hmac_sha_256_flush_avx512.o obj/mb_mgr_hmac_sha_256_submit_avx.o obj/mb_mgr_hmac_sha_256_submit_avx2.o obj/mb_mgr_hmac_sha_256_submit_sse.o obj/mb_mgr_hmac_sha_256_submit_ni_sse.o obj/mb_mgr_hmac_sha_256_submit_avx512.o obj/mb_mgr_hmac_sha_384_flush_avx.o obj/mb_mgr_hmac_sha_384_flush_avx2.o obj/mb_mgr_hmac_sha_384_flush_avx512.o obj/mb_mgr_hmac_sha_384_flush_sse.o obj/mb_mgr_hmac_sha_384_submit_avx.o obj/mb_mgr_hmac_sha_384_submit_avx2.o obj/mb_mgr_hmac_sha_384_submit_avx512.o obj/mb_mgr_hmac_sha_384_submit_sse.o obj/mb_mgr_hmac_sha_512_flush_avx.o obj/mb_mgr_hmac_sha_512_flush_avx2.o obj/mb_mgr_hmac_sha_512_flush_avx512.o obj/mb_mgr_hmac_sha_512_flush_sse.o obj/mb_mgr_hmac_sha_512_submit_avx.o obj/mb_mgr_hmac_sha_512_submit_avx2.o obj/mb_mgr_hmac_sha_512_submit_avx512.o obj/mb_mgr_hmac_sha_512_submit_sse.o obj/mb_mgr_hmac_submit_avx.o obj/mb_mgr_hmac_submit_avx2.o obj/mb_mgr_hmac_submit_sse.o obj/mb_mgr_hmac_submit_ni_sse.o obj/mb_mgr_hmac_submit_avx512.o obj/mb_mgr_des_avx512.o obj/md5_x4x2_avx.o obj/md5_x4x2_sse.o obj/md5_x8x2_avx2.o obj/save_xmms.o obj/sha1_mult_avx.o obj/sha1_mult_sse.o obj/sha1_ni_x2_sse.o obj/sha1_one_block_avx.o obj/sha1_one_block_sse.o obj/sha1_x8_avx2.o obj/sha1_x16_avx512.o obj/sha224_one_block_avx.o obj/sha224_one_block_sse.o obj/sha256_oct_avx2.o obj/sha256_one_block_avx.o obj/sha256_one_block_sse.o obj/sha256_ni_x2_sse.o obj/sha256_x16_avx512.o obj/sha384_one_block_avx.o obj/sha384_one_block_sse.o obj/sha512_one_block_avx.o obj/sha512_one_block_sse.o obj/sha512_x2_avx.o obj/sha512_x2_sse.o obj/sha512_x4_avx2.o obj/sha512_x8_avx512.o obj/sha_256_mult_avx.o obj/sha_256_mult_sse.o obj/aes_xcbc_expand_key.o obj/alloc.o obj/mb_mgr_avx.o obj/mb_mgr_avx2.o obj/mb_mgr_avx512.o obj/mb_mgr_sse.o obj/mb_mgr_sse_no_aesni.o obj/md5_one_block.o obj/sha_one_block.o obj/des_key.o obj/des_basic.o obj/des_x16_avx512.o obj/const.o obj/version.o obj/cpu_feature.o obj/aesni_emu.o obj/gcm.o obj/gcm128_sse.o obj/gcm192_sse.o obj/gcm256_sse.o obj/gcm128_avx_gen2.o obj/gcm192_avx_gen2.o obj/gcm256_avx_gen2.o obj/gcm128_avx_gen4.o obj/gcm192_avx_gen4.o obj/gcm256_avx_gen4.o obj/gcm128_sse_no_aesni.o obj/gcm192_sse_no_aesni.o obj/gcm256_sse_no_aesni.o obj/gcm128_avx512.o obj/gcm192_avx512.o obj/gcm256_avx512.o -lc
ln -f -s libIPSec_MB.so.0.52 libIPSec_MB.so.0
ln -f -s libIPSec_MB.so.0 libIPSec_MB.so

Suggestion: maybe memset'ing job_template in do_test in /perf/ipsec_perf.c is a good idea

Static analysis is producing some potential false positives on the job_template structure because it is allocated on the stack and all the fields are not being initialized. Some of the test paths cause static analysis to complain about fields not being initialized.

For example:


1477        for (i = 0; i < num_iter; i++) {
1478                job = IMB_GET_NEXT_JOB(mb_mgr);

    CID 99584 (#2-1 of 2): Uninitialized scalar variable (UNINIT)
23. uninit_use: Using uninitialized value job_template. Field job_template.src is uninitialized.

1479                *job = job_template;

and

2266                                        continue;
    CID 99592 (#1 of 1): Uninitialized scalar variable (UNINIT)
70. uninit_use_in_call: Using uninitialized value params. Field params.aes_key_size is uninitialized when calling run_dir_test. [show details]

2267                                run_dir_test(p_mgr, arch, &params, run,
2268                                             &variant_ptr, &variant, buf,
2269                                             keys, info->print_info);

LibTestApp segfault running AESNI emulation code only

Steps to reproduce

./ipsec_MB_testapp --no-avx512 --no-avx2 --no-avx --no-sse

Root cause

GCM function pointers were not populated in no-aesni MB manager initialization flow. Segmentation fault takes place in GCM tests.

Fix will be available shortly

Many errors when building with gcc-10

Building with gcc-10 I get lots of build errors:

gcc-10 -v
Using built-in specs.
COLLECT_GCC=gcc-10
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 10-20200425-1ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none,amdgcn-amdhsa,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.0.1 20200425 (experimental) [master revision ead1c27a530:9176ecce77f:cf3f7b309ffdd888fdd85048ac9b4bcdc2713a45] (Ubuntu 10-20200425-1ubuntu2)

Using: CC=gcc-10 make

gcc-10 -g -DLINUX -D_GNU_SOURCE -DNO_COMPAT_IMB_API_053 -W -Wall -Wextra -Wmissing-declarations -Wpointer-arith -Wcast-qual -Wundef -Wwrite-strings -Wformat -Wformat-security -Wunreachable-code -Wmissing-noreturn -Wsign-compare -Wno-endif-labels -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -O3 -c -o main.o main.c
In file included from main.c:34:
gcm_ctr_vectors_test.h:78:21: error: unknown type name ‘IMB_MGR’; did you mean ‘MB_MGR’?
78 | extern int gcm_test(IMB_MGR *p_mgr);
| ^~~~~~~
| MB_MGR
gcm_ctr_vectors_test.h:79:21: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
79 | int ctr_test(struct IMB_MGR *);
| ^~~~~~~
In file included from main.c:35:
customop_test.h:32:33: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
32 | extern int customop_test(struct IMB_MGR *state);
| ^~~~~~~
main.c:38:55: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
38 | extern int des_test(const enum arch_type arch, struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:39:28: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
39 | extern int ccm_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:40:29: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
40 | extern int cmac_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:41:34: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
41 | extern int hmac_sha1_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:42:43: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
42 | extern int hmac_sha256_sha512_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:43:33: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
43 | extern int hmac_md5_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:44:28: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
44 | extern int aes_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:45:28: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
45 | extern int ecb_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:46:28: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
46 | extern int sha_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:47:32: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
47 | extern int chained_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:48:28: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
48 | extern int api_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:49:28: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
49 | extern int pon_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:50:28: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
50 | extern int zuc_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:51:31: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
51 | extern int kasumi_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:52:31: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
52 | extern int snow3g_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:53:35: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
53 | extern int direct_api_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:54:34: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
54 | extern int clear_mem_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
main.c:55:28: warning: ‘struct IMB_MGR’ declared inside parameter list will not be visible outside of this definition or declaration
55 | extern int hec_test(struct IMB_MGR *mb_mgr);
| ^~~~~~~
In file included from main.c:57:
do_test.h:112:19: error: unknown type name ‘IMB_MGR’; did you mean ‘MB_MGR’?
112 | known_answer_test(IMB_MGR *mb_mgr)
| ^~~~~~~
| MB_MGR
do_test.h:196:15: error: unknown type name ‘IMB_MGR’; did you mean ‘MB_MGR’?
196 | test_aux_func(IMB_MGR *mgr)
| ^~~~~~~
| MB_MGR
do_test.h:223:9: error: unknown type name ‘IMB_MGR’; did you mean ‘MB_MGR’?
223 | do_test(IMB_MGR *mb_mgr)
| ^~~~~~~
| MB_MGR
main.c: In function ‘print_hw_features’:
main.c:93:19: error: ‘IMB_FEATURE_GFNI’ undeclared (first use in this function); did you mean ‘IMB_FEATURE_AESNI’?
93 | { IMB_FEATURE_GFNI, "GFNI" },
| ^~~~~~~~~~~~~~~~
| IMB_FEATURE_AESNI
main.c:93:19: note: each undeclared identifier is reported only once for each function it appears in
main.c:95:9: error: unknown type name ‘IMB_MGR’; did you mean ‘MB_MGR’?
95 | IMB_MGR *p_mgr = NULL;
| ^~~~~~~
| MB_MGR
main.c:100:15: warning: assignment to ‘int *’ from incompatible pointer type ‘MB_MGR *’ [-Wincompatible-pointer-types]
100 | p_mgr = alloc_mb_mgr(0);
| ^
main.c:110:31: error: request for member ‘features’ in something not a structure or union
110 | ((p_mgr->features & val) == val) ? "OK" : "n/a");
| ^~
main.c:110:42: error: invalid operands to binary & (have ‘const struct *’ and ‘uint64_t’ {aka ‘const long unsigned int’})
110 | ((p_mgr->features & val) == val) ? "OK" : "n/a");
| ~~~~~ ^
| |
| const struct *
main.c:110:49: warning: comparison between pointer and integer
110 | ((p_mgr->features & val) == val) ? "OK" : "n/a");
| ^~
main.c:113:21: warning: passing argument 1 of ‘free_mb_mgr’ from incompatible pointer type [-Wincompatible-pointer-types]
113 | free_mb_mgr(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:32:
/usr/include/intel-ipsec-mb.h:1011:41: note: expected ‘MB_MGR *’ but argument is of type ‘int *’
1011 | IMB_DLL_EXPORT void free_mb_mgr(MB_MGR *state);
| ~~~~~~~~^~~~~
main.c: In function ‘detect_arch’:
main.c:127:9: error: unknown type name ‘IMB_MGR’; did you mean ‘MB_MGR’?
127 | IMB_MGR *p_mgr = NULL;
| ^~~~~~~
| MB_MGR
main.c:141:15: warning: assignment to ‘int *’ from incompatible pointer type ‘MB_MGR *’ [-Wincompatible-pointer-types]
141 | p_mgr = alloc_mb_mgr(0);
| ^
main.c:147:19: error: request for member ‘features’ in something not a structure or union
147 | if ((p_mgr->features & detect_avx512) != detect_avx512)
| ^~
main.c:147:30: error: invalid operands to binary & (have ‘const struct *’ and ‘uint64_t’ {aka ‘const long unsigned int’})
147 | if ((p_mgr->features & detect_avx512) != detect_avx512)
| ~~~~~ ^
| |
| const struct *
main.c:147:47: warning: comparison between pointer and integer
147 | if ((p_mgr->features & detect_avx512) != detect_avx512)
| ^~
main.c:150:19: error: request for member ‘features’ in something not a structure or union
150 | if ((p_mgr->features & detect_avx2) != detect_avx2)
| ^~
main.c:150:30: error: invalid operands to binary & (have ‘const struct *’ and ‘uint64_t’ {aka ‘const long unsigned int’})
150 | if ((p_mgr->features & detect_avx2) != detect_avx2)
| ~~~~~ ^
| |
| const struct *
main.c:150:45: warning: comparison between pointer and integer
150 | if ((p_mgr->features & detect_avx2) != detect_avx2)
| ^~
main.c:153:19: error: request for member ‘features’ in something not a structure or union
153 | if ((p_mgr->features & detect_avx) != detect_avx)
| ^~
main.c:153:30: error: invalid operands to binary & (have ‘const struct *’ and ‘uint64_t’ {aka ‘const long unsigned int’})
153 | if ((p_mgr->features & detect_avx) != detect_avx)
| ~~~~~ ^
| |
| const struct *
main.c:153:44: warning: comparison between pointer and integer
153 | if ((p_mgr->features & detect_avx) != detect_avx)
| ^~
main.c:156:19: error: request for member ‘features’ in something not a structure or union
156 | if ((p_mgr->features & detect_sse) != detect_sse)
| ^~
main.c:156:30: error: invalid operands to binary & (have ‘const struct *’ and ‘uint64_t’ {aka ‘const long unsigned int’})
156 | if ((p_mgr->features & detect_sse) != detect_sse)
| ~~~~~ ^
| |
| const struct *
main.c:156:44: warning: comparison between pointer and integer
156 | if ((p_mgr->features & detect_sse) != detect_sse)
| ^~
main.c:159:19: error: request for member ‘features’ in something not a structure or union
159 | if ((p_mgr->features & detect_pclmulqdq) != detect_pclmulqdq)
| ^~
main.c:159:30: error: invalid operands to binary & (have ‘const struct *’ and ‘uint64_t’ {aka ‘const long unsigned int’})
159 | if ((p_mgr->features & detect_pclmulqdq) != detect_pclmulqdq)
| ~~~~~ ^
| |
| const struct *
main.c:159:50: warning: comparison between pointer and integer
159 | if ((p_mgr->features & detect_pclmulqdq) != detect_pclmulqdq)
| ^~
main.c:162:21: warning: passing argument 1 of ‘free_mb_mgr’ from incompatible pointer type [-Wincompatible-pointer-types]
162 | free_mb_mgr(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:32:
/usr/include/intel-ipsec-mb.h:1011:41: note: expected ‘MB_MGR *’ but argument is of type ‘int *’
1011 | IMB_DLL_EXPORT void free_mb_mgr(MB_MGR *state);
| ~~~~~~~~^~~~~
main.c: In function ‘main’:
main.c:177:9: error: unknown type name ‘IMB_MGR’; did you mean ‘MB_MGR’?
177 | IMB_MGR *p_mgr = NULL;
| ^~~~~~~
| MB_MGR
main.c:229:31: warning: assignment to ‘int *’ from incompatible pointer type ‘MB_MGR *’ [-Wincompatible-pointer-types]
229 | p_mgr = alloc_mb_mgr(flags);
| ^
main.c:234:41: warning: passing argument 1 of ‘init_mb_mgr_sse’ from incompatible pointer type [-Wincompatible-pointer-types]
234 | init_mb_mgr_sse(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:32:
/usr/include/intel-ipsec-mb.h:1037:45: note: expected ‘MB_MGR *’ but argument is of type ‘int *’
1037 | IMB_DLL_EXPORT void init_mb_mgr_sse(MB_MGR *state);
| ~~~~~~~~^~~~~
main.c:239:31: warning: assignment to ‘int *’ from incompatible pointer type ‘MB_MGR *’ [-Wincompatible-pointer-types]
239 | p_mgr = alloc_mb_mgr(flags);
| ^
main.c:244:41: warning: passing argument 1 of ‘init_mb_mgr_avx’ from incompatible pointer type [-Wincompatible-pointer-types]
244 | init_mb_mgr_avx(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:32:
/usr/include/intel-ipsec-mb.h:1013:45: note: expected ‘MB_MGR *’ but argument is of type ‘int *’
1013 | IMB_DLL_EXPORT void init_mb_mgr_avx(MB_MGR *state);
| ~~~~~~~~^~~~~
main.c:249:31: warning: assignment to ‘int *’ from incompatible pointer type ‘MB_MGR *’ [-Wincompatible-pointer-types]
249 | p_mgr = alloc_mb_mgr(flags);
| ^
main.c:254:42: warning: passing argument 1 of ‘init_mb_mgr_avx2’ from incompatible pointer type [-Wincompatible-pointer-types]
254 | init_mb_mgr_avx2(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:32:
/usr/include/intel-ipsec-mb.h:1021:46: note: expected ‘MB_MGR *’ but argument is of type ‘int *’
1021 | IMB_DLL_EXPORT void init_mb_mgr_avx2(MB_MGR *state);
| ~~~~~~~~^~~~~
main.c:259:31: warning: assignment to ‘int *’ from incompatible pointer type ‘MB_MGR *’ [-Wincompatible-pointer-types]
259 | p_mgr = alloc_mb_mgr(flags);
| ^
main.c:264:44: warning: passing argument 1 of ‘init_mb_mgr_avx512’ from incompatible pointer type [-Wincompatible-pointer-types]
264 | init_mb_mgr_avx512(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:32:
/usr/include/intel-ipsec-mb.h:1029:48: note: expected ‘MB_MGR *’ but argument is of type ‘int *’
1029 | IMB_DLL_EXPORT void init_mb_mgr_avx512(MB_MGR *state);
| ~~~~~~~~^~~~~
main.c:269:31: warning: assignment to ‘int *’ from incompatible pointer type ‘MB_MGR *’ [-Wincompatible-pointer-types]
269 | p_mgr = alloc_mb_mgr(flags | IMB_FLAG_AESNI_OFF);
| ^
main.c:274:41: warning: passing argument 1 of ‘init_mb_mgr_sse’ from incompatible pointer type [-Wincompatible-pointer-types]
274 | init_mb_mgr_sse(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:32:
/usr/include/intel-ipsec-mb.h:1037:45: note: expected ‘MB_MGR *’ but argument is of type ‘int *’
1037 | IMB_DLL_EXPORT void init_mb_mgr_sse(MB_MGR *state);
| ~~~~~~~~^~~~~
main.c:283:27: warning: implicit declaration of function ‘known_answer_test’ [-Wimplicit-function-declaration]
283 | errors += known_answer_test(p_mgr);
| ^~~~~~~~~~~~~~~~~
main.c:284:27: warning: implicit declaration of function ‘do_test’; did you mean ‘pon_test’? [-Wimplicit-function-declaration]
284 | errors += do_test(p_mgr);
| ^~~~~~~
| pon_test
main.c:285:36: warning: passing argument 1 of ‘ctr_test’ from incompatible pointer type [-Wincompatible-pointer-types]
285 | errors += ctr_test(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:34:
gcm_ctr_vectors_test.h:79:14: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
79 | int ctr_test(struct IMB_MGR *);
| ^~~~~~~~~~~~~~~~
main.c:286:36: warning: passing argument 1 of ‘pon_test’ from incompatible pointer type [-Wincompatible-pointer-types]
286 | errors += pon_test(p_mgr);
| ^~~~~
| |
| int *
main.c:49:37: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
49 | extern int pon_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:288:35: warning: implicit declaration of function ‘gcm_test’; did you mean ‘ccm_test’? [-Wimplicit-function-declaration]
288 | errors += gcm_test(p_mgr);
| ^~~~~~~~
| ccm_test
main.c:289:41: warning: passing argument 1 of ‘customop_test’ from incompatible pointer type [-Wincompatible-pointer-types]
289 | errors += customop_test(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:35:
customop_test.h:32:42: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
32 | extern int customop_test(struct IMB_MGR *state);
| ~~~~~~~~~~~~~~~~^~~~~
main.c:290:43: warning: passing argument 2 of ‘des_test’ from incompatible pointer type [-Wincompatible-pointer-types]
290 | errors += des_test(atype, p_mgr);
| ^~~~~
| |
| int *
main.c:38:64: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
38 | extern int des_test(const enum arch_type arch, struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:291:36: warning: passing argument 1 of ‘ccm_test’ from incompatible pointer type [-Wincompatible-pointer-types]
291 | errors += ccm_test(p_mgr);
| ^~~~~
| |
| int *
main.c:39:37: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
39 | extern int ccm_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:292:37: warning: passing argument 1 of ‘cmac_test’ from incompatible pointer type [-Wincompatible-pointer-types]
292 | errors += cmac_test(p_mgr);
| ^~~~~
| |
| int *
main.c:40:38: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
40 | extern int cmac_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:293:36: warning: passing argument 1 of ‘zuc_test’ from incompatible pointer type [-Wincompatible-pointer-types]
293 | errors += zuc_test(p_mgr);
| ^~~~~
| |
| int *
main.c:50:37: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
50 | extern int zuc_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:294:39: warning: passing argument 1 of ‘kasumi_test’ from incompatible pointer type [-Wincompatible-pointer-types]
294 | errors += kasumi_test(p_mgr);
| ^~~~~
| |
| int *
main.c:51:40: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
51 | extern int kasumi_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:295:39: warning: passing argument 1 of ‘snow3g_test’ from incompatible pointer type [-Wincompatible-pointer-types]
295 | errors += snow3g_test(p_mgr);
| ^~~~~
| |
| int *
main.c:52:40: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
52 | extern int snow3g_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:296:42: warning: passing argument 1 of ‘hmac_sha1_test’ from incompatible pointer type [-Wincompatible-pointer-types]
296 | errors += hmac_sha1_test(p_mgr);
| ^~~~~
| |
| int *
main.c:41:43: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
41 | extern int hmac_sha1_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:297:51: warning: passing argument 1 of ‘hmac_sha256_sha512_test’ from incompatible pointer type [-Wincompatible-pointer-types]
297 | errors += hmac_sha256_sha512_test(p_mgr);
| ^~~~~
| |
| int *
main.c:42:52: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
42 | extern int hmac_sha256_sha512_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:298:41: warning: passing argument 1 of ‘hmac_md5_test’ from incompatible pointer type [-Wincompatible-pointer-types]
298 | errors += hmac_md5_test(p_mgr);
| ^~~~~
| |
| int *
main.c:43:42: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
43 | extern int hmac_md5_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:299:36: warning: passing argument 1 of ‘aes_test’ from incompatible pointer type [-Wincompatible-pointer-types]
299 | errors += aes_test(p_mgr);
| ^~~~~
| |
| int *
main.c:44:37: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
44 | extern int aes_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:300:36: warning: passing argument 1 of ‘ecb_test’ from incompatible pointer type [-Wincompatible-pointer-types]
300 | errors += ecb_test(p_mgr);
| ^~~~~
| |
| int *
main.c:45:37: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
45 | extern int ecb_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:301:36: warning: passing argument 1 of ‘sha_test’ from incompatible pointer type [-Wincompatible-pointer-types]
301 | errors += sha_test(p_mgr);
| ^~~~~
| |
| int *
main.c:46:37: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
46 | extern int sha_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:302:40: warning: passing argument 1 of ‘chained_test’ from incompatible pointer type [-Wincompatible-pointer-types]
302 | errors += chained_test(p_mgr);
| ^~~~~
| |
| int *
main.c:47:41: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
47 | extern int chained_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:303:36: warning: passing argument 1 of ‘hec_test’ from incompatible pointer type [-Wincompatible-pointer-types]
303 | errors += hec_test(p_mgr);
| ^~~~~
| |
| int *
main.c:55:37: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
55 | extern int hec_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:304:36: warning: passing argument 1 of ‘api_test’ from incompatible pointer type [-Wincompatible-pointer-types]
304 | errors += api_test(p_mgr);
| ^~~~~
| |
| int *
main.c:48:37: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
48 | extern int api_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:305:43: warning: passing argument 1 of ‘direct_api_test’ from incompatible pointer type [-Wincompatible-pointer-types]
305 | errors += direct_api_test(p_mgr);
| ^~~~~
| |
| int *
main.c:53:44: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
53 | extern int direct_api_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:306:42: warning: passing argument 1 of ‘clear_mem_test’ from incompatible pointer type [-Wincompatible-pointer-types]
306 | errors += clear_mem_test(p_mgr);
| ^~~~~
| |
| int *
main.c:54:43: note: expected ‘struct IMB_MGR *’ but argument is of type ‘int *’
54 | extern int clear_mem_test(struct IMB_MGR *mb_mgr);
| ~~~~~~~~~~~~~~~~^~~~~~
main.c:307:29: warning: passing argument 1 of ‘free_mb_mgr’ from incompatible pointer type [-Wincompatible-pointer-types]
307 | free_mb_mgr(p_mgr);
| ^~~~~
| |
| int *
In file included from main.c:32:
/usr/include/intel-ipsec-mb.h:1011:41: note: expected ‘MB_MGR *’ but argument is of type ‘int *’
1011 | IMB_DLL_EXPORT void free_mb_mgr(MB_MGR *state);
| ~~~~~~~~^~~~~
In file included from main.c:57:
At top level:
do_test.h:85:22: warning: ‘cipherCBC128’ defined but not used [-Wunused-variable]
85 | static unsigned char cipherCBC128[] = {
| ^~~~~~~~~~~~
do_test.h:80:22: warning: ‘ic’ defined but not used [-Wunused-variable]
80 | static unsigned char ic[] = {
| ^~
do_test.h:68:22: warning: ‘key128’ defined but not used [-Wunused-variable]
68 | static unsigned char key128[] = {
| ^~~~~~
do_test.h:57:22: warning: ‘plain’ defined but not used [-Wunused-variable]
57 | static unsigned char plain[] = {
| ^~~~~
do_test.h:50:22: warning: ‘hmac12’ defined but not used [-Wunused-variable]
50 | static unsigned char hmac12[] = {
| ^~~~~~
do_test.h:46:22: warning: ‘text’ defined but not used [-Wunused-variable]
46 | static unsigned char text[] = {
| ^~~~
do_test.h:36:22: warning: ‘key’ defined but not used [-Wunused-variable]
36 | static unsigned char key[] = {
| ^~~
make[1]: *** [: main.o] Error 1
make[1]: Leaving directory '/home/cking/repos/intel-ipsec-mb/test'
make: *** [Makefile:32: all] Error 2

Change to IMB_GHASH() API

What
We plan to change the API so it takes 6th argument pointing to current hash value.
This way the API will be able to carry a GHASH update operation.
If the pointer is NULL then the new API will behave as today (assume current hash value is zero).

Impact
Any application using this API will need to be modified to accommodate the change (at least pass 6th argument with NULL).
This requires application recompilation and ABI incompatibility for this API.

Action
We are not aware of any applications that would be impacted by this change.
If you know of any then let us know by replying here.

Block count may be incremented incorrectly in AES-CTR

AES-CTR algorithm used in IPSec (cipher_mode = AES_CNTR) uses a counter block with 4 bytes for block count, according to the following RFC: https://tools.ietf.org/html/rfc3686#section-2.1

AES-CTR algorithm used in PDCP (AES_CNTR_BITLEN) uses a block count with 8 bytes, according to section B.1.3 of the following document: https://www.etsi.org/deliver/etsi_ts/133400_133499/133401/14.05.00_60/ts_133401v140500p.pdf

The latter algorithm was added in release 0.53, and introduced issues in both AES_CNTR and AES_CNTR_BITLEN.

The issue is in the way this block count is being incremented in all implementations.
For AES_CNTR, it should increment only 4 bytes, and for AES_CNTR_BITLEN, 8 bytes.
In case of AVX, it was actually doing it the other way, incrementing 8 bytes for AES_CNTR and 4 bytes for AES_CNTR_BITLEN.
In case of the other implementations, SSE and AVX512-VAES, AES_CNTR was correct, but AES_CNTR_BITLEN was not, since it was incrementing only 4 bytes.

It is worth noting that this issue has low risk, as it would only show up when there is an overflow in the block counter, which shouldn't happen unless the initial block count is not 0 or 1, but a very high number.

Document requirements for AVX512

Hello,
Could you add to README which AVX512 set is required by algo ?
Only DES case is mentioned with AVX512F and AVX512BW.

Thanks

Planned change of key structure for AES-GCM

What is happening?

In the next release, it is planned to change GCM key structure to include larger number of ghash keys. As of today, the structure includes expanded AES keys, 8 schoolbook ghash keys and 8 Karatsuba ghash keys.

So what?

Note that this change will break GCM binary compatibility with previous versions of the library (v0.52 and older).

What needs to be done?

Applications using GCM API will need to be recompiled in order to use the new library version.

uint128_t definition in /usr/include/intel-ipsec-mb.h clashes with /usr/include/bluetooth/bluetooth.h

In /usr/include/intel-ipsec-mb.h uint128_t is defined as:

/* 128-bit data type that is not in sdtint.h */
typedef struct {
        uint64_t low;
        uint64_t high;
} uint128_t;

However, this clashes with other definitions of uint128_t such as the one in /usr/include/bluetooth/bluetooth.h, e.g:

typedef struct {
        uint8_t data[16];
} uint128_t;

This causes conflict when including these two header files. Since uint128_t may in the future clash with an ISO C uint128_t native type it maybe better to rename the uint128_t in intel-ipsec-mb.h so it won't clash. Perhaps something like __ipsec_uint128_t

Otherwise we get build failures such as:

/usr/include/bluetooth/bluetooth.h:345:3: error: conflicting types for ‘uint128_t’
  345 | } uint128_t;
      |   ^~~~~~~~~
In file included from stress-ng.h:131,
                 from stress-l2cap.c:25:
/usr/include/intel-ipsec-mb.h:42:3: note: previous declaration of ‘uint128_t’ was here
   42 | } uint128_t;
      |   ^~~~~~~~~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.