48#if defined __linux__ || defined __FreeBSD__ 
   50#define DECLARE_ALIGNED(decl, alignval) \ 
   51        decl __attribute__((aligned(alignval))) 
   52#define __forceinline \ 
   53        static inline __attribute__((always_inline)) 
   56#define IMB_DLL_EXPORT __attribute__((visibility("default")))
 
   57#define IMB_DLL_LOCAL  __attribute__((visibility("hidden")))
 
   68#define DECLARE_ALIGNED(decl, alignval) \ 
   69        decl __attribute__((aligned(alignval))) 
   71#define __forceinline \ 
   72        static inline __attribute__((always_inline)) 
   76#define DECLARE_ALIGNED(decl, alignval)         \ 
   77        __declspec(align(alignval)) decl 
   78#define __forceinline \ 
   94#define IMB_VERSION_STR "1.2.0" 
   95#define IMB_VERSION_NUM 0x10200 
  100#define IMB_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c)) 
  107#define IMB_ASSERT(x) assert(x) 
  113#define IMB_DIM(x) (sizeof(x) / sizeof(x[0])) 
  132#define IMB_DES_KEY_SCHED_SIZE (16 * 8)  
  133#define IMB_DES_BLOCK_SIZE 8 
  135#define IMB_AES_BLOCK_SIZE 16 
  137#define IMB_SHA1_DIGEST_SIZE_IN_BYTES   20 
  138#define IMB_SHA224_DIGEST_SIZE_IN_BYTES 28 
  139#define IMB_SHA256_DIGEST_SIZE_IN_BYTES 32 
  140#define IMB_SHA384_DIGEST_SIZE_IN_BYTES 48 
  141#define IMB_SHA512_DIGEST_SIZE_IN_BYTES 64 
  143#define IMB_SHA1_BLOCK_SIZE 64     
  144#define IMB_SHA_256_BLOCK_SIZE 64  
  145#define IMB_SHA_384_BLOCK_SIZE 128 
  146#define IMB_SHA_512_BLOCK_SIZE 128 
  148#define IMB_KASUMI_KEY_SIZE         16 
  149#define IMB_KASUMI_IV_SIZE          8 
  150#define IMB_KASUMI_BLOCK_SIZE       8 
  151#define IMB_KASUMI_DIGEST_SIZE      4 
  157#define IMB_DOCSIS_CRC32_MIN_ETH_PDU_SIZE 14 
  158#define IMB_DOCSIS_CRC32_TAG_SIZE         4 
  236#if __ELASTERROR > 2000 
  237#error "Library error codes conflict with errno.h - please update IMB_ERR_MIN!" 
  247#ifndef NO_COMPAT_IMB_API_053 
  249#define CBC                     IMB_CIPHER_CBC 
  250#define CNTR                    IMB_CIPHER_CNTR 
  251#define NULL_CIPHER             IMB_CIPHER_NULL 
  252#define DOCSIS_SEC_BPI          IMB_CIPHER_DOCSIS_SEC_BPI 
  253#define GCM                     IMB_CIPHER_GCM 
  254#define CUSTOM_CIPHER           IMB_CIPHER_CUSTOM 
  255#define DES                     IMB_CIPHER_DES 
  256#define DOCSIS_DES              IMB_CIPHER_DOCSIS_DES 
  257#define CCM                     IMB_CIPHER_CCM 
  258#define DES3                    IMB_CIPHER_DES3 
  259#define PON_AES_CNTR            IMB_CIPHER_PON_AES_CNTR 
  260#define ECB                     IMB_CIPHER_ECB 
  261#define CNTR_BITLEN             IMB_CIPHER_CNTR_BITLEN 
  264#define SHA1                    IMB_AUTH_HMAC_SHA_1 
  265#define SHA_224                 IMB_AUTH_HMAC_SHA_224 
  266#define SHA_256                 IMB_AUTH_HMAC_SHA_256 
  267#define SHA_384                 IMB_AUTH_HMAC_SHA_384 
  268#define SHA_512                 IMB_AUTH_HMAC_SHA_512 
  269#define AES_XCBC                IMB_AUTH_AES_XCBC 
  270#define MD5                     IMB_AUTH_MD5 
  271#define NULL_HASH               IMB_AUTH_NULL 
  272#define AES_GMAC                IMB_AUTH_AES_GMAC 
  273#define CUSTOM_HASH             IMB_AUTH_CUSTOM 
  274#define AES_CCM                 IMB_AUTH_AES_CCM 
  275#define AES_CMAC                IMB_AUTH_AES_CMAC 
  276#define PLAIN_SHA1              IMB_AUTH_SHA_1 
  277#define PLAIN_SHA_224           IMB_AUTH_SHA_224 
  278#define PLAIN_SHA_256           IMB_AUTH_SHA_256 
  279#define PLAIN_SHA_384           IMB_AUTH_SHA_384 
  280#define PLAIN_SHA_512           IMB_AUTH_SHA_512 
  281#define AES_CMAC_BITLEN         IMB_AUTH_AES_CMAC_BITLEN 
  282#define PON_CRC_BIP             IMB_AUTH_PON_CRC_BIP 
  285#define ENCRYPT                 IMB_DIR_ENCRYPT 
  286#define DECRYPT                 IMB_DIR_DECRYPT 
  289#define HASH_CIPHER             IMB_ORDER_HASH_CIPHER 
  290#define CIPHER_HASH             IMB_ORDER_CIPHER_HASH 
  293#define AES_128_BYTES           IMB_KEY_128_BYTES 
  294#define AES_192_BYTES           IMB_KEY_192_BYTES 
  295#define AES_256_BYTES           IMB_KEY_256_BYTES 
  296#define IMB_KEY_AES_128_BYTES   IMB_KEY_128_BYTES 
  297#define IMB_KEY_AES_192_BYTES   IMB_KEY_192_BYTES 
  298#define IMB_KEY_AES_256_BYTES   IMB_KEY_256_BYTES 
  299#define AES_KEY_SIZE_BYTES      IMB_KEY_SIZE_BYTES 
  301#define MB_MGR                  IMB_MGR 
  302#define JOB_AES_HMAC            IMB_JOB 
  303#define JOB_STS                 IMB_STATUS 
  304#define IMB_JOB_STS             IMB_STATUS 
  305#define JOB_CIPHER_MODE         IMB_CIPHER_MODE 
  306#define JOB_CIPHER_DIRECTION    IMB_CIPHER_DIRECTION 
  307#define JOB_HASH_ALG            IMB_HASH_ALG 
  308#define JOB_CHAIN_ORDER         IMB_CHAIN_ORDER 
  309#define MAX_JOBS                IMB_MAX_JOBS 
  311#define STS_BEING_PROCESSED     IMB_STATUS_BEING_PROCESSED 
  312#define STS_COMPLETED_AES       IMB_STATUS_COMPLETED_CIPHER 
  313#define STS_COMPLETED_HMAC      IMB_STATUS_COMPLETED_AUTH 
  314#define STS_COMPLETED           IMB_STATUS_COMPLETED 
  315#define STS_INVALID_ARGS        IMB_STATUS_INVALID_ARGS 
  316#define STS_INTERNAL_ERROR      IMB_STATUS_INTERNAL_ERROR 
  317#define STS_ERROR               IMB_STATUS_ERROR 
  319#define MAX_TAG_LEN             IMB_MAX_TAG_LEN 
  320#define GCM_IV_DATA_LEN         IMB_GCM_IV_DATA_LEN 
  321#define GCM_128_KEY_LEN         IMB_GCM_128_KEY_LEN 
  322#define GCM_192_KEY_LEN         IMB_GCM_192_KEY_LEN 
  323#define GCM_256_KEY_LEN         IMB_GCM_256_KEY_LEN 
  325#define DES_KEY_SCHED_SIZE      IMB_DES_KEY_SCHED_SIZE 
  326#define DES_BLOCK_SIZE          IMB_DES_BLOCK_SIZE 
  328#define AES_BLOCK_SIZE          IMB_AES_BLOCK_SIZE 
  330#define SHA1_DIGEST_SIZE_IN_BYTES   IMB_SHA1_DIGEST_SIZE_IN_BYTES 
  331#define SHA224_DIGEST_SIZE_IN_BYTES IMB_SHA224_DIGEST_SIZE_IN_BYTES 
  332#define SHA256_DIGEST_SIZE_IN_BYTES IMB_SHA256_DIGEST_SIZE_IN_BYTES 
  333#define SHA384_DIGEST_SIZE_IN_BYTES IMB_SHA384_DIGEST_SIZE_IN_BYTES 
  334#define SHA512_DIGEST_SIZE_IN_BYTES IMB_SHA512_DIGEST_SIZE_IN_BYTES 
  336#define SHA1_BLOCK_SIZE    IMB_SHA1_BLOCK_SIZE 
  337#define SHA_256_BLOCK_SIZE IMB_SHA_256_BLOCK_SIZE 
  338#define SHA_384_BLOCK_SIZE IMB_SHA_384_BLOCK_SIZE 
  339#define SHA_512_BLOCK_SIZE IMB_SHA_512_BLOCK_SIZE 
  341#define KASUMI_KEY_SIZE    IMB_KASUMI_KEY_SIZE 
  342#define KASUMI_IV_SIZE     IMB_KASUMI_IV_SIZE 
  343#define KASUMI_BLOCK_SIZE  IMB_KASUMI_BLOCK_SIZE 
  344#define KASUMI_DIGEST_SIZE IMB_KASUMI_DIGEST_SIZE 
  346#define DOCSIS_CRC32_MIN_ETH_PDU_SIZE IMB_DOCSIS_CRC32_MIN_ETH_PDU_SIZE 
  347#define DOCSIS_CRC32_TAG_SIZE         IMB_DOCSIS_CRC32_TAG_SIZE 
  350#define aes_enc_key_expanded enc_keys 
  351#define aes_dec_key_expanded dec_keys 
  352#define aes_key_len_in_bytes key_len_in_bytes 
  530                struct _HMAC_specific_fields {
 
  538                struct _AES_XCBC_specific_fields {
 
  546                struct _AES_CCM_specific_fields {
 
  551                struct _AES_CMAC_specific_fields {
 
  557                struct _AES_GCM_specific_fields {
 
  560                        uint64_t aad_len_in_bytes;    
 
  564                struct _ZUC_EIA3_specific_fields {
 
  572                struct _SNOW3G_UIA2_specific_fields {
 
  578                struct _KASUMI_UIA1_specific_fields {
 
  582                struct _AES_GMAC_specific_fields {
 
  587                        uint64_t iv_len_in_bytes;
 
  590                struct _GHASH_specific_fields {
 
  595                struct _POLY1305_specific_fields {
 
  599                struct _CHACHA20_POLY1305_specific_fields {
 
  602                        uint64_t aad_len_in_bytes;
 
  607                struct _SNOW_V_AEAD_specific_fields {
 
  610                        uint64_t aad_len_in_bytes;
 
  637                struct _CBCS_specific_fields {
 
  648#define KASUMI_KEY_SCHEDULE_SIZE  64 
  660#define IMB_GCM_BLOCK_LEN   16 
  676#undef IMB_GCM_BLOCK_LEN 
  701#define IMB_MAX_TAG_LEN (16) 
  712#define IMB_GCM_IV_DATA_LEN (12) 
  714#define IMB_GCM_128_KEY_LEN (16) 
  715#define IMB_GCM_192_KEY_LEN (24) 
  716#define IMB_GCM_256_KEY_LEN (32) 
  718#define IMB_GCM_ENC_KEY_LEN 16 
  719#define IMB_GCM_KEY_SETS    (15)  
  768__attribute__((aligned(64)));
 
  773#undef IMB_GCM_ENC_KEY_LEN 
  774#undef IMB_GCM_KEY_SETS 
  786                                   struct IMB_JOB *, 
const uint32_t);
 
  797typedef void (*
keyexp_t)(
const void *, 
void *, 
void *);
 
  800typedef void (*
hash_fn_t)(
const void *, 
const uint64_t, 
void *);
 
  803typedef void (*
aes_cfb_t)(
void *, 
const void *, 
const void *, 
const void *,
 
  807                                  uint8_t *, uint8_t 
const *, uint64_t,
 
  808                                  const uint8_t *, uint8_t 
const *, uint64_t,
 
  809                                  uint8_t *, uint64_t);
 
  812                                     uint8_t 
const *, 
const uint64_t,
 
  813                                     const uint8_t *, uint8_t 
const *,
 
  814                                     const uint64_t, uint8_t *,
 
  815                                     const uint64_t, 
const uint64_t);
 
  818                               const uint8_t *, uint8_t 
const *, uint64_t);
 
  821                                      const uint8_t *, 
const uint64_t,
 
  822                                      const uint8_t *, 
const uint64_t);
 
  825                                         uint8_t *, 
const uint8_t *, uint64_t);
 
  828                                           uint8_t *, uint64_t);
 
  834                                const uint8_t *, 
const uint64_t);
 
  837                                  const uint8_t *, 
const uint64_t);
 
  840                                  uint8_t *, 
const uint64_t);
 
  844                                   const void *, 
const void *, 
const uint64_t);
 
  847                                     void *, 
const void *, 
const uint64_t);
 
  849                                    void *, 
const uint64_t);
 
  851                        const uint64_t, 
void *, 
const uint64_t);
 
  854                                    void *, 
const uint32_t);
 
  857                                    const void * 
const *, 
void **,
 
  861                                    const void * 
const *, 
void **,
 
  862                                    const uint32_t *, 
const uint32_t);
 
  865                                    const uint32_t, uint32_t *);
 
  868                                    const void * 
const *,
 
  869                                    const uint32_t *, uint32_t **,
 
  874                                     const uint64_t, 
const void *, 
void *,
 
  877                                         const uint64_t, 
const void *,
 
  879                                         const uint32_t, 
const uint32_t);
 
  881                                     const uint64_t,  
const uint64_t,
 
  882                                     const void *, 
void *,
 
  884                                     const void *, 
void *,
 
  887                                     const uint64_t,  
const uint64_t,
 
  889                                     const void *, 
void *,
 
  890                                     const void *, 
void *,
 
  891                                     const void *, 
void *,
 
  894                                     const uint64_t,  
const uint64_t,
 
  895                                     const uint64_t,  
const uint64_t,
 
  896                                     const void *, 
void *,
 
  897                                     const void *, 
void *,
 
  898                                     const void *, 
void *,
 
  899                                     const void *, 
void *,
 
  902                                     const uint64_t *, 
const void * 
const *,
 
  903                                     void **, 
const uint32_t *,
 
  906                                          const uint64_t, 
const void *,
 
  907                                          const uint32_t, 
void *,
 
  911                                     const uint32_t, 
void *);
 
  928                                     const void *, 
const void *,
 
  929                                     void *, 
const uint32_t);
 
  932                                         const void *, 
const void *, 
void *,
 
  933                                         const uint32_t, 
const uint32_t);
 
  936                                     const void *, 
const void *,
 
  937                                     const void *, 
void *, 
const uint32_t,
 
  938                                     const void *, 
void *, 
const uint32_t);
 
  941                                     const void *, 
const void *, 
const void *,
 
  942                                     const void *, 
const void *, 
void *,
 
  943                                     const uint32_t, 
const void *, 
void *,
 
  944                                     const uint32_t, 
const void *, 
void *,
 
  945                                     const uint32_t, 
const void *, 
void *,
 
  949                                     const void *, 
const void *, 
const void *,
 
  950                                     const void *, 
const void *, 
const void *,
 
  951                                     const void *, 
const void *, 
const void *,
 
  952                                     void *, 
const uint32_t, 
const void *,
 
  953                                     void *, 
const uint32_t, 
const void *,
 
  954                                     void *, 
const uint32_t, 
const void *,
 
  955                                     void *, 
const uint32_t, 
const void *,
 
  956                                     void *, 
const uint32_t, 
const void *,
 
  957                                     void *, 
const uint32_t, 
const void *,
 
  958                                     void *, 
const uint32_t, 
const void *,
 
  959                                     void *, 
const uint32_t);
 
  963                                 const void * 
const [], 
const void * 
const [],
 
  964                                 void *[], 
const uint32_t[]);
 
  967                                     const void * 
const [],
 
  968                                     const void * 
const [],
 
  969                                     void *[], 
const uint32_t[],
 
  974                                 const void * 
const [],
 
  975                                 const void * 
const [],
 
  976                                 void *[], 
const uint32_t[],
 
  980                                     const void *, 
const void *,
 
  981                                     const uint64_t, 
void *);
 
  994#define IMB_FLAG_SHANI_OFF (1ULL << 0)  
  995#define IMB_FLAG_AESNI_OFF (1ULL << 1)  
 1004#define IMB_FEATURE_SHANI      (1ULL << 0) 
 1005#define IMB_FEATURE_AESNI      (1ULL << 1) 
 1006#define IMB_FEATURE_PCLMULQDQ  (1ULL << 2) 
 1007#define IMB_FEATURE_CMOV       (1ULL << 3) 
 1008#define IMB_FEATURE_SSE4_2     (1ULL << 4) 
 1009#define IMB_FEATURE_AVX        (1ULL << 5) 
 1010#define IMB_FEATURE_AVX2       (1ULL << 6) 
 1011#define IMB_FEATURE_AVX512F    (1ULL << 7) 
 1012#define IMB_FEATURE_AVX512DQ   (1ULL << 8) 
 1013#define IMB_FEATURE_AVX512CD   (1ULL << 9) 
 1014#define IMB_FEATURE_AVX512BW   (1ULL << 10) 
 1015#define IMB_FEATURE_AVX512VL   (1ULL << 11) 
 1016#define IMB_FEATURE_AVX512_SKX (IMB_FEATURE_AVX512F | IMB_FEATURE_AVX512DQ | \ 
 1017                                IMB_FEATURE_AVX512CD | IMB_FEATURE_AVX512BW | \ 
 1018                                IMB_FEATURE_AVX512VL) 
 1019#define IMB_FEATURE_VAES       (1ULL << 12) 
 1020#define IMB_FEATURE_VPCLMULQDQ (1ULL << 13) 
 1021#define IMB_FEATURE_SAFE_DATA  (1ULL << 14) 
 1022#define IMB_FEATURE_SAFE_PARAM (1ULL << 15) 
 1023#define IMB_FEATURE_GFNI       (1ULL << 16) 
 1024#define IMB_FEATURE_AVX512_IFMA (1ULL << 17) 
 1025#define IMB_FEATURE_BMI2       (1ULL << 18) 
 1026#define IMB_FEATURE_AESNI_EMU  (1ULL << 19) 
 1031#define IMB_CPUFLAGS_NO_AESNI   (IMB_FEATURE_SSE4_2 | IMB_FEATURE_CMOV) 
 1032#define IMB_CPUFLAGS_SSE        (IMB_CPUFLAGS_NO_AESNI | IMB_FEATURE_AESNI | \ 
 1033                                 IMB_FEATURE_PCLMULQDQ) 
 1034#define IMB_CPUFLAGS_AVX        (IMB_CPUFLAGS_SSE | IMB_FEATURE_AVX) 
 1035#define IMB_CPUFLAGS_AVX2       (IMB_CPUFLAGS_AVX | IMB_FEATURE_AVX2 | \ 
 1037#define IMB_CPUFLAGS_AVX512     (IMB_CPUFLAGS_AVX2 | IMB_FEATURE_AVX512_SKX) 
 1041#define IMB_MAX_JOBS 128 
 1333                                                const unsigned reset_mgr);
 
 1538#define IMB_GET_NEXT_JOB(_mgr) ((_mgr)->get_next_job((_mgr))) 
 1549#define IMB_SUBMIT_JOB(_mgr) ((_mgr)->submit_job((_mgr))) 
 1560#define IMB_SUBMIT_JOB_NOCHECK(_mgr) ((_mgr)->submit_job_nocheck((_mgr))) 
 1569#define IMB_GET_COMPLETED_JOB(_mgr)  ((_mgr)->get_completed_job((_mgr))) 
 1578#define IMB_FLUSH_JOB(_mgr)          ((_mgr)->flush_job((_mgr))) 
 1587#define IMB_QUEUE_SIZE(_mgr)         ((_mgr)->queue_size((_mgr))) 
 1598#define IMB_SUBMIT_BURST(_mgr, _jobs, _n_jobs)          \ 
 1599        ((_mgr)->submit_burst((_mgr), (_jobs), (_n_jobs))) 
 1612#define IMB_SUBMIT_BURST_NOCHECK(_mgr, _jobs, _n_jobs)                  \ 
 1613        ((_mgr)->submit_burst_nocheck((_mgr), (_jobs), (_n_jobs))) 
 1627#define IMB_SUBMIT_CIPHER_BURST(_mgr, _jobs, _n_jobs, _cipher,          \ 
 1629        ((_mgr)->submit_cipher_burst((_mgr), (_jobs), (_n_jobs),        \ 
 1630                                     (_cipher), (_dir), (_key_size))) 
 1645#define IMB_SUBMIT_CIPHER_BURST_NOCHECK(_mgr, _jobs, _n_jobs, _cipher,  \ 
 1647        ((_mgr)->submit_cipher_burst_nocheck((_mgr), (_jobs), (_n_jobs),\ 
 1648                                             (_cipher), (_dir), (_key_size))) 
 1659#define IMB_SUBMIT_HASH_BURST(_mgr, _jobs, _n_jobs, _hash)              \ 
 1660        ((_mgr)->submit_hash_burst((_mgr), (_jobs), (_n_jobs), (_hash))) 
 1674#define IMB_SUBMIT_HASH_BURST_NOCHECK(_mgr, _jobs, _n_jobs, _hash)      \ 
 1675        ((_mgr)->submit_hash_burst_nocheck((_mgr), (_jobs), (_n_jobs), (_hash))) 
 1687#define IMB_AES_KEYEXP_128(_mgr, _key, _enc_exp_key, _dec_exp_key)      \ 
 1688        ((_mgr)->keyexp_128((_key), (_enc_exp_key), (_dec_exp_key))) 
 1697#define IMB_AES_KEYEXP_192(_mgr, _key, _enc_exp_key, _dec_exp_key)      \ 
 1698        ((_mgr)->keyexp_192((_key), (_enc_exp_key), (_dec_exp_key))) 
 1707#define IMB_AES_KEYEXP_256(_mgr, _key, _enc_exp_key, _dec_exp_key)      \ 
 1708        ((_mgr)->keyexp_256((_key), (_enc_exp_key), (_dec_exp_key))) 
 1718#define IMB_AES_CMAC_SUBKEY_GEN_128(_mgr, _exp_key, _key1, _key2)   \ 
 1719        ((_mgr)->cmac_subkey_gen_128((_exp_key), (_key1), (_key2))) 
 1729#define IMB_AES_CMAC_SUBKEY_GEN_256(_mgr, _exp_key, _key1, _key2)   \ 
 1730        ((_mgr)->cmac_subkey_gen_256((_exp_key), (_key1), (_key2))) 
 1741#define IMB_AES_XCBC_KEYEXP(_mgr, _key, _exp_key, _exp_key2, _exp_key3) \ 
 1742        ((_mgr)->xcbc_keyexp((_key), (_exp_key), (_exp_key2), (_exp_key3))) 
 1744#define IMB_DES_KEYSCHED(_mgr, _exp_key, _key)       \ 
 1745        ((_mgr)->des_key_sched((_exp_key), (_key))) 
 1756#define IMB_SHA1_ONE_BLOCK(_mgr, _src, _tag)        \ 
 1757        ((_mgr)->sha1_one_block((_src), (_tag))) 
 1767#define IMB_SHA1(_mgr, _src, _length, _tag)         \ 
 1768        ((_mgr)->sha1((_src), (_length), (_tag))) 
 1776#define IMB_SHA224_ONE_BLOCK(_mgr, _src, _tag)      \ 
 1777        ((_mgr)->sha224_one_block((_src), (_tag))) 
 1787#define IMB_SHA224(_mgr, _src, _length, _tag)       \ 
 1788        ((_mgr)->sha224((_src), (_length), (_tag))) 
 1796#define IMB_SHA256_ONE_BLOCK(_mgr, _src, _tag)      \ 
 1797        ((_mgr)->sha256_one_block((_src), (_tag))) 
 1806#define IMB_SHA256(_mgr, _src, _length, _tag)       \ 
 1807        ((_mgr)->sha256((_src), (_length), (_tag))) 
 1815#define IMB_SHA384_ONE_BLOCK(_mgr, _src, _tag)      \ 
 1816        ((_mgr)->sha384_one_block((_src), (_tag))) 
 1825#define IMB_SHA384(_mgr, _src, _length, _tag)       \ 
 1826        ((_mgr)->sha384((_src), (_length), (_tag))) 
 1834#define IMB_SHA512_ONE_BLOCK(_mgr, _src, _tag)      \ 
 1835        ((_mgr)->sha512_one_block((_src), (_tag))) 
 1844#define IMB_SHA512(_mgr, _src, _length, _tag)       \ 
 1845        ((_mgr)->sha512((_src), (_length), (_tag))) 
 1853#define IMB_MD5_ONE_BLOCK(_mgr, _src, _tag)         \ 
 1854        ((_mgr)->md5_one_block((_src), (_tag))) 
 1869#define IMB_AES128_CFB_ONE(_mgr, _dst, _src, _iv, _exp_key, _len)       \ 
 1870        ((_mgr)->aes128_cfb_one((_dst), (_src), (_iv), (_exp_key), (_len))) 
 1873#define IMB_AES128_GCM_ENC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad,  \ 
 1874                           _aadl, _tag, _tagl)                                 \ 
 1875        ((_mgr)->gcm128_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \ 
 1876                            (_aad), (_aadl), (_tag), (_tagl))) 
 1877#define IMB_AES192_GCM_ENC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad,  \ 
 1878                           _aadl, _tag, _tagl)                                 \ 
 1879        ((_mgr)->gcm192_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \ 
 1880                            (_aad), (_aadl), (_tag), (_tagl))) 
 1881#define IMB_AES256_GCM_ENC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad,  \ 
 1882                           _aadl, _tag, _tagl)                                 \ 
 1883        ((_mgr)->gcm256_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \ 
 1884                            (_aad), (_aadl), (_tag), (_tagl))) 
 1886#define IMB_AES128_GCM_DEC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad,  \ 
 1887                           _aadl, _tag, _tagl)                                 \ 
 1888        ((_mgr)->gcm128_dec((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \ 
 1889                            (_aad), (_aadl), (_tag), (_tagl))) 
 1890#define IMB_AES192_GCM_DEC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, \ 
 1891                           _aad, _aadl, _tag, _tagl)                    \ 
 1892        ((_mgr)->gcm192_dec((_exp_key), (_ctx), (_dst), (_src), (_len), \ 
 1893                            (_iv), (_aad), (_aadl), (_tag), (_tagl))) 
 1894#define IMB_AES256_GCM_DEC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, \ 
 1895                           _aad, _aadl, _tag, _tagl)                    \ 
 1896        ((_mgr)->gcm256_dec((_exp_key), (_ctx), (_dst), (_src), (_len), \ 
 1897                            (_iv), (_aad), (_aadl), (_tag), (_tagl))) 
 1899#define IMB_AES128_GCM_INIT(_mgr, _exp_key, _ctx, _iv, _aad, _aadl)       \ 
 1900        ((_mgr)->gcm128_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl))) 
 1901#define IMB_AES192_GCM_INIT(_mgr, _exp_key, _ctx, _iv, _aad, _aadl)       \ 
 1902        ((_mgr)->gcm192_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl))) 
 1903#define IMB_AES256_GCM_INIT(_mgr, _exp_key, _ctx, _iv, _aad, _aadl)       \ 
 1904        ((_mgr)->gcm256_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl))) 
 1906#define IMB_AES128_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, \ 
 1908        ((_mgr)->gcm128_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl),    \ 
 1910#define IMB_AES192_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, \ 
 1912        ((_mgr)->gcm192_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl),    \ 
 1914#define IMB_AES256_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, \ 
 1916        ((_mgr)->gcm256_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl),    \ 
 1919#define IMB_AES128_GCM_ENC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len)    \ 
 1920        ((_mgr)->gcm128_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len))) 
 1921#define IMB_AES192_GCM_ENC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len)    \ 
 1922        ((_mgr)->gcm192_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len))) 
 1923#define IMB_AES256_GCM_ENC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len)    \ 
 1924        ((_mgr)->gcm256_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len))) 
 1926#define IMB_AES128_GCM_DEC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len)    \ 
 1927        ((_mgr)->gcm128_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len))) 
 1928#define IMB_AES192_GCM_DEC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len)    \ 
 1929        ((_mgr)->gcm192_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len))) 
 1930#define IMB_AES256_GCM_DEC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len)    \ 
 1931        ((_mgr)->gcm256_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len))) 
 1933#define IMB_AES128_GCM_ENC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl)      \ 
 1934        ((_mgr)->gcm128_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl))) 
 1935#define IMB_AES192_GCM_ENC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl)      \ 
 1936        ((_mgr)->gcm192_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl))) 
 1937#define IMB_AES256_GCM_ENC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl)      \ 
 1938        ((_mgr)->gcm256_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl))) 
 1940#define IMB_AES128_GCM_DEC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl)      \ 
 1941        ((_mgr)->gcm128_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl))) 
 1942#define IMB_AES192_GCM_DEC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl)      \ 
 1943        ((_mgr)->gcm192_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl))) 
 1944#define IMB_AES256_GCM_DEC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl)      \ 
 1945        ((_mgr)->gcm256_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl))) 
 1947#define IMB_AES128_GMAC_INIT(_mgr, _exp_key, _ctx, _iv, _ivl) \ 
 1948        ((_mgr)->gmac128_init((_exp_key), (_ctx), (_iv), (_ivl))) 
 1949#define IMB_AES192_GMAC_INIT(_mgr, _exp_key, _ctx, _iv, _ivl) \ 
 1950        ((_mgr)->gmac192_init((_exp_key), (_ctx), (_iv), (_ivl))) 
 1951#define IMB_AES256_GMAC_INIT(_mgr, _exp_key, _ctx, _iv, _ivl) \ 
 1952        ((_mgr)->gmac256_init((_exp_key), (_ctx), (_iv), (_ivl))) 
 1954#define IMB_AES128_GMAC_UPDATE(_mgr, _exp_key, _ctx, _src, _len) \ 
 1955        ((_mgr)->gmac128_update((_exp_key), (_ctx), (_src), (_len))) 
 1956#define IMB_AES192_GMAC_UPDATE(_mgr, _exp_key, _ctx, _src, _len) \ 
 1957        ((_mgr)->gmac192_update((_exp_key), (_ctx), (_src), (_len))) 
 1958#define IMB_AES256_GMAC_UPDATE(_mgr, _exp_key, _ctx, _src, _len) \ 
 1959        ((_mgr)->gmac256_update((_exp_key), (_ctx), (_src), (_len))) 
 1961#define IMB_AES128_GMAC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl)      \ 
 1962        ((_mgr)->gmac128_finalize((_exp_key), (_ctx), (_tag), (_tagl))) 
 1963#define IMB_AES192_GMAC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl)      \ 
 1964        ((_mgr)->gmac192_finalize((_exp_key), (_ctx), (_tag), (_tagl))) 
 1965#define IMB_AES256_GMAC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl)      \ 
 1966        ((_mgr)->gmac256_finalize((_exp_key), (_ctx), (_tag), (_tagl))) 
 1968#define IMB_AES128_GCM_PRECOMP(_mgr, _key) \ 
 1969        ((_mgr)->gcm128_precomp((_key))) 
 1970#define IMB_AES192_GCM_PRECOMP(_mgr, _key) \ 
 1971        ((_mgr)->gcm192_precomp((_key))) 
 1972#define IMB_AES256_GCM_PRECOMP(_mgr, _key) \ 
 1973        ((_mgr)->gcm256_precomp((_key))) 
 1975#define IMB_AES128_GCM_PRE(_mgr, _key, _exp_key)     \ 
 1976        ((_mgr)->gcm128_pre((_key), (_exp_key))) 
 1977#define IMB_AES192_GCM_PRE(_mgr, _key, _exp_key)     \ 
 1978        ((_mgr)->gcm192_pre((_key), (_exp_key))) 
 1979#define IMB_AES256_GCM_PRE(_mgr, _key, _exp_key)     \ 
 1980        ((_mgr)->gcm256_pre((_key), (_exp_key))) 
 1982#define IMB_GHASH_PRE(_mgr, _key, _exp_key)          \ 
 1983        ((_mgr)->ghash_pre((_key), (_exp_key))) 
 1984#define IMB_GHASH(_mgr, _exp_key, _src, _len, _tag, _tagl) \ 
 1985        ((_mgr)->ghash((_exp_key), (_src), (_len), (_tag), (_tagl))) 
 1988#define IMB_CHACHA20_POLY1305_INIT(_mgr, _key, _ctx, _iv, _aad, _aadl)        \ 
 1989        ((_mgr)->chacha20_poly1305_init((_key), (_ctx), (_iv), (_aad),        \ 
 1992#define IMB_CHACHA20_POLY1305_ENC_UPDATE(_mgr, _key, _ctx, _dst, _src, _len)  \ 
 1993        ((_mgr)->chacha20_poly1305_enc_update((_key), (_ctx), (_dst), (_src), \ 
 1995#define IMB_CHACHA20_POLY1305_DEC_UPDATE(_mgr, _key, _ctx, _dst, _src, _len)  \ 
 1996        ((_mgr)->chacha20_poly1305_dec_update((_key), (_ctx), (_dst), (_src), \ 
 1999#define IMB_CHACHA20_POLY1305_ENC_FINALIZE(_mgr, _ctx, _tag, _tagl)           \ 
 2000        ((_mgr)->chacha20_poly1305_finalize((_ctx), (_tag), (_tagl))) 
 2002#define IMB_CHACHA20_POLY1305_DEC_FINALIZE(_mgr, _ctx, _tag, _tagl)           \ 
 2003        ((_mgr)->chacha20_poly1305_finalize((_ctx), (_tag), (_tagl))) 
 2017#define IMB_ZUC_EEA3_1_BUFFER(_mgr, _key, _iv, _src, _dst, _len)         \ 
 2018        ((_mgr)->eea3_1_buffer((_key), (_iv), (_src), (_dst), (_len))) 
 2019#define IMB_ZUC_EEA3_4_BUFFER(_mgr, _key, _iv, _src, _dst, _len)         \ 
 2020        ((_mgr)->eea3_4_buffer((_key), (_iv), (_src), (_dst), (_len))) 
 2021#define IMB_ZUC_EEA3_N_BUFFER(_mgr, _key, _iv, _src, _dst, _len, _count) \ 
 2022        ((_mgr)->eea3_n_buffer((_key), (_iv), (_src), (_dst), (_len), (_count))) 
 2035#define IMB_ZUC_EIA3_1_BUFFER(_mgr, _key, _iv, _src, _len, _tag)         \ 
 2036        ((_mgr)->eia3_1_buffer((_key), (_iv), (_src), (_len), (_tag))) 
 2037#define IMB_ZUC_EIA3_N_BUFFER(_mgr, _key, _iv, _src, _len, _tag, _count) \ 
 2038        ((_mgr)->eia3_n_buffer((_key), (_iv), (_src), (_len), (_tag), (_count))) 
 2058#define IMB_KASUMI_F8_1_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len) \ 
 2059        ((_mgr)->f8_1_buffer((_exp_key), (_iv), (_src), (_dst), (_len))) 
 2077#define IMB_KASUMI_F8_1_BUFFER_BIT(_mgr, _exp_key, _iv, _src, _dst, _len,  \ 
 2079        ((_mgr)->f8_1_buffer_bit((_exp_key), (_iv), (_src), (_dst), (_len), \ 
 2101#define IMB_KASUMI_F8_2_BUFFER(_mgr, _exp_key, _iv1, _iv2, _src1, _dst1,   \ 
 2102                               _len1, _src2, _dst2, _len2)                 \ 
 2103        ((_mgr)->f8_2_buffer((_exp_key), (_iv1), (_iv2), (_src1), (_dst1), \ 
 2104                             (_len1), (_src2), (_dst2), (_len2))) 
 2126#define IMB_KASUMI_F8_3_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _src1, _dst1, \ 
 2127                               _src2, _dst2, _src3, _dst3, _len)               \ 
 2128        ((_mgr)->f8_3_buffer((_exp_key), (_iv1), (_iv2), (_iv3), (_src1),      \ 
 2129                             (_dst1), (_src2), (_dst2), (_src3), (_dst3),      \ 
 2155#define IMB_KASUMI_F8_4_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4,   \ 
 2156                               _src1, _dst1, _src2, _dst2, _src3, _dst3, \ 
 2157                               _src4, _dst4, _len)                       \ 
 2158        ((_mgr)->f8_4_buffer((_exp_key), (_iv1), (_iv2), (_iv3), (_iv4), \ 
 2159                             (_src1), (_dst1), (_src2), (_dst2),         \ 
 2160                             (_src3), (_dst3), (_src4), (_dst4), (_len))) 
 2176#define IMB_KASUMI_F8_N_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len, _count) \ 
 2177        ((_mgr)->f8_n_buffer((_exp_key), (_iv), (_src), (_dst), (_len),       \ 
 2194#define IMB_KASUMI_F9_1_BUFFER(_mgr, _exp_key,  _src, _len, _tag) \ 
 2195        ((_mgr)->f9_1_buffer((_exp_key), (_src), (_len), (_tag))) 
 2211#define IMB_KASUMI_F9_1_BUFFER_USER(_mgr, _exp_key, _iv, _src, _len, _tag,    \ 
 2213        ((_mgr)->f9_1_buffer_user((_exp_key), (_iv), (_src), (_len),          \ 
 2225#define IMB_KASUMI_INIT_F8_KEY_SCHED(_mgr, _key, _exp_key)     \ 
 2226        ((_mgr)->kasumi_init_f8_key_sched((_key), (_exp_key))) 
 2237#define IMB_KASUMI_INIT_F9_KEY_SCHED(_mgr, _key, _exp_key)     \ 
 2238        ((_mgr)->kasumi_init_f9_key_sched((_key), (_exp_key))) 
 2249#define IMB_KASUMI_KEY_SCHED_SIZE(_mgr)((_mgr)->kasumi_key_sched_size()) 
 2269#define IMB_SNOW3G_F8_1_BUFFER_BIT(_mgr, _exp_key, _iv, _src, _dst,     \ 
 2271        ((_mgr)->snow3g_f8_1_buffer_bit((_exp_key), (_iv), (_src),      \ 
 2272                                        (_dst), (_len), (_offset))) 
 2288#define IMB_SNOW3G_F8_1_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len)        \ 
 2289        ((_mgr)->snow3g_f8_1_buffer((_exp_key), (_iv), (_src), (_dst), (_len))) 
 2307#define IMB_SNOW3G_F8_2_BUFFER(_mgr, _exp_key, _iv1, _iv2,              \ 
 2308                               _src1, _dst1, _len1,                     \ 
 2309                               _src2, _dst2, _len2)                     \ 
 2310        ((_mgr)->snow3g_f8_2_buffer((_exp_key), (_iv1), (_iv2),         \ 
 2311                                    (_src1), (_dst1), (_len1),          \ 
 2312                                    (_src2), (_dst2), (_len2))) 
 2339#define IMB_SNOW3G_F8_4_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4,   \ 
 2340                               _src1, _dst1, _len1,                      \ 
 2341                               _src2, _dst2, _len2,                      \ 
 2342                               _src3, _dst3, _len3,                      \ 
 2343                               _src4, _dst4, _len4)                      \ 
 2344        ((_mgr)->snow3g_f8_4_buffer((_exp_key), (_iv1), (_iv2), (_iv3),  \ 
 2345                                    (_iv4), (_src1), (_dst1), (_len1),   \ 
 2346                                    (_src2), (_dst2), (_len2),           \ 
 2347                                    (_src3), (_dst3), (_len3),           \ 
 2348                                    (_src4), (_dst4), (_len4))) 
 2391#define IMB_SNOW3G_F8_8_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4,   \ 
 2392                               _iv5, _iv6, _iv7, _iv8,                   \ 
 2393                               _src1, _dst1, _len1,                      \ 
 2394                               _src2, _dst2, _len2,                      \ 
 2395                               _src3, _dst3, _len3,                      \ 
 2396                               _src4, _dst4, _len4,                      \ 
 2397                               _src5, _dst5, _len5,                      \ 
 2398                               _src6, _dst6, _len6,                      \ 
 2399                               _src7, _dst7, _len7,                      \ 
 2400                               _src8, _dst8, _len8)                      \ 
 2401        ((_mgr)->snow3g_f8_8_buffer((_exp_key), (_iv1), (_iv2), (_iv3),  \ 
 2402                                    (_iv4), (_iv5), (_iv6), (_iv7),      \ 
 2403                                    (_iv8), (_src1), (_dst1), (_len1),   \ 
 2404                                    (_src2), (_dst2), (_len2),           \ 
 2405                                    (_src3), (_dst3), (_len3),           \ 
 2406                                    (_src4), (_dst4), (_len4),           \ 
 2407                                    (_src5), (_dst5), (_len5),           \ 
 2408                                    (_src6), (_dst6), (_len6),           \ 
 2409                                    (_src7), (_dst7), (_len7),           \ 
 2410                                    (_src8), (_dst8), (_len8))) 
 2424#define IMB_SNOW3G_F8_8_BUFFER_MULTIKEY(_mgr, _exp_key, _iv, _src, _dst, _len) \ 
 2425        ((_mgr)->snow3g_f8_8_buffer_multikey((_exp_key), (_iv), (_src), (_dst),\ 
 2442#define IMB_SNOW3G_F8_N_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len, _count) \ 
 2443        ((_mgr)->snow3g_f8_n_buffer((_exp_key), (_iv), (_src), \ 
 2444                                    (_dst), (_len), (_count))) 
 2460#define IMB_SNOW3G_F8_N_BUFFER_MULTIKEY(_mgr, _exp_key, _iv, _src,           \ 
 2461                                        _dst, _len, _count)             \ 
 2462        ((_mgr)->snow3g_f8_n_buffer_multikey((_exp_key), (_iv), (_src),      \ 
 2463                                             (_dst), (_len), (_count))) 
 2480#define IMB_SNOW3G_F9_1_BUFFER(_mgr, _exp_key, _iv, _src, _len, _tag)     \ 
 2481        ((_mgr)->snow3g_f9_1_buffer((_exp_key), (_iv), (_src), (_len), (_tag))) 
 2493#define IMB_SNOW3G_INIT_KEY_SCHED(_mgr, _key, _exp_key)     \ 
 2494        ((_mgr)->snow3g_init_key_sched((_key), (_exp_key))) 
 2505#define IMB_SNOW3G_KEY_SCHED_SIZE(_mgr)((_mgr)->snow3g_key_sched_size()) 
 2510#define IMB_HEC_32(_mgr, _src)((_mgr)->hec_32(_src)) 
 2511#define IMB_HEC_64(_mgr, _src)((_mgr)->hec_64(_src)) 
 2516#define IMB_CRC32_ETHERNET_FCS(_mgr, _src, _len) \ 
 2517        (_mgr)->crc32_ethernet_fcs(_src, _len) 
 2522#define IMB_CRC16_X25(_mgr, _src, _len) \ 
 2523        (_mgr)->crc16_x25(_src, _len) 
 2528#define IMB_CRC32_SCTP(_mgr, _src, _len) \ 
 2529        (_mgr)->crc32_sctp(_src, _len) 
 2534#define IMB_CRC24_LTE_A(_mgr, _src, _len) \ 
 2535        (_mgr)->crc24_lte_a(_src, _len) 
 2540#define IMB_CRC24_LTE_B(_mgr, _src, _len) \ 
 2541        (_mgr)->crc24_lte_b(_src, _len) 
 2546#define IMB_CRC16_FP_DATA(_mgr, _src, _len) \ 
 2547        (_mgr)->crc16_fp_data(_src, _len) 
 2552#define IMB_CRC11_FP_HEADER(_mgr, _src, _len) \ 
 2553        (_mgr)->crc11_fp_header(_src, _len) 
 2558#define IMB_CRC7_FP_HEADER(_mgr, _src, _len) \ 
 2559        (_mgr)->crc7_fp_header(_src, _len) 
 2564#define IMB_CRC10_IUUP_DATA(_mgr, _src, _len) \ 
 2565        (_mgr)->crc10_iuup_data(_src, _len) 
 2570#define IMB_CRC6_IUUP_HEADER(_mgr, _src, _len) \ 
 2571        (_mgr)->crc6_iuup_header(_src, _len) 
 2576#define IMB_CRC32_WIMAX_OFDMA_DATA(_mgr, _src, _len) \ 
 2577        (_mgr)->crc32_wimax_ofdma_data(_src, _len) 
 2582#define IMB_CRC8_WIMAX_OFDMA_HCS(_mgr, _src, _len) \ 
 2583        (_mgr)->crc8_wimax_ofdma_hcs(_src, _len) 
 2857                                       void *dec_exp_keys);
 
 2862                                       void *dec_exp_keys);
 
 2867                                        void *dec_exp_keys);
 
 2872                                          void *dec_exp_keys);
 
 2882                                       void *dec_exp_keys);
 
 2887                                       void *dec_exp_keys);
 
 2892                                        void *dec_exp_keys);
 
 2897                                          void *dec_exp_keys);
 
 2907                                       void *dec_exp_keys);
 
 2912                                       void *dec_exp_keys);
 
 2917                                        void *dec_exp_keys);
 
 2922                                          void *dec_exp_keys);
 
 2931                                           void *enc_exp_keys);
 
 2936                                           void *enc_exp_keys);
 
 2941                                            void *enc_exp_keys);
 
 2946                                              void *enc_exp_keys);
 
 2955                                           void *enc_exp_keys);
 
 2960                                           void *enc_exp_keys);
 
 2965                                            void *enc_exp_keys);
 
 2970                                              void *enc_exp_keys);
 
 2979                                           void *enc_exp_keys);
 
 2984                                           void *enc_exp_keys);
 
 2989                                            void *enc_exp_keys);
 
 2994                                              void *enc_exp_keys);
 
 3005                                            void *k2, 
void *k3);
 
 3010                                            void *k2, 
void *k3);
 
 3015                                             void *k2, 
void *k3);
 
 3020                                               void *k2, 
void *k3);
 
 3059                                        const void *iv, 
const void *keys,
 
 3065                                        const void *iv, 
const void *keys,
 
 3071                                         const void *iv, 
const void *keys,
 
 3077                                           const void *iv, 
const void *keys,
 
 3106                    uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3107                    const uint8_t *iv, uint8_t 
const *aad, uint64_t aad_len,
 
 3108                    uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3115                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3117                         uint8_t 
const *aad, uint64_t aad_len,
 
 3118                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3125                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3127                         uint8_t 
const *aad, uint64_t aad_len,
 
 3128                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3150                    uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3151                    const uint8_t *iv, uint8_t 
const *aad, uint64_t aad_len,
 
 3152                    uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3159                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3161                         uint8_t 
const *aad, uint64_t aad_len,
 
 3162                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3169                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3171                         uint8_t 
const *aad, uint64_t aad_len,
 
 3172                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3195                    uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3197                    uint8_t 
const *aad, uint64_t aad_len,
 
 3198                    uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3205                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3207                         uint8_t 
const *aad, uint64_t aad_len,
 
 3208                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3215                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3217                         uint8_t 
const *aad, uint64_t aad_len,
 
 3218                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3241                    uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3242                    const uint8_t *iv, uint8_t 
const *aad, uint64_t aad_len,
 
 3243                    uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3250                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3252                         uint8_t 
const *aad, uint64_t aad_len,
 
 3253                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3260                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3262                         uint8_t 
const *aad, uint64_t aad_len,
 
 3263                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3286                    uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3287                    const uint8_t *iv, uint8_t 
const *aad, uint64_t aad_len,
 
 3288                    uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3295                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3297                         uint8_t 
const *aad, uint64_t aad_len,
 
 3298                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3305                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3307                         uint8_t 
const *aad, uint64_t aad_len,
 
 3308                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3331                    uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3332                    const uint8_t *iv, uint8_t 
const *aad, uint64_t aad_len,
 
 3333                    uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3340                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3342                         uint8_t 
const *aad, uint64_t aad_len,
 
 3343                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3350                         uint8_t *out, uint8_t 
const *in, uint64_t len,
 
 3352                         uint8_t 
const *aad, uint64_t aad_len,
 
 3353                         uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3370                     const uint8_t *iv, uint8_t 
const *aad, uint64_t aad_len);
 
 3378                          uint8_t 
const *aad, uint64_t aad_len);
 
 3386                          uint8_t 
const *aad, uint64_t aad_len);
 
 3402                     const uint8_t *iv, uint8_t 
const *aad, uint64_t aad_len);
 
 3410                          uint8_t 
const *aad, uint64_t aad_len);
 
 3418                          uint8_t 
const *aad, uint64_t aad_len);
 
 3434                     const uint8_t *iv, uint8_t 
const *aad, uint64_t aad_len);
 
 3442                          uint8_t 
const *aad, uint64_t aad_len);
 
 3450                          uint8_t 
const *aad, uint64_t aad_len);
 
 3464                           uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3471                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3478                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3492                           uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3499                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3506                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3520                           uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3527                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3534                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3548                           uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3555                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3562                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3576                           uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3583                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3590                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3604                           uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3611                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3618                                uint8_t *out, 
const uint8_t *in, uint64_t len);
 
 3633                             uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3640                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3647                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3662                             uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3669                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3676                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3691                             uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3698                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3705                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3720                             uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3727                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3734                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3749                             uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3756                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3763                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3778                             uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3785                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3792                                  uint8_t *auth_tag, uint64_t auth_tag_len);
 
 3931                                   const uint8_t bearer,
 
 3947                                   const uint8_t bearer,
 
 3964                                    const uint8_t bearer,
 
 3979                                    const uint32_t fresh,
 
 3998                                    const uint8_t bearer,
 
 4017                                    const uint32_t fresh,
 
IMB_DLL_EXPORT void aes_gcm_enc_128_finalize_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End encryption of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT IMB_JOB * get_next_job_sse(IMB_MGR *state)
Get next available job.
#define KASUMI_KEY_SCHEDULE_SIZE
Definition: intel-ipsec-mb.h:648
IMB_DLL_EXPORT void aes_gcm_pre_256_avx_gen4(const void *key, struct gcm_key_data *key_data)
Pre-processes AES-GCM-256 key data.
IMB_DLL_EXPORT void aes_gcm_dec_128_finalize_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End decryption of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT void aes_gcm_init_256_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
Initialize a gcm_context_data structure to prepare for AES-GCM-256 Encryption.
void(* zuc_eea3_1_buffer_t)(const void *, const void *, const void *, void *, const uint32_t)
Definition: intel-ipsec-mb.h:853
IMB_DLL_EXPORT void sha256_one_block_avx2(const void *data, void *digest)
IMB_DLL_EXPORT void aes_keyexp_192_enc_sse(const void *key, void *enc_exp_keys)
IMB_DLL_EXPORT void aes_gcm_dec_256_update_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Decrypt a block of a AES-GCM-256 encryption message.
#define IMB_GCM_ENC_KEY_LEN
Definition: intel-ipsec-mb.h:718
uint32_t(* submit_burst_t)(struct IMB_MGR *, struct IMB_JOB *, const uint32_t)
Definition: intel-ipsec-mb.h:785
IMB_DLL_EXPORT void aes_gcm_dec_192_finalize_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End decryption of a AES-GCM-192 encryption message.
IMB_DLL_EXPORT void aes_gcm_enc_192_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-192 Encryption.
IMB_DLL_EXPORT void sha256_avx512(const void *data, const uint64_t length, void *digest)
void(* snow3g_f8_8_buffer_multikey_t)(const snow3g_key_schedule_t *const [], const void *const [], const void *const [], void *[], const uint32_t[])
Definition: intel-ipsec-mb.h:962
void(* aes_gcm_pre_t)(const void *, struct gcm_key_data *)
Definition: intel-ipsec-mb.h:830
void(* ghash_t)(const struct gcm_key_data *, const void *, const uint64_t, void *, const uint64_t)
Definition: intel-ipsec-mb.h:850
IMB_DLL_EXPORT void aes_xcbc_expand_key_avx512(const void *key, void *k1_exp, void *k2, void *k3)
IMB_DLL_EXPORT void aes_gcm_dec_256_update_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Decrypt a block of a AES-GCM-256 encryption message.
IMB_DLL_EXPORT void sha224_one_block_avx512(const void *data, void *digest)
IMB_DLL_EXPORT void aes_gcm_enc_192_update_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-192 encryption message.
IMB_DLL_EXPORT void sha512_avx(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void aes_gcm_precomp_256_sse(struct gcm_key_data *key_data)
Precomputation of AES-GCM-256 HashKey constants.
IMB_DLL_EXPORT void aes_gcm_pre_256_sse(const void *key, struct gcm_key_data *key_data)
Pre-processes AES-GCM-256 key data.
void(* chacha_poly_finalize_t)(struct chacha20_poly1305_context_data *, void *, const uint64_t)
Definition: intel-ipsec-mb.h:848
IMB_DLL_EXPORT void aes_keyexp_192_avx512(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_KEY_SIZE_BYTES
Definition: intel-ipsec-mb.h:442
@ IMB_KEY_192_BYTES
Definition: intel-ipsec-mb.h:444
@ IMB_KEY_256_BYTES
Definition: intel-ipsec-mb.h:445
@ IMB_KEY_128_BYTES
Definition: intel-ipsec-mb.h:443
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx(const void *key, void *enc_exp_keys)
IMB_DLL_EXPORT void aes_gcm_dec_128_update_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Decrypt a block of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT void free_mb_mgr(IMB_MGR *ptr)
Frees memory allocated previously by alloc_mb_mgr()
IMB_DLL_EXPORT IMB_JOB * get_completed_job_sse(IMB_MGR *state)
Get next completed job.
IMB_DLL_EXPORT void aes_keyexp_128_enc_sse(const void *key, void *enc_exp_keys)
void(* snow3g_f8_1_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, void *, const uint32_t)
Definition: intel-ipsec-mb.h:927
IMB_DLL_EXPORT void aes_gcm_precomp_256_avx_gen2(struct gcm_key_data *key_data)
Precomputation of AES-GCM-256 HashKey constants.
IMB_DLL_EXPORT void init_mb_mgr_sse(IMB_MGR *state)
Initialize Multi-Buffer Manager structure.
IMB_DLL_EXPORT void init_mb_mgr_auto(IMB_MGR *state, IMB_ARCH *arch)
Automatically initialize most performant Multi-buffer manager based on CPU features.
IMB_DLL_EXPORT int snow3g_f8_iv_gen(const uint32_t count, const uint8_t bearer, const uint8_t dir, void *iv_ptr)
Generation of SNOW3G F8 Initialization Vector.
IMB_DLL_EXPORT void sha256_one_block_avx(const void *data, void *digest)
IMB_DLL_EXPORT void sha224_sse(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void aes_gcm_pre_128_avx_gen2(const void *key, struct gcm_key_data *key_data)
Pre-processes AES-GCM-128 key data.
void(* zuc_eea3_n_buffer_t)(const void *const *, const void *const *, const void *const *, void **, const uint32_t *, const uint32_t)
Definition: intel-ipsec-mb.h:860
void(* aes_gmac_init_t)(const struct gcm_key_data *, struct gcm_context_data *, const uint8_t *, const uint64_t)
Definition: intel-ipsec-mb.h:832
IMB_DLL_EXPORT void aes_keyexp_128_sse(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_DLL_EXPORT IMB_JOB * get_next_job_avx(IMB_MGR *state)
Get next available job.
IMB_DLL_EXPORT void aes_gcm_enc_256_update_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-256 encryption message.
IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_sse(IMB_MGR *state)
Submit job for processing without validating.
IMB_DLL_EXPORT void sha1_sse(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void aes_keyexp_256_avx512(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_DLL_EXPORT int kasumi_f8_iv_gen(const uint32_t count, const uint8_t bearer, const uint8_t dir, void *iv_ptr)
Generation of KASUMI F8 Initialization Vector.
IMB_DLL_EXPORT void sha384_avx2(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void sha512_sse(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void sha384_one_block_avx512(const void *data, void *digest)
IMB_DLL_EXPORT IMB_MGR * imb_set_pointers_mb_mgr(void *ptr, const uint64_t flags, const unsigned reset_mgr)
Initializes IMB_MGR pointers to out-of-order managers with use of externally allocated memory.
IMB_DLL_EXPORT void aes_keyexp_192_avx(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_CIPHER_MODE
Definition: intel-ipsec-mb.h:355
@ IMB_CIPHER_DES
Definition: intel-ipsec-mb.h:362
@ IMB_CIPHER_NULL
Definition: intel-ipsec-mb.h:358
@ IMB_CIPHER_CBC
Definition: intel-ipsec-mb.h:356
@ IMB_CIPHER_GCM
Definition: intel-ipsec-mb.h:360
@ IMB_CIPHER_ECB
Definition: intel-ipsec-mb.h:367
@ IMB_CIPHER_ZUC_EEA3
Definition: intel-ipsec-mb.h:369
@ IMB_CIPHER_CHACHA20
Definition: intel-ipsec-mb.h:373
@ IMB_CIPHER_KASUMI_UEA1_BITLEN
Definition: intel-ipsec-mb.h:371
@ IMB_CIPHER_CHACHA20_POLY1305_SGL
Definition: intel-ipsec-mb.h:375
@ IMB_CIPHER_CUSTOM
Definition: intel-ipsec-mb.h:361
@ IMB_CIPHER_GCM_SGL
Definition: intel-ipsec-mb.h:378
@ IMB_CIPHER_CNTR
Definition: intel-ipsec-mb.h:357
@ IMB_CIPHER_DES3
Definition: intel-ipsec-mb.h:365
@ IMB_CIPHER_CNTR_BITLEN
Definition: intel-ipsec-mb.h:368
@ IMB_CIPHER_CBCS_1_9
Definition: intel-ipsec-mb.h:372
@ IMB_CIPHER_NUM
Definition: intel-ipsec-mb.h:379
@ IMB_CIPHER_CCM
Definition: intel-ipsec-mb.h:364
@ IMB_CIPHER_SNOW3G_UEA2_BITLEN
Definition: intel-ipsec-mb.h:370
@ IMB_CIPHER_PON_AES_CNTR
Definition: intel-ipsec-mb.h:366
@ IMB_CIPHER_CHACHA20_POLY1305
Definition: intel-ipsec-mb.h:374
@ IMB_CIPHER_SNOW_V_AEAD
Definition: intel-ipsec-mb.h:377
@ IMB_CIPHER_DOCSIS_SEC_BPI
Definition: intel-ipsec-mb.h:359
@ IMB_CIPHER_DOCSIS_DES
Definition: intel-ipsec-mb.h:363
@ IMB_CIPHER_SNOW_V
Definition: intel-ipsec-mb.h:376
IMB_DLL_EXPORT void aes_gcm_pre_128_avx_gen4(const void *key, struct gcm_key_data *key_data)
Pre-processes AES-GCM-128 key data.
IMB_DLL_EXPORT void aes_gcm_init_256_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
Initialize a gcm_context_data structure to prepare for AES-GCM-256 Encryption.
void(* snow3g_f8_n_buffer_multikey_t)(const snow3g_key_schedule_t *const [], const void *const [], const void *const [], void *[], const uint32_t[], const uint32_t)
Definition: intel-ipsec-mb.h:973
IMB_DLL_EXPORT void aes_gcm_enc_128_finalize_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End encryption of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT IMB_JOB * get_next_job_avx512(IMB_MGR *state)
Get next available job.
IMB_JOB *(* submit_job_t)(struct IMB_MGR *)
Definition: intel-ipsec-mb.h:781
void(* chacha_poly_enc_dec_update_t)(const void *, struct chacha20_poly1305_context_data *, void *, const void *, const uint64_t)
Definition: intel-ipsec-mb.h:845
IMB_DLL_EXPORT void aes_gcm_dec_128_update_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Decrypt a block of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT const char * imb_get_version_str(void)
Get library version in string format.
IMB_DLL_EXPORT void aes_gcm_enc_256_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-256 Encryption.
IMB_DLL_EXPORT void aes_keyexp_192_enc_avx2(const void *key, void *enc_exp_keys)
IMB_DLL_EXPORT void aes_gcm_enc_256_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-256 Encryption.
IMB_DLL_EXPORT void aes_gcm_precomp_128_sse(struct gcm_key_data *key_data)
Precomputation of AES-GCM-128 HashKey constants.
IMB_DLL_EXPORT void aes_gcm_enc_192_update_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-192 encryption message.
IMB_DLL_EXPORT int zuc_eea3_iv_gen(const uint32_t count, const uint8_t bearer, const uint8_t dir, void *iv_ptr)
Generation of ZUC-EEA3 Initialization Vector.
IMB_DLL_EXPORT IMB_JOB * get_next_job_avx2(IMB_MGR *state)
Get next available job.
IMB_CHAIN_ORDER
Definition: intel-ipsec-mb.h:437
@ IMB_ORDER_HASH_CIPHER
Definition: intel-ipsec-mb.h:439
@ IMB_ORDER_CIPHER_HASH
Definition: intel-ipsec-mb.h:438
void(* chacha_poly_init_t)(const void *, struct chacha20_poly1305_context_data *, const void *, const void *, const uint64_t)
Definition: intel-ipsec-mb.h:842
IMB_DLL_EXPORT void sha256_sse(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void aes_cmac_subkey_gen_sse(const void *key_exp, void *key1, void *key2)
void(* snow3g_f8_2_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, const void *, void *, const uint32_t, const void *, void *, const uint32_t)
Definition: intel-ipsec-mb.h:935
uint32_t(* submit_hash_burst_t)(struct IMB_MGR *, struct IMB_JOB *, const uint32_t, const IMB_HASH_ALG hash)
Definition: intel-ipsec-mb.h:793
IMB_DLL_EXPORT void aes_gcm_enc_192_finalize_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End encryption of a AES-GCM-192 encryption message.
IMB_DLL_EXPORT void aes_keyexp_128_avx2(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_DLL_EXPORT void aes_keyexp_256_sse(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_DLL_EXPORT void aes_gcm_enc_192_finalize_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End encryption of a AES-GCM-192 encryption message.
void(* kasumi_f8_n_buffer_t)(const kasumi_key_sched_t *, const uint64_t *, const void *const *, void **, const uint32_t *, const uint32_t)
Definition: intel-ipsec-mb.h:901
IMB_DLL_EXPORT uint32_t queue_size_avx512(IMB_MGR *state)
Get number of jobs queued to be processed.
IMB_DLL_EXPORT void sha224_avx512(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void aes_gcm_enc_256_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-256 Encryption.
IMB_DLL_EXPORT void sha1_one_block_avx(const void *data, void *digest)
IMB_DLL_EXPORT void aes_keyexp_192_enc_avx(const void *key, void *enc_exp_keys)
void(* kasumi_f8_3_buffer_t)(const kasumi_key_sched_t *, const uint64_t, const uint64_t, const uint64_t, const void *, void *, const void *, void *, const void *, void *, const uint32_t)
Definition: intel-ipsec-mb.h:886
IMB_DLL_EXPORT void aes_gcm_enc_192_update_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-192 encryption message.
uint32_t(* crc32_fn_t)(const void *, const uint64_t)
Definition: intel-ipsec-mb.h:991
IMB_DLL_EXPORT void aes_gcm_dec_192_update_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Decrypt a block of a AES-GCM-192 encryption message.
IMB_DLL_EXPORT void sha224_one_block_avx2(const void *data, void *digest)
#define IMB_GCM_BLOCK_LEN
Definition: intel-ipsec-mb.h:660
IMB_DLL_EXPORT void aes_cfb_128_one_avx(void *out, const void *in, const void *iv, const void *keys, uint64_t len)
AES-CFB-128 Encrypt/Decrypt up to one block.
IMB_JOB *(* get_next_job_t)(struct IMB_MGR *)
Definition: intel-ipsec-mb.h:780
IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_avx512(IMB_MGR *state)
Submit job for processing without validating.
IMB_DLL_EXPORT void aes_keyexp_256_avx(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_DLL_EXPORT void aes_gcm_init_192_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
Initialize a gcm_context_data structure to prepare for AES-GCM-192 Encryption.
IMB_DLL_EXPORT void aes_gcm_dec_192_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-192 Decryption.
IMB_DLL_EXPORT void aes_gcm_pre_128_sse(const void *key, struct gcm_key_data *key_data)
Pre-processes AES-GCM-128 key data.
IMB_DLL_EXPORT void sha512_one_block_avx512(const void *data, void *digest)
IMB_DLL_EXPORT void aes_gcm_enc_192_finalize_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End encryption of a AES-GCM-192 encryption message.
int(* des_keysched_t)(uint64_t *, const void *)
Definition: intel-ipsec-mb.h:802
void(* keyexp_t)(const void *, void *, void *)
Definition: intel-ipsec-mb.h:797
void(* snow3g_f8_8_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, const void *, const void *, const void *, const void *, const void *, const void *, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t)
Definition: intel-ipsec-mb.h:948
IMB_DLL_EXPORT void aes_gcm_dec_192_update_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Decrypt a block of a AES-GCM-192 encryption message.
IMB_DLL_EXPORT const char * imb_get_strerror(int errnum)
API to get description for errnum.
IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx(const void *key_exp, void *key1, void *key2)
void(* aes_gcm_init_var_iv_t)(const struct gcm_key_data *, struct gcm_context_data *, const uint8_t *, const uint64_t, const uint8_t *, const uint64_t)
Definition: intel-ipsec-mb.h:819
IMB_DLL_EXPORT void aes_keyexp_128_enc_avx512(const void *key, void *enc_exp_keys)
IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx2(const void *key_exp, void *key1, void *key2)
IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx512(IMB_MGR *state)
Get next completed job.
IMB_DLL_EXPORT void sha224_one_block_sse(const void *data, void *digest)
void(* snow3g_f8_n_buffer_t)(const snow3g_key_schedule_t *, const void *const [], const void *const [], void *[], const uint32_t[], const uint32_t)
Definition: intel-ipsec-mb.h:966
IMB_SGL_STATE
Definition: intel-ipsec-mb.h:448
@ IMB_SGL_UPDATE
Definition: intel-ipsec-mb.h:450
@ IMB_SGL_ALL
Definition: intel-ipsec-mb.h:452
@ IMB_SGL_COMPLETE
Definition: intel-ipsec-mb.h:451
@ IMB_SGL_INIT
Definition: intel-ipsec-mb.h:449
IMB_DLL_EXPORT void aes_gcm_pre_192_avx_gen2(const void *key, struct gcm_key_data *key_data)
Pre-processes AES-GCM-192 key data.
IMB_DLL_EXPORT void aes_gcm_precomp_192_avx_gen4(struct gcm_key_data *key_data)
Precomputation of AES-GCM-192 HashKey constants.
IMB_DLL_EXPORT void aes_cfb_128_one_avx2(void *out, const void *in, const void *iv, const void *keys, uint64_t len)
AES-CFB-128 Encrypt/Decrypt up to one block.
IMB_DLL_EXPORT void init_mb_mgr_avx2(IMB_MGR *state)
Initialize Multi-Buffer Manager structure.
void(* aes_gcm_enc_dec_t)(const struct gcm_key_data *, struct gcm_context_data *, uint8_t *, uint8_t const *, uint64_t, const uint8_t *, uint8_t const *, uint64_t, uint8_t *, uint64_t)
Definition: intel-ipsec-mb.h:805
IMB_DLL_EXPORT uint64_t imb_get_feature_flags(void)
Retrieves the bitmask with the features supported by the library, without having to allocate/initiali...
IMB_DLL_EXPORT void aes_keyexp_192_enc_avx512(const void *key, void *enc_exp_keys)
IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_avx2(IMB_MGR *state)
Submit job for processing without validating.
IMB_DLL_EXPORT void aes_gcm_precomp_192_sse(struct gcm_key_data *key_data)
Precomputation of AES-GCM-192 HashKey constants.
IMB_DLL_EXPORT void aes_gcm_dec_256_finalize_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End decryption of a AES-GCM-256 encryption message.
IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx512(const void *key_exp, void *key1, void *key2)
#define IMB_GCM_KEY_SETS
Definition: intel-ipsec-mb.h:719
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx2(const void *key, void *enc_exp_keys)
IMB_DLL_EXPORT void sha1_one_block_avx512(const void *data, void *digest)
IMB_DLL_EXPORT void aes_gcm_init_192_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
Initialize a gcm_context_data structure to prepare for AES-GCM-192 Encryption.
IMB_DLL_EXPORT IMB_JOB * submit_job_avx512(IMB_MGR *state)
Submit job for processing after validating.
IMB_DLL_EXPORT void aes_keyexp_192_sse(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_DLL_EXPORT void sha224_one_block_avx(const void *data, void *digest)
IMB_DLL_EXPORT IMB_JOB * submit_job_sse(IMB_MGR *state)
Submit job for processing after validating.
IMB_DLL_EXPORT void aes_gcm_dec_256_finalize_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End decryption of a AES-GCM-256 encryption message.
IMB_DLL_EXPORT void aes_gcm_dec_128_update_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Decrypt a block of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT void sha256_avx(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT int imb_get_errno(IMB_MGR *mb_mgr)
API to get error status.
IMB_DLL_EXPORT void aes_gcm_init_128_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
Initialize a gcm_context_data structure to prepare for AES-GCM-128 Encryption.
IMB_DLL_EXPORT void md5_one_block_avx(const void *data, void *digest)
IMB_DLL_EXPORT void aes_gcm_enc_128_update_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT void sha384_avx(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void aes_cfb_128_one_sse(void *out, const void *in, const void *iv, const void *keys, uint64_t len)
AES-CFB-128 Encrypt/Decrypt up to one block.
void(* snow3g_f8_1_buffer_bit_t)(const snow3g_key_schedule_t *, const void *, const void *, void *, const uint32_t, const uint32_t)
Definition: intel-ipsec-mb.h:931
int(* kasumi_init_f8_key_sched_t)(const void *, kasumi_key_sched_t *)
Definition: intel-ipsec-mb.h:912
IMB_DLL_EXPORT void sha512_one_block_avx(const void *data, void *digest)
void(* zuc_eea3_4_buffer_t)(const void *const *, const void *const *, const void *const *, void **, const uint32_t *)
Definition: intel-ipsec-mb.h:856
IMB_DLL_EXPORT void aes_gcm_enc_256_finalize_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End encryption of a AES-GCM-256 encryption message.
IMB_DLL_EXPORT void sha512_avx512(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT uint32_t queue_size_avx(IMB_MGR *state)
Get number of jobs queued to be processed.
IMB_DLL_EXPORT uint32_t queue_size_sse(IMB_MGR *state)
Get number of jobs queued to be processed.
void(* kasumi_f8_1_buffer_bit_t)(const kasumi_key_sched_t *, const uint64_t, const void *, void *, const uint32_t, const uint32_t)
Definition: intel-ipsec-mb.h:876
struct kasumi_key_sched_s kasumi_key_sched_t
IMB_HASH_ALG
Definition: intel-ipsec-mb.h:387
@ IMB_AUTH_AES_CMAC_256
Definition: intel-ipsec-mb.h:414
@ IMB_AUTH_AES_XCBC
Definition: intel-ipsec-mb.h:393
@ IMB_AUTH_ZUC_EIA3_BITLEN
Definition: intel-ipsec-mb.h:407
@ IMB_AUTH_AES_GMAC_128
Definition: intel-ipsec-mb.h:411
@ IMB_AUTH_CRC16_X25
Definition: intel-ipsec-mb.h:426
@ IMB_AUTH_NULL
Definition: intel-ipsec-mb.h:395
@ IMB_AUTH_PON_CRC_BIP
Definition: intel-ipsec-mb.h:406
@ IMB_AUTH_SHA_224
Definition: intel-ipsec-mb.h:401
@ IMB_AUTH_CRC24_LTE_A
Definition: intel-ipsec-mb.h:424
@ IMB_AUTH_CRC32_ETHERNET_FCS
Definition: intel-ipsec-mb.h:421
@ IMB_AUTH_KASUMI_UIA1
Definition: intel-ipsec-mb.h:410
@ IMB_AUTH_HMAC_SHA_1
Definition: intel-ipsec-mb.h:388
@ IMB_AUTH_SHA_256
Definition: intel-ipsec-mb.h:402
@ IMB_AUTH_SNOW3G_UIA2_BITLEN
Definition: intel-ipsec-mb.h:409
@ IMB_AUTH_SNOW_V_AEAD
Definition: intel-ipsec-mb.h:419
@ IMB_AUTH_CRC32_SCTP
Definition: intel-ipsec-mb.h:422
@ IMB_AUTH_NUM
Definition: intel-ipsec-mb.h:434
@ IMB_AUTH_HMAC_SHA_256
Definition: intel-ipsec-mb.h:390
@ IMB_AUTH_GHASH
Definition: intel-ipsec-mb.h:433
@ IMB_AUTH_CUSTOM
Definition: intel-ipsec-mb.h:397
@ IMB_AUTH_CHACHA20_POLY1305_SGL
Definition: intel-ipsec-mb.h:417
@ IMB_AUTH_CRC24_LTE_B
Definition: intel-ipsec-mb.h:425
@ IMB_AUTH_ZUC256_EIA3_BITLEN
Definition: intel-ipsec-mb.h:418
@ IMB_AUTH_AES_CCM
Definition: intel-ipsec-mb.h:398
@ IMB_AUTH_CRC6_IUUP_HEADER
Definition: intel-ipsec-mb.h:432
@ IMB_AUTH_POLY1305
Definition: intel-ipsec-mb.h:415
@ IMB_AUTH_MD5
Definition: intel-ipsec-mb.h:394
@ IMB_AUTH_SHA_512
Definition: intel-ipsec-mb.h:404
@ IMB_AUTH_AES_GMAC
Definition: intel-ipsec-mb.h:396
@ IMB_AUTH_CRC16_FP_DATA
Definition: intel-ipsec-mb.h:427
@ IMB_AUTH_AES_CMAC_BITLEN
Definition: intel-ipsec-mb.h:405
@ IMB_AUTH_CRC11_FP_HEADER
Definition: intel-ipsec-mb.h:428
@ IMB_AUTH_CHACHA20_POLY1305
Definition: intel-ipsec-mb.h:416
@ IMB_AUTH_CRC7_FP_HEADER
Definition: intel-ipsec-mb.h:431
@ IMB_AUTH_CRC10_IUUP_DATA
Definition: intel-ipsec-mb.h:429
@ IMB_AUTH_HMAC_SHA_224
Definition: intel-ipsec-mb.h:389
@ IMB_AUTH_CRC32_WIMAX_OFDMA_DATA
Definition: intel-ipsec-mb.h:423
@ IMB_AUTH_HMAC_SHA_512
Definition: intel-ipsec-mb.h:392
@ IMB_AUTH_GCM_SGL
Definition: intel-ipsec-mb.h:420
@ IMB_AUTH_SHA_1
Definition: intel-ipsec-mb.h:400
@ IMB_AUTH_AES_GMAC_192
Definition: intel-ipsec-mb.h:412
@ IMB_AUTH_DOCSIS_CRC32
Definition: intel-ipsec-mb.h:408
@ IMB_AUTH_CRC8_WIMAX_OFDMA_HCS
Definition: intel-ipsec-mb.h:430
@ IMB_AUTH_AES_GMAC_256
Definition: intel-ipsec-mb.h:413
@ IMB_AUTH_HMAC_SHA_384
Definition: intel-ipsec-mb.h:391
@ IMB_AUTH_AES_CMAC
Definition: intel-ipsec-mb.h:399
@ IMB_AUTH_SHA_384
Definition: intel-ipsec-mb.h:403
IMB_DLL_EXPORT void aes_keyexp_128_enc_avx2(const void *key, void *enc_exp_keys)
IMB_DLL_EXPORT void aes_gcm_enc_256_finalize_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End encryption of a AES-GCM-256 encryption message.
IMB_DLL_EXPORT IMB_JOB * submit_job_avx2(IMB_MGR *state)
Submit job for processing after validating.
void(* kasumi_f8_1_buffer_t)(const kasumi_key_sched_t *, const uint64_t, const void *, void *, const uint32_t)
Definition: intel-ipsec-mb.h:873
IMB_DLL_EXPORT uint32_t queue_size_avx2(IMB_MGR *state)
Get number of jobs queued to be processed.
void(* kasumi_f9_1_buffer_t)(const kasumi_key_sched_t *, const void *, const uint32_t, void *)
Definition: intel-ipsec-mb.h:909
int(* kasumi_init_f9_key_sched_t)(const void *, kasumi_key_sched_t *)
Definition: intel-ipsec-mb.h:914
IMB_DLL_EXPORT void md5_one_block_avx2(const void *data, void *digest)
void(* aes_gcm_enc_dec_finalize_t)(const struct gcm_key_data *, struct gcm_context_data *, uint8_t *, uint64_t)
Definition: intel-ipsec-mb.h:826
IMB_DLL_EXPORT void aes_gcm_dec_128_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-128 Decryption.
IMB_DLL_EXPORT void aes_gcm_init_128_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
Initialize a gcm_context_data structure to prepare for AES-GCM-128 Encryption.
IMB_DLL_EXPORT void aes_gcm_dec_128_finalize_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End decryption of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT void sha384_avx512(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT int snow3g_f9_iv_gen(const uint32_t count, const uint32_t fresh, const uint8_t dir, void *iv_ptr)
Generation of SNOW3G F9 Initialization Vector.
IMB_DLL_EXPORT void sha1_avx(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT IMB_JOB * submit_job_avx(IMB_MGR *state)
Submit job for processing after validating.
void(* zuc_eia3_1_buffer_t)(const void *, const void *, const void *, const uint32_t, uint32_t *)
Definition: intel-ipsec-mb.h:864
IMB_DLL_EXPORT IMB_JOB * flush_job_sse(IMB_MGR *state)
Force processing until next job in queue is completed.
#define IMB_DLL_EXPORT
Definition: intel-ipsec-mb.h:86
uint32_t(* queue_size_t)(struct IMB_MGR *)
Definition: intel-ipsec-mb.h:784
IMB_DLL_EXPORT void init_mb_mgr_avx512(IMB_MGR *state)
Initialize Multi-Buffer Manager structure.
IMB_DLL_EXPORT int des_key_schedule(uint64_t *ks, const void *key)
DES key schedule set up.
IMB_DLL_EXPORT void aes_gcm_init_256_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
Initialize a gcm_context_data structure to prepare for AES-GCM-256 Encryption.
IMB_DLL_EXPORT void sha1_one_block_sse(const void *data, void *digest)
IMB_DLL_EXPORT void aes_gcm_enc_192_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-192 Encryption.
IMB_DLL_EXPORT void aes_gcm_dec_256_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-256 Decryption.
IMB_DLL_EXPORT void aes_keyexp_128_avx512(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx(IMB_MGR *state)
Get next completed job.
IMB_DLL_EXPORT void md5_one_block_sse(const void *data, void *digest)
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx512(const void *key, void *enc_exp_keys)
IMB_ERR
Definition: intel-ipsec-mb.h:178
@ IMB_ERR_NULL_JOB
Definition: intel-ipsec-mb.h:226
@ IMB_ERR_JOB_NULL_SGL_CTX
Definition: intel-ipsec-mb.h:198
@ IMB_ERR_AAD_LEN
Definition: intel-ipsec-mb.h:213
@ IMB_ERR_NULL_CTX
Definition: intel-ipsec-mb.h:216
@ IMB_ERR_JOB_NULL_IV
Definition: intel-ipsec-mb.h:184
@ IMB_ERR_JOB_NULL_HMAC_IPAD
Definition: intel-ipsec-mb.h:219
@ IMB_ERR_NULL_DST
Definition: intel-ipsec-mb.h:202
@ IMB_ERR_JOB_AUTH_TAG_LEN
Definition: intel-ipsec-mb.h:191
@ IMB_ERR_NULL_AUTH
Definition: intel-ipsec-mb.h:206
@ IMB_ERR_JOB_SRC_OFFSET
Definition: intel-ipsec-mb.h:193
@ IMB_ERR_SRC_OFFSET
Definition: intel-ipsec-mb.h:214
@ IMB_ERR_JOB_NULL_KEY
Definition: intel-ipsec-mb.h:183
@ IMB_ERR_NULL_SRC
Definition: intel-ipsec-mb.h:201
@ IMB_ERR_JOB_AAD_LEN
Definition: intel-ipsec-mb.h:192
@ IMB_ERR_JOB_IV_LEN
Definition: intel-ipsec-mb.h:189
@ IMB_ERR_NULL_EXP_KEY
Definition: intel-ipsec-mb.h:204
@ IMB_ERR_JOB_NULL_AAD
Definition: intel-ipsec-mb.h:186
@ IMB_ERR_MIN
Definition: intel-ipsec-mb.h:179
@ IMB_ERR_NO_AESNI_EMU
Definition: intel-ipsec-mb.h:217
@ IMB_ERR_JOB_NULL_SRC
Definition: intel-ipsec-mb.h:181
@ IMB_ERR_JOB_NULL_AUTH
Definition: intel-ipsec-mb.h:185
@ IMB_ERR_JOB_NULL_DST
Definition: intel-ipsec-mb.h:182
@ IMB_ERR_CIPH_MODE
Definition: intel-ipsec-mb.h:195
@ IMB_ERR_NULL_KEY
Definition: intel-ipsec-mb.h:203
@ IMB_ERR_JOB_NULL_XCBC_K1_EXP
Definition: intel-ipsec-mb.h:220
@ IMB_ERR_JOB_AUTH_LEN
Definition: intel-ipsec-mb.h:188
@ IMB_ERR_AUTH_TAG_LEN
Definition: intel-ipsec-mb.h:212
@ IMB_ERR_JOB_NULL_GHASH_INIT_TAG
Definition: intel-ipsec-mb.h:224
@ IMB_ERR_HASH_ALGO
Definition: intel-ipsec-mb.h:196
@ IMB_ERR_KEY_LEN
Definition: intel-ipsec-mb.h:211
@ IMB_ERR_JOB_NULL_AUTH_KEY
Definition: intel-ipsec-mb.h:197
@ IMB_ERR_JOB_NULL_NEXT_IV
Definition: intel-ipsec-mb.h:199
@ IMB_ERR_NULL_MBMGR
Definition: intel-ipsec-mb.h:180
@ IMB_ERR_NULL_AUTH_KEY
Definition: intel-ipsec-mb.h:215
@ IMB_ERR_IV_LEN
Definition: intel-ipsec-mb.h:210
@ IMB_ERR_CIPH_LEN
Definition: intel-ipsec-mb.h:208
@ IMB_ERR_MISSING_CPUFLAGS_INIT_MGR
Definition: intel-ipsec-mb.h:225
@ IMB_ERR_MAX
Definition: intel-ipsec-mb.h:228
@ IMB_ERR_JOB_CHAIN_ORDER
Definition: intel-ipsec-mb.h:194
@ IMB_ERR_JOB_NULL_HMAC_OPAD
Definition: intel-ipsec-mb.h:218
@ IMB_ERR_JOB_CIPH_DIR
Definition: intel-ipsec-mb.h:223
@ IMB_ERR_JOB_PON_PLI
Definition: intel-ipsec-mb.h:200
@ IMB_ERR_JOB_NULL_XCBC_K2
Definition: intel-ipsec-mb.h:221
@ IMB_ERR_NULL_AAD
Definition: intel-ipsec-mb.h:207
@ IMB_ERR_JOB_KEY_LEN
Definition: intel-ipsec-mb.h:190
@ IMB_ERR_JOB_CIPH_LEN
Definition: intel-ipsec-mb.h:187
@ IMB_ERR_JOB_NULL_XCBC_K3
Definition: intel-ipsec-mb.h:222
@ IMB_ERR_NULL_IV
Definition: intel-ipsec-mb.h:205
@ IMB_ERR_AUTH_LEN
Definition: intel-ipsec-mb.h:209
IMB_DLL_EXPORT void aes_gcm_enc_128_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-128 Encryption.
uint32_t(* hec_32_t)(const uint8_t *)
Definition: intel-ipsec-mb.h:988
IMB_DLL_EXPORT void sha384_one_block_sse(const void *data, void *digest)
IMB_DLL_EXPORT void sha512_one_block_sse(const void *data, void *digest)
IMB_DLL_EXPORT void aes_gcm_dec_192_update_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Decrypt a block of a AES-GCM-192 encryption message.
uint64_t(* hec_64_t)(const uint8_t *)
Definition: intel-ipsec-mb.h:989
IMB_DLL_EXPORT void aes_gcm_pre_256_avx_gen2(const void *key, struct gcm_key_data *key_data)
Pre-processes AES-GCM-256 key data.
void(* cmac_subkey_gen_t)(const void *, void *, void *)
Definition: intel-ipsec-mb.h:798
IMB_DLL_EXPORT void aes_gcm_dec_192_finalize_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End decryption of a AES-GCM-192 encryption message.
IMB_DLL_EXPORT void aes_gcm_enc_128_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-128 Encryption.
void(* hash_one_block_t)(const void *, void *)
Definition: intel-ipsec-mb.h:799
IMB_DLL_EXPORT void aes_gcm_precomp_192_avx_gen2(struct gcm_key_data *key_data)
Precomputation of AES-GCM-192 HashKey constants.
#define IMB_MAX_JOBS
Definition: intel-ipsec-mb.h:1041
IMB_DLL_EXPORT void aes_gcm_dec_256_update_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Decrypt a block of a AES-GCM-256 encryption message.
void(* aes_gcm_precomp_t)(struct gcm_key_data *)
Definition: intel-ipsec-mb.h:829
IMB_DLL_EXPORT void aes_gcm_pre_192_avx_gen4(const void *key, struct gcm_key_data *key_data)
Pre-processes AES-GCM-192 key data.
IMB_DLL_EXPORT void aes_gcm_enc_256_update_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-256 encryption message.
IMB_DLL_EXPORT IMB_MGR * alloc_mb_mgr(uint64_t flags)
Allocates memory for multi-buffer manager instance.
void(* aes_gmac_update_t)(const struct gcm_key_data *, struct gcm_context_data *, const uint8_t *, const uint64_t)
Definition: intel-ipsec-mb.h:835
IMB_DLL_EXPORT void aes_keyexp_192_avx2(const void *key, void *enc_exp_keys, void *dec_exp_keys)
void(* xcbc_keyexp_t)(const void *, void *, void *, void *)
Definition: intel-ipsec-mb.h:801
IMB_DLL_EXPORT void aes_gcm_enc_128_update_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT void aes_cfb_128_one_avx512(void *out, const void *in, const void *iv, const void *keys, uint64_t len)
AES-CFB-128 Encrypt/Decrypt up to one block.
IMB_DLL_EXPORT IMB_JOB * flush_job_avx(IMB_MGR *state)
Force processing until next job in queue is completed.
IMB_CIPHER_DIRECTION
Definition: intel-ipsec-mb.h:382
@ IMB_DIR_DECRYPT
Definition: intel-ipsec-mb.h:384
@ IMB_DIR_ENCRYPT
Definition: intel-ipsec-mb.h:383
IMB_DLL_EXPORT void aes_gcm_precomp_256_avx_gen4(struct gcm_key_data *key_data)
Precomputation of AES-GCM-256 HashKey constants.
IMB_DLL_EXPORT void aes_gcm_pre_192_sse(const void *key, struct gcm_key_data *key_data)
Pre-processes AES-GCM-192 key data.
IMB_DLL_EXPORT void sha1_avx2(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void aes_gcm_dec_256_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-256 Decryption.
void(* kasumi_f9_1_buffer_user_t)(const kasumi_key_sched_t *, const uint64_t, const void *, const uint32_t, void *, const uint32_t)
Definition: intel-ipsec-mb.h:905
IMB_DLL_EXPORT void aes_gcm_dec_128_finalize_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End decryption of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT void aes_gcm_init_192_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
Initialize a gcm_context_data structure to prepare for AES-GCM-192 Encryption.
IMB_DLL_EXPORT void sha256_one_block_avx512(const void *data, void *digest)
IMB_DLL_EXPORT void aes_xcbc_expand_key_avx2(const void *key, void *k1_exp, void *k2, void *k3)
uint32_t(* submit_cipher_burst_t)(struct IMB_MGR *, struct IMB_JOB *, const uint32_t, const IMB_CIPHER_MODE cipher, const IMB_CIPHER_DIRECTION dir, const IMB_KEY_SIZE_BYTES key_size)
Definition: intel-ipsec-mb.h:787
void(* aes_gcm_enc_dec_iv_t)(const struct gcm_key_data *, struct gcm_context_data *, uint8_t *, uint8_t const *, const uint64_t, const uint8_t *, uint8_t const *, const uint64_t, uint8_t *, const uint64_t, const uint64_t)
Definition: intel-ipsec-mb.h:810
IMB_DLL_EXPORT IMB_JOB * flush_job_avx512(IMB_MGR *state)
Force processing until next job in queue is completed.
IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_avx(IMB_MGR *state)
Submit job for processing without validating.
IMB_DLL_EXPORT void aes_keyexp_128_enc_avx(const void *key, void *enc_exp_keys)
IMB_DLL_EXPORT void md5_one_block_avx512(const void *data, void *digest)
IMB_DLL_EXPORT size_t imb_get_mb_mgr_size(void)
Calculates necessary memory size for IMB_MGR.
IMB_DLL_EXPORT int kasumi_f9_iv_gen(const uint32_t count, const uint32_t fresh, void *iv_ptr)
Generation of KASUMI F9 Initialization Vector.
IMB_JOB *(* get_completed_job_t)(struct IMB_MGR *)
Definition: intel-ipsec-mb.h:782
IMB_DLL_EXPORT void aes_gcm_init_128_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
Initialize a gcm_context_data structure to prepare for AES-GCM-128 Encryption.
IMB_DLL_EXPORT void aes_gcm_dec_192_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-192 Decryption.
void(* kasumi_f8_4_buffer_t)(const kasumi_key_sched_t *, const uint64_t, const uint64_t, const uint64_t, const uint64_t, const void *, void *, const void *, void *, const void *, void *, const void *, void *, const uint32_t)
Definition: intel-ipsec-mb.h:893
IMB_ARCH
Definition: intel-ipsec-mb.h:119
@ IMB_ARCH_AVX512
Definition: intel-ipsec-mb.h:125
@ IMB_ARCH_NONE
Definition: intel-ipsec-mb.h:120
@ IMB_ARCH_SSE
Definition: intel-ipsec-mb.h:122
@ IMB_ARCH_NOAESNI
Definition: intel-ipsec-mb.h:121
@ IMB_ARCH_AVX2
Definition: intel-ipsec-mb.h:124
@ IMB_ARCH_AVX
Definition: intel-ipsec-mb.h:123
@ IMB_ARCH_NUM
Definition: intel-ipsec-mb.h:126
IMB_DLL_EXPORT void aes_gcm_dec_192_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-192 Decryption.
IMB_DLL_EXPORT void sha224_avx2(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void sha384_sse(const void *data, const uint64_t length, void *digest)
size_t(* kasumi_key_sched_size_t)(void)
Definition: intel-ipsec-mb.h:916
size_t(* snow3g_key_sched_size_t)(void)
Definition: intel-ipsec-mb.h:986
IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx2(IMB_MGR *state)
Get next completed job.
IMB_DLL_EXPORT void aes_gcm_enc_256_update_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-256 encryption message.
IMB_DLL_EXPORT void sha1_avx512(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void sha512_one_block_avx2(const void *data, void *digest)
void(* zuc_eia3_n_buffer_t)(const void *const *, const void *const *, const void *const *, const uint32_t *, uint32_t **, const uint32_t)
Definition: intel-ipsec-mb.h:867
IMB_DLL_EXPORT void aes_gcm_dec_128_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-128 Decryption.
IMB_DLL_EXPORT void aes_gcm_precomp_128_avx_gen2(struct gcm_key_data *key_data)
Precomputation of AES-GCM-128 HashKey constants.
IMB_DLL_EXPORT void aes_gcm_enc_192_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-192 Encryption.
void(* aes_gcm_init_t)(const struct gcm_key_data *, struct gcm_context_data *, const uint8_t *, uint8_t const *, uint64_t)
Definition: intel-ipsec-mb.h:816
IMB_DLL_EXPORT void aes_gcm_dec_256_finalize_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End decryption of a AES-GCM-256 encryption message.
int(* snow3g_init_key_sched_t)(const void *, snow3g_key_schedule_t *)
Definition: intel-ipsec-mb.h:983
void(* snow3g_f8_4_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, const void *, const void *, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t)
Definition: intel-ipsec-mb.h:940
IMB_DLL_EXPORT void aes_gcm_dec_128_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-128 Decryption.
IMB_DLL_EXPORT IMB_JOB * flush_job_avx2(IMB_MGR *state)
Force processing until next job in queue is completed.
IMB_DLL_EXPORT void aes_gcm_enc_128_update_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-128 encryption message.
IMB_DLL_EXPORT int zuc_eia3_iv_gen(const uint32_t count, const uint8_t bearer, const uint8_t dir, void *iv_ptr)
Generation of ZUC-EIA3 Initialization Vector.
struct snow3g_key_schedule_s snow3g_key_schedule_t
IMB_DLL_EXPORT void sha256_one_block_sse(const void *data, void *digest)
IMB_DLL_EXPORT void sha384_one_block_avx2(const void *data, void *digest)
IMB_JOB *(* flush_job_t)(struct IMB_MGR *)
Definition: intel-ipsec-mb.h:783
void(* snow3g_f9_1_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, const uint64_t, void *)
Definition: intel-ipsec-mb.h:979
void(* aes_cfb_t)(void *, const void *, const void *, const void *, uint64_t)
Definition: intel-ipsec-mb.h:803
IMB_DLL_EXPORT void sha256_avx2(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void aes_keyexp_128_avx(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_DLL_EXPORT void imb_clear_mem(void *mem, const size_t size)
Force clearing/zeroing of memory.
IMB_DLL_EXPORT void aes_gcm_precomp_128_avx_gen4(struct gcm_key_data *key_data)
Precomputation of AES-GCM-128 HashKey constants.
IMB_DLL_EXPORT unsigned imb_get_version(void)
Get library version in numerical format.
IMB_DLL_EXPORT void init_mb_mgr_avx(IMB_MGR *state)
Initialize Multi-Buffer Manager structure.
IMB_DLL_EXPORT void sha384_one_block_avx(const void *data, void *digest)
IMB_DLL_EXPORT void aes_xcbc_expand_key_sse(const void *key, void *k1_exp, void *k2, void *k3)
void(* init_mb_mgr_t)(struct IMB_MGR *)
Definition: intel-ipsec-mb.h:779
IMB_DLL_EXPORT void sha224_avx(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void sha1_one_block_avx2(const void *data, void *digest)
void(* kasumi_f8_2_buffer_t)(const kasumi_key_sched_t *, const uint64_t, const uint64_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t)
Definition: intel-ipsec-mb.h:880
IMB_DLL_EXPORT void aes_keyexp_256_avx2(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_DLL_EXPORT void aes_gcm_enc_128_avx_gen2(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-128 Encryption.
void(* aes_gmac_finalize_t)(const struct gcm_key_data *, struct gcm_context_data *, uint8_t *, const uint64_t)
Definition: intel-ipsec-mb.h:838
IMB_DLL_EXPORT void aes_gcm_enc_128_finalize_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End encryption of a AES-GCM-128 encryption message.
void(* aes_gcm_enc_dec_update_t)(const struct gcm_key_data *, struct gcm_context_data *, uint8_t *, const uint8_t *, uint64_t)
Definition: intel-ipsec-mb.h:823
IMB_DLL_EXPORT void aes_gcm_dec_192_finalize_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End decryption of a AES-GCM-192 encryption message.
IMB_DLL_EXPORT void aes_keyexp_256_enc_sse(const void *key, void *enc_exp_keys)
void(* hash_fn_t)(const void *, const uint64_t, void *)
Definition: intel-ipsec-mb.h:800
IMB_DLL_EXPORT void sha512_avx2(const void *data, const uint64_t length, void *digest)
IMB_DLL_EXPORT void aes_gcm_enc_256_finalize_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
End encryption of a AES-GCM-256 encryption message.
IMB_STATUS
Definition: intel-ipsec-mb.h:164
@ IMB_STATUS_ERROR
Definition: intel-ipsec-mb.h:172
@ IMB_STATUS_COMPLETED
Definition: intel-ipsec-mb.h:168
@ IMB_STATUS_INTERNAL_ERROR
Definition: intel-ipsec-mb.h:171
@ IMB_STATUS_COMPLETED_CIPHER
Definition: intel-ipsec-mb.h:166
@ IMB_STATUS_COMPLETED_AUTH
Definition: intel-ipsec-mb.h:167
@ IMB_STATUS_BEING_PROCESSED
Definition: intel-ipsec-mb.h:165
@ IMB_STATUS_INVALID_ARGS
Definition: intel-ipsec-mb.h:170
IMB_DLL_EXPORT void aes_gcm_dec_256_sse(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-256 Decryption.
IMB_DLL_EXPORT void aes_xcbc_expand_key_avx(const void *key, void *k1_exp, void *k2, void *k3)
Definition: intel-ipsec-mb.h:483
union IMB_JOB::@11 cipher_fields
struct gcm_context_data * ctx
Definition: intel-ipsec-mb.h:561
struct IMB_JOB::@10::_AES_GMAC_specific_fields GMAC
struct IMB_JOB::@10::_KASUMI_UIA1_specific_fields KASUMI_UIA1
IMB_CIPHER_DIRECTION cipher_direction
Definition: intel-ipsec-mb.h:619
struct IMB_JOB::@10::_POLY1305_specific_fields POLY1305
uint64_t num_sgl_io_segs
Definition: intel-ipsec-mb.h:498
const void * _init_tag
Definition: intel-ipsec-mb.h:593
const struct IMB_SGL_IOV * sgl_io_segs
Definition: intel-ipsec-mb.h:491
uint64_t iv_len_in_bytes
Definition: intel-ipsec-mb.h:523
struct IMB_JOB::@10::_SNOW3G_UIA2_specific_fields SNOW3G_UIA2
const uint8_t * _iv23
Definition: intel-ipsec-mb.h:569
const uint8_t * _hashed_auth_key_xor_ipad
Definition: intel-ipsec-mb.h:531
struct IMB_JOB::@10::_AES_XCBC_specific_fields XCBC
const struct gcm_key_data * _key
Definition: intel-ipsec-mb.h:583
IMB_SGL_STATE sgl_state
Definition: intel-ipsec-mb.h:632
uint64_t msg_len_to_hash_in_bytes
Definition: intel-ipsec-mb.h:517
IMB_CHAIN_ORDER chain_order
Definition: intel-ipsec-mb.h:621
uint64_t msg_len_to_cipher_in_bits
Definition: intel-ipsec-mb.h:512
const void * _iv
Definition: intel-ipsec-mb.h:575
struct IMB_JOB::@10::_AES_CMAC_specific_fields CMAC
struct chacha20_poly1305_context_data * ctx
Definition: intel-ipsec-mb.h:604
const void * aad
Definition: intel-ipsec-mb.h:547
void * user_data2
Definition: intel-ipsec-mb.h:625
void * next_iv
Definition: intel-ipsec-mb.h:638
uint64_t cipher_start_offset_in_bits
Definition: intel-ipsec-mb.h:506
int(* hash_func)(struct IMB_JOB *)
Definition: intel-ipsec-mb.h:629
int(* cipher_func)(struct IMB_JOB *)
Definition: intel-ipsec-mb.h:627
const uint8_t * _hashed_auth_key_xor_opad
Definition: intel-ipsec-mb.h:534
uint64_t auth_tag_output_len_in_bytes
Definition: intel-ipsec-mb.h:525
const uint32_t * _k1_expanded
Definition: intel-ipsec-mb.h:539
IMB_CIPHER_MODE cipher_mode
Definition: intel-ipsec-mb.h:618
const void * _key
Definition: intel-ipsec-mb.h:573
const uint8_t * _key
Definition: intel-ipsec-mb.h:565
struct IMB_JOB::@11::_CBCS_specific_fields CBCS
const void * _skey2
Definition: intel-ipsec-mb.h:555
const void * _key_expanded
Definition: intel-ipsec-mb.h:552
const uint8_t * iv
Definition: intel-ipsec-mb.h:522
uint64_t msg_len_to_cipher_in_bytes
Definition: intel-ipsec-mb.h:510
void * reserved
Definition: intel-ipsec-mb.h:612
IMB_HASH_ALG hash_alg
Definition: intel-ipsec-mb.h:620
uint64_t aad_len_in_bytes
Definition: intel-ipsec-mb.h:549
struct IMB_JOB::@10::_HMAC_specific_fields HMAC
struct IMB_JOB::@10::_ZUC_EIA3_specific_fields ZUC_EIA3
const void * _skey1
Definition: intel-ipsec-mb.h:554
void * user_data
Definition: intel-ipsec-mb.h:624
uint64_t key_len_in_bytes
Definition: intel-ipsec-mb.h:486
struct IMB_JOB::@10::_SNOW_V_AEAD_specific_fields SNOW_V_AEAD
uint8_t * dst
Definition: intel-ipsec-mb.h:495
uint8_t * auth_tag_output
Definition: intel-ipsec-mb.h:524
const void * enc_keys
Definition: intel-ipsec-mb.h:484
struct IMB_JOB::@10::_AES_GCM_specific_fields GCM
struct IMB_JOB::@10::_CHACHA20_POLY1305_specific_fields CHACHA20_POLY1305
struct IMB_JOB::@10::_AES_CCM_specific_fields CCM
IMB_STATUS status
Definition: intel-ipsec-mb.h:617
const uint8_t * _k2
Definition: intel-ipsec-mb.h:541
uint64_t cipher_start_src_offset_in_bytes
Definition: intel-ipsec-mb.h:502
uint64_t msg_len_to_hash_in_bits
Definition: intel-ipsec-mb.h:519
const uint8_t * _iv
Definition: intel-ipsec-mb.h:567
struct IMB_JOB::@10::_GHASH_specific_fields GHASH
uint64_t cipher_start_src_offset_in_bits
Definition: intel-ipsec-mb.h:504
const void * dec_keys
Definition: intel-ipsec-mb.h:485
uint64_t hash_start_src_offset_in_bytes
Definition: intel-ipsec-mb.h:515
const uint8_t * src
Definition: intel-ipsec-mb.h:488
const uint8_t * _k3
Definition: intel-ipsec-mb.h:543
Definition: intel-ipsec-mb.h:1043
aes_gmac_finalize_t gmac192_finalize
Definition: intel-ipsec-mb.h:1154
aes_gcm_init_t gcm192_init
Definition: intel-ipsec-mb.h:1091
aes_gmac_finalize_t gmac128_finalize
Definition: intel-ipsec-mb.h:1153
void * aes256_ccm_ooo
Definition: intel-ipsec-mb.h:1219
crc32_fn_t crc24_lte_a
Definition: intel-ipsec-mb.h:1163
aes_gmac_update_t gmac256_update
Definition: intel-ipsec-mb.h:1152
hec_32_t hec_32
Definition: intel-ipsec-mb.h:1156
int imb_errno
Definition: intel-ipsec-mb.h:1051
void * aes_cmac_ooo
Definition: intel-ipsec-mb.h:1213
int next_job
Definition: intel-ipsec-mb.h:1187
aes_gmac_init_t gmac128_init
Definition: intel-ipsec-mb.h:1147
uint64_t reserved[5]
Definition: intel-ipsec-mb.h:1048
aes_gcm_pre_t gcm192_pre
Definition: intel-ipsec-mb.h:1109
snow3g_f8_4_buffer_t snow3g_f8_4_buffer
Definition: intel-ipsec-mb.h:1132
aes_gcm_precomp_t gcm256_precomp
Definition: intel-ipsec-mb.h:1107
aes_gcm_pre_t gcm128_pre
Definition: intel-ipsec-mb.h:1108
submit_hash_burst_t submit_hash_burst
Definition: intel-ipsec-mb.h:1182
flush_job_t flush_job
Definition: intel-ipsec-mb.h:1063
snow3g_f8_2_buffer_t snow3g_f8_2_buffer
Definition: intel-ipsec-mb.h:1131
void * zuc_eea3_ooo
Definition: intel-ipsec-mb.h:1214
aes_gcm_enc_dec_update_t gcm128_dec_update
Definition: intel-ipsec-mb.h:1096
void * des3_dec_ooo
Definition: intel-ipsec-mb.h:1201
keyexp_t keyexp_192
Definition: intel-ipsec-mb.h:1066
aes_gcm_enc_dec_t gcm128_dec
Definition: intel-ipsec-mb.h:1087
get_next_job_t get_next_job
Definition: intel-ipsec-mb.h:1059
void * sha_256_ooo
Definition: intel-ipsec-mb.h:1225
snow3g_init_key_sched_t snow3g_init_key_sched
Definition: intel-ipsec-mb.h:1138
aes_gcm_enc_dec_update_t gcm192_enc_update
Definition: intel-ipsec-mb.h:1094
aes_gmac_finalize_t gmac256_finalize
Definition: intel-ipsec-mb.h:1155
void * docsis_des_dec_ooo
Definition: intel-ipsec-mb.h:1203
aes_gmac_init_t gmac192_init
Definition: intel-ipsec-mb.h:1148
zuc_eia3_1_buffer_t eia3_1_buffer
Definition: intel-ipsec-mb.h:1115
void * aes_ccm_ooo
Definition: intel-ipsec-mb.h:1212
hec_64_t hec_64
Definition: intel-ipsec-mb.h:1157
keyexp_t keyexp_256
Definition: intel-ipsec-mb.h:1067
aes_gcm_pre_t gcm256_pre
Definition: intel-ipsec-mb.h:1110
uint32_t used_arch
Definition: intel-ipsec-mb.h:1049
void * hmac_sha_1_ooo
Definition: intel-ipsec-mb.h:1205
crc32_fn_t crc32_sctp
Definition: intel-ipsec-mb.h:1162
crc32_fn_t crc11_fp_header
Definition: intel-ipsec-mb.h:1166
aes_gcm_enc_dec_finalize_t gcm192_dec_finalize
Definition: intel-ipsec-mb.h:1103
kasumi_f9_1_buffer_user_t f9_1_buffer_user
Definition: intel-ipsec-mb.h:1124
void * sha_384_ooo
Definition: intel-ipsec-mb.h:1226
aes_gmac_update_t gmac192_update
Definition: intel-ipsec-mb.h:1151
crc32_fn_t crc16_x25
Definition: intel-ipsec-mb.h:1161
hash_fn_t sha224
Definition: intel-ipsec-mb.h:1078
hash_one_block_t md5_one_block
Definition: intel-ipsec-mb.h:1076
void * des_enc_ooo
Definition: intel-ipsec-mb.h:1198
kasumi_init_f9_key_sched_t kasumi_init_f9_key_sched
Definition: intel-ipsec-mb.h:1126
queue_size_t queue_size
Definition: intel-ipsec-mb.h:1064
aes_gcm_enc_dec_finalize_t gcm256_dec_finalize
Definition: intel-ipsec-mb.h:1104
snow3g_key_sched_size_t snow3g_key_sched_size
Definition: intel-ipsec-mb.h:1139
crc32_fn_t crc8_wimax_ofdma_hcs
Definition: intel-ipsec-mb.h:1171
void * zuc256_eia3_ooo
Definition: intel-ipsec-mb.h:1218
snow3g_f8_8_buffer_t snow3g_f8_8_buffer
Definition: intel-ipsec-mb.h:1133
hash_fn_t sha512
Definition: intel-ipsec-mb.h:1081
void * hmac_sha_256_ooo
Definition: intel-ipsec-mb.h:1207
snow3g_f8_n_buffer_multikey_t snow3g_f8_n_buffer_multikey
Definition: intel-ipsec-mb.h:1136
aes_gcm_enc_dec_update_t gcm192_dec_update
Definition: intel-ipsec-mb.h:1097
chacha_poly_init_t chacha20_poly1305_init
Definition: intel-ipsec-mb.h:1173
zuc_eea3_n_buffer_t eea3_n_buffer
Definition: intel-ipsec-mb.h:1114
aes_gcm_precomp_t gcm128_precomp
Definition: intel-ipsec-mb.h:1105
submit_burst_t submit_burst
Definition: intel-ipsec-mb.h:1178
void * aes256_ooo
Definition: intel-ipsec-mb.h:1193
void * zuc256_eea3_ooo
Definition: intel-ipsec-mb.h:1217
void * end_ooo
Definition: intel-ipsec-mb.h:1228
void * sha_512_ooo
Definition: intel-ipsec-mb.h:1227
chacha_poly_enc_dec_update_t chacha20_poly1305_dec_update
Definition: intel-ipsec-mb.h:1175
aes_gcm_enc_dec_t gcm256_enc
Definition: intel-ipsec-mb.h:1086
aes_gcm_init_var_iv_t gcm192_init_var_iv
Definition: intel-ipsec-mb.h:1144
keyexp_t keyexp_128
Definition: intel-ipsec-mb.h:1065
crc32_fn_t crc10_iuup_data
Definition: intel-ipsec-mb.h:1168
submit_hash_burst_t submit_hash_burst_nocheck
Definition: intel-ipsec-mb.h:1183
hash_one_block_t sha1_one_block
Definition: intel-ipsec-mb.h:1071
snow3g_f8_n_buffer_t snow3g_f8_n_buffer
Definition: intel-ipsec-mb.h:1134
hash_fn_t sha1
Definition: intel-ipsec-mb.h:1077
crc32_fn_t crc32_ethernet_fcs
Definition: intel-ipsec-mb.h:1160
void * hmac_md5_ooo
Definition: intel-ipsec-mb.h:1210
void * des3_enc_ooo
Definition: intel-ipsec-mb.h:1200
hash_one_block_t sha512_one_block
Definition: intel-ipsec-mb.h:1075
aes_gcm_init_t gcm256_init
Definition: intel-ipsec-mb.h:1092
snow3g_f8_8_buffer_multikey_t snow3g_f8_8_buffer_multikey
Definition: intel-ipsec-mb.h:1135
submit_cipher_burst_t submit_cipher_burst
Definition: intel-ipsec-mb.h:1180
hash_fn_t sha256
Definition: intel-ipsec-mb.h:1079
aes_gcm_enc_dec_finalize_t gcm128_enc_finalize
Definition: intel-ipsec-mb.h:1099
aes_gmac_update_t gmac128_update
Definition: intel-ipsec-mb.h:1150
void * zuc_eia3_ooo
Definition: intel-ipsec-mb.h:1215
aes_gcm_enc_dec_finalize_t gcm192_enc_finalize
Definition: intel-ipsec-mb.h:1100
kasumi_f8_3_buffer_t f8_3_buffer
Definition: intel-ipsec-mb.h:1120
hash_one_block_t sha384_one_block
Definition: intel-ipsec-mb.h:1074
void * docsis_des_enc_ooo
Definition: intel-ipsec-mb.h:1202
void * docsis128_sec_ooo
Definition: intel-ipsec-mb.h:1194
aes_gcm_enc_dec_finalize_t gcm256_enc_finalize
Definition: intel-ipsec-mb.h:1101
void * aes128_ooo
Definition: intel-ipsec-mb.h:1191
get_completed_job_t get_completed_job
Definition: intel-ipsec-mb.h:1062
aes_gcm_enc_dec_update_t gcm256_dec_update
Definition: intel-ipsec-mb.h:1098
snow3g_f9_1_buffer_t snow3g_f9_1_buffer
Definition: intel-ipsec-mb.h:1137
void * aes128_cbcs_ooo
Definition: intel-ipsec-mb.h:1216
aes_gcm_enc_dec_t gcm128_enc
Definition: intel-ipsec-mb.h:1084
hash_fn_t sha384
Definition: intel-ipsec-mb.h:1080
void * sha_224_ooo
Definition: intel-ipsec-mb.h:1224
cmac_subkey_gen_t cmac_subkey_gen_128
Definition: intel-ipsec-mb.h:1068
crc32_fn_t crc6_iuup_header
Definition: intel-ipsec-mb.h:1169
void * snow3g_uia2_ooo
Definition: intel-ipsec-mb.h:1222
aes_gcm_enc_dec_t gcm192_enc
Definition: intel-ipsec-mb.h:1085
submit_job_t submit_job_nocheck
Definition: intel-ipsec-mb.h:1061
kasumi_f8_1_buffer_bit_t f8_1_buffer_bit
Definition: intel-ipsec-mb.h:1118
hash_one_block_t sha224_one_block
Definition: intel-ipsec-mb.h:1072
des_keysched_t des_key_sched
Definition: intel-ipsec-mb.h:1070
void * snow3g_uea2_ooo
Definition: intel-ipsec-mb.h:1221
submit_job_t submit_job
Definition: intel-ipsec-mb.h:1060
chacha_poly_finalize_t chacha20_poly1305_finalize
Definition: intel-ipsec-mb.h:1176
chacha_poly_enc_dec_update_t chacha20_poly1305_enc_update
Definition: intel-ipsec-mb.h:1174
kasumi_init_f8_key_sched_t kasumi_init_f8_key_sched
Definition: intel-ipsec-mb.h:1125
IMB_JOB jobs[IMB_MAX_JOBS]
Definition: intel-ipsec-mb.h:1188
zuc_eia3_n_buffer_t eia3_n_buffer
Definition: intel-ipsec-mb.h:1142
snow3g_f8_1_buffer_t snow3g_f8_1_buffer
Definition: intel-ipsec-mb.h:1130
void * hmac_sha_224_ooo
Definition: intel-ipsec-mb.h:1206
kasumi_key_sched_size_t kasumi_key_sched_size
Definition: intel-ipsec-mb.h:1127
aes_cfb_t aes128_cfb_one
Definition: intel-ipsec-mb.h:1082
cmac_subkey_gen_t cmac_subkey_gen_256
Definition: intel-ipsec-mb.h:1158
crc32_fn_t crc24_lte_b
Definition: intel-ipsec-mb.h:1164
aes_gcm_precomp_t gcm192_precomp
Definition: intel-ipsec-mb.h:1106
aes_gcm_enc_dec_update_t gcm256_enc_update
Definition: intel-ipsec-mb.h:1095
zuc_eea3_4_buffer_t eea3_4_buffer
Definition: intel-ipsec-mb.h:1113
int earliest_job
Definition: intel-ipsec-mb.h:1186
kasumi_f8_2_buffer_t f8_2_buffer
Definition: intel-ipsec-mb.h:1119
crc32_fn_t crc7_fp_header
Definition: intel-ipsec-mb.h:1167
aes_gmac_init_t gmac256_init
Definition: intel-ipsec-mb.h:1149
submit_cipher_burst_t submit_cipher_burst_nocheck
Definition: intel-ipsec-mb.h:1181
void * docsis256_sec_ooo
Definition: intel-ipsec-mb.h:1196
void * aes256_cmac_ooo
Definition: intel-ipsec-mb.h:1220
void * sha_1_ooo
Definition: intel-ipsec-mb.h:1223
void * docsis128_crc32_sec_ooo
Definition: intel-ipsec-mb.h:1195
aes_gcm_enc_dec_t gcm256_dec
Definition: intel-ipsec-mb.h:1089
crc32_fn_t crc32_wimax_ofdma_data
Definition: intel-ipsec-mb.h:1170
submit_burst_t submit_burst_nocheck
Definition: intel-ipsec-mb.h:1179
aes_gcm_enc_dec_update_t gcm128_enc_update
Definition: intel-ipsec-mb.h:1093
void * aes_xcbc_ooo
Definition: intel-ipsec-mb.h:1211
crc32_fn_t crc16_fp_data
Definition: intel-ipsec-mb.h:1165
snow3g_f8_1_buffer_bit_t snow3g_f8_1_buffer_bit
Definition: intel-ipsec-mb.h:1129
aes_gcm_init_t gcm128_init
Definition: intel-ipsec-mb.h:1090
hash_one_block_t sha256_one_block
Definition: intel-ipsec-mb.h:1073
aes_gcm_enc_dec_t gcm192_dec
Definition: intel-ipsec-mb.h:1088
kasumi_f8_n_buffer_t f8_n_buffer
Definition: intel-ipsec-mb.h:1122
uint64_t flags
Definition: intel-ipsec-mb.h:1045
xcbc_keyexp_t xcbc_keyexp
Definition: intel-ipsec-mb.h:1069
aes_gcm_init_var_iv_t gcm128_init_var_iv
Definition: intel-ipsec-mb.h:1143
zuc_eea3_1_buffer_t eea3_1_buffer
Definition: intel-ipsec-mb.h:1112
void * des_dec_ooo
Definition: intel-ipsec-mb.h:1199
kasumi_f8_4_buffer_t f8_4_buffer
Definition: intel-ipsec-mb.h:1121
void * hmac_sha_512_ooo
Definition: intel-ipsec-mb.h:1209
void * docsis256_crc32_sec_ooo
Definition: intel-ipsec-mb.h:1197
aes_gcm_pre_t ghash_pre
Definition: intel-ipsec-mb.h:1159
kasumi_f8_1_buffer_t f8_1_buffer
Definition: intel-ipsec-mb.h:1117
uint64_t features
Definition: intel-ipsec-mb.h:1046
aes_gcm_enc_dec_finalize_t gcm128_dec_finalize
Definition: intel-ipsec-mb.h:1102
aes_gcm_init_var_iv_t gcm256_init_var_iv
Definition: intel-ipsec-mb.h:1145
kasumi_f9_1_buffer_t f9_1_buffer
Definition: intel-ipsec-mb.h:1123
ghash_t ghash
Definition: intel-ipsec-mb.h:1141
void * hmac_sha_384_ooo
Definition: intel-ipsec-mb.h:1208
void * aes192_ooo
Definition: intel-ipsec-mb.h:1192
Definition: intel-ipsec-mb.h:458
uint64_t len
Definition: intel-ipsec-mb.h:461
void * out
Definition: intel-ipsec-mb.h:460
const void * in
Definition: intel-ipsec-mb.h:459
holds Chacha20-Poly1305 operation context
Definition: intel-ipsec-mb.h:681
uint64_t remain_ct_bytes
Definition: intel-ipsec-mb.h:691
uint64_t aad_len
Definition: intel-ipsec-mb.h:683
uint64_t remain_ks_bytes
Definition: intel-ipsec-mb.h:689
uint8_t poly_scratch[16]
Definition: intel-ipsec-mb.h:687
uint8_t poly_key[32]
Definition: intel-ipsec-mb.h:686
uint8_t IV[12]
Definition: intel-ipsec-mb.h:694
uint64_t last_block_count
Definition: intel-ipsec-mb.h:688
uint64_t hash_len
Definition: intel-ipsec-mb.h:684
uint64_t hash[3]
Definition: intel-ipsec-mb.h:682
uint8_t last_ks[64]
Definition: intel-ipsec-mb.h:685
holds GCM operation context
Definition: intel-ipsec-mb.h:667
uint64_t in_length
Definition: intel-ipsec-mb.h:670
uint8_t current_counter[IMB_GCM_BLOCK_LEN]
Definition: intel-ipsec-mb.h:673
uint8_t partial_block_enc_key[IMB_GCM_BLOCK_LEN]
Definition: intel-ipsec-mb.h:671
uint8_t orig_IV[IMB_GCM_BLOCK_LEN]
Definition: intel-ipsec-mb.h:672
uint64_t partial_block_length
Definition: intel-ipsec-mb.h:674
uint8_t aad_hash[IMB_GCM_BLOCK_LEN]
Definition: intel-ipsec-mb.h:668
uint64_t aad_length
Definition: intel-ipsec-mb.h:669
holds intermediate key data needed to improve performance
Definition: intel-ipsec-mb.h:729
struct gcm_key_data::@12::@14 avx2_avx512
uint8_t shifted_hkey_k[IMB_GCM_ENC_KEY_LEN *8]
Definition: intel-ipsec-mb.h:748
uint8_t shifted_hkey[IMB_GCM_ENC_KEY_LEN *8]
Definition: intel-ipsec-mb.h:739
struct gcm_key_data::@12::@15 vaes_avx512
struct gcm_key_data::@12::@13 sse_avx
uint8_t expanded_keys[IMB_GCM_ENC_KEY_LEN *IMB_GCM_KEY_SETS]
Definition: intel-ipsec-mb.h:730
union gcm_key_data::@12 ghash_keys
Definition: intel-ipsec-mb.h:40
uint64_t low
Definition: intel-ipsec-mb.h:41
uint64_t high
Definition: intel-ipsec-mb.h:42
Definition: intel-ipsec-mb.h:653
uint16_t msk16[KASUMI_KEY_SCHEDULE_SIZE]
Definition: intel-ipsec-mb.h:656
uint16_t sk16[KASUMI_KEY_SCHEDULE_SIZE]
Definition: intel-ipsec-mb.h:655
Definition: intel-ipsec-mb.h:922
uint32_t k[4]
Definition: intel-ipsec-mb.h:924