Loading...
Searching...
No Matches
intel-ipsec-mb.h
Go to the documentation of this file.
/*******************************************************************************
Copyright (c) 2012-2023, Intel Corporation
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
#ifndef IMB_IPSEC_MB_H
#define IMB_IPSEC_MB_H
#include <stdlib.h>
#include <stdint.h>
#include <errno.h>
#ifdef __cplusplus
extern "C" {
#endif
/* 128-bit data type that is not in sdtint.h */
typedef struct {
uint64_t low;
uint64_t high;
} imb_uint128_t;
#if defined __linux__ || defined __FreeBSD__
#define DECLARE_ALIGNED(decl, alignval) \
decl __attribute__((aligned(alignval)))
#define __forceinline \
static inline __attribute__((always_inline))
#if __GNUC__ >= 4
#define IMB_DLL_EXPORT __attribute__((visibility("default")))
#define IMB_DLL_LOCAL __attribute__((visibility("hidden")))
#else /* GNU C 4.0 and later */
#define IMB_DLL_EXPORT
#define IMB_DLL_LOCAL
#endif
#else
/* Windows */
#ifdef __MINGW32__
/* MinGW-w64 */
#define DECLARE_ALIGNED(decl, alignval) \
decl __attribute__((aligned(alignval)))
#undef __forceinline
#define __forceinline \
static inline __attribute__((always_inline))
#else
/* MSVS */
#define DECLARE_ALIGNED(decl, alignval) \
__declspec(align(alignval)) decl
#define __forceinline \
static __forceinline
#endif /* __MINGW__ */
#define IMB_DLL_EXPORT
#define IMB_DLL_LOCAL
#endif /* defined __linux__ || defined __FreeBSD__ */
#define IMB_VERSION_STR "1.4.0-dev"
#define IMB_VERSION_NUM 0x10400
#define IMB_VERSION(a, b, c) (((a) << 16) + ((b) << 8) + (c))
#ifdef DEBUG
#include <assert.h>
#define IMB_ASSERT(x) assert(x)
#else
#define IMB_ASSERT(x)
#endif
#ifndef IMB_DIM
#define IMB_DIM(x) (sizeof(x) / sizeof(x[0]))
#endif
typedef enum {
IMB_ARCH_NONE = 0,
IMB_ARCH_NOAESNI,
IMB_ARCH_SSE,
IMB_ARCH_AVX,
IMB_ARCH_AVX2,
IMB_ARCH_AVX512,
IMB_ARCH_NUM,
} IMB_ARCH;
#define IMB_DES_KEY_SCHED_SIZE (16 * 8)
#define IMB_DES_BLOCK_SIZE 8
#define IMB_AES_BLOCK_SIZE 16
#define IMB_SHA1_DIGEST_SIZE_IN_BYTES 20
#define IMB_SHA224_DIGEST_SIZE_IN_BYTES 28
#define IMB_SHA256_DIGEST_SIZE_IN_BYTES 32
#define IMB_SHA384_DIGEST_SIZE_IN_BYTES 48
#define IMB_SHA512_DIGEST_SIZE_IN_BYTES 64
#define IMB_MD5_DIGEST_SIZE_IN_BYTES 16
#define IMB_SHA1_BLOCK_SIZE 64
#define IMB_SHA_224_BLOCK_SIZE 64
#define IMB_SHA_256_BLOCK_SIZE 64
#define IMB_SHA_384_BLOCK_SIZE 128
#define IMB_SHA_512_BLOCK_SIZE 128
#define IMB_MD5_BLOCK_SIZE 64
#define IMB_KASUMI_KEY_SIZE 16
#define IMB_KASUMI_IV_SIZE 8
#define IMB_KASUMI_BLOCK_SIZE 8
#define IMB_KASUMI_DIGEST_SIZE 4
#define IMB_ZUC_KEY_LEN_IN_BYTES 16
#define IMB_ZUC_IV_LEN_IN_BYTES 16
#define IMB_ZUC256_KEY_LEN_IN_BYTES 32
#define IMB_ZUC256_IV_LEN_IN_BYTES_MIN 23
#define IMB_ZUC256_IV_LEN_IN_BYTES_MAX 25
#define IMB_ZUC_DIGEST_LEN_IN_BYTES 4
#define IMB_ZUC256_DIGEST_LEN_IN_BYTES_MIN 4
#define IMB_ZUC256_DIGEST_LEN_IN_BYTES_MAX 16
#define IMB_DOCSIS_CRC32_MIN_ETH_PDU_SIZE 14
#define IMB_DOCSIS_CRC32_TAG_SIZE 4
typedef enum {
IMB_STATUS_BEING_PROCESSED = 0,
IMB_STATUS_COMPLETED_CIPHER = 1,
IMB_STATUS_COMPLETED_AUTH = 2,
IMB_STATUS_COMPLETED = 3,
IMB_STATUS_INVALID_ARGS = 4,
IMB_STATUS_INTERNAL_ERROR,
IMB_STATUS_ERROR
} IMB_STATUS;
typedef enum {
IMB_ERR_MIN = 2000,
IMB_ERR_NULL_MBMGR,
IMB_ERR_JOB_NULL_SRC,
IMB_ERR_JOB_NULL_DST,
IMB_ERR_JOB_NULL_KEY,
IMB_ERR_JOB_NULL_IV,
IMB_ERR_JOB_NULL_AUTH,
IMB_ERR_JOB_NULL_AAD,
IMB_ERR_JOB_CIPH_LEN,
IMB_ERR_JOB_AUTH_LEN,
IMB_ERR_JOB_IV_LEN,
IMB_ERR_JOB_KEY_LEN,
IMB_ERR_JOB_AUTH_TAG_LEN,
IMB_ERR_JOB_AAD_LEN,
IMB_ERR_JOB_SRC_OFFSET,
IMB_ERR_JOB_CHAIN_ORDER,
IMB_ERR_CIPH_MODE,
IMB_ERR_HASH_ALGO,
IMB_ERR_JOB_NULL_AUTH_KEY,
IMB_ERR_JOB_NULL_SGL_CTX,
IMB_ERR_JOB_NULL_NEXT_IV,
IMB_ERR_JOB_PON_PLI,
IMB_ERR_NULL_SRC,
IMB_ERR_NULL_DST,
IMB_ERR_NULL_KEY,
IMB_ERR_NULL_EXP_KEY,
IMB_ERR_NULL_IV,
IMB_ERR_NULL_AUTH,
IMB_ERR_NULL_AAD,
IMB_ERR_CIPH_LEN,
IMB_ERR_AUTH_LEN,
IMB_ERR_IV_LEN,
IMB_ERR_KEY_LEN,
IMB_ERR_AUTH_TAG_LEN,
IMB_ERR_AAD_LEN,
IMB_ERR_SRC_OFFSET,
IMB_ERR_NULL_AUTH_KEY,
IMB_ERR_NULL_CTX,
IMB_ERR_NO_AESNI_EMU,
IMB_ERR_JOB_NULL_HMAC_OPAD,
IMB_ERR_JOB_NULL_HMAC_IPAD,
IMB_ERR_JOB_NULL_XCBC_K1_EXP,
IMB_ERR_JOB_NULL_XCBC_K2,
IMB_ERR_JOB_NULL_XCBC_K3,
IMB_ERR_JOB_CIPH_DIR,
IMB_ERR_JOB_NULL_GHASH_INIT_TAG,
IMB_ERR_MISSING_CPUFLAGS_INIT_MGR,
IMB_ERR_NULL_JOB,
IMB_ERR_QUEUE_SPACE,
IMB_ERR_NULL_BURST,
IMB_ERR_BURST_SIZE,
IMB_ERR_BURST_OOO,
IMB_ERR_SELFTEST,
IMB_ERR_BURST_SUITE_ID,
/* add new error types above this comment */
IMB_ERR_MAX /* don't move this one */
} IMB_ERR;
#ifdef __ELASTERROR
#if __ELASTERROR > 2000
#error "Library error codes conflict with errno.h - please update IMB_ERR_MIN!"
#endif
#endif
typedef enum {
IMB_CIPHER_CBC = 1,
IMB_CIPHER_CNTR,
IMB_CIPHER_NULL,
IMB_CIPHER_DOCSIS_SEC_BPI,
IMB_CIPHER_GCM,
IMB_CIPHER_CUSTOM,
IMB_CIPHER_DES,
IMB_CIPHER_DOCSIS_DES,
IMB_CIPHER_CCM,
IMB_CIPHER_DES3,
IMB_CIPHER_PON_AES_CNTR,
IMB_CIPHER_ECB,
IMB_CIPHER_CNTR_BITLEN,
IMB_CIPHER_ZUC_EEA3,
IMB_CIPHER_SNOW3G_UEA2_BITLEN,
IMB_CIPHER_KASUMI_UEA1_BITLEN,
IMB_CIPHER_CBCS_1_9,
IMB_CIPHER_CHACHA20,
IMB_CIPHER_CHACHA20_POLY1305,
IMB_CIPHER_CHACHA20_POLY1305_SGL,
IMB_CIPHER_SNOW_V,
IMB_CIPHER_SNOW_V_AEAD,
IMB_CIPHER_GCM_SGL,
IMB_CIPHER_NUM
} IMB_CIPHER_MODE;
typedef enum {
IMB_DIR_ENCRYPT = 1,
IMB_DIR_DECRYPT
} IMB_CIPHER_DIRECTION;
typedef enum {
IMB_AUTH_HMAC_SHA_1 = 1,
IMB_AUTH_HMAC_SHA_224,
IMB_AUTH_HMAC_SHA_256,
IMB_AUTH_HMAC_SHA_384,
IMB_AUTH_HMAC_SHA_512,
IMB_AUTH_AES_XCBC,
IMB_AUTH_MD5,
IMB_AUTH_NULL,
IMB_AUTH_AES_GMAC,
IMB_AUTH_CUSTOM,
IMB_AUTH_AES_CCM,
IMB_AUTH_AES_CMAC,
IMB_AUTH_SHA_1,
IMB_AUTH_SHA_224,
IMB_AUTH_SHA_256,
IMB_AUTH_SHA_384,
IMB_AUTH_SHA_512,
IMB_AUTH_AES_CMAC_BITLEN,
IMB_AUTH_PON_CRC_BIP,
IMB_AUTH_ZUC_EIA3_BITLEN,
IMB_AUTH_DOCSIS_CRC32,
IMB_AUTH_SNOW3G_UIA2_BITLEN,
IMB_AUTH_KASUMI_UIA1,
IMB_AUTH_AES_GMAC_128,
IMB_AUTH_AES_GMAC_192,
IMB_AUTH_AES_GMAC_256,
IMB_AUTH_AES_CMAC_256,
IMB_AUTH_POLY1305,
IMB_AUTH_CHACHA20_POLY1305,
IMB_AUTH_CHACHA20_POLY1305_SGL,
IMB_AUTH_ZUC256_EIA3_BITLEN,
IMB_AUTH_SNOW_V_AEAD,
IMB_AUTH_GCM_SGL,
IMB_AUTH_CRC32_ETHERNET_FCS,
IMB_AUTH_CRC32_SCTP,
IMB_AUTH_CRC32_WIMAX_OFDMA_DATA,
IMB_AUTH_CRC24_LTE_A,
IMB_AUTH_CRC24_LTE_B,
IMB_AUTH_CRC16_X25,
IMB_AUTH_CRC16_FP_DATA,
IMB_AUTH_CRC11_FP_HEADER,
IMB_AUTH_CRC10_IUUP_DATA,
IMB_AUTH_CRC8_WIMAX_OFDMA_HCS,
IMB_AUTH_CRC7_FP_HEADER,
IMB_AUTH_CRC6_IUUP_HEADER,
IMB_AUTH_GHASH,
IMB_AUTH_NUM
} IMB_HASH_ALG;
typedef enum {
IMB_ORDER_CIPHER_HASH = 1,
IMB_ORDER_HASH_CIPHER
} IMB_CHAIN_ORDER;
typedef enum {
IMB_KEY_64_BYTES = 8,
IMB_KEY_128_BYTES = 16,
IMB_KEY_192_BYTES = 24,
IMB_KEY_256_BYTES = 32
} IMB_KEY_SIZE_BYTES;
typedef enum {
IMB_SGL_INIT = 0,
IMB_SGL_UPDATE,
IMB_SGL_COMPLETE,
IMB_SGL_ALL
} IMB_SGL_STATE;
struct IMB_SGL_IOV {
const void *in;
void *out;
uint64_t len;
};
typedef struct IMB_JOB {
const void *enc_keys;
const void *dec_keys;
uint64_t key_len_in_bytes;
union {
const uint8_t *src;
const struct IMB_SGL_IOV *sgl_io_segs;
};
union {
uint8_t *dst;
uint64_t num_sgl_io_segs;
};
union {
uint64_t cipher_start_src_offset_in_bytes;
uint64_t cipher_start_src_offset_in_bits;
uint64_t cipher_start_offset_in_bits;
};
union {
uint64_t msg_len_to_cipher_in_bytes;
uint64_t msg_len_to_cipher_in_bits;
};
uint64_t hash_start_src_offset_in_bytes;
union {
uint64_t msg_len_to_hash_in_bytes;
uint64_t msg_len_to_hash_in_bits;
};
const uint8_t *iv;
uint64_t iv_len_in_bytes;
uint8_t *auth_tag_output;
uint64_t auth_tag_output_len_in_bytes;
/* Start hash algorithm-specific fields */
union {
struct _HMAC_specific_fields {
const uint8_t *_hashed_auth_key_xor_ipad;
const uint8_t *_hashed_auth_key_xor_opad;
} HMAC;
struct _AES_XCBC_specific_fields {
const uint32_t *_k1_expanded;
const uint8_t *_k2;
const uint8_t *_k3;
} XCBC;
struct _AES_CCM_specific_fields {
const void *aad;
uint64_t aad_len_in_bytes;
} CCM;
struct _AES_CMAC_specific_fields {
const void *_key_expanded;
const void *_skey1;
const void *_skey2;
} CMAC;
struct _AES_GCM_specific_fields {
const void *aad;
uint64_t aad_len_in_bytes;
struct gcm_context_data *ctx;
} GCM;
struct _ZUC_EIA3_specific_fields {
const uint8_t *_key;
const uint8_t *_iv;
const uint8_t *_iv23;
} ZUC_EIA3;
struct _SNOW3G_UIA2_specific_fields {
const void *_key;
const void *_iv;
} SNOW3G_UIA2;
struct _KASUMI_UIA1_specific_fields {
const void *_key;
} KASUMI_UIA1;
struct _AES_GMAC_specific_fields {
const struct gcm_key_data *_key;
const void *_iv;
uint64_t iv_len_in_bytes;
} GMAC;
struct _GHASH_specific_fields {
const struct gcm_key_data *_key;
const void *_init_tag;
} GHASH;
struct _POLY1305_specific_fields {
const void *_key;
} POLY1305;
struct _CHACHA20_POLY1305_specific_fields {
const void *aad;
uint64_t aad_len_in_bytes;
struct chacha20_poly1305_context_data *ctx;
} CHACHA20_POLY1305;
struct _SNOW_V_AEAD_specific_fields {
const void *aad;
uint64_t aad_len_in_bytes;
void *reserved;
} SNOW_V_AEAD;
} u;
IMB_STATUS status;
IMB_CIPHER_MODE cipher_mode;
IMB_CIPHER_DIRECTION cipher_direction;
IMB_HASH_ALG hash_alg;
IMB_CHAIN_ORDER chain_order;
void *user_data;
void *user_data2;
int (*cipher_func)(struct IMB_JOB *);
int (*hash_func)(struct IMB_JOB *);
IMB_SGL_STATE sgl_state;
union {
struct _CBCS_specific_fields {
void *next_iv;
} CBCS;
} cipher_fields;
void *suite_id[4];
uint32_t session_id;
} IMB_JOB;
/* KASUMI */
/* 64 precomputed words for key schedule */
#define KASUMI_KEY_SCHEDULE_SIZE 64
typedef struct kasumi_key_sched_s {
uint16_t sk16[KASUMI_KEY_SCHEDULE_SIZE];
uint16_t msk16[KASUMI_KEY_SCHEDULE_SIZE];
} kasumi_key_sched_t;
/* GCM data structures */
#define IMB_GCM_BLOCK_LEN 16
struct gcm_context_data {
uint8_t aad_hash[IMB_GCM_BLOCK_LEN];
uint64_t aad_length;
uint64_t in_length;
uint8_t partial_block_enc_key[IMB_GCM_BLOCK_LEN];
uint8_t orig_IV[IMB_GCM_BLOCK_LEN];
uint8_t current_counter[IMB_GCM_BLOCK_LEN];
uint64_t partial_block_length;
};
#undef IMB_GCM_BLOCK_LEN
struct chacha20_poly1305_context_data {
uint64_t hash[3];
uint64_t aad_len;
uint64_t hash_len;
uint8_t last_ks[64];
uint8_t poly_key[32];
uint8_t poly_scratch[16];
uint64_t last_block_count;
uint64_t remain_ks_bytes;
uint64_t remain_ct_bytes;
uint8_t IV[12];
};
#define IMB_MAX_TAG_LEN (16)
#define IMB_GCM_IV_DATA_LEN (12)
#define IMB_GCM_128_KEY_LEN (16)
#define IMB_GCM_192_KEY_LEN (24)
#define IMB_GCM_256_KEY_LEN (32)
#define IMB_GCM_ENC_KEY_LEN 16
#define IMB_GCM_KEY_SETS (15)
#ifdef __WIN32
__declspec(align(64))
#endif /* WIN32 */
struct gcm_key_data {
uint8_t expanded_keys[IMB_GCM_ENC_KEY_LEN * IMB_GCM_KEY_SETS];
union {
struct {
uint8_t shifted_hkey[IMB_GCM_ENC_KEY_LEN * 8];
uint8_t shifted_hkey_k[IMB_GCM_ENC_KEY_LEN * 8];
} sse_avx;
struct {
uint8_t shifted_hkey[IMB_GCM_ENC_KEY_LEN * 8];
} avx2_avx512;
struct {
uint8_t shifted_hkey[IMB_GCM_ENC_KEY_LEN * 32 * 2];
} vaes_avx512;
} ghash_keys;
}
#ifdef LINUX
__attribute__((aligned(64)));
#else
;
#endif
#undef IMB_GCM_ENC_KEY_LEN
#undef IMB_GCM_KEY_SETS
/* API data type definitions */
struct IMB_MGR;
typedef void (*init_mb_mgr_t)(struct IMB_MGR *);
typedef IMB_JOB *(*get_next_job_t)(struct IMB_MGR *);
typedef IMB_JOB *(*submit_job_t)(struct IMB_MGR *);
typedef IMB_JOB *(*get_completed_job_t)(struct IMB_MGR *);
typedef IMB_JOB *(*flush_job_t)(struct IMB_MGR *);
typedef uint32_t (*queue_size_t)(struct IMB_MGR *);
typedef uint32_t (*burst_fn_t)(struct IMB_MGR *,
const uint32_t,
struct IMB_JOB **);
typedef 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);
typedef uint32_t (*submit_hash_burst_t)(struct IMB_MGR *,
struct IMB_JOB *,
const uint32_t,
const IMB_HASH_ALG hash);
typedef void (*keyexp_t)(const void *, void *, void *);
typedef void (*cmac_subkey_gen_t)(const void *, void *, void *);
typedef void (*hash_one_block_t)(const void *, void *);
typedef void (*hash_fn_t)(const void *, const uint64_t, void *);
typedef void (*xcbc_keyexp_t)(const void *, void *, void *, void *);
typedef int (*des_keysched_t)(uint64_t *, const void *);
typedef void (*aes_cfb_t)(void *, const void *, const void *, const void *,
uint64_t);
typedef 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);
typedef 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);
typedef void (*aes_gcm_init_t)(const struct gcm_key_data *,
struct gcm_context_data *,
const uint8_t *, uint8_t const *, uint64_t);
typedef 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);
typedef void (*aes_gcm_enc_dec_update_t)(const struct gcm_key_data *,
struct gcm_context_data *,
uint8_t *, const uint8_t *, uint64_t);
typedef void (*aes_gcm_enc_dec_finalize_t)(const struct gcm_key_data *,
struct gcm_context_data *,
uint8_t *, uint64_t);
typedef void (*aes_gcm_precomp_t)(struct gcm_key_data *);
typedef void (*aes_gcm_pre_t)(const void *, struct gcm_key_data *);
typedef void (*aes_gmac_init_t)(const struct gcm_key_data *,
struct gcm_context_data *,
const uint8_t *, const uint64_t);
typedef void (*aes_gmac_update_t)(const struct gcm_key_data *,
struct gcm_context_data *,
const uint8_t *, const uint64_t);
typedef void (*aes_gmac_finalize_t)(const struct gcm_key_data *,
struct gcm_context_data *,
uint8_t *, const uint64_t);
typedef void (*chacha_poly_init_t)(const void *,
struct chacha20_poly1305_context_data *,
const void *, const void *, const uint64_t);
typedef void (*chacha_poly_enc_dec_update_t)(const void *,
struct chacha20_poly1305_context_data *,
void *, const void *, const uint64_t);
typedef void (*chacha_poly_finalize_t)(struct chacha20_poly1305_context_data *,
void *, const uint64_t);
typedef void (*ghash_t)(const struct gcm_key_data *, const void *,
const uint64_t, void *, const uint64_t);
typedef void (*zuc_eea3_1_buffer_t)(const void *, const void *, const void *,
void *, const uint32_t);
typedef void (*zuc_eea3_4_buffer_t)(const void * const *, const void * const *,
const void * const *, void **,
const uint32_t *);
typedef void (*zuc_eea3_n_buffer_t)(const void * const *, const void * const *,
const void * const *, void **,
const uint32_t *, const uint32_t);
typedef void (*zuc_eia3_1_buffer_t)(const void *, const void *, const void *,
const uint32_t, uint32_t *);
typedef void (*zuc_eia3_n_buffer_t)(const void * const *, const void * const *,
const void * const *,
const uint32_t *, uint32_t **,
const uint32_t);
typedef void (*kasumi_f8_1_buffer_t)(const kasumi_key_sched_t *,
const uint64_t, const void *, void *,
const uint32_t);
typedef void (*kasumi_f8_1_buffer_bit_t)(const kasumi_key_sched_t *,
const uint64_t, const void *,
void *,
const uint32_t, const uint32_t);
typedef 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);
typedef 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);
typedef 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);
typedef void (*kasumi_f8_n_buffer_t)(const kasumi_key_sched_t *,
const uint64_t *, const void * const *,
void **, const uint32_t *,
const uint32_t);
typedef void (*kasumi_f9_1_buffer_user_t)(const kasumi_key_sched_t *,
const uint64_t, const void *,
const uint32_t, void *,
const uint32_t);
typedef void (*kasumi_f9_1_buffer_t)(const kasumi_key_sched_t *,
const void *,
const uint32_t, void *);
typedef int (*kasumi_init_f8_key_sched_t)(const void *,
kasumi_key_sched_t *);
typedef int (*kasumi_init_f9_key_sched_t)(const void *,
kasumi_key_sched_t *);
typedef size_t (*kasumi_key_sched_size_t)(void);
typedef struct snow3g_key_schedule_s {
/* KEY */
uint32_t k[4];
} snow3g_key_schedule_t;
typedef void (*snow3g_f8_1_buffer_t)(const snow3g_key_schedule_t *,
const void *, const void *,
void *, const uint32_t);
typedef void (*snow3g_f8_1_buffer_bit_t)(const snow3g_key_schedule_t *,
const void *, const void *, void *,
const uint32_t, const uint32_t);
typedef 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);
typedef 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);
typedef 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);
typedef void
(*snow3g_f8_8_buffer_multikey_t)(const snow3g_key_schedule_t * const [],
const void * const [], const void * const [],
void *[], const uint32_t[]);
typedef void (*snow3g_f8_n_buffer_t)(const snow3g_key_schedule_t *,
const void * const [],
const void * const [],
void *[], const uint32_t[],
const uint32_t);
typedef 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);
typedef void (*snow3g_f9_1_buffer_t)(const snow3g_key_schedule_t *,
const void *, const void *,
const uint64_t, void *);
typedef int (*snow3g_init_key_sched_t)(const void *,
snow3g_key_schedule_t *);
typedef size_t (*snow3g_key_sched_size_t)(void);
typedef uint32_t (*hec_32_t)(const uint8_t *);
typedef uint64_t (*hec_64_t)(const uint8_t *);
typedef uint32_t (*crc32_fn_t)(const void *, const uint64_t);
typedef void (*aes_ecb_quic_t)(const void *, const void *,
void *out, uint64_t);
/* Multi-buffer manager flags passed to alloc_mb_mgr() */
#define IMB_FLAG_SHANI_OFF (1ULL << 0)
#define IMB_FLAG_AESNI_OFF (1ULL << 1)
#define IMB_FLAG_GFNI_OFF (1ULL << 2)
#define IMB_FEATURE_SHANI (1ULL << 0)
#define IMB_FEATURE_AESNI (1ULL << 1)
#define IMB_FEATURE_PCLMULQDQ (1ULL << 2)
#define IMB_FEATURE_CMOV (1ULL << 3)
#define IMB_FEATURE_SSE4_2 (1ULL << 4)
#define IMB_FEATURE_AVX (1ULL << 5)
#define IMB_FEATURE_AVX2 (1ULL << 6)
#define IMB_FEATURE_AVX512F (1ULL << 7)
#define IMB_FEATURE_AVX512DQ (1ULL << 8)
#define IMB_FEATURE_AVX512CD (1ULL << 9)
#define IMB_FEATURE_AVX512BW (1ULL << 10)
#define IMB_FEATURE_AVX512VL (1ULL << 11)
#define IMB_FEATURE_AVX512_SKX (IMB_FEATURE_AVX512F | IMB_FEATURE_AVX512DQ | \
IMB_FEATURE_AVX512CD | IMB_FEATURE_AVX512BW | \
IMB_FEATURE_AVX512VL)
#define IMB_FEATURE_VAES (1ULL << 12)
#define IMB_FEATURE_VPCLMULQDQ (1ULL << 13)
#define IMB_FEATURE_SAFE_DATA (1ULL << 14)
#define IMB_FEATURE_SAFE_PARAM (1ULL << 15)
#define IMB_FEATURE_GFNI (1ULL << 16)
#define IMB_FEATURE_AVX512_IFMA (1ULL << 17)
#define IMB_FEATURE_BMI2 (1ULL << 18)
#define IMB_FEATURE_AESNI_EMU (1ULL << 19)
#define IMB_FEATURE_SELF_TEST (1ULL << 20) /* self-test feature present */
#define IMB_FEATURE_SELF_TEST_PASS (1ULL << 21) /* self-test passed */
#define IMB_FEATURE_AVX_IFMA (1ULL << 22)
#define IMB_CPUFLAGS_NO_AESNI (IMB_FEATURE_SSE4_2 | IMB_FEATURE_CMOV)
#define IMB_CPUFLAGS_SSE (IMB_CPUFLAGS_NO_AESNI | IMB_FEATURE_AESNI | \
IMB_FEATURE_PCLMULQDQ)
#define IMB_CPUFLAGS_SSE_T2 (IMB_CPUFLAGS_SSE | IMB_FEATURE_SHANI)
#define IMB_CPUFLAGS_SSE_T3 (IMB_CPUFLAGS_SSE_T2 | IMB_FEATURE_GFNI)
#define IMB_CPUFLAGS_AVX (IMB_CPUFLAGS_SSE | IMB_FEATURE_AVX)
#define IMB_CPUFLAGS_AVX2 (IMB_CPUFLAGS_AVX | IMB_FEATURE_AVX2 | \
IMB_FEATURE_BMI2)
#define IMB_CPUFLAGS_AVX512 (IMB_CPUFLAGS_AVX2 | IMB_FEATURE_AVX512_SKX)
#define IMB_CPUFLAGS_AVX512_T2 (IMB_CPUFLAGS_AVX512 | IMB_FEATURE_VAES | \
IMB_FEATURE_VPCLMULQDQ | IMB_FEATURE_GFNI | \
IMB_FEATURE_AVX512_IFMA | IMB_FEATURE_SHANI)
#define IMB_CPUFLAGS_AVX2_T2 (IMB_CPUFLAGS_AVX2 | IMB_FEATURE_SHANI | \
IMB_FEATURE_VAES | IMB_FEATURE_VPCLMULQDQ | \
IMB_FEATURE_GFNI)
#define IMB_CPUFLAGS_AVX_T2 (IMB_CPUFLAGS_AVX | IMB_FEATURE_SHANI | \
IMB_FEATURE_GFNI)
#define IMB_CPUFLAGS_AVX2_T3 (IMB_CPUFLAGS_AVX2_T2 | IMB_FEATURE_AVX_IFMA)
/* TOP LEVEL (IMB_MGR) Data structure fields */
#define IMB_MAX_BURST_SIZE 128
#define IMB_MAX_JOBS (IMB_MAX_BURST_SIZE * 2)
typedef struct IMB_MGR {
uint64_t flags;
uint64_t features;
uint64_t reserved[5];
uint32_t used_arch;
int imb_errno;
get_next_job_t get_next_job;
submit_job_t submit_job;
submit_job_t submit_job_nocheck;
get_completed_job_t get_completed_job;
flush_job_t flush_job;
queue_size_t queue_size;
keyexp_t keyexp_128;
keyexp_t keyexp_192;
keyexp_t keyexp_256;
cmac_subkey_gen_t cmac_subkey_gen_128;
xcbc_keyexp_t xcbc_keyexp;
des_keysched_t des_key_sched;
hash_one_block_t sha1_one_block;
hash_one_block_t sha224_one_block;
hash_one_block_t sha256_one_block;
hash_one_block_t sha384_one_block;
hash_one_block_t sha512_one_block;
hash_one_block_t md5_one_block;
hash_fn_t sha1;
hash_fn_t sha224;
hash_fn_t sha256;
hash_fn_t sha384;
hash_fn_t sha512;
aes_cfb_t aes128_cfb_one;
aes_gcm_enc_dec_t gcm128_enc;
aes_gcm_enc_dec_t gcm192_enc;
aes_gcm_enc_dec_t gcm256_enc;
aes_gcm_enc_dec_t gcm128_dec;
aes_gcm_enc_dec_t gcm192_dec;
aes_gcm_enc_dec_t gcm256_dec;
aes_gcm_init_t gcm128_init;
aes_gcm_init_t gcm192_init;
aes_gcm_init_t gcm256_init;
aes_gcm_enc_dec_update_t gcm128_enc_update;
aes_gcm_enc_dec_update_t gcm192_enc_update;
aes_gcm_enc_dec_update_t gcm256_enc_update;
aes_gcm_enc_dec_update_t gcm128_dec_update;
aes_gcm_enc_dec_update_t gcm192_dec_update;
aes_gcm_enc_dec_update_t gcm256_dec_update;
aes_gcm_enc_dec_finalize_t gcm128_enc_finalize;
aes_gcm_enc_dec_finalize_t gcm192_enc_finalize;
aes_gcm_enc_dec_finalize_t gcm256_enc_finalize;
aes_gcm_enc_dec_finalize_t gcm128_dec_finalize;
aes_gcm_enc_dec_finalize_t gcm192_dec_finalize;
aes_gcm_enc_dec_finalize_t gcm256_dec_finalize;
aes_gcm_precomp_t gcm128_precomp;
aes_gcm_precomp_t gcm192_precomp;
aes_gcm_precomp_t gcm256_precomp;
aes_gcm_pre_t gcm128_pre;
aes_gcm_pre_t gcm192_pre;
aes_gcm_pre_t gcm256_pre;
zuc_eea3_1_buffer_t eea3_1_buffer;
zuc_eea3_4_buffer_t eea3_4_buffer;
zuc_eea3_n_buffer_t eea3_n_buffer;
zuc_eia3_1_buffer_t eia3_1_buffer;
kasumi_f8_1_buffer_t f8_1_buffer;
kasumi_f8_1_buffer_bit_t f8_1_buffer_bit;
kasumi_f8_2_buffer_t f8_2_buffer;
kasumi_f8_3_buffer_t f8_3_buffer;
kasumi_f8_4_buffer_t f8_4_buffer;
kasumi_f8_n_buffer_t f8_n_buffer;
kasumi_f9_1_buffer_t f9_1_buffer;
kasumi_f9_1_buffer_user_t f9_1_buffer_user;
kasumi_init_f8_key_sched_t kasumi_init_f8_key_sched;
kasumi_init_f9_key_sched_t kasumi_init_f9_key_sched;
kasumi_key_sched_size_t kasumi_key_sched_size;
snow3g_f8_1_buffer_bit_t snow3g_f8_1_buffer_bit;
snow3g_f8_1_buffer_t snow3g_f8_1_buffer;
snow3g_f8_2_buffer_t snow3g_f8_2_buffer;
snow3g_f8_4_buffer_t snow3g_f8_4_buffer;
snow3g_f8_8_buffer_t snow3g_f8_8_buffer;
snow3g_f8_n_buffer_t snow3g_f8_n_buffer;
snow3g_f8_8_buffer_multikey_t snow3g_f8_8_buffer_multikey;
snow3g_f8_n_buffer_multikey_t snow3g_f8_n_buffer_multikey;
snow3g_f9_1_buffer_t snow3g_f9_1_buffer;
snow3g_init_key_sched_t snow3g_init_key_sched;
snow3g_key_sched_size_t snow3g_key_sched_size;
ghash_t ghash;
zuc_eia3_n_buffer_t eia3_n_buffer;
aes_gcm_init_var_iv_t gcm128_init_var_iv;
aes_gcm_init_var_iv_t gcm192_init_var_iv;
aes_gcm_init_var_iv_t gcm256_init_var_iv;
aes_gmac_init_t gmac128_init;
aes_gmac_init_t gmac192_init;
aes_gmac_init_t gmac256_init;
aes_gmac_update_t gmac128_update;
aes_gmac_update_t gmac192_update;
aes_gmac_update_t gmac256_update;
aes_gmac_finalize_t gmac128_finalize;
aes_gmac_finalize_t gmac192_finalize;
aes_gmac_finalize_t gmac256_finalize;
hec_32_t hec_32;
hec_64_t hec_64;
cmac_subkey_gen_t cmac_subkey_gen_256;
aes_gcm_pre_t ghash_pre;
crc32_fn_t crc32_ethernet_fcs;
crc32_fn_t crc16_x25;
crc32_fn_t crc32_sctp;
crc32_fn_t crc24_lte_a;
crc32_fn_t crc24_lte_b;
crc32_fn_t crc16_fp_data;
crc32_fn_t crc11_fp_header;
crc32_fn_t crc7_fp_header;
crc32_fn_t crc10_iuup_data;
crc32_fn_t crc6_iuup_header;
crc32_fn_t crc32_wimax_ofdma_data;
crc32_fn_t crc8_wimax_ofdma_hcs;
chacha_poly_init_t chacha20_poly1305_init;
chacha_poly_enc_dec_update_t chacha20_poly1305_enc_update;
chacha_poly_enc_dec_update_t chacha20_poly1305_dec_update;
chacha_poly_finalize_t chacha20_poly1305_finalize;
burst_fn_t get_next_burst;
burst_fn_t submit_burst;
burst_fn_t submit_burst_nocheck;
burst_fn_t flush_burst;
submit_cipher_burst_t submit_cipher_burst;
submit_cipher_burst_t submit_cipher_burst_nocheck;
submit_hash_burst_t submit_hash_burst;
submit_hash_burst_t submit_hash_burst_nocheck;
aes_cfb_t aes256_cfb_one;
aes_ecb_quic_t aes_ecb_128_quic;
aes_ecb_quic_t aes_ecb_256_quic;
void (*set_suite_id)(struct IMB_MGR *, IMB_JOB *);
/* in-order scheduler fields */
int earliest_job;
int next_job;
IMB_JOB jobs[IMB_MAX_JOBS];
/* out of order managers */
void *aes128_ooo;
void *aes192_ooo;
void *aes256_ooo;
void *docsis128_sec_ooo;
void *docsis128_crc32_sec_ooo;
void *docsis256_sec_ooo;
void *docsis256_crc32_sec_ooo;
void *des_enc_ooo;
void *des_dec_ooo;
void *des3_enc_ooo;
void *des3_dec_ooo;
void *docsis_des_enc_ooo;
void *docsis_des_dec_ooo;
void *hmac_sha_1_ooo;
void *hmac_sha_224_ooo;
void *hmac_sha_256_ooo;
void *hmac_sha_384_ooo;
void *hmac_sha_512_ooo;
void *hmac_md5_ooo;
void *aes_xcbc_ooo;
void *aes_ccm_ooo;
void *aes_cmac_ooo;
void *zuc_eea3_ooo;
void *zuc_eia3_ooo;
void *aes128_cbcs_ooo;
void *zuc256_eea3_ooo;
void *zuc256_eia3_ooo;
void *aes256_ccm_ooo;
void *aes256_cmac_ooo;
void *snow3g_uea2_ooo;
void *snow3g_uia2_ooo;
void *sha_1_ooo;
void *sha_224_ooo;
void *sha_256_ooo;
void *sha_384_ooo;
void *sha_512_ooo;
void *end_ooo; /* add new out-of-order managers above this line */
} IMB_MGR;
IMB_DLL_EXPORT const char *imb_get_version_str(void);
IMB_DLL_EXPORT unsigned imb_get_version(void);
IMB_DLL_EXPORT int imb_get_errno(IMB_MGR *mb_mgr);
IMB_DLL_EXPORT const char *imb_get_strerror(int errnum);
IMB_DLL_EXPORT IMB_MGR *alloc_mb_mgr(uint64_t flags);
IMB_DLL_EXPORT void free_mb_mgr(IMB_MGR *ptr);
IMB_DLL_EXPORT size_t imb_get_mb_mgr_size(void);
IMB_DLL_EXPORT IMB_MGR *imb_set_pointers_mb_mgr(void *ptr, const uint64_t flags,
const unsigned reset_mgr);
IMB_DLL_EXPORT uint64_t imb_get_feature_flags(void);
IMB_DLL_EXPORT void init_mb_mgr_avx(IMB_MGR *state);
IMB_DLL_EXPORT void init_mb_mgr_avx2(IMB_MGR *state);
IMB_DLL_EXPORT void init_mb_mgr_avx512(IMB_MGR *state);
IMB_DLL_EXPORT void init_mb_mgr_sse(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *submit_job_avx(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *submit_job_avx2(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *submit_job_avx512(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *submit_job_sse(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *submit_job_nocheck_avx(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *submit_job_nocheck_avx2(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *submit_job_nocheck_avx512(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *submit_job_nocheck_sse(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *flush_job_avx(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *flush_job_avx2(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *flush_job_avx512(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *flush_job_sse(IMB_MGR *state);
IMB_DLL_EXPORT uint32_t queue_size_avx(IMB_MGR *state);
IMB_DLL_EXPORT uint32_t queue_size_avx2(IMB_MGR *state);
IMB_DLL_EXPORT uint32_t queue_size_avx512(IMB_MGR *state);
IMB_DLL_EXPORT uint32_t queue_size_sse(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *get_completed_job_avx(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *get_completed_job_avx2(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *get_completed_job_avx512(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *get_completed_job_sse(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *get_next_job_avx(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *get_next_job_avx2(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *get_next_job_avx512(IMB_MGR *state);
IMB_DLL_EXPORT IMB_JOB *get_next_job_sse(IMB_MGR *state);
IMB_DLL_EXPORT void init_mb_mgr_auto(IMB_MGR *state, IMB_ARCH *arch);
/*
* Wrapper macros to call arch API's set up
* at init phase of multi-buffer manager.
*
* For example, after calling init_mb_mgr_sse(&mgr)
* The 'mgr' structure be set up so that:
* mgr.get_next_job will point to get_next_job_sse(),
* mgr.submit_job will point to submit_job_sse(),
* mgr.submit_job_nocheck will point to submit_job_nocheck_sse(),
* mgr.get_completed_job will point to get_completed_job_sse(),
* mgr.flush_job will point to flush_job_sse(),
* mgr.queue_size will point to queue_size_sse()
* mgr.keyexp_128 will point to aes_keyexp_128_sse()
* mgr.keyexp_192 will point to aes_keyexp_192_sse()
* mgr.keyexp_256 will point to aes_keyexp_256_sse()
* etc.
*
* Direct use of arch API's may result in better performance.
* Using below indirect interface may produce slightly worse performance but
* it can simplify application implementation.
* The test app provides example of using the indirect interface.
*/
#define IMB_GET_NEXT_JOB(_mgr) ((_mgr)->get_next_job((_mgr)))
#define IMB_SUBMIT_JOB(_mgr) ((_mgr)->submit_job((_mgr)))
#define IMB_SUBMIT_JOB_NOCHECK(_mgr) ((_mgr)->submit_job_nocheck((_mgr)))
#define IMB_GET_COMPLETED_JOB(_mgr) ((_mgr)->get_completed_job((_mgr)))
#define IMB_FLUSH_JOB(_mgr) ((_mgr)->flush_job((_mgr)))
#define IMB_QUEUE_SIZE(_mgr) ((_mgr)->queue_size((_mgr)))
#define IMB_GET_NEXT_BURST(_mgr, _n_jobs, _jobs) \
((_mgr)->get_next_burst((_mgr), (_n_jobs), (_jobs)))
#define IMB_SUBMIT_BURST(_mgr, _n_jobs, _jobs) \
((_mgr)->submit_burst((_mgr), (_n_jobs), (_jobs)))
#define IMB_SUBMIT_BURST_NOCHECK(_mgr, _n_jobs, _jobs) \
((_mgr)->submit_burst_nocheck((_mgr), (_n_jobs), (_jobs)))
#define IMB_FLUSH_BURST(_mgr, _max_jobs, _jobs) \
((_mgr)->flush_burst((_mgr), (_max_jobs), (_jobs)))
#define IMB_SUBMIT_CIPHER_BURST(_mgr, _jobs, _n_jobs, _cipher, \
_dir, _key_size) \
((_mgr)->submit_cipher_burst((_mgr), (_jobs), (_n_jobs), \
(_cipher), (_dir), (_key_size)))
#define IMB_SUBMIT_CIPHER_BURST_NOCHECK(_mgr, _jobs, _n_jobs, _cipher, \
_dir, _key_size) \
((_mgr)->submit_cipher_burst_nocheck((_mgr), (_jobs), (_n_jobs),\
(_cipher), (_dir), (_key_size)))
#define IMB_SUBMIT_HASH_BURST(_mgr, _jobs, _n_jobs, _hash) \
((_mgr)->submit_hash_burst((_mgr), (_jobs), (_n_jobs), (_hash)))
#define IMB_SUBMIT_HASH_BURST_NOCHECK(_mgr, _jobs, _n_jobs, _hash) \
((_mgr)->submit_hash_burst_nocheck((_mgr), (_jobs), (_n_jobs), (_hash)))
/* Key expansion and generation API's */
#define IMB_AES_KEYEXP_128(_mgr, _key, _enc_exp_key, _dec_exp_key) \
((_mgr)->keyexp_128((_key), (_enc_exp_key), (_dec_exp_key)))
#define IMB_AES_KEYEXP_192(_mgr, _key, _enc_exp_key, _dec_exp_key) \
((_mgr)->keyexp_192((_key), (_enc_exp_key), (_dec_exp_key)))
#define IMB_AES_KEYEXP_256(_mgr, _key, _enc_exp_key, _dec_exp_key) \
((_mgr)->keyexp_256((_key), (_enc_exp_key), (_dec_exp_key)))
#define IMB_AES_CMAC_SUBKEY_GEN_128(_mgr, _exp_key, _key1, _key2) \
((_mgr)->cmac_subkey_gen_128((_exp_key), (_key1), (_key2)))
#define IMB_AES_CMAC_SUBKEY_GEN_256(_mgr, _exp_key, _key1, _key2) \
((_mgr)->cmac_subkey_gen_256((_exp_key), (_key1), (_key2)))
#define IMB_AES_XCBC_KEYEXP(_mgr, _key, _exp_key, _exp_key2, _exp_key3) \
((_mgr)->xcbc_keyexp((_key), (_exp_key), (_exp_key2), (_exp_key3)))
#define IMB_DES_KEYSCHED(_mgr, _exp_key, _key) \
((_mgr)->des_key_sched((_exp_key), (_key)))
/* Hash API's */
#define IMB_SHA1_ONE_BLOCK(_mgr, _src, _tag) \
((_mgr)->sha1_one_block((_src), (_tag)))
#define IMB_SHA1(_mgr, _src, _length, _tag) \
((_mgr)->sha1((_src), (_length), (_tag)))
#define IMB_SHA224_ONE_BLOCK(_mgr, _src, _tag) \
((_mgr)->sha224_one_block((_src), (_tag)))
#define IMB_SHA224(_mgr, _src, _length, _tag) \
((_mgr)->sha224((_src), (_length), (_tag)))
#define IMB_SHA256_ONE_BLOCK(_mgr, _src, _tag) \
((_mgr)->sha256_one_block((_src), (_tag)))
#define IMB_SHA256(_mgr, _src, _length, _tag) \
((_mgr)->sha256((_src), (_length), (_tag)))
#define IMB_SHA384_ONE_BLOCK(_mgr, _src, _tag) \
((_mgr)->sha384_one_block((_src), (_tag)))
#define IMB_SHA384(_mgr, _src, _length, _tag) \
((_mgr)->sha384((_src), (_length), (_tag)))
#define IMB_SHA512_ONE_BLOCK(_mgr, _src, _tag) \
((_mgr)->sha512_one_block((_src), (_tag)))
#define IMB_SHA512(_mgr, _src, _length, _tag) \
((_mgr)->sha512((_src), (_length), (_tag)))
#define IMB_MD5_ONE_BLOCK(_mgr, _src, _tag) \
((_mgr)->md5_one_block((_src), (_tag)))
#define IMB_AES128_CFB_ONE(_mgr, _dst, _src, _iv, _exp_key, _len) \
((_mgr)->aes128_cfb_one((_dst), (_src), (_iv), (_exp_key), (_len)))
#define IMB_AES256_CFB_ONE(_mgr, _dst, _src, _iv, _exp_key, _len) \
((_mgr)->aes256_cfb_one((_dst), (_src), (_iv), (_exp_key), (_len)))
/* AES-GCM API's */
#define IMB_AES128_GCM_ENC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad, \
_aadl, _tag, _tagl) \
((_mgr)->gcm128_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
(_aad), (_aadl), (_tag), (_tagl)))
#define IMB_AES192_GCM_ENC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad, \
_aadl, _tag, _tagl) \
((_mgr)->gcm192_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
(_aad), (_aadl), (_tag), (_tagl)))
#define IMB_AES256_GCM_ENC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad, \
_aadl, _tag, _tagl) \
((_mgr)->gcm256_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
(_aad), (_aadl), (_tag), (_tagl)))
#define IMB_AES128_GCM_DEC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad, \
_aadl, _tag, _tagl) \
((_mgr)->gcm128_dec((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
(_aad), (_aadl), (_tag), (_tagl)))
#define IMB_AES192_GCM_DEC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, \
_aad, _aadl, _tag, _tagl) \
((_mgr)->gcm192_dec((_exp_key), (_ctx), (_dst), (_src), (_len), \
(_iv), (_aad), (_aadl), (_tag), (_tagl)))
#define IMB_AES256_GCM_DEC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, \
_aad, _aadl, _tag, _tagl) \
((_mgr)->gcm256_dec((_exp_key), (_ctx), (_dst), (_src), (_len), \
(_iv), (_aad), (_aadl), (_tag), (_tagl)))
#define IMB_AES128_GCM_INIT(_mgr, _exp_key, _ctx, _iv, _aad, _aadl) \
((_mgr)->gcm128_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl)))
#define IMB_AES192_GCM_INIT(_mgr, _exp_key, _ctx, _iv, _aad, _aadl) \
((_mgr)->gcm192_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl)))
#define IMB_AES256_GCM_INIT(_mgr, _exp_key, _ctx, _iv, _aad, _aadl) \
((_mgr)->gcm256_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl)))
#define IMB_AES128_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, \
_aadl) \
((_mgr)->gcm128_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl), \
(_aad), (_aadl)))
#define IMB_AES192_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, \
_aadl) \
((_mgr)->gcm192_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl), \
(_aad), (_aadl)))
#define IMB_AES256_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, \
_aadl) \
((_mgr)->gcm256_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl), \
(_aad), (_aadl)))
#define IMB_AES128_GCM_ENC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
((_mgr)->gcm128_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
#define IMB_AES192_GCM_ENC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
((_mgr)->gcm192_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
#define IMB_AES256_GCM_ENC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
((_mgr)->gcm256_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
#define IMB_AES128_GCM_DEC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
((_mgr)->gcm128_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
#define IMB_AES192_GCM_DEC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
((_mgr)->gcm192_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
#define IMB_AES256_GCM_DEC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
((_mgr)->gcm256_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
#define IMB_AES128_GCM_ENC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
((_mgr)->gcm128_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
#define IMB_AES192_GCM_ENC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
((_mgr)->gcm192_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
#define IMB_AES256_GCM_ENC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
((_mgr)->gcm256_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
#define IMB_AES128_GCM_DEC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
((_mgr)->gcm128_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
#define IMB_AES192_GCM_DEC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
((_mgr)->gcm192_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
#define IMB_AES256_GCM_DEC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
((_mgr)->gcm256_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
#define IMB_AES128_GMAC_INIT(_mgr, _exp_key, _ctx, _iv, _ivl) \
((_mgr)->gmac128_init((_exp_key), (_ctx), (_iv), (_ivl)))
#define IMB_AES192_GMAC_INIT(_mgr, _exp_key, _ctx, _iv, _ivl) \
((_mgr)->gmac192_init((_exp_key), (_ctx), (_iv), (_ivl)))
#define IMB_AES256_GMAC_INIT(_mgr, _exp_key, _ctx, _iv, _ivl) \
((_mgr)->gmac256_init((_exp_key), (_ctx), (_iv), (_ivl)))
#define IMB_AES128_GMAC_UPDATE(_mgr, _exp_key, _ctx, _src, _len) \
((_mgr)->gmac128_update((_exp_key), (_ctx), (_src), (_len)))
#define IMB_AES192_GMAC_UPDATE(_mgr, _exp_key, _ctx, _src, _len) \
((_mgr)->gmac192_update((_exp_key), (_ctx), (_src), (_len)))
#define IMB_AES256_GMAC_UPDATE(_mgr, _exp_key, _ctx, _src, _len) \
((_mgr)->gmac256_update((_exp_key), (_ctx), (_src), (_len)))
#define IMB_AES128_GMAC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
((_mgr)->gmac128_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
#define IMB_AES192_GMAC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
((_mgr)->gmac192_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
#define IMB_AES256_GMAC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
((_mgr)->gmac256_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
#define IMB_AES128_GCM_PRECOMP(_mgr, _key) \
((_mgr)->gcm128_precomp((_key)))
#define IMB_AES192_GCM_PRECOMP(_mgr, _key) \
((_mgr)->gcm192_precomp((_key)))
#define IMB_AES256_GCM_PRECOMP(_mgr, _key) \
((_mgr)->gcm256_precomp((_key)))
#define IMB_AES128_GCM_PRE(_mgr, _key, _exp_key) \
((_mgr)->gcm128_pre((_key), (_exp_key)))
#define IMB_AES192_GCM_PRE(_mgr, _key, _exp_key) \
((_mgr)->gcm192_pre((_key), (_exp_key)))
#define IMB_AES256_GCM_PRE(_mgr, _key, _exp_key) \
((_mgr)->gcm256_pre((_key), (_exp_key)))
#define IMB_GHASH_PRE(_mgr, _key, _exp_key) \
((_mgr)->ghash_pre((_key), (_exp_key)))
#define IMB_GHASH(_mgr, _exp_key, _src, _len, _tag, _tagl) \
((_mgr)->ghash((_exp_key), (_src), (_len), (_tag), (_tagl)))
/* Chacha20-Poly1305 direct API's */
#define IMB_CHACHA20_POLY1305_INIT(_mgr, _key, _ctx, _iv, _aad, _aadl) \
((_mgr)->chacha20_poly1305_init((_key), (_ctx), (_iv), (_aad), \
(_aadl)))
#define IMB_CHACHA20_POLY1305_ENC_UPDATE(_mgr, _key, _ctx, _dst, _src, _len) \
((_mgr)->chacha20_poly1305_enc_update((_key), (_ctx), (_dst), (_src), \
(_len)))
#define IMB_CHACHA20_POLY1305_DEC_UPDATE(_mgr, _key, _ctx, _dst, _src, _len) \
((_mgr)->chacha20_poly1305_dec_update((_key), (_ctx), (_dst), (_src), \
(_len)))
#define IMB_CHACHA20_POLY1305_ENC_FINALIZE(_mgr, _ctx, _tag, _tagl) \
((_mgr)->chacha20_poly1305_finalize((_ctx), (_tag), (_tagl)))
#define IMB_CHACHA20_POLY1305_DEC_FINALIZE(_mgr, _ctx, _tag, _tagl) \
((_mgr)->chacha20_poly1305_finalize((_ctx), (_tag), (_tagl)))
/* ZUC EEA3/EIA3 functions */
#define IMB_ZUC_EEA3_1_BUFFER(_mgr, _key, _iv, _src, _dst, _len) \
((_mgr)->eea3_1_buffer((_key), (_iv), (_src), (_dst), (_len)))
#define IMB_ZUC_EEA3_4_BUFFER(_mgr, _key, _iv, _src, _dst, _len) \
((_mgr)->eea3_4_buffer((_key), (_iv), (_src), (_dst), (_len)))
#define IMB_ZUC_EEA3_N_BUFFER(_mgr, _key, _iv, _src, _dst, _len, _count) \
((_mgr)->eea3_n_buffer((_key), (_iv), (_src), (_dst), (_len), (_count)))
#define IMB_ZUC_EIA3_1_BUFFER(_mgr, _key, _iv, _src, _len, _tag) \
((_mgr)->eia3_1_buffer((_key), (_iv), (_src), (_len), (_tag)))
#define IMB_ZUC_EIA3_N_BUFFER(_mgr, _key, _iv, _src, _len, _tag, _count) \
((_mgr)->eia3_n_buffer((_key), (_iv), (_src), (_len), (_tag), (_count)))
/* KASUMI F8/F9 functions */
#define IMB_KASUMI_F8_1_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len) \
((_mgr)->f8_1_buffer((_exp_key), (_iv), (_src), (_dst), (_len)))
#define IMB_KASUMI_F8_1_BUFFER_BIT(_mgr, _exp_key, _iv, _src, _dst, _len, \
_offset) \
((_mgr)->f8_1_buffer_bit((_exp_key), (_iv), (_src), (_dst), (_len), \
(_offset)))
#define IMB_KASUMI_F8_2_BUFFER(_mgr, _exp_key, _iv1, _iv2, _src1, _dst1, \
_len1, _src2, _dst2, _len2) \
((_mgr)->f8_2_buffer((_exp_key), (_iv1), (_iv2), (_src1), (_dst1), \
(_len1), (_src2), (_dst2), (_len2)))
#define IMB_KASUMI_F8_3_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _src1, _dst1, \
_src2, _dst2, _src3, _dst3, _len) \
((_mgr)->f8_3_buffer((_exp_key), (_iv1), (_iv2), (_iv3), (_src1), \
(_dst1), (_src2), (_dst2), (_src3), (_dst3), \
(_len)))
#define IMB_KASUMI_F8_4_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4, \
_src1, _dst1, _src2, _dst2, _src3, _dst3, \
_src4, _dst4, _len) \
((_mgr)->f8_4_buffer((_exp_key), (_iv1), (_iv2), (_iv3), (_iv4), \
(_src1), (_dst1), (_src2), (_dst2), \
(_src3), (_dst3), (_src4), (_dst4), (_len)))
#define IMB_KASUMI_F8_N_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len, _count) \
((_mgr)->f8_n_buffer((_exp_key), (_iv), (_src), (_dst), (_len), \
(_count)))
#define IMB_KASUMI_F9_1_BUFFER(_mgr, _exp_key, _src, _len, _tag) \
((_mgr)->f9_1_buffer((_exp_key), (_src), (_len), (_tag)))
#define IMB_KASUMI_F9_1_BUFFER_USER(_mgr, _exp_key, _iv, _src, _len, _tag, \
_dir) \
((_mgr)->f9_1_buffer_user((_exp_key), (_iv), (_src), (_len), \
(_tag), (_dir)))
#define IMB_KASUMI_INIT_F8_KEY_SCHED(_mgr, _key, _exp_key) \
((_mgr)->kasumi_init_f8_key_sched((_key), (_exp_key)))
#define IMB_KASUMI_INIT_F9_KEY_SCHED(_mgr, _key, _exp_key) \
((_mgr)->kasumi_init_f9_key_sched((_key), (_exp_key)))
#define IMB_KASUMI_KEY_SCHED_SIZE(_mgr)((_mgr)->kasumi_key_sched_size())
/* SNOW3G F8/F9 functions */
#define IMB_SNOW3G_F8_1_BUFFER_BIT(_mgr, _exp_key, _iv, _src, _dst, \
_len, _offset) \
((_mgr)->snow3g_f8_1_buffer_bit((_exp_key), (_iv), (_src), \
(_dst), (_len), (_offset)))
#define IMB_SNOW3G_F8_1_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len) \
((_mgr)->snow3g_f8_1_buffer((_exp_key), (_iv), (_src), (_dst), (_len)))
#define IMB_SNOW3G_F8_2_BUFFER(_mgr, _exp_key, _iv1, _iv2, \
_src1, _dst1, _len1, \
_src2, _dst2, _len2) \
((_mgr)->snow3g_f8_2_buffer((_exp_key), (_iv1), (_iv2), \
(_src1), (_dst1), (_len1), \
(_src2), (_dst2), (_len2)))
#define IMB_SNOW3G_F8_4_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4, \
_src1, _dst1, _len1, \
_src2, _dst2, _len2, \
_src3, _dst3, _len3, \
_src4, _dst4, _len4) \
((_mgr)->snow3g_f8_4_buffer((_exp_key), (_iv1), (_iv2), (_iv3), \
(_iv4), (_src1), (_dst1), (_len1), \
(_src2), (_dst2), (_len2), \
(_src3), (_dst3), (_len3), \
(_src4), (_dst4), (_len4)))
#define IMB_SNOW3G_F8_8_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4, \
_iv5, _iv6, _iv7, _iv8, \
_src1, _dst1, _len1, \
_src2, _dst2, _len2, \
_src3, _dst3, _len3, \
_src4, _dst4, _len4, \
_src5, _dst5, _len5, \
_src6, _dst6, _len6, \
_src7, _dst7, _len7, \
_src8, _dst8, _len8) \
((_mgr)->snow3g_f8_8_buffer((_exp_key), (_iv1), (_iv2), (_iv3), \
(_iv4), (_iv5), (_iv6), (_iv7), \
(_iv8), (_src1), (_dst1), (_len1), \
(_src2), (_dst2), (_len2), \
(_src3), (_dst3), (_len3), \
(_src4), (_dst4), (_len4), \
(_src5), (_dst5), (_len5), \
(_src6), (_dst6), (_len6), \
(_src7), (_dst7), (_len7), \
(_src8), (_dst8), (_len8)))
#define IMB_SNOW3G_F8_8_BUFFER_MULTIKEY(_mgr, _exp_key, _iv, _src, _dst, _len) \
((_mgr)->snow3g_f8_8_buffer_multikey((_exp_key), (_iv), (_src), (_dst),\
(_len)))
#define IMB_SNOW3G_F8_N_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len, _count) \
((_mgr)->snow3g_f8_n_buffer((_exp_key), (_iv), (_src), \
(_dst), (_len), (_count)))
#define IMB_SNOW3G_F8_N_BUFFER_MULTIKEY(_mgr, _exp_key, _iv, _src, \
_dst, _len, _count) \
((_mgr)->snow3g_f8_n_buffer_multikey((_exp_key), (_iv), (_src), \
(_dst), (_len), (_count)))
#define IMB_SNOW3G_F9_1_BUFFER(_mgr, _exp_key, _iv, _src, _len, _tag) \
((_mgr)->snow3g_f9_1_buffer((_exp_key), (_iv), (_src), (_len), (_tag)))
#define IMB_SNOW3G_INIT_KEY_SCHED(_mgr, _key, _exp_key) \
((_mgr)->snow3g_init_key_sched((_key), (_exp_key)))
#define IMB_SNOW3G_KEY_SCHED_SIZE(_mgr)((_mgr)->snow3g_key_sched_size())
#define IMB_HEC_32(_mgr, _src)((_mgr)->hec_32(_src))
#define IMB_HEC_64(_mgr, _src)((_mgr)->hec_64(_src))
#define IMB_CRC32_ETHERNET_FCS(_mgr, _src, _len) \
(_mgr)->crc32_ethernet_fcs(_src, _len)
#define IMB_CRC16_X25(_mgr, _src, _len) \
(_mgr)->crc16_x25(_src, _len)
#define IMB_CRC32_SCTP(_mgr, _src, _len) \
(_mgr)->crc32_sctp(_src, _len)
#define IMB_CRC24_LTE_A(_mgr, _src, _len) \
(_mgr)->crc24_lte_a(_src, _len)
#define IMB_CRC24_LTE_B(_mgr, _src, _len) \
(_mgr)->crc24_lte_b(_src, _len)
#define IMB_CRC16_FP_DATA(_mgr, _src, _len) \
(_mgr)->crc16_fp_data(_src, _len)
#define IMB_CRC11_FP_HEADER(_mgr, _src, _len) \
(_mgr)->crc11_fp_header(_src, _len)
#define IMB_CRC7_FP_HEADER(_mgr, _src, _len) \
(_mgr)->crc7_fp_header(_src, _len)
#define IMB_CRC10_IUUP_DATA(_mgr, _src, _len) \
(_mgr)->crc10_iuup_data(_src, _len)
#define IMB_CRC6_IUUP_HEADER(_mgr, _src, _len) \
(_mgr)->crc6_iuup_header(_src, _len)
#define IMB_CRC32_WIMAX_OFDMA_DATA(_mgr, _src, _len) \
(_mgr)->crc32_wimax_ofdma_data(_src, _len)
#define IMB_CRC8_WIMAX_OFDMA_HCS(_mgr, _src, _len) \
(_mgr)->crc8_wimax_ofdma_hcs(_src, _len)
/* Auxiliary functions */
IMB_DLL_EXPORT int
des_key_schedule(uint64_t *ks, const void *key);
IMB_DLL_EXPORT void
imb_hmac_ipad_opad(struct IMB_MGR *mb_mgr, const IMB_HASH_ALG sha_type,
const void *pkey, const size_t key_len,
void *ipad_hash, void *opad_hash);
IMB_DLL_EXPORT void
des_cfb_one(void *out, const void *in, const uint64_t *iv,
const uint64_t *ks, const int len);
IMB_DLL_EXPORT void md5_one_block_sse(const void *data, void *digest);
IMB_DLL_EXPORT void md5_one_block_avx(const void *data, void *digest);
IMB_DLL_EXPORT void md5_one_block_avx2(const void *data, void *digest);
IMB_DLL_EXPORT void md5_one_block_avx512(const void *data, void *digest);
IMB_DLL_EXPORT void aes_keyexp_128_sse(const void *key, void *enc_exp_keys,
void *dec_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_128_avx(const void *key, void *enc_exp_keys,
void *dec_exp_keys);
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_128_avx512(const void *key, void *enc_exp_keys,
void *dec_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_192_sse(const void *key, void *enc_exp_keys,
void *dec_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_192_avx(const void *key, void *enc_exp_keys,
void *dec_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_192_avx2(const void *key, void *enc_exp_keys,
void *dec_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_192_avx512(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_keyexp_256_avx(const void *key, void *enc_exp_keys,
void *dec_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_256_avx2(const void *key, void *enc_exp_keys,
void *dec_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_256_avx512(const void *key, void *enc_exp_keys,
void *dec_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_128_enc_sse(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_128_enc_avx(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_128_enc_avx2(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_128_enc_avx512(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_192_enc_sse(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_192_enc_avx(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_192_enc_avx2(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_192_enc_avx512(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_256_enc_sse(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx2(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx512(const void *key,
void *enc_exp_keys);
IMB_DLL_EXPORT void aes_xcbc_expand_key_sse(const void *key, void *k1_exp,
void *k2, void *k3);
IMB_DLL_EXPORT void aes_xcbc_expand_key_avx(const void *key, void *k1_exp,
void *k2, void *k3);
IMB_DLL_EXPORT void aes_xcbc_expand_key_avx2(const void *key, void *k1_exp,
void *k2, void *k3);
IMB_DLL_EXPORT void aes_xcbc_expand_key_avx512(const void *key, void *k1_exp,
void *k2, void *k3);
IMB_DLL_EXPORT void aes_cmac_subkey_gen_sse(const void *key_exp, void *key1,
void *key2);
IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx(const void *key_exp, void *key1,
void *key2);
IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx2(const void *key_exp, void *key1,
void *key2);
IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx512(const void *key_exp, void *key1,
void *key2);
/*
* Direct GCM API.
* Note that GCM is also available through job API.
*/
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
IMB_DLL_EXPORT void aes_gcm_precomp_128_sse(struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_precomp_128_avx_gen2(struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_precomp_128_avx_gen4(struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_precomp_192_sse(struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_precomp_192_avx_gen2(struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_precomp_192_avx_gen4(struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_precomp_256_sse(struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_precomp_256_avx_gen2(struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_precomp_256_avx_gen4(struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_pre_128_sse(const void *key,
struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_pre_128_avx_gen2(const void *key,
struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_pre_128_avx_gen4(const void *key,
struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_pre_192_sse(const void *key,
struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_pre_192_avx_gen2(const void *key,
struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_pre_192_avx_gen4(const void *key,
struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_pre_256_sse(const void *key,
struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_pre_256_avx_gen2(const void *key,
struct gcm_key_data *key_data);
IMB_DLL_EXPORT void aes_gcm_pre_256_avx_gen4(const void *key,
struct gcm_key_data *key_data);
IMB_DLL_EXPORT int zuc_eea3_iv_gen(const uint32_t count,
const uint8_t bearer,
const uint8_t dir,
void *iv_ptr);
IMB_DLL_EXPORT int zuc_eia3_iv_gen(const uint32_t count,
const uint8_t bearer,
const uint8_t dir,
void *iv_ptr);
IMB_DLL_EXPORT int kasumi_f8_iv_gen(const uint32_t count,
const uint8_t bearer,
const uint8_t dir,
void *iv_ptr);
IMB_DLL_EXPORT int kasumi_f9_iv_gen(const uint32_t count,
const uint32_t fresh,
void *iv_ptr);
IMB_DLL_EXPORT int snow3g_f8_iv_gen(const uint32_t count,
const uint8_t bearer,
const uint8_t dir,
void *iv_ptr);
IMB_DLL_EXPORT int snow3g_f9_iv_gen(const uint32_t count,
const uint32_t fresh,
const uint8_t dir,
void *iv_ptr);
IMB_DLL_EXPORT void imb_clear_mem(void *mem, const size_t size);
IMB_DLL_EXPORT void
imb_quic_aes_gcm(IMB_MGR *state,
const struct gcm_key_data *key_data,
const IMB_KEY_SIZE_BYTES key_size,
const IMB_CIPHER_DIRECTION cipher_dir,
void *dst_ptr_array[],
const void * const src_ptr_array[],
const uint64_t len_array[],
const void * const iv_ptr_array[],
const void * const aad_ptr_array[],
const uint64_t aad_len,
void *tag_ptr_array[],
const uint64_t tag_len,
const uint64_t num_packets);
IMB_DLL_EXPORT void
imb_quic_hp_aes_ecb(IMB_MGR *state,
const void *exp_key_data,
void *dst_ptr_array[],
const void * const src_ptr_array[],
const uint64_t num_packets,
const IMB_KEY_SIZE_BYTES key_size);
IMB_DLL_EXPORT uint32_t imb_set_session(IMB_MGR *state, IMB_JOB *job);
#ifdef __cplusplus
}
#endif
#endif /* IMB_IPSEC_MB_H */
aes_gcm_enc_128_finalize_avx_gen4
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.
get_next_job_sse
IMB_DLL_EXPORT IMB_JOB * get_next_job_sse(IMB_MGR *state)
Get next available job.
KASUMI_KEY_SCHEDULE_SIZE
#define KASUMI_KEY_SCHEDULE_SIZE
Definition intel-ipsec-mb.h:558
aes_gcm_pre_256_avx_gen4
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.
aes_gcm_dec_128_finalize_sse
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.
aes_gcm_init_256_sse
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.
zuc_eea3_1_buffer_t
void(* zuc_eea3_1_buffer_t)(const void *, const void *, const void *, void *, const uint32_t)
Definition intel-ipsec-mb.h:770
aes_keyexp_192_enc_sse
IMB_DLL_EXPORT void aes_keyexp_192_enc_sse(const void *key, void *enc_exp_keys)
aes_gcm_dec_256_update_avx_gen2
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.
IMB_GCM_ENC_KEY_LEN
#define IMB_GCM_ENC_KEY_LEN
Definition intel-ipsec-mb.h:628
aes_gcm_dec_192_finalize_sse
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.
aes_gcm_enc_192_avx_gen2
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.
snow3g_f8_8_buffer_multikey_t
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:879
aes_gcm_pre_t
void(* aes_gcm_pre_t)(const void *, struct gcm_key_data *)
Definition intel-ipsec-mb.h:747
ghash_t
void(* ghash_t)(const struct gcm_key_data *, const void *, const uint64_t, void *, const uint64_t)
Definition intel-ipsec-mb.h:767
aes_xcbc_expand_key_avx512
IMB_DLL_EXPORT void aes_xcbc_expand_key_avx512(const void *key, void *k1_exp, void *k2, void *k3)
aes_gcm_dec_256_update_avx_gen4
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.
aes_gcm_enc_192_update_avx_gen4
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.
aes_gcm_precomp_256_sse
IMB_DLL_EXPORT void aes_gcm_precomp_256_sse(struct gcm_key_data *key_data)
Precomputation of AES-GCM-256 HashKey constants.
aes_gcm_pre_256_sse
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.
chacha_poly_finalize_t
void(* chacha_poly_finalize_t)(struct chacha20_poly1305_context_data *, void *, const uint64_t)
Definition intel-ipsec-mb.h:765
aes_keyexp_192_avx512
IMB_DLL_EXPORT void aes_keyexp_192_avx512(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_KEY_SIZE_BYTES
IMB_KEY_SIZE_BYTES
Definition intel-ipsec-mb.h:348
IMB_KEY_192_BYTES
@ IMB_KEY_192_BYTES
Definition intel-ipsec-mb.h:351
IMB_KEY_64_BYTES
@ IMB_KEY_64_BYTES
Definition intel-ipsec-mb.h:349
IMB_KEY_256_BYTES
@ IMB_KEY_256_BYTES
Definition intel-ipsec-mb.h:352
IMB_KEY_128_BYTES
@ IMB_KEY_128_BYTES
Definition intel-ipsec-mb.h:350
aes_keyexp_256_enc_avx
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx(const void *key, void *enc_exp_keys)
aes_gcm_dec_128_update_sse
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.
free_mb_mgr
IMB_DLL_EXPORT void free_mb_mgr(IMB_MGR *ptr)
Frees memory allocated previously by alloc_mb_mgr()
get_completed_job_sse
IMB_DLL_EXPORT IMB_JOB * get_completed_job_sse(IMB_MGR *state)
Get next completed job.
aes_keyexp_128_enc_sse
IMB_DLL_EXPORT void aes_keyexp_128_enc_sse(const void *key, void *enc_exp_keys)
snow3g_f8_1_buffer_t
void(* snow3g_f8_1_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, void *, const uint32_t)
Definition intel-ipsec-mb.h:844
aes_gcm_precomp_256_avx_gen2
IMB_DLL_EXPORT void aes_gcm_precomp_256_avx_gen2(struct gcm_key_data *key_data)
Precomputation of AES-GCM-256 HashKey constants.
init_mb_mgr_sse
IMB_DLL_EXPORT void init_mb_mgr_sse(IMB_MGR *state)
Initialize Multi-Buffer Manager structure.
init_mb_mgr_auto
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.
snow3g_f8_iv_gen
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.
aes_gcm_pre_128_avx_gen2
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.
zuc_eea3_n_buffer_t
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:777
aes_gmac_init_t
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:749
aes_keyexp_128_sse
IMB_DLL_EXPORT void aes_keyexp_128_sse(const void *key, void *enc_exp_keys, void *dec_exp_keys)
get_next_job_avx
IMB_DLL_EXPORT IMB_JOB * get_next_job_avx(IMB_MGR *state)
Get next available job.
aes_gcm_enc_256_update_avx_gen2
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.
submit_job_nocheck_sse
IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_sse(IMB_MGR *state)
Submit job for processing without validating.
aes_keyexp_256_avx512
IMB_DLL_EXPORT void aes_keyexp_256_avx512(const void *key, void *enc_exp_keys, void *dec_exp_keys)
kasumi_f8_iv_gen
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_set_pointers_mb_mgr
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.
aes_keyexp_192_avx
IMB_DLL_EXPORT void aes_keyexp_192_avx(const void *key, void *enc_exp_keys, void *dec_exp_keys)
IMB_CIPHER_MODE
IMB_CIPHER_MODE
Definition intel-ipsec-mb.h:261
IMB_CIPHER_DES
@ IMB_CIPHER_DES
Definition intel-ipsec-mb.h:268
IMB_CIPHER_NULL
@ IMB_CIPHER_NULL
Definition intel-ipsec-mb.h:264
IMB_CIPHER_CBC
@ IMB_CIPHER_CBC
Definition intel-ipsec-mb.h:262
IMB_CIPHER_GCM
@ IMB_CIPHER_GCM
Definition intel-ipsec-mb.h:266
IMB_CIPHER_ECB
@ IMB_CIPHER_ECB
Definition intel-ipsec-mb.h:273
IMB_CIPHER_ZUC_EEA3
@ IMB_CIPHER_ZUC_EEA3
Definition intel-ipsec-mb.h:275
IMB_CIPHER_CHACHA20
@ IMB_CIPHER_CHACHA20
Definition intel-ipsec-mb.h:279
IMB_CIPHER_KASUMI_UEA1_BITLEN
@ IMB_CIPHER_KASUMI_UEA1_BITLEN
Definition intel-ipsec-mb.h:277
IMB_CIPHER_CHACHA20_POLY1305_SGL
@ IMB_CIPHER_CHACHA20_POLY1305_SGL
Definition intel-ipsec-mb.h:281
IMB_CIPHER_CUSTOM
@ IMB_CIPHER_CUSTOM
Definition intel-ipsec-mb.h:267
IMB_CIPHER_GCM_SGL
@ IMB_CIPHER_GCM_SGL
Definition intel-ipsec-mb.h:284
IMB_CIPHER_CNTR
@ IMB_CIPHER_CNTR
Definition intel-ipsec-mb.h:263
IMB_CIPHER_DES3
@ IMB_CIPHER_DES3
Definition intel-ipsec-mb.h:271
IMB_CIPHER_CNTR_BITLEN
@ IMB_CIPHER_CNTR_BITLEN
Definition intel-ipsec-mb.h:274
IMB_CIPHER_CBCS_1_9
@ IMB_CIPHER_CBCS_1_9
Definition intel-ipsec-mb.h:278
IMB_CIPHER_NUM
@ IMB_CIPHER_NUM
Definition intel-ipsec-mb.h:285
IMB_CIPHER_CCM
@ IMB_CIPHER_CCM
Definition intel-ipsec-mb.h:270
IMB_CIPHER_SNOW3G_UEA2_BITLEN
@ IMB_CIPHER_SNOW3G_UEA2_BITLEN
Definition intel-ipsec-mb.h:276
IMB_CIPHER_PON_AES_CNTR
@ IMB_CIPHER_PON_AES_CNTR
Definition intel-ipsec-mb.h:272
IMB_CIPHER_CHACHA20_POLY1305
@ IMB_CIPHER_CHACHA20_POLY1305
Definition intel-ipsec-mb.h:280
IMB_CIPHER_SNOW_V_AEAD
@ IMB_CIPHER_SNOW_V_AEAD
Definition intel-ipsec-mb.h:283
IMB_CIPHER_DOCSIS_SEC_BPI
@ IMB_CIPHER_DOCSIS_SEC_BPI
Definition intel-ipsec-mb.h:265
IMB_CIPHER_DOCSIS_DES
@ IMB_CIPHER_DOCSIS_DES
Definition intel-ipsec-mb.h:269
IMB_CIPHER_SNOW_V
@ IMB_CIPHER_SNOW_V
Definition intel-ipsec-mb.h:282
aes_gcm_pre_128_avx_gen4
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.
aes_gcm_init_256_avx_gen2
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.
snow3g_f8_n_buffer_multikey_t
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:890
aes_gcm_enc_128_finalize_avx_gen2
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.
get_next_job_avx512
IMB_DLL_EXPORT IMB_JOB * get_next_job_avx512(IMB_MGR *state)
Get next available job.
submit_job_t
IMB_JOB *(* submit_job_t)(struct IMB_MGR *)
Definition intel-ipsec-mb.h:697
chacha_poly_enc_dec_update_t
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:762
aes_gcm_dec_128_update_avx_gen4
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_get_version_str
IMB_DLL_EXPORT const char * imb_get_version_str(void)
Get library version in string format.
aes_gcm_enc_256_avx_gen2
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.
aes_keyexp_192_enc_avx2
IMB_DLL_EXPORT void aes_keyexp_192_enc_avx2(const void *key, void *enc_exp_keys)
aes_gcm_enc_256_sse
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.
aes_gcm_precomp_128_sse
IMB_DLL_EXPORT void aes_gcm_precomp_128_sse(struct gcm_key_data *key_data)
Precomputation of AES-GCM-128 HashKey constants.
aes_gcm_enc_192_update_sse
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.
zuc_eea3_iv_gen
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.
get_next_job_avx2
IMB_DLL_EXPORT IMB_JOB * get_next_job_avx2(IMB_MGR *state)
Get next available job.
IMB_CHAIN_ORDER
IMB_CHAIN_ORDER
Definition intel-ipsec-mb.h:343
IMB_ORDER_HASH_CIPHER
@ IMB_ORDER_HASH_CIPHER
Definition intel-ipsec-mb.h:345
IMB_ORDER_CIPHER_HASH
@ IMB_ORDER_CIPHER_HASH
Definition intel-ipsec-mb.h:344
chacha_poly_init_t
void(* chacha_poly_init_t)(const void *, struct chacha20_poly1305_context_data *, const void *, const void *, const uint64_t)
Definition intel-ipsec-mb.h:759
aes_cmac_subkey_gen_sse
IMB_DLL_EXPORT void aes_cmac_subkey_gen_sse(const void *key_exp, void *key1, void *key2)
snow3g_f8_2_buffer_t
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:852
submit_hash_burst_t
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:710
aes_gcm_enc_192_finalize_avx_gen4
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.
aes_keyexp_128_avx2
IMB_DLL_EXPORT void aes_keyexp_128_avx2(const void *key, void *enc_exp_keys, void *dec_exp_keys)
aes_keyexp_256_sse
IMB_DLL_EXPORT void aes_keyexp_256_sse(const void *key, void *enc_exp_keys, void *dec_exp_keys)
aes_gcm_enc_192_finalize_avx_gen2
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.
kasumi_f8_n_buffer_t
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:818
queue_size_avx512
IMB_DLL_EXPORT uint32_t queue_size_avx512(IMB_MGR *state)
Get number of jobs queued to be processed.
aes_gcm_enc_256_avx_gen4
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.
aes_keyexp_192_enc_avx
IMB_DLL_EXPORT void aes_keyexp_192_enc_avx(const void *key, void *enc_exp_keys)
kasumi_f8_3_buffer_t
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:803
aes_gcm_enc_192_update_avx_gen2
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.
crc32_fn_t
uint32_t(* crc32_fn_t)(const void *, const uint64_t)
Definition intel-ipsec-mb.h:908
aes_gcm_dec_192_update_sse
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_GCM_BLOCK_LEN
#define IMB_GCM_BLOCK_LEN
Definition intel-ipsec-mb.h:570
get_next_job_t
IMB_JOB *(* get_next_job_t)(struct IMB_MGR *)
Definition intel-ipsec-mb.h:696
submit_job_nocheck_avx512
IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_avx512(IMB_MGR *state)
Submit job for processing without validating.
aes_keyexp_256_avx
IMB_DLL_EXPORT void aes_keyexp_256_avx(const void *key, void *enc_exp_keys, void *dec_exp_keys)
aes_gcm_init_192_sse
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.
aes_gcm_dec_192_avx_gen4
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.
aes_gcm_pre_128_sse
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.
aes_gcm_enc_192_finalize_sse
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.
des_keysched_t
int(* des_keysched_t)(uint64_t *, const void *)
Definition intel-ipsec-mb.h:719
keyexp_t
void(* keyexp_t)(const void *, void *, void *)
Definition intel-ipsec-mb.h:714
snow3g_f8_8_buffer_t
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:865
aes_gcm_dec_192_update_avx_gen4
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_get_strerror
IMB_DLL_EXPORT const char * imb_get_strerror(int errnum)
API to get description for errnum.
aes_cmac_subkey_gen_avx
IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx(const void *key_exp, void *key1, void *key2)
aes_gcm_init_var_iv_t
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:736
aes_keyexp_128_enc_avx512
IMB_DLL_EXPORT void aes_keyexp_128_enc_avx512(const void *key, void *enc_exp_keys)
aes_cmac_subkey_gen_avx2
IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx2(const void *key_exp, void *key1, void *key2)
get_completed_job_avx512
IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx512(IMB_MGR *state)
Get next completed job.
snow3g_f8_n_buffer_t
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:883
IMB_SGL_STATE
IMB_SGL_STATE
Definition intel-ipsec-mb.h:355
IMB_SGL_UPDATE
@ IMB_SGL_UPDATE
Definition intel-ipsec-mb.h:357
IMB_SGL_ALL
@ IMB_SGL_ALL
Definition intel-ipsec-mb.h:359
IMB_SGL_COMPLETE
@ IMB_SGL_COMPLETE
Definition intel-ipsec-mb.h:358
IMB_SGL_INIT
@ IMB_SGL_INIT
Definition intel-ipsec-mb.h:356
aes_gcm_pre_192_avx_gen2
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.
aes_gcm_precomp_192_avx_gen4
IMB_DLL_EXPORT void aes_gcm_precomp_192_avx_gen4(struct gcm_key_data *key_data)
Precomputation of AES-GCM-192 HashKey constants.
des_cfb_one
IMB_DLL_EXPORT void des_cfb_one(void *out, const void *in, const uint64_t *iv, const uint64_t *ks, const int len)
DES-CFB Encrypt/Decrypt up to one block.
init_mb_mgr_avx2
IMB_DLL_EXPORT void init_mb_mgr_avx2(IMB_MGR *state)
Initialize Multi-Buffer Manager structure.
aes_gcm_enc_dec_t
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:722
imb_get_feature_flags
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...
aes_keyexp_192_enc_avx512
IMB_DLL_EXPORT void aes_keyexp_192_enc_avx512(const void *key, void *enc_exp_keys)
submit_job_nocheck_avx2
IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_avx2(IMB_MGR *state)
Submit job for processing without validating.
aes_gcm_precomp_192_sse
IMB_DLL_EXPORT void aes_gcm_precomp_192_sse(struct gcm_key_data *key_data)
Precomputation of AES-GCM-192 HashKey constants.
aes_gcm_dec_256_finalize_avx_gen2
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.
aes_cmac_subkey_gen_avx512
IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx512(const void *key_exp, void *key1, void *key2)
IMB_GCM_KEY_SETS
#define IMB_GCM_KEY_SETS
Definition intel-ipsec-mb.h:629
aes_keyexp_256_enc_avx2
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx2(const void *key, void *enc_exp_keys)
aes_gcm_init_192_avx_gen4
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.
submit_job_avx512
IMB_DLL_EXPORT IMB_JOB * submit_job_avx512(IMB_MGR *state)
Submit job for processing after validating.
aes_keyexp_192_sse
IMB_DLL_EXPORT void aes_keyexp_192_sse(const void *key, void *enc_exp_keys, void *dec_exp_keys)
submit_job_sse
IMB_DLL_EXPORT IMB_JOB * submit_job_sse(IMB_MGR *state)
Submit job for processing after validating.
aes_gcm_dec_256_finalize_avx_gen4
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.
aes_gcm_dec_128_update_avx_gen2
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_get_errno
IMB_DLL_EXPORT int imb_get_errno(IMB_MGR *mb_mgr)
API to get error status.
aes_gcm_init_128_avx_gen2
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.
md5_one_block_avx
IMB_DLL_EXPORT void md5_one_block_avx(const void *data, void *digest)
aes_gcm_enc_128_update_sse
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.
snow3g_f8_1_buffer_bit_t
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:848
kasumi_init_f8_key_sched_t
int(* kasumi_init_f8_key_sched_t)(const void *, kasumi_key_sched_t *)
Definition intel-ipsec-mb.h:829
zuc_eea3_4_buffer_t
void(* zuc_eea3_4_buffer_t)(const void *const *, const void *const *, const void *const *, void **, const uint32_t *)
Definition intel-ipsec-mb.h:773
aes_gcm_enc_256_finalize_avx_gen2
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.
queue_size_avx
IMB_DLL_EXPORT uint32_t queue_size_avx(IMB_MGR *state)
Get number of jobs queued to be processed.
queue_size_sse
IMB_DLL_EXPORT uint32_t queue_size_sse(IMB_MGR *state)
Get number of jobs queued to be processed.
kasumi_f8_1_buffer_bit_t
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:793
kasumi_key_sched_t
struct kasumi_key_sched_s kasumi_key_sched_t
IMB_HASH_ALG
IMB_HASH_ALG
Definition intel-ipsec-mb.h:293
IMB_AUTH_AES_CMAC_256
@ IMB_AUTH_AES_CMAC_256
Definition intel-ipsec-mb.h:320
IMB_AUTH_AES_XCBC
@ IMB_AUTH_AES_XCBC
Definition intel-ipsec-mb.h:299
IMB_AUTH_ZUC_EIA3_BITLEN
@ IMB_AUTH_ZUC_EIA3_BITLEN
Definition intel-ipsec-mb.h:313
IMB_AUTH_AES_GMAC_128
@ IMB_AUTH_AES_GMAC_128
Definition intel-ipsec-mb.h:317
IMB_AUTH_CRC16_X25
@ IMB_AUTH_CRC16_X25
Definition intel-ipsec-mb.h:332
IMB_AUTH_NULL
@ IMB_AUTH_NULL
Definition intel-ipsec-mb.h:301
IMB_AUTH_PON_CRC_BIP
@ IMB_AUTH_PON_CRC_BIP
Definition intel-ipsec-mb.h:312
IMB_AUTH_SHA_224
@ IMB_AUTH_SHA_224
Definition intel-ipsec-mb.h:307
IMB_AUTH_CRC24_LTE_A
@ IMB_AUTH_CRC24_LTE_A
Definition intel-ipsec-mb.h:330
IMB_AUTH_CRC32_ETHERNET_FCS
@ IMB_AUTH_CRC32_ETHERNET_FCS
Definition intel-ipsec-mb.h:327
IMB_AUTH_KASUMI_UIA1
@ IMB_AUTH_KASUMI_UIA1
Definition intel-ipsec-mb.h:316
IMB_AUTH_HMAC_SHA_1
@ IMB_AUTH_HMAC_SHA_1
Definition intel-ipsec-mb.h:294
IMB_AUTH_SHA_256
@ IMB_AUTH_SHA_256
Definition intel-ipsec-mb.h:308
IMB_AUTH_SNOW3G_UIA2_BITLEN
@ IMB_AUTH_SNOW3G_UIA2_BITLEN
Definition intel-ipsec-mb.h:315
IMB_AUTH_SNOW_V_AEAD
@ IMB_AUTH_SNOW_V_AEAD
Definition intel-ipsec-mb.h:325
IMB_AUTH_CRC32_SCTP
@ IMB_AUTH_CRC32_SCTP
Definition intel-ipsec-mb.h:328
IMB_AUTH_NUM
@ IMB_AUTH_NUM
Definition intel-ipsec-mb.h:340
IMB_AUTH_HMAC_SHA_256
@ IMB_AUTH_HMAC_SHA_256
Definition intel-ipsec-mb.h:296
IMB_AUTH_GHASH
@ IMB_AUTH_GHASH
Definition intel-ipsec-mb.h:339
IMB_AUTH_CUSTOM
@ IMB_AUTH_CUSTOM
Definition intel-ipsec-mb.h:303
IMB_AUTH_CHACHA20_POLY1305_SGL
@ IMB_AUTH_CHACHA20_POLY1305_SGL
Definition intel-ipsec-mb.h:323
IMB_AUTH_CRC24_LTE_B
@ IMB_AUTH_CRC24_LTE_B
Definition intel-ipsec-mb.h:331
IMB_AUTH_ZUC256_EIA3_BITLEN
@ IMB_AUTH_ZUC256_EIA3_BITLEN
Definition intel-ipsec-mb.h:324
IMB_AUTH_AES_CCM
@ IMB_AUTH_AES_CCM
Definition intel-ipsec-mb.h:304
IMB_AUTH_CRC6_IUUP_HEADER
@ IMB_AUTH_CRC6_IUUP_HEADER
Definition intel-ipsec-mb.h:338
IMB_AUTH_POLY1305
@ IMB_AUTH_POLY1305
Definition intel-ipsec-mb.h:321
IMB_AUTH_MD5
@ IMB_AUTH_MD5
Definition intel-ipsec-mb.h:300
IMB_AUTH_SHA_512
@ IMB_AUTH_SHA_512
Definition intel-ipsec-mb.h:310
IMB_AUTH_AES_GMAC
@ IMB_AUTH_AES_GMAC
Definition intel-ipsec-mb.h:302
IMB_AUTH_CRC16_FP_DATA
@ IMB_AUTH_CRC16_FP_DATA
Definition intel-ipsec-mb.h:333
IMB_AUTH_AES_CMAC_BITLEN
@ IMB_AUTH_AES_CMAC_BITLEN
Definition intel-ipsec-mb.h:311
IMB_AUTH_CRC11_FP_HEADER
@ IMB_AUTH_CRC11_FP_HEADER
Definition intel-ipsec-mb.h:334
IMB_AUTH_CHACHA20_POLY1305
@ IMB_AUTH_CHACHA20_POLY1305
Definition intel-ipsec-mb.h:322
IMB_AUTH_CRC7_FP_HEADER
@ IMB_AUTH_CRC7_FP_HEADER
Definition intel-ipsec-mb.h:337
IMB_AUTH_CRC10_IUUP_DATA
@ IMB_AUTH_CRC10_IUUP_DATA
Definition intel-ipsec-mb.h:335
IMB_AUTH_HMAC_SHA_224
@ IMB_AUTH_HMAC_SHA_224
Definition intel-ipsec-mb.h:295
IMB_AUTH_CRC32_WIMAX_OFDMA_DATA
@ IMB_AUTH_CRC32_WIMAX_OFDMA_DATA
Definition intel-ipsec-mb.h:329
IMB_AUTH_HMAC_SHA_512
@ IMB_AUTH_HMAC_SHA_512
Definition intel-ipsec-mb.h:298
IMB_AUTH_GCM_SGL
@ IMB_AUTH_GCM_SGL
Definition intel-ipsec-mb.h:326
IMB_AUTH_SHA_1
@ IMB_AUTH_SHA_1
Definition intel-ipsec-mb.h:306
IMB_AUTH_AES_GMAC_192
@ IMB_AUTH_AES_GMAC_192
Definition intel-ipsec-mb.h:318
IMB_AUTH_DOCSIS_CRC32
@ IMB_AUTH_DOCSIS_CRC32
Definition intel-ipsec-mb.h:314
IMB_AUTH_CRC8_WIMAX_OFDMA_HCS
@ IMB_AUTH_CRC8_WIMAX_OFDMA_HCS
Definition intel-ipsec-mb.h:336
IMB_AUTH_AES_GMAC_256
@ IMB_AUTH_AES_GMAC_256
Definition intel-ipsec-mb.h:319
IMB_AUTH_HMAC_SHA_384
@ IMB_AUTH_HMAC_SHA_384
Definition intel-ipsec-mb.h:297
IMB_AUTH_AES_CMAC
@ IMB_AUTH_AES_CMAC
Definition intel-ipsec-mb.h:305
IMB_AUTH_SHA_384
@ IMB_AUTH_SHA_384
Definition intel-ipsec-mb.h:309
aes_keyexp_128_enc_avx2
IMB_DLL_EXPORT void aes_keyexp_128_enc_avx2(const void *key, void *enc_exp_keys)
aes_gcm_enc_256_finalize_avx_gen4
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.
submit_job_avx2
IMB_DLL_EXPORT IMB_JOB * submit_job_avx2(IMB_MGR *state)
Submit job for processing after validating.
imb_quic_hp_aes_ecb
IMB_DLL_EXPORT void imb_quic_hp_aes_ecb(IMB_MGR *state, const void *exp_key_data, void *dst_ptr_array[], const void *const src_ptr_array[], const uint64_t num_packets, const IMB_KEY_SIZE_BYTES key_size)
Batch of AES-ECB encrypt/decrypt operations with the same key.
kasumi_f8_1_buffer_t
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:790
queue_size_avx2
IMB_DLL_EXPORT uint32_t queue_size_avx2(IMB_MGR *state)
Get number of jobs queued to be processed.
kasumi_f9_1_buffer_t
void(* kasumi_f9_1_buffer_t)(const kasumi_key_sched_t *, const void *, const uint32_t, void *)
Definition intel-ipsec-mb.h:826
kasumi_init_f9_key_sched_t
int(* kasumi_init_f9_key_sched_t)(const void *, kasumi_key_sched_t *)
Definition intel-ipsec-mb.h:831
md5_one_block_avx2
IMB_DLL_EXPORT void md5_one_block_avx2(const void *data, void *digest)
aes_gcm_enc_dec_finalize_t
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:743
aes_gcm_dec_128_avx_gen2
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.
aes_gcm_init_128_avx_gen4
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.
aes_gcm_dec_128_finalize_avx_gen4
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_quic_aes_gcm
IMB_DLL_EXPORT void imb_quic_aes_gcm(IMB_MGR *state, const struct gcm_key_data *key_data, const IMB_KEY_SIZE_BYTES key_size, const IMB_CIPHER_DIRECTION cipher_dir, void *dst_ptr_array[], const void *const src_ptr_array[], const uint64_t len_array[], const void *const iv_ptr_array[], const void *const aad_ptr_array[], const uint64_t aad_len, void *tag_ptr_array[], const uint64_t tag_len, const uint64_t num_packets)
Batch of GCM encrypt/decrypt operations with the same key.
snow3g_f9_iv_gen
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.
submit_job_avx
IMB_DLL_EXPORT IMB_JOB * submit_job_avx(IMB_MGR *state)
Submit job for processing after validating.
zuc_eia3_1_buffer_t
void(* zuc_eia3_1_buffer_t)(const void *, const void *, const void *, const uint32_t, uint32_t *)
Definition intel-ipsec-mb.h:781
flush_job_sse
IMB_DLL_EXPORT IMB_JOB * flush_job_sse(IMB_MGR *state)
Force processing until next job in queue is completed.
IMB_DLL_EXPORT
#define IMB_DLL_EXPORT
Definition intel-ipsec-mb.h:86
queue_size_t
uint32_t(* queue_size_t)(struct IMB_MGR *)
Definition intel-ipsec-mb.h:700
init_mb_mgr_avx512
IMB_DLL_EXPORT void init_mb_mgr_avx512(IMB_MGR *state)
Initialize Multi-Buffer Manager structure.
des_key_schedule
IMB_DLL_EXPORT int des_key_schedule(uint64_t *ks, const void *key)
DES key schedule set up.
aes_gcm_init_256_avx_gen4
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.
aes_gcm_enc_192_avx_gen4
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.
aes_gcm_dec_256_avx_gen2
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.
aes_keyexp_128_avx512
IMB_DLL_EXPORT void aes_keyexp_128_avx512(const void *key, void *enc_exp_keys, void *dec_exp_keys)
get_completed_job_avx
IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx(IMB_MGR *state)
Get next completed job.
md5_one_block_sse
IMB_DLL_EXPORT void md5_one_block_sse(const void *data, void *digest)
aes_keyexp_256_enc_avx512
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx512(const void *key, void *enc_exp_keys)
IMB_ERR
IMB_ERR
Definition intel-ipsec-mb.h:192
IMB_ERR_NULL_JOB
@ IMB_ERR_NULL_JOB
Definition intel-ipsec-mb.h:240
IMB_ERR_JOB_NULL_SGL_CTX
@ IMB_ERR_JOB_NULL_SGL_CTX
Definition intel-ipsec-mb.h:212
IMB_ERR_AAD_LEN
@ IMB_ERR_AAD_LEN
Definition intel-ipsec-mb.h:227
IMB_ERR_NULL_CTX
@ IMB_ERR_NULL_CTX
Definition intel-ipsec-mb.h:230
IMB_ERR_JOB_NULL_IV
@ IMB_ERR_JOB_NULL_IV
Definition intel-ipsec-mb.h:198
IMB_ERR_JOB_NULL_HMAC_IPAD
@ IMB_ERR_JOB_NULL_HMAC_IPAD
Definition intel-ipsec-mb.h:233
IMB_ERR_SELFTEST
@ IMB_ERR_SELFTEST
Definition intel-ipsec-mb.h:245
IMB_ERR_NULL_DST
@ IMB_ERR_NULL_DST
Definition intel-ipsec-mb.h:216
IMB_ERR_JOB_AUTH_TAG_LEN
@ IMB_ERR_JOB_AUTH_TAG_LEN
Definition intel-ipsec-mb.h:205
IMB_ERR_NULL_AUTH
@ IMB_ERR_NULL_AUTH
Definition intel-ipsec-mb.h:220
IMB_ERR_JOB_SRC_OFFSET
@ IMB_ERR_JOB_SRC_OFFSET
Definition intel-ipsec-mb.h:207
IMB_ERR_SRC_OFFSET
@ IMB_ERR_SRC_OFFSET
Definition intel-ipsec-mb.h:228
IMB_ERR_JOB_NULL_KEY
@ IMB_ERR_JOB_NULL_KEY
Definition intel-ipsec-mb.h:197
IMB_ERR_NULL_SRC
@ IMB_ERR_NULL_SRC
Definition intel-ipsec-mb.h:215
IMB_ERR_JOB_AAD_LEN
@ IMB_ERR_JOB_AAD_LEN
Definition intel-ipsec-mb.h:206
IMB_ERR_JOB_IV_LEN
@ IMB_ERR_JOB_IV_LEN
Definition intel-ipsec-mb.h:203
IMB_ERR_NULL_EXP_KEY
@ IMB_ERR_NULL_EXP_KEY
Definition intel-ipsec-mb.h:218
IMB_ERR_JOB_NULL_AAD
@ IMB_ERR_JOB_NULL_AAD
Definition intel-ipsec-mb.h:200
IMB_ERR_MIN
@ IMB_ERR_MIN
Definition intel-ipsec-mb.h:193
IMB_ERR_BURST_SUITE_ID
@ IMB_ERR_BURST_SUITE_ID
Definition intel-ipsec-mb.h:246
IMB_ERR_NO_AESNI_EMU
@ IMB_ERR_NO_AESNI_EMU
Definition intel-ipsec-mb.h:231
IMB_ERR_JOB_NULL_SRC
@ IMB_ERR_JOB_NULL_SRC
Definition intel-ipsec-mb.h:195
IMB_ERR_QUEUE_SPACE
@ IMB_ERR_QUEUE_SPACE
Definition intel-ipsec-mb.h:241
IMB_ERR_JOB_NULL_AUTH
@ IMB_ERR_JOB_NULL_AUTH
Definition intel-ipsec-mb.h:199
IMB_ERR_JOB_NULL_DST
@ IMB_ERR_JOB_NULL_DST
Definition intel-ipsec-mb.h:196
IMB_ERR_CIPH_MODE
@ IMB_ERR_CIPH_MODE
Definition intel-ipsec-mb.h:209
IMB_ERR_NULL_KEY
@ IMB_ERR_NULL_KEY
Definition intel-ipsec-mb.h:217
IMB_ERR_JOB_NULL_XCBC_K1_EXP
@ IMB_ERR_JOB_NULL_XCBC_K1_EXP
Definition intel-ipsec-mb.h:234
IMB_ERR_JOB_AUTH_LEN
@ IMB_ERR_JOB_AUTH_LEN
Definition intel-ipsec-mb.h:202
IMB_ERR_AUTH_TAG_LEN
@ IMB_ERR_AUTH_TAG_LEN
Definition intel-ipsec-mb.h:226
IMB_ERR_JOB_NULL_GHASH_INIT_TAG
@ IMB_ERR_JOB_NULL_GHASH_INIT_TAG
Definition intel-ipsec-mb.h:238
IMB_ERR_HASH_ALGO
@ IMB_ERR_HASH_ALGO
Definition intel-ipsec-mb.h:210
IMB_ERR_KEY_LEN
@ IMB_ERR_KEY_LEN
Definition intel-ipsec-mb.h:225
IMB_ERR_JOB_NULL_AUTH_KEY
@ IMB_ERR_JOB_NULL_AUTH_KEY
Definition intel-ipsec-mb.h:211
IMB_ERR_JOB_NULL_NEXT_IV
@ IMB_ERR_JOB_NULL_NEXT_IV
Definition intel-ipsec-mb.h:213
IMB_ERR_NULL_BURST
@ IMB_ERR_NULL_BURST
Definition intel-ipsec-mb.h:242
IMB_ERR_NULL_MBMGR
@ IMB_ERR_NULL_MBMGR
Definition intel-ipsec-mb.h:194
IMB_ERR_NULL_AUTH_KEY
@ IMB_ERR_NULL_AUTH_KEY
Definition intel-ipsec-mb.h:229
IMB_ERR_IV_LEN
@ IMB_ERR_IV_LEN
Definition intel-ipsec-mb.h:224
IMB_ERR_CIPH_LEN
@ IMB_ERR_CIPH_LEN
Definition intel-ipsec-mb.h:222
IMB_ERR_MISSING_CPUFLAGS_INIT_MGR
@ IMB_ERR_MISSING_CPUFLAGS_INIT_MGR
Definition intel-ipsec-mb.h:239
IMB_ERR_MAX
@ IMB_ERR_MAX
Definition intel-ipsec-mb.h:248
IMB_ERR_JOB_CHAIN_ORDER
@ IMB_ERR_JOB_CHAIN_ORDER
Definition intel-ipsec-mb.h:208
IMB_ERR_JOB_NULL_HMAC_OPAD
@ IMB_ERR_JOB_NULL_HMAC_OPAD
Definition intel-ipsec-mb.h:232
IMB_ERR_JOB_CIPH_DIR
@ IMB_ERR_JOB_CIPH_DIR
Definition intel-ipsec-mb.h:237
IMB_ERR_JOB_PON_PLI
@ IMB_ERR_JOB_PON_PLI
Definition intel-ipsec-mb.h:214
IMB_ERR_JOB_NULL_XCBC_K2
@ IMB_ERR_JOB_NULL_XCBC_K2
Definition intel-ipsec-mb.h:235
IMB_ERR_NULL_AAD
@ IMB_ERR_NULL_AAD
Definition intel-ipsec-mb.h:221
IMB_ERR_JOB_KEY_LEN
@ IMB_ERR_JOB_KEY_LEN
Definition intel-ipsec-mb.h:204
IMB_ERR_JOB_CIPH_LEN
@ IMB_ERR_JOB_CIPH_LEN
Definition intel-ipsec-mb.h:201
IMB_ERR_BURST_SIZE
@ IMB_ERR_BURST_SIZE
Definition intel-ipsec-mb.h:243
IMB_ERR_BURST_OOO
@ IMB_ERR_BURST_OOO
Definition intel-ipsec-mb.h:244
IMB_ERR_JOB_NULL_XCBC_K3
@ IMB_ERR_JOB_NULL_XCBC_K3
Definition intel-ipsec-mb.h:236
IMB_ERR_NULL_IV
@ IMB_ERR_NULL_IV
Definition intel-ipsec-mb.h:219
IMB_ERR_AUTH_LEN
@ IMB_ERR_AUTH_LEN
Definition intel-ipsec-mb.h:223
aes_gcm_enc_128_avx_gen4
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.
hec_32_t
uint32_t(* hec_32_t)(const uint8_t *)
Definition intel-ipsec-mb.h:905
aes_gcm_dec_192_update_avx_gen2
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.
hec_64_t
uint64_t(* hec_64_t)(const uint8_t *)
Definition intel-ipsec-mb.h:906
aes_gcm_pre_256_avx_gen2
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.
cmac_subkey_gen_t
void(* cmac_subkey_gen_t)(const void *, void *, void *)
Definition intel-ipsec-mb.h:715
aes_gcm_dec_192_finalize_avx_gen2
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.
aes_gcm_enc_128_sse
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.
hash_one_block_t
void(* hash_one_block_t)(const void *, void *)
Definition intel-ipsec-mb.h:716
burst_fn_t
uint32_t(* burst_fn_t)(struct IMB_MGR *, const uint32_t, struct IMB_JOB **)
Definition intel-ipsec-mb.h:701
aes_gcm_precomp_192_avx_gen2
IMB_DLL_EXPORT void aes_gcm_precomp_192_avx_gen2(struct gcm_key_data *key_data)
Precomputation of AES-GCM-192 HashKey constants.
IMB_MAX_JOBS
#define IMB_MAX_JOBS
Definition intel-ipsec-mb.h:978
aes_gcm_dec_256_update_sse
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.
aes_gcm_precomp_t
void(* aes_gcm_precomp_t)(struct gcm_key_data *)
Definition intel-ipsec-mb.h:746
imb_hmac_ipad_opad
IMB_DLL_EXPORT void imb_hmac_ipad_opad(struct IMB_MGR *mb_mgr, const IMB_HASH_ALG sha_type, const void *pkey, const size_t key_len, void *ipad_hash, void *opad_hash)
Ipad Opad padding for HMAC.
aes_gcm_pre_192_avx_gen4
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.
aes_gcm_enc_256_update_sse
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.
alloc_mb_mgr
IMB_DLL_EXPORT IMB_MGR * alloc_mb_mgr(uint64_t flags)
Allocates memory for multi-buffer manager instance.
aes_gmac_update_t
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:752
aes_keyexp_192_avx2
IMB_DLL_EXPORT void aes_keyexp_192_avx2(const void *key, void *enc_exp_keys, void *dec_exp_keys)
xcbc_keyexp_t
void(* xcbc_keyexp_t)(const void *, void *, void *, void *)
Definition intel-ipsec-mb.h:718
aes_gcm_enc_128_update_avx_gen4
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.
flush_job_avx
IMB_DLL_EXPORT IMB_JOB * flush_job_avx(IMB_MGR *state)
Force processing until next job in queue is completed.
IMB_CIPHER_DIRECTION
IMB_CIPHER_DIRECTION
Definition intel-ipsec-mb.h:288
IMB_DIR_DECRYPT
@ IMB_DIR_DECRYPT
Definition intel-ipsec-mb.h:290
IMB_DIR_ENCRYPT
@ IMB_DIR_ENCRYPT
Definition intel-ipsec-mb.h:289
aes_gcm_precomp_256_avx_gen4
IMB_DLL_EXPORT void aes_gcm_precomp_256_avx_gen4(struct gcm_key_data *key_data)
Precomputation of AES-GCM-256 HashKey constants.
aes_gcm_pre_192_sse
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.
aes_gcm_dec_256_avx_gen4
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.
kasumi_f9_1_buffer_user_t
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:822
aes_gcm_dec_128_finalize_avx_gen2
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.
aes_gcm_init_192_avx_gen2
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.
aes_xcbc_expand_key_avx2
IMB_DLL_EXPORT void aes_xcbc_expand_key_avx2(const void *key, void *k1_exp, void *k2, void *k3)
submit_cipher_burst_t
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:704
aes_gcm_enc_dec_iv_t
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:727
flush_job_avx512
IMB_DLL_EXPORT IMB_JOB * flush_job_avx512(IMB_MGR *state)
Force processing until next job in queue is completed.
submit_job_nocheck_avx
IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_avx(IMB_MGR *state)
Submit job for processing without validating.
aes_keyexp_128_enc_avx
IMB_DLL_EXPORT void aes_keyexp_128_enc_avx(const void *key, void *enc_exp_keys)
md5_one_block_avx512
IMB_DLL_EXPORT void md5_one_block_avx512(const void *data, void *digest)
imb_get_mb_mgr_size
IMB_DLL_EXPORT size_t imb_get_mb_mgr_size(void)
Calculates necessary memory size for IMB_MGR.
kasumi_f9_iv_gen
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.
get_completed_job_t
IMB_JOB *(* get_completed_job_t)(struct IMB_MGR *)
Definition intel-ipsec-mb.h:698
aes_gcm_init_128_sse
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.
aes_gcm_dec_192_sse
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.
kasumi_f8_4_buffer_t
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:810
IMB_ARCH
IMB_ARCH
Definition intel-ipsec-mb.h:119
IMB_ARCH_AVX512
@ IMB_ARCH_AVX512
Definition intel-ipsec-mb.h:125
IMB_ARCH_NONE
@ IMB_ARCH_NONE
Definition intel-ipsec-mb.h:120
IMB_ARCH_SSE
@ IMB_ARCH_SSE
Definition intel-ipsec-mb.h:122
IMB_ARCH_NOAESNI
@ IMB_ARCH_NOAESNI
Definition intel-ipsec-mb.h:121
IMB_ARCH_AVX2
@ IMB_ARCH_AVX2
Definition intel-ipsec-mb.h:124
IMB_ARCH_AVX
@ IMB_ARCH_AVX
Definition intel-ipsec-mb.h:123
IMB_ARCH_NUM
@ IMB_ARCH_NUM
Definition intel-ipsec-mb.h:126
aes_gcm_dec_192_avx_gen2
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.
kasumi_key_sched_size_t
size_t(* kasumi_key_sched_size_t)(void)
Definition intel-ipsec-mb.h:833
snow3g_key_sched_size_t
size_t(* snow3g_key_sched_size_t)(void)
Definition intel-ipsec-mb.h:903
get_completed_job_avx2
IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx2(IMB_MGR *state)
Get next completed job.
aes_ecb_quic_t
void(* aes_ecb_quic_t)(const void *, const void *, void *out, uint64_t)
Definition intel-ipsec-mb.h:910
aes_gcm_enc_256_update_avx_gen4
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_set_session
IMB_DLL_EXPORT uint32_t imb_set_session(IMB_MGR *state, IMB_JOB *job)
Sets up suite_id and session_id fields for selected cipher suite in provided job structure.
zuc_eia3_n_buffer_t
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:784
aes_gcm_dec_128_sse
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.
aes_gcm_precomp_128_avx_gen2
IMB_DLL_EXPORT void aes_gcm_precomp_128_avx_gen2(struct gcm_key_data *key_data)
Precomputation of AES-GCM-128 HashKey constants.
aes_gcm_enc_192_sse
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.
aes_gcm_init_t
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:733
aes_gcm_dec_256_finalize_sse
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.
snow3g_init_key_sched_t
int(* snow3g_init_key_sched_t)(const void *, snow3g_key_schedule_t *)
Definition intel-ipsec-mb.h:900
snow3g_f8_4_buffer_t
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:857
aes_gcm_dec_128_avx_gen4
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.
flush_job_avx2
IMB_DLL_EXPORT IMB_JOB * flush_job_avx2(IMB_MGR *state)
Force processing until next job in queue is completed.
aes_gcm_enc_128_update_avx_gen2
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.
zuc_eia3_iv_gen
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.
snow3g_key_schedule_t
struct snow3g_key_schedule_s snow3g_key_schedule_t
flush_job_t
IMB_JOB *(* flush_job_t)(struct IMB_MGR *)
Definition intel-ipsec-mb.h:699
snow3g_f9_1_buffer_t
void(* snow3g_f9_1_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, const uint64_t, void *)
Definition intel-ipsec-mb.h:896
aes_cfb_t
void(* aes_cfb_t)(void *, const void *, const void *, const void *, uint64_t)
Definition intel-ipsec-mb.h:720
aes_keyexp_128_avx
IMB_DLL_EXPORT void aes_keyexp_128_avx(const void *key, void *enc_exp_keys, void *dec_exp_keys)
imb_clear_mem
IMB_DLL_EXPORT void imb_clear_mem(void *mem, const size_t size)
Force clearing/zeroing of memory.
aes_gcm_precomp_128_avx_gen4
IMB_DLL_EXPORT void aes_gcm_precomp_128_avx_gen4(struct gcm_key_data *key_data)
Precomputation of AES-GCM-128 HashKey constants.
imb_get_version
IMB_DLL_EXPORT unsigned imb_get_version(void)
Get library version in numerical format.
init_mb_mgr_avx
IMB_DLL_EXPORT void init_mb_mgr_avx(IMB_MGR *state)
Initialize Multi-Buffer Manager structure.
aes_xcbc_expand_key_sse
IMB_DLL_EXPORT void aes_xcbc_expand_key_sse(const void *key, void *k1_exp, void *k2, void *k3)
init_mb_mgr_t
void(* init_mb_mgr_t)(struct IMB_MGR *)
Definition intel-ipsec-mb.h:695
kasumi_f8_2_buffer_t
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:797
aes_keyexp_256_avx2
IMB_DLL_EXPORT void aes_keyexp_256_avx2(const void *key, void *enc_exp_keys, void *dec_exp_keys)
aes_gcm_enc_128_avx_gen2
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.
aes_gmac_finalize_t
void(* aes_gmac_finalize_t)(const struct gcm_key_data *, struct gcm_context_data *, uint8_t *, const uint64_t)
Definition intel-ipsec-mb.h:755
aes_gcm_enc_128_finalize_sse
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.
aes_gcm_enc_dec_update_t
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:740
aes_gcm_dec_192_finalize_avx_gen4
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.
aes_keyexp_256_enc_sse
IMB_DLL_EXPORT void aes_keyexp_256_enc_sse(const void *key, void *enc_exp_keys)
hash_fn_t
void(* hash_fn_t)(const void *, const uint64_t, void *)
Definition intel-ipsec-mb.h:717
aes_gcm_enc_256_finalize_sse
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
IMB_STATUS
Definition intel-ipsec-mb.h:178
IMB_STATUS_ERROR
@ IMB_STATUS_ERROR
Definition intel-ipsec-mb.h:186
IMB_STATUS_COMPLETED
@ IMB_STATUS_COMPLETED
Definition intel-ipsec-mb.h:182
IMB_STATUS_INTERNAL_ERROR
@ IMB_STATUS_INTERNAL_ERROR
Definition intel-ipsec-mb.h:185
IMB_STATUS_COMPLETED_CIPHER
@ IMB_STATUS_COMPLETED_CIPHER
Definition intel-ipsec-mb.h:180
IMB_STATUS_COMPLETED_AUTH
@ IMB_STATUS_COMPLETED_AUTH
Definition intel-ipsec-mb.h:181
IMB_STATUS_BEING_PROCESSED
@ IMB_STATUS_BEING_PROCESSED
Definition intel-ipsec-mb.h:179
IMB_STATUS_INVALID_ARGS
@ IMB_STATUS_INVALID_ARGS
Definition intel-ipsec-mb.h:184
aes_gcm_dec_256_sse
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.
aes_xcbc_expand_key_avx
IMB_DLL_EXPORT void aes_xcbc_expand_key_avx(const void *key, void *k1_exp, void *k2, void *k3)
IMB_JOB
Definition intel-ipsec-mb.h:390
IMB_JOB::cipher_fields
union IMB_JOB::@11 cipher_fields
IMB_JOB::ctx
struct gcm_context_data * ctx
Definition intel-ipsec-mb.h:468
IMB_JOB::GMAC
struct IMB_JOB::@10::_AES_GMAC_specific_fields GMAC
IMB_JOB::KASUMI_UIA1
struct IMB_JOB::@10::_KASUMI_UIA1_specific_fields KASUMI_UIA1
IMB_JOB::cipher_direction
IMB_CIPHER_DIRECTION cipher_direction
Definition intel-ipsec-mb.h:526
IMB_JOB::POLY1305
struct IMB_JOB::@10::_POLY1305_specific_fields POLY1305
IMB_JOB::num_sgl_io_segs
uint64_t num_sgl_io_segs
Definition intel-ipsec-mb.h:405
IMB_JOB::_init_tag
const void * _init_tag
Definition intel-ipsec-mb.h:500
IMB_JOB::sgl_io_segs
const struct IMB_SGL_IOV * sgl_io_segs
Definition intel-ipsec-mb.h:398
IMB_JOB::iv_len_in_bytes
uint64_t iv_len_in_bytes
Definition intel-ipsec-mb.h:430
IMB_JOB::SNOW3G_UIA2
struct IMB_JOB::@10::_SNOW3G_UIA2_specific_fields SNOW3G_UIA2
IMB_JOB::_iv23
const uint8_t * _iv23
Definition intel-ipsec-mb.h:476
IMB_JOB::_hashed_auth_key_xor_ipad
const uint8_t * _hashed_auth_key_xor_ipad
Definition intel-ipsec-mb.h:438
IMB_JOB::suite_id
void * suite_id[4]
Definition intel-ipsec-mb.h:550
IMB_JOB::XCBC
struct IMB_JOB::@10::_AES_XCBC_specific_fields XCBC
IMB_JOB::_key
const struct gcm_key_data * _key
Definition intel-ipsec-mb.h:490
IMB_JOB::sgl_state
IMB_SGL_STATE sgl_state
Definition intel-ipsec-mb.h:539
IMB_JOB::msg_len_to_hash_in_bytes
uint64_t msg_len_to_hash_in_bytes
Definition intel-ipsec-mb.h:424
IMB_JOB::chain_order
IMB_CHAIN_ORDER chain_order
Definition intel-ipsec-mb.h:528
IMB_JOB::msg_len_to_cipher_in_bits
uint64_t msg_len_to_cipher_in_bits
Definition intel-ipsec-mb.h:419
IMB_JOB::_iv
const void * _iv
Definition intel-ipsec-mb.h:482
IMB_JOB::CMAC
struct IMB_JOB::@10::_AES_CMAC_specific_fields CMAC
IMB_JOB::ctx
struct chacha20_poly1305_context_data * ctx
Definition intel-ipsec-mb.h:511
IMB_JOB::aad
const void * aad
Definition intel-ipsec-mb.h:454
IMB_JOB::user_data2
void * user_data2
Definition intel-ipsec-mb.h:532
IMB_JOB::next_iv
void * next_iv
Definition intel-ipsec-mb.h:545
IMB_JOB::u
union IMB_JOB::@10 u
IMB_JOB::cipher_start_offset_in_bits
uint64_t cipher_start_offset_in_bits
Definition intel-ipsec-mb.h:413
IMB_JOB::hash_func
int(* hash_func)(struct IMB_JOB *)
Definition intel-ipsec-mb.h:536
IMB_JOB::cipher_func
int(* cipher_func)(struct IMB_JOB *)
Definition intel-ipsec-mb.h:534
IMB_JOB::_hashed_auth_key_xor_opad
const uint8_t * _hashed_auth_key_xor_opad
Definition intel-ipsec-mb.h:441
IMB_JOB::auth_tag_output_len_in_bytes
uint64_t auth_tag_output_len_in_bytes
Definition intel-ipsec-mb.h:432
IMB_JOB::_k1_expanded
const uint32_t * _k1_expanded
Definition intel-ipsec-mb.h:446
IMB_JOB::cipher_mode
IMB_CIPHER_MODE cipher_mode
Definition intel-ipsec-mb.h:525
IMB_JOB::_key
const void * _key
Definition intel-ipsec-mb.h:480
IMB_JOB::_key
const uint8_t * _key
Definition intel-ipsec-mb.h:472
IMB_JOB::CBCS
struct IMB_JOB::@11::_CBCS_specific_fields CBCS
IMB_JOB::_skey2
const void * _skey2
Definition intel-ipsec-mb.h:462
IMB_JOB::_key_expanded
const void * _key_expanded
Definition intel-ipsec-mb.h:459
IMB_JOB::iv
const uint8_t * iv
Definition intel-ipsec-mb.h:429
IMB_JOB::msg_len_to_cipher_in_bytes
uint64_t msg_len_to_cipher_in_bytes
Definition intel-ipsec-mb.h:417
IMB_JOB::reserved
void * reserved
Definition intel-ipsec-mb.h:519
IMB_JOB::hash_alg
IMB_HASH_ALG hash_alg
Definition intel-ipsec-mb.h:527
IMB_JOB::aad_len_in_bytes
uint64_t aad_len_in_bytes
Definition intel-ipsec-mb.h:456
IMB_JOB::HMAC
struct IMB_JOB::@10::_HMAC_specific_fields HMAC
IMB_JOB::ZUC_EIA3
struct IMB_JOB::@10::_ZUC_EIA3_specific_fields ZUC_EIA3
IMB_JOB::session_id
uint32_t session_id
Definition intel-ipsec-mb.h:551
IMB_JOB::_skey1
const void * _skey1
Definition intel-ipsec-mb.h:461
IMB_JOB::user_data
void * user_data
Definition intel-ipsec-mb.h:531
IMB_JOB::key_len_in_bytes
uint64_t key_len_in_bytes
Definition intel-ipsec-mb.h:393
IMB_JOB::SNOW_V_AEAD
struct IMB_JOB::@10::_SNOW_V_AEAD_specific_fields SNOW_V_AEAD
IMB_JOB::dst
uint8_t * dst
Definition intel-ipsec-mb.h:402
IMB_JOB::auth_tag_output
uint8_t * auth_tag_output
Definition intel-ipsec-mb.h:431
IMB_JOB::enc_keys
const void * enc_keys
Definition intel-ipsec-mb.h:391
IMB_JOB::GCM
struct IMB_JOB::@10::_AES_GCM_specific_fields GCM
IMB_JOB::CHACHA20_POLY1305
struct IMB_JOB::@10::_CHACHA20_POLY1305_specific_fields CHACHA20_POLY1305
IMB_JOB::CCM
struct IMB_JOB::@10::_AES_CCM_specific_fields CCM
IMB_JOB::status
IMB_STATUS status
Definition intel-ipsec-mb.h:524
IMB_JOB::_k2
const uint8_t * _k2
Definition intel-ipsec-mb.h:448
IMB_JOB::cipher_start_src_offset_in_bytes
uint64_t cipher_start_src_offset_in_bytes
Definition intel-ipsec-mb.h:409
IMB_JOB::msg_len_to_hash_in_bits
uint64_t msg_len_to_hash_in_bits
Definition intel-ipsec-mb.h:426
IMB_JOB::_iv
const uint8_t * _iv
Definition intel-ipsec-mb.h:474
IMB_JOB::GHASH
struct IMB_JOB::@10::_GHASH_specific_fields GHASH
IMB_JOB::cipher_start_src_offset_in_bits
uint64_t cipher_start_src_offset_in_bits
Definition intel-ipsec-mb.h:411
IMB_JOB::dec_keys
const void * dec_keys
Definition intel-ipsec-mb.h:392
IMB_JOB::hash_start_src_offset_in_bytes
uint64_t hash_start_src_offset_in_bytes
Definition intel-ipsec-mb.h:422
IMB_JOB::src
const uint8_t * src
Definition intel-ipsec-mb.h:395
IMB_JOB::_k3
const uint8_t * _k3
Definition intel-ipsec-mb.h:450
IMB_MGR
Definition intel-ipsec-mb.h:980
IMB_MGR::gmac192_finalize
aes_gmac_finalize_t gmac192_finalize
Definition intel-ipsec-mb.h:1091
IMB_MGR::gcm192_init
aes_gcm_init_t gcm192_init
Definition intel-ipsec-mb.h:1028
IMB_MGR::gmac128_finalize
aes_gmac_finalize_t gmac128_finalize
Definition intel-ipsec-mb.h:1090
IMB_MGR::aes256_ccm_ooo
void * aes256_ccm_ooo
Definition intel-ipsec-mb.h:1164
IMB_MGR::crc24_lte_a
crc32_fn_t crc24_lte_a
Definition intel-ipsec-mb.h:1100
IMB_MGR::gmac256_update
aes_gmac_update_t gmac256_update
Definition intel-ipsec-mb.h:1089
IMB_MGR::hec_32
hec_32_t hec_32
Definition intel-ipsec-mb.h:1093
IMB_MGR::imb_errno
int imb_errno
Definition intel-ipsec-mb.h:988
IMB_MGR::aes_cmac_ooo
void * aes_cmac_ooo
Definition intel-ipsec-mb.h:1158
IMB_MGR::next_job
int next_job
Definition intel-ipsec-mb.h:1132
IMB_MGR::gmac128_init
aes_gmac_init_t gmac128_init
Definition intel-ipsec-mb.h:1084
IMB_MGR::reserved
uint64_t reserved[5]
Definition intel-ipsec-mb.h:985
IMB_MGR::gcm192_pre
aes_gcm_pre_t gcm192_pre
Definition intel-ipsec-mb.h:1046
IMB_MGR::snow3g_f8_4_buffer
snow3g_f8_4_buffer_t snow3g_f8_4_buffer
Definition intel-ipsec-mb.h:1069
IMB_MGR::gcm256_precomp
aes_gcm_precomp_t gcm256_precomp
Definition intel-ipsec-mb.h:1044
IMB_MGR::gcm128_pre
aes_gcm_pre_t gcm128_pre
Definition intel-ipsec-mb.h:1045
IMB_MGR::submit_hash_burst
submit_hash_burst_t submit_hash_burst
Definition intel-ipsec-mb.h:1121
IMB_MGR::flush_job
flush_job_t flush_job
Definition intel-ipsec-mb.h:1000
IMB_MGR::snow3g_f8_2_buffer
snow3g_f8_2_buffer_t snow3g_f8_2_buffer
Definition intel-ipsec-mb.h:1068
IMB_MGR::zuc_eea3_ooo
void * zuc_eea3_ooo
Definition intel-ipsec-mb.h:1159
IMB_MGR::gcm128_dec_update
aes_gcm_enc_dec_update_t gcm128_dec_update
Definition intel-ipsec-mb.h:1033
IMB_MGR::des3_dec_ooo
void * des3_dec_ooo
Definition intel-ipsec-mb.h:1146
IMB_MGR::keyexp_192
keyexp_t keyexp_192
Definition intel-ipsec-mb.h:1003
IMB_MGR::gcm128_dec
aes_gcm_enc_dec_t gcm128_dec
Definition intel-ipsec-mb.h:1024
IMB_MGR::submit_burst_nocheck
burst_fn_t submit_burst_nocheck
Definition intel-ipsec-mb.h:1117
IMB_MGR::get_next_job
get_next_job_t get_next_job
Definition intel-ipsec-mb.h:996
IMB_MGR::sha_256_ooo
void * sha_256_ooo
Definition intel-ipsec-mb.h:1170
IMB_MGR::snow3g_init_key_sched
snow3g_init_key_sched_t snow3g_init_key_sched
Definition intel-ipsec-mb.h:1075
IMB_MGR::gcm192_enc_update
aes_gcm_enc_dec_update_t gcm192_enc_update
Definition intel-ipsec-mb.h:1031
IMB_MGR::gmac256_finalize
aes_gmac_finalize_t gmac256_finalize
Definition intel-ipsec-mb.h:1092
IMB_MGR::docsis_des_dec_ooo
void * docsis_des_dec_ooo
Definition intel-ipsec-mb.h:1148
IMB_MGR::gmac192_init
aes_gmac_init_t gmac192_init
Definition intel-ipsec-mb.h:1085
IMB_MGR::eia3_1_buffer
zuc_eia3_1_buffer_t eia3_1_buffer
Definition intel-ipsec-mb.h:1052
IMB_MGR::aes_ccm_ooo
void * aes_ccm_ooo
Definition intel-ipsec-mb.h:1157
IMB_MGR::hec_64
hec_64_t hec_64
Definition intel-ipsec-mb.h:1094
IMB_MGR::keyexp_256
keyexp_t keyexp_256
Definition intel-ipsec-mb.h:1004
IMB_MGR::aes_ecb_128_quic
aes_ecb_quic_t aes_ecb_128_quic
Definition intel-ipsec-mb.h:1125
IMB_MGR::gcm256_pre
aes_gcm_pre_t gcm256_pre
Definition intel-ipsec-mb.h:1047
IMB_MGR::used_arch
uint32_t used_arch
Definition intel-ipsec-mb.h:986
IMB_MGR::hmac_sha_1_ooo
void * hmac_sha_1_ooo
Definition intel-ipsec-mb.h:1150
IMB_MGR::crc32_sctp
crc32_fn_t crc32_sctp
Definition intel-ipsec-mb.h:1099
IMB_MGR::crc11_fp_header
crc32_fn_t crc11_fp_header
Definition intel-ipsec-mb.h:1103
IMB_MGR::gcm192_dec_finalize
aes_gcm_enc_dec_finalize_t gcm192_dec_finalize
Definition intel-ipsec-mb.h:1040
IMB_MGR::f9_1_buffer_user
kasumi_f9_1_buffer_user_t f9_1_buffer_user
Definition intel-ipsec-mb.h:1061
IMB_MGR::sha_384_ooo
void * sha_384_ooo
Definition intel-ipsec-mb.h:1171
IMB_MGR::gmac192_update
aes_gmac_update_t gmac192_update
Definition intel-ipsec-mb.h:1088
IMB_MGR::crc16_x25
crc32_fn_t crc16_x25
Definition intel-ipsec-mb.h:1098
IMB_MGR::sha224
hash_fn_t sha224
Definition intel-ipsec-mb.h:1015
IMB_MGR::md5_one_block
hash_one_block_t md5_one_block
Definition intel-ipsec-mb.h:1013
IMB_MGR::des_enc_ooo
void * des_enc_ooo
Definition intel-ipsec-mb.h:1143
IMB_MGR::kasumi_init_f9_key_sched
kasumi_init_f9_key_sched_t kasumi_init_f9_key_sched
Definition intel-ipsec-mb.h:1063
IMB_MGR::queue_size
queue_size_t queue_size
Definition intel-ipsec-mb.h:1001
IMB_MGR::gcm256_dec_finalize
aes_gcm_enc_dec_finalize_t gcm256_dec_finalize
Definition intel-ipsec-mb.h:1041
IMB_MGR::snow3g_key_sched_size
snow3g_key_sched_size_t snow3g_key_sched_size
Definition intel-ipsec-mb.h:1076
IMB_MGR::aes_ecb_256_quic
aes_ecb_quic_t aes_ecb_256_quic
Definition intel-ipsec-mb.h:1126
IMB_MGR::crc8_wimax_ofdma_hcs
crc32_fn_t crc8_wimax_ofdma_hcs
Definition intel-ipsec-mb.h:1108
IMB_MGR::zuc256_eia3_ooo
void * zuc256_eia3_ooo
Definition intel-ipsec-mb.h:1163
IMB_MGR::snow3g_f8_8_buffer
snow3g_f8_8_buffer_t snow3g_f8_8_buffer
Definition intel-ipsec-mb.h:1070
IMB_MGR::sha512
hash_fn_t sha512
Definition intel-ipsec-mb.h:1018
IMB_MGR::hmac_sha_256_ooo
void * hmac_sha_256_ooo
Definition intel-ipsec-mb.h:1152
IMB_MGR::snow3g_f8_n_buffer_multikey
snow3g_f8_n_buffer_multikey_t snow3g_f8_n_buffer_multikey
Definition intel-ipsec-mb.h:1073
IMB_MGR::gcm192_dec_update
aes_gcm_enc_dec_update_t gcm192_dec_update
Definition intel-ipsec-mb.h:1034
IMB_MGR::chacha20_poly1305_init
chacha_poly_init_t chacha20_poly1305_init
Definition intel-ipsec-mb.h:1110
IMB_MGR::eea3_n_buffer
zuc_eea3_n_buffer_t eea3_n_buffer
Definition intel-ipsec-mb.h:1051
IMB_MGR::gcm128_precomp
aes_gcm_precomp_t gcm128_precomp
Definition intel-ipsec-mb.h:1042
IMB_MGR::aes256_ooo
void * aes256_ooo
Definition intel-ipsec-mb.h:1138
IMB_MGR::zuc256_eea3_ooo
void * zuc256_eea3_ooo
Definition intel-ipsec-mb.h:1162
IMB_MGR::end_ooo
void * end_ooo
Definition intel-ipsec-mb.h:1173
IMB_MGR::sha_512_ooo
void * sha_512_ooo
Definition intel-ipsec-mb.h:1172
IMB_MGR::chacha20_poly1305_dec_update
chacha_poly_enc_dec_update_t chacha20_poly1305_dec_update
Definition intel-ipsec-mb.h:1112
IMB_MGR::gcm256_enc
aes_gcm_enc_dec_t gcm256_enc
Definition intel-ipsec-mb.h:1023
IMB_MGR::gcm192_init_var_iv
aes_gcm_init_var_iv_t gcm192_init_var_iv
Definition intel-ipsec-mb.h:1081
IMB_MGR::keyexp_128
keyexp_t keyexp_128
Definition intel-ipsec-mb.h:1002
IMB_MGR::crc10_iuup_data
crc32_fn_t crc10_iuup_data
Definition intel-ipsec-mb.h:1105
IMB_MGR::submit_hash_burst_nocheck
submit_hash_burst_t submit_hash_burst_nocheck
Definition intel-ipsec-mb.h:1122
IMB_MGR::sha1_one_block
hash_one_block_t sha1_one_block
Definition intel-ipsec-mb.h:1008
IMB_MGR::snow3g_f8_n_buffer
snow3g_f8_n_buffer_t snow3g_f8_n_buffer
Definition intel-ipsec-mb.h:1071
IMB_MGR::sha1
hash_fn_t sha1
Definition intel-ipsec-mb.h:1014
IMB_MGR::crc32_ethernet_fcs
crc32_fn_t crc32_ethernet_fcs
Definition intel-ipsec-mb.h:1097
IMB_MGR::hmac_md5_ooo
void * hmac_md5_ooo
Definition intel-ipsec-mb.h:1155
IMB_MGR::des3_enc_ooo
void * des3_enc_ooo
Definition intel-ipsec-mb.h:1145
IMB_MGR::sha512_one_block
hash_one_block_t sha512_one_block
Definition intel-ipsec-mb.h:1012
IMB_MGR::gcm256_init
aes_gcm_init_t gcm256_init
Definition intel-ipsec-mb.h:1029
IMB_MGR::snow3g_f8_8_buffer_multikey
snow3g_f8_8_buffer_multikey_t snow3g_f8_8_buffer_multikey
Definition intel-ipsec-mb.h:1072
IMB_MGR::submit_cipher_burst
submit_cipher_burst_t submit_cipher_burst
Definition intel-ipsec-mb.h:1119
IMB_MGR::get_next_burst
burst_fn_t get_next_burst
Definition intel-ipsec-mb.h:1115
IMB_MGR::sha256
hash_fn_t sha256
Definition intel-ipsec-mb.h:1016
IMB_MGR::gcm128_enc_finalize
aes_gcm_enc_dec_finalize_t gcm128_enc_finalize
Definition intel-ipsec-mb.h:1036
IMB_MGR::gmac128_update
aes_gmac_update_t gmac128_update
Definition intel-ipsec-mb.h:1087
IMB_MGR::zuc_eia3_ooo
void * zuc_eia3_ooo
Definition intel-ipsec-mb.h:1160
IMB_MGR::gcm192_enc_finalize
aes_gcm_enc_dec_finalize_t gcm192_enc_finalize
Definition intel-ipsec-mb.h:1037
IMB_MGR::f8_3_buffer
kasumi_f8_3_buffer_t f8_3_buffer
Definition intel-ipsec-mb.h:1057
IMB_MGR::sha384_one_block
hash_one_block_t sha384_one_block
Definition intel-ipsec-mb.h:1011
IMB_MGR::docsis_des_enc_ooo
void * docsis_des_enc_ooo
Definition intel-ipsec-mb.h:1147
IMB_MGR::docsis128_sec_ooo
void * docsis128_sec_ooo
Definition intel-ipsec-mb.h:1139
IMB_MGR::set_suite_id
void(* set_suite_id)(struct IMB_MGR *, IMB_JOB *)
Definition intel-ipsec-mb.h:1128
IMB_MGR::gcm256_enc_finalize
aes_gcm_enc_dec_finalize_t gcm256_enc_finalize
Definition intel-ipsec-mb.h:1038
IMB_MGR::aes128_ooo
void * aes128_ooo
Definition intel-ipsec-mb.h:1136
IMB_MGR::get_completed_job
get_completed_job_t get_completed_job
Definition intel-ipsec-mb.h:999
IMB_MGR::gcm256_dec_update
aes_gcm_enc_dec_update_t gcm256_dec_update
Definition intel-ipsec-mb.h:1035
IMB_MGR::snow3g_f9_1_buffer
snow3g_f9_1_buffer_t snow3g_f9_1_buffer
Definition intel-ipsec-mb.h:1074
IMB_MGR::aes128_cbcs_ooo
void * aes128_cbcs_ooo
Definition intel-ipsec-mb.h:1161
IMB_MGR::gcm128_enc
aes_gcm_enc_dec_t gcm128_enc
Definition intel-ipsec-mb.h:1021
IMB_MGR::sha384
hash_fn_t sha384
Definition intel-ipsec-mb.h:1017
IMB_MGR::flush_burst
burst_fn_t flush_burst
Definition intel-ipsec-mb.h:1118
IMB_MGR::sha_224_ooo
void * sha_224_ooo
Definition intel-ipsec-mb.h:1169
IMB_MGR::cmac_subkey_gen_128
cmac_subkey_gen_t cmac_subkey_gen_128
Definition intel-ipsec-mb.h:1005
IMB_MGR::crc6_iuup_header
crc32_fn_t crc6_iuup_header
Definition intel-ipsec-mb.h:1106
IMB_MGR::submit_burst
burst_fn_t submit_burst
Definition intel-ipsec-mb.h:1116
IMB_MGR::snow3g_uia2_ooo
void * snow3g_uia2_ooo
Definition intel-ipsec-mb.h:1167
IMB_MGR::gcm192_enc
aes_gcm_enc_dec_t gcm192_enc
Definition intel-ipsec-mb.h:1022
IMB_MGR::submit_job_nocheck
submit_job_t submit_job_nocheck
Definition intel-ipsec-mb.h:998
IMB_MGR::f8_1_buffer_bit
kasumi_f8_1_buffer_bit_t f8_1_buffer_bit
Definition intel-ipsec-mb.h:1055
IMB_MGR::sha224_one_block
hash_one_block_t sha224_one_block
Definition intel-ipsec-mb.h:1009
IMB_MGR::des_key_sched
des_keysched_t des_key_sched
Definition intel-ipsec-mb.h:1007
IMB_MGR::snow3g_uea2_ooo
void * snow3g_uea2_ooo
Definition intel-ipsec-mb.h:1166
IMB_MGR::submit_job
submit_job_t submit_job
Definition intel-ipsec-mb.h:997
IMB_MGR::chacha20_poly1305_finalize
chacha_poly_finalize_t chacha20_poly1305_finalize
Definition intel-ipsec-mb.h:1113
IMB_MGR::chacha20_poly1305_enc_update
chacha_poly_enc_dec_update_t chacha20_poly1305_enc_update
Definition intel-ipsec-mb.h:1111
IMB_MGR::kasumi_init_f8_key_sched
kasumi_init_f8_key_sched_t kasumi_init_f8_key_sched
Definition intel-ipsec-mb.h:1062
IMB_MGR::jobs
IMB_JOB jobs[IMB_MAX_JOBS]
Definition intel-ipsec-mb.h:1133
IMB_MGR::aes256_cfb_one
aes_cfb_t aes256_cfb_one
Definition intel-ipsec-mb.h:1123
IMB_MGR::eia3_n_buffer
zuc_eia3_n_buffer_t eia3_n_buffer
Definition intel-ipsec-mb.h:1079
IMB_MGR::snow3g_f8_1_buffer
snow3g_f8_1_buffer_t snow3g_f8_1_buffer
Definition intel-ipsec-mb.h:1067
IMB_MGR::hmac_sha_224_ooo
void * hmac_sha_224_ooo
Definition intel-ipsec-mb.h:1151
IMB_MGR::kasumi_key_sched_size
kasumi_key_sched_size_t kasumi_key_sched_size
Definition intel-ipsec-mb.h:1064
IMB_MGR::aes128_cfb_one
aes_cfb_t aes128_cfb_one
Definition intel-ipsec-mb.h:1019
IMB_MGR::cmac_subkey_gen_256
cmac_subkey_gen_t cmac_subkey_gen_256
Definition intel-ipsec-mb.h:1095
IMB_MGR::crc24_lte_b
crc32_fn_t crc24_lte_b
Definition intel-ipsec-mb.h:1101
IMB_MGR::gcm192_precomp
aes_gcm_precomp_t gcm192_precomp
Definition intel-ipsec-mb.h:1043
IMB_MGR::gcm256_enc_update
aes_gcm_enc_dec_update_t gcm256_enc_update
Definition intel-ipsec-mb.h:1032
IMB_MGR::eea3_4_buffer
zuc_eea3_4_buffer_t eea3_4_buffer
Definition intel-ipsec-mb.h:1050
IMB_MGR::earliest_job
int earliest_job
Definition intel-ipsec-mb.h:1131
IMB_MGR::f8_2_buffer
kasumi_f8_2_buffer_t f8_2_buffer
Definition intel-ipsec-mb.h:1056
IMB_MGR::crc7_fp_header
crc32_fn_t crc7_fp_header
Definition intel-ipsec-mb.h:1104
IMB_MGR::gmac256_init
aes_gmac_init_t gmac256_init
Definition intel-ipsec-mb.h:1086
IMB_MGR::submit_cipher_burst_nocheck
submit_cipher_burst_t submit_cipher_burst_nocheck
Definition intel-ipsec-mb.h:1120
IMB_MGR::docsis256_sec_ooo
void * docsis256_sec_ooo
Definition intel-ipsec-mb.h:1141
IMB_MGR::aes256_cmac_ooo
void * aes256_cmac_ooo
Definition intel-ipsec-mb.h:1165
IMB_MGR::sha_1_ooo
void * sha_1_ooo
Definition intel-ipsec-mb.h:1168
IMB_MGR::docsis128_crc32_sec_ooo
void * docsis128_crc32_sec_ooo
Definition intel-ipsec-mb.h:1140
IMB_MGR::gcm256_dec
aes_gcm_enc_dec_t gcm256_dec
Definition intel-ipsec-mb.h:1026
IMB_MGR::crc32_wimax_ofdma_data
crc32_fn_t crc32_wimax_ofdma_data
Definition intel-ipsec-mb.h:1107
IMB_MGR::gcm128_enc_update
aes_gcm_enc_dec_update_t gcm128_enc_update
Definition intel-ipsec-mb.h:1030
IMB_MGR::aes_xcbc_ooo
void * aes_xcbc_ooo
Definition intel-ipsec-mb.h:1156
IMB_MGR::crc16_fp_data
crc32_fn_t crc16_fp_data
Definition intel-ipsec-mb.h:1102
IMB_MGR::snow3g_f8_1_buffer_bit
snow3g_f8_1_buffer_bit_t snow3g_f8_1_buffer_bit
Definition intel-ipsec-mb.h:1066
IMB_MGR::gcm128_init
aes_gcm_init_t gcm128_init
Definition intel-ipsec-mb.h:1027
IMB_MGR::sha256_one_block
hash_one_block_t sha256_one_block
Definition intel-ipsec-mb.h:1010
IMB_MGR::gcm192_dec
aes_gcm_enc_dec_t gcm192_dec
Definition intel-ipsec-mb.h:1025
IMB_MGR::f8_n_buffer
kasumi_f8_n_buffer_t f8_n_buffer
Definition intel-ipsec-mb.h:1059
IMB_MGR::flags
uint64_t flags
Definition intel-ipsec-mb.h:982
IMB_MGR::xcbc_keyexp
xcbc_keyexp_t xcbc_keyexp
Definition intel-ipsec-mb.h:1006
IMB_MGR::gcm128_init_var_iv
aes_gcm_init_var_iv_t gcm128_init_var_iv
Definition intel-ipsec-mb.h:1080
IMB_MGR::eea3_1_buffer
zuc_eea3_1_buffer_t eea3_1_buffer
Definition intel-ipsec-mb.h:1049
IMB_MGR::des_dec_ooo
void * des_dec_ooo
Definition intel-ipsec-mb.h:1144
IMB_MGR::f8_4_buffer
kasumi_f8_4_buffer_t f8_4_buffer
Definition intel-ipsec-mb.h:1058
IMB_MGR::hmac_sha_512_ooo
void * hmac_sha_512_ooo
Definition intel-ipsec-mb.h:1154
IMB_MGR::docsis256_crc32_sec_ooo
void * docsis256_crc32_sec_ooo
Definition intel-ipsec-mb.h:1142
IMB_MGR::ghash_pre
aes_gcm_pre_t ghash_pre
Definition intel-ipsec-mb.h:1096
IMB_MGR::f8_1_buffer
kasumi_f8_1_buffer_t f8_1_buffer
Definition intel-ipsec-mb.h:1054
IMB_MGR::features
uint64_t features
Definition intel-ipsec-mb.h:983
IMB_MGR::gcm128_dec_finalize
aes_gcm_enc_dec_finalize_t gcm128_dec_finalize
Definition intel-ipsec-mb.h:1039
IMB_MGR::gcm256_init_var_iv
aes_gcm_init_var_iv_t gcm256_init_var_iv
Definition intel-ipsec-mb.h:1082
IMB_MGR::f9_1_buffer
kasumi_f9_1_buffer_t f9_1_buffer
Definition intel-ipsec-mb.h:1060
IMB_MGR::ghash
ghash_t ghash
Definition intel-ipsec-mb.h:1078
IMB_MGR::hmac_sha_384_ooo
void * hmac_sha_384_ooo
Definition intel-ipsec-mb.h:1153
IMB_MGR::aes192_ooo
void * aes192_ooo
Definition intel-ipsec-mb.h:1137
IMB_SGL_IOV
Definition intel-ipsec-mb.h:365
IMB_SGL_IOV::len
uint64_t len
Definition intel-ipsec-mb.h:368
IMB_SGL_IOV::out
void * out
Definition intel-ipsec-mb.h:367
IMB_SGL_IOV::in
const void * in
Definition intel-ipsec-mb.h:366
chacha20_poly1305_context_data
holds Chacha20-Poly1305 operation context
Definition intel-ipsec-mb.h:591
chacha20_poly1305_context_data::remain_ct_bytes
uint64_t remain_ct_bytes
Definition intel-ipsec-mb.h:601
chacha20_poly1305_context_data::aad_len
uint64_t aad_len
Definition intel-ipsec-mb.h:593
chacha20_poly1305_context_data::remain_ks_bytes
uint64_t remain_ks_bytes
Definition intel-ipsec-mb.h:599
chacha20_poly1305_context_data::poly_scratch
uint8_t poly_scratch[16]
Definition intel-ipsec-mb.h:597
chacha20_poly1305_context_data::poly_key
uint8_t poly_key[32]
Definition intel-ipsec-mb.h:596
chacha20_poly1305_context_data::IV
uint8_t IV[12]
Definition intel-ipsec-mb.h:604
chacha20_poly1305_context_data::last_block_count
uint64_t last_block_count
Definition intel-ipsec-mb.h:598
chacha20_poly1305_context_data::hash_len
uint64_t hash_len
Definition intel-ipsec-mb.h:594
chacha20_poly1305_context_data::hash
uint64_t hash[3]
Definition intel-ipsec-mb.h:592
chacha20_poly1305_context_data::last_ks
uint8_t last_ks[64]
Definition intel-ipsec-mb.h:595
gcm_context_data
holds GCM operation context
Definition intel-ipsec-mb.h:577
gcm_context_data::in_length
uint64_t in_length
Definition intel-ipsec-mb.h:580
gcm_context_data::current_counter
uint8_t current_counter[IMB_GCM_BLOCK_LEN]
Definition intel-ipsec-mb.h:583
gcm_context_data::partial_block_enc_key
uint8_t partial_block_enc_key[IMB_GCM_BLOCK_LEN]
Definition intel-ipsec-mb.h:581
gcm_context_data::orig_IV
uint8_t orig_IV[IMB_GCM_BLOCK_LEN]
Definition intel-ipsec-mb.h:582
gcm_context_data::partial_block_length
uint64_t partial_block_length
Definition intel-ipsec-mb.h:584
gcm_context_data::aad_hash
uint8_t aad_hash[IMB_GCM_BLOCK_LEN]
Definition intel-ipsec-mb.h:578
gcm_context_data::aad_length
uint64_t aad_length
Definition intel-ipsec-mb.h:579
gcm_key_data
holds intermediate key data needed to improve performance
Definition intel-ipsec-mb.h:639
gcm_key_data::shifted_hkey
uint8_t shifted_hkey[IMB_GCM_ENC_KEY_LEN *8]
Definition intel-ipsec-mb.h:649
gcm_key_data::avx2_avx512
struct gcm_key_data::@12::@14 avx2_avx512
gcm_key_data::shifted_hkey_k
uint8_t shifted_hkey_k[IMB_GCM_ENC_KEY_LEN *8]
Definition intel-ipsec-mb.h:658
gcm_key_data::vaes_avx512
struct gcm_key_data::@12::@15 vaes_avx512
gcm_key_data::sse_avx
struct gcm_key_data::@12::@13 sse_avx
gcm_key_data::expanded_keys
uint8_t expanded_keys[IMB_GCM_ENC_KEY_LEN *IMB_GCM_KEY_SETS]
Definition intel-ipsec-mb.h:640
gcm_key_data::ghash_keys
union gcm_key_data::@12 ghash_keys
imb_uint128_t
Definition intel-ipsec-mb.h:40
imb_uint128_t::low
uint64_t low
Definition intel-ipsec-mb.h:41
imb_uint128_t::high
uint64_t high
Definition intel-ipsec-mb.h:42
kasumi_key_sched_s
Definition intel-ipsec-mb.h:563
kasumi_key_sched_s::msk16
uint16_t msk16[KASUMI_KEY_SCHEDULE_SIZE]
Definition intel-ipsec-mb.h:566
kasumi_key_sched_s::sk16
uint16_t sk16[KASUMI_KEY_SCHEDULE_SIZE]
Definition intel-ipsec-mb.h:565
snow3g_key_schedule_s
Definition intel-ipsec-mb.h:839
snow3g_key_schedule_s::k
uint32_t k[4]
Definition intel-ipsec-mb.h:841