intel-ipsec-mb v1.4
Documentation of the Intel(R) IPSec Multi-Buffer library
 
Loading...
Searching...
No Matches
intel-ipsec-mb.h File Reference
#include <stdlib.h>
#include <stdint.h>
#include <errno.h>

Go to the source code of this file.

Data Structures

struct  imb_uint128_t
 
struct  IMB_SGL_IOV
 
struct  IMB_JOB
 
struct  kasumi_key_sched_s
 
struct  gcm_context_data
 holds GCM operation context More...
 
struct  chacha20_poly1305_context_data
 holds Chacha20-Poly1305 operation context More...
 
struct  gcm_key_data
 holds intermediate key data needed to improve performance More...
 
struct  snow3g_key_schedule_s
 
struct  IMB_MGR
 

Macros

#define DECLARE_ALIGNED(decl, alignval)    __declspec(align(alignval)) decl
 
#define __forceinline    static __forceinline
 
#define IMB_DLL_EXPORT
 
#define IMB_DLL_LOCAL
 
#define IMB_VERSION_STR   "1.4.0-dev"
 
#define IMB_VERSION_NUM   0x10400
 
#define IMB_VERSION(a, b, c)   (((a) << 16) + ((b) << 8) + (c))
 
#define IMB_ASSERT(x)
 
#define IMB_DIM(x)   (sizeof(x) / sizeof(x[0]))
 
#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
 
#define KASUMI_KEY_SCHEDULE_SIZE   64
 
#define IMB_GCM_BLOCK_LEN   16
 
#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)
 
#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
 
#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
 
#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
 
#define IMB_CPUFLAGS_AVX512   (IMB_CPUFLAGS_AVX2 | IMB_FEATURE_AVX512_SKX)
 
#define IMB_CPUFLAGS_AVX512_T2
 
#define IMB_CPUFLAGS_AVX2_T2
 
#define IMB_CPUFLAGS_AVX_T2
 
#define IMB_CPUFLAGS_AVX2_T3   (IMB_CPUFLAGS_AVX2_T2 | IMB_FEATURE_AVX_IFMA)
 
#define IMB_MAX_BURST_SIZE   128
 
#define IMB_MAX_JOBS   (IMB_MAX_BURST_SIZE * 2)
 
#define IMB_GET_NEXT_JOB(_mgr)   ((_mgr)->get_next_job((_mgr)))
 Get next available job.
 
#define IMB_SUBMIT_JOB(_mgr)   ((_mgr)->submit_job((_mgr)))
 Submit job for processing after validating.
 
#define IMB_SUBMIT_JOB_NOCHECK(_mgr)   ((_mgr)->submit_job_nocheck((_mgr)))
 Submit job for processing without validating.
 
#define IMB_GET_COMPLETED_JOB(_mgr)   ((_mgr)->get_completed_job((_mgr)))
 Get next completed job.
 
#define IMB_FLUSH_JOB(_mgr)   ((_mgr)->flush_job((_mgr)))
 Force processing until next job in queue is completed.
 
#define IMB_QUEUE_SIZE(_mgr)   ((_mgr)->queue_size((_mgr)))
 Get number of jobs queued to be processed.
 
#define IMB_GET_NEXT_BURST(_mgr, _n_jobs, _jobs)    ((_mgr)->get_next_burst((_mgr), (_n_jobs), (_jobs)))
 Get next available burst (list of pointers to available IMB_JOB structures).
 
#define IMB_SUBMIT_BURST(_mgr, _n_jobs, _jobs)    ((_mgr)->submit_burst((_mgr), (_n_jobs), (_jobs)))
 Submit multiple jobs to be processed after validating.
 
#define IMB_SUBMIT_BURST_NOCHECK(_mgr, _n_jobs, _jobs)    ((_mgr)->submit_burst_nocheck((_mgr), (_n_jobs), (_jobs)))
 Submit multiple jobs to be processed without validating.
 
#define IMB_FLUSH_BURST(_mgr, _max_jobs, _jobs)    ((_mgr)->flush_burst((_mgr), (_max_jobs), (_jobs)))
 Force up to max_jobs outstanding jobs to completion.
 
#define IMB_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)
 
#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)))
 
#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)))
 
#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)))
 AES-CFB-128 Encrypt/Decrypt up to one block.
 
#define IMB_AES256_CFB_ONE(_mgr, _dst, _src, _iv, _exp_key, _len)    ((_mgr)->aes256_cfb_one((_dst), (_src), (_iv), (_exp_key), (_len)))
 AES-CFB-256 Encrypt/Decrypt up to one block.
 
#define IMB_AES128_GCM_ENC(_mgr, _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)
 
#define IMB_AES256_GCM_ENC(_mgr, _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)
 
#define IMB_AES192_GCM_DEC(_mgr, _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)
 
#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)
 
#define IMB_AES192_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, _aadl)
 
#define IMB_AES256_GCM_INIT_VAR_IV(_mgr, _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)))
 
#define IMB_CHACHA20_POLY1305_INIT(_mgr, _key, _ctx, _iv, _aad, _aadl)
 
#define IMB_CHACHA20_POLY1305_ENC_UPDATE(_mgr, _key, _ctx, _dst, _src, _len)
 
#define IMB_CHACHA20_POLY1305_DEC_UPDATE(_mgr, _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)))
 
#define IMB_ZUC_EEA3_1_BUFFER(_mgr, _key, _iv, _src, _dst, _len)    ((_mgr)->eea3_1_buffer((_key), (_iv), (_src), (_dst), (_len)))
 ZUC EEA3 Confidentiality functions.
 
#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)))
 ZUC EIA3 Integrity function.
 
#define IMB_ZUC_EIA3_N_BUFFER(_mgr, _key, _iv, _src, _len, _tag, _count)    ((_mgr)->eia3_n_buffer((_key), (_iv), (_src), (_len), (_tag), (_count)))
 
#define IMB_KASUMI_F8_1_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len)    ((_mgr)->f8_1_buffer((_exp_key), (_iv), (_src), (_dst), (_len)))
 Kasumi byte-level f8 operation on a single buffer.
 
#define IMB_KASUMI_F8_1_BUFFER_BIT(_mgr, _exp_key, _iv, _src, _dst, _len, _offset)
 Kasumi bit-level f8 operation on a single buffer.
 
#define IMB_KASUMI_F8_2_BUFFER(_mgr, _exp_key, _iv1, _iv2, _src1, _dst1, _len1, _src2, _dst2, _len2)
 Kasumi byte-level f8 operation in parallel on two buffers.
 
#define IMB_KASUMI_F8_3_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _src1, _dst1, _src2, _dst2, _src3, _dst3, _len)
 kasumi byte-level f8 operation in parallel on three buffers
 
#define IMB_KASUMI_F8_4_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4, _src1, _dst1, _src2, _dst2, _src3, _dst3, _src4, _dst4, _len)
 kasumi byte-level f8 operation in parallel on four buffers
 
#define IMB_KASUMI_F8_N_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len, _count)
 Kasumi f8 operation on N buffers.
 
#define IMB_KASUMI_F9_1_BUFFER(_mgr, _exp_key, _src, _len, _tag)    ((_mgr)->f9_1_buffer((_exp_key), (_src), (_len), (_tag)))
 Kasumi bit-level f9 operation on a single buffer.
 
#define IMB_KASUMI_F9_1_BUFFER_USER(_mgr, _exp_key, _iv, _src, _len, _tag, _dir)
 Kasumi bit-level f9 operation on a single buffer.
 
#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())
 
#define IMB_SNOW3G_F8_1_BUFFER_BIT(_mgr, _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)
 
#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)
 
#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)
 
#define IMB_SNOW3G_F8_8_BUFFER_MULTIKEY(_mgr, _exp_key, _iv, _src, _dst, _len)
 
#define IMB_SNOW3G_F8_N_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len, _count)
 
#define IMB_SNOW3G_F8_N_BUFFER_MULTIKEY(_mgr, _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)
 

Typedefs

typedef struct IMB_JOB IMB_JOB
 
typedef struct kasumi_key_sched_s kasumi_key_sched_t
 
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 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)
 
typedef struct IMB_MGR IMB_MGR
 

Enumerations

enum  IMB_ARCH {
  IMB_ARCH_NONE = 0 , IMB_ARCH_NOAESNI , IMB_ARCH_SSE , IMB_ARCH_AVX ,
  IMB_ARCH_AVX2 , IMB_ARCH_AVX512 , IMB_ARCH_NUM
}
 
enum  IMB_STATUS {
  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
}
 
enum  IMB_ERR {
  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 , IMB_ERR_MAX
}
 
enum  IMB_CIPHER_MODE {
  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
}
 
enum  IMB_CIPHER_DIRECTION { IMB_DIR_ENCRYPT = 1 , IMB_DIR_DECRYPT }
 
enum  IMB_HASH_ALG {
  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
}
 
enum  IMB_CHAIN_ORDER { IMB_ORDER_CIPHER_HASH = 1 , IMB_ORDER_HASH_CIPHER }
 
enum  IMB_KEY_SIZE_BYTES { IMB_KEY_64_BYTES = 8 , IMB_KEY_128_BYTES = 16 , IMB_KEY_192_BYTES = 24 , IMB_KEY_256_BYTES = 32 }
 
enum  IMB_SGL_STATE { IMB_SGL_INIT = 0 , IMB_SGL_UPDATE , IMB_SGL_COMPLETE , IMB_SGL_ALL }
 

Functions

IMB_DLL_EXPORT const char * imb_get_version_str (void)
 Get library version in string format.
 
IMB_DLL_EXPORT unsigned imb_get_version (void)
 Get library version in numerical format.
 
IMB_DLL_EXPORT int imb_get_errno (IMB_MGR *mb_mgr)
 API to get error status.
 
IMB_DLL_EXPORT const char * imb_get_strerror (int errnum)
 API to get description for errnum.
 
IMB_DLL_EXPORT IMB_MGRalloc_mb_mgr (uint64_t flags)
 Allocates memory for multi-buffer manager instance.
 
IMB_DLL_EXPORT void free_mb_mgr (IMB_MGR *ptr)
 Frees memory allocated previously by alloc_mb_mgr()
 
IMB_DLL_EXPORT size_t imb_get_mb_mgr_size (void)
 Calculates necessary memory size for IMB_MGR.
 
IMB_DLL_EXPORT IMB_MGRimb_set_pointers_mb_mgr (void *ptr, const uint64_t flags, const unsigned reset_mgr)
 Initializes IMB_MGR pointers to out-of-order managers with use of externally allocated memory.
 
IMB_DLL_EXPORT uint64_t imb_get_feature_flags (void)
 Retrieves the bitmask with the features supported by the library, without having to allocate/initialize IMB_MGR;.
 
IMB_DLL_EXPORT void init_mb_mgr_avx (IMB_MGR *state)
 Initialize Multi-Buffer Manager structure.
 
IMB_DLL_EXPORT void init_mb_mgr_avx2 (IMB_MGR *state)
 Initialize Multi-Buffer Manager structure.
 
IMB_DLL_EXPORT void init_mb_mgr_avx512 (IMB_MGR *state)
 Initialize Multi-Buffer Manager structure.
 
IMB_DLL_EXPORT void init_mb_mgr_sse (IMB_MGR *state)
 Initialize Multi-Buffer Manager structure.
 
IMB_DLL_EXPORT IMB_JOBsubmit_job_avx (IMB_MGR *state)
 Submit job for processing after validating.
 
IMB_DLL_EXPORT IMB_JOBsubmit_job_avx2 (IMB_MGR *state)
 Submit job for processing after validating.
 
IMB_DLL_EXPORT IMB_JOBsubmit_job_avx512 (IMB_MGR *state)
 Submit job for processing after validating.
 
IMB_DLL_EXPORT IMB_JOBsubmit_job_sse (IMB_MGR *state)
 Submit job for processing after validating.
 
IMB_DLL_EXPORT IMB_JOBsubmit_job_nocheck_avx (IMB_MGR *state)
 Submit job for processing without validating.
 
IMB_DLL_EXPORT IMB_JOBsubmit_job_nocheck_avx2 (IMB_MGR *state)
 Submit job for processing without validating.
 
IMB_DLL_EXPORT IMB_JOBsubmit_job_nocheck_avx512 (IMB_MGR *state)
 Submit job for processing without validating.
 
IMB_DLL_EXPORT IMB_JOBsubmit_job_nocheck_sse (IMB_MGR *state)
 Submit job for processing without validating.
 
IMB_DLL_EXPORT IMB_JOBflush_job_avx (IMB_MGR *state)
 Force processing until next job in queue is completed.
 
IMB_DLL_EXPORT IMB_JOBflush_job_avx2 (IMB_MGR *state)
 Force processing until next job in queue is completed.
 
IMB_DLL_EXPORT IMB_JOBflush_job_avx512 (IMB_MGR *state)
 Force processing until next job in queue is completed.
 
IMB_DLL_EXPORT IMB_JOBflush_job_sse (IMB_MGR *state)
 Force processing until next job in queue is completed.
 
IMB_DLL_EXPORT uint32_t queue_size_avx (IMB_MGR *state)
 Get number of jobs queued to be processed.
 
IMB_DLL_EXPORT uint32_t queue_size_avx2 (IMB_MGR *state)
 Get number of jobs queued to be processed.
 
IMB_DLL_EXPORT uint32_t queue_size_avx512 (IMB_MGR *state)
 Get number of jobs queued to be processed.
 
IMB_DLL_EXPORT uint32_t queue_size_sse (IMB_MGR *state)
 Get number of jobs queued to be processed.
 
IMB_DLL_EXPORT IMB_JOBget_completed_job_avx (IMB_MGR *state)
 Get next completed job.
 
IMB_DLL_EXPORT IMB_JOBget_completed_job_avx2 (IMB_MGR *state)
 Get next completed job.
 
IMB_DLL_EXPORT IMB_JOBget_completed_job_avx512 (IMB_MGR *state)
 Get next completed job.
 
IMB_DLL_EXPORT IMB_JOBget_completed_job_sse (IMB_MGR *state)
 Get next completed job.
 
IMB_DLL_EXPORT IMB_JOBget_next_job_avx (IMB_MGR *state)
 Get next available job.
 
IMB_DLL_EXPORT IMB_JOBget_next_job_avx2 (IMB_MGR *state)
 Get next available job.
 
IMB_DLL_EXPORT IMB_JOBget_next_job_avx512 (IMB_MGR *state)
 Get next available job.
 
IMB_DLL_EXPORT IMB_JOBget_next_job_sse (IMB_MGR *state)
 Get next available job.
 
IMB_DLL_EXPORT void init_mb_mgr_auto (IMB_MGR *state, IMB_ARCH *arch)
 Automatically initialize most performant Multi-buffer manager based on CPU features.
 
IMB_DLL_EXPORT int des_key_schedule (uint64_t *ks, const void *key)
 DES key schedule set up.
 
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.
 
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.
 
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)
 
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.
 
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.
 
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.
 
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.
 
IMB_DLL_EXPORT void aes_gcm_enc_192_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-192 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_enc_192_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-192 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_enc_256_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-256 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_enc_256_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-256 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_enc_256_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-256 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_dec_128_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-128 Decryption.
 
IMB_DLL_EXPORT void aes_gcm_dec_128_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-128 Decryption.
 
IMB_DLL_EXPORT void aes_gcm_dec_128_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-128 Decryption.
 
IMB_DLL_EXPORT 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.
 
IMB_DLL_EXPORT void aes_gcm_dec_192_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-192 Decryption.
 
IMB_DLL_EXPORT void aes_gcm_dec_192_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-192 Decryption.
 
IMB_DLL_EXPORT void aes_gcm_dec_256_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-256 Decryption.
 
IMB_DLL_EXPORT void aes_gcm_dec_256_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
 AES-GCM-256 Decryption.
 
IMB_DLL_EXPORT void aes_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.
 
IMB_DLL_EXPORT void aes_gcm_init_128_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
 Initialize a gcm_context_data structure to prepare for AES-GCM-128 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_init_128_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
 Initialize a gcm_context_data structure to prepare for AES-GCM-128 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_init_128_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
 Initialize a gcm_context_data structure to prepare for AES-GCM-128 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_init_192_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
 Initialize a gcm_context_data structure to prepare for AES-GCM-192 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_init_192_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
 Initialize a gcm_context_data structure to prepare for AES-GCM-192 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_init_192_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
 Initialize a gcm_context_data structure to prepare for AES-GCM-192 Encryption.
 
IMB_DLL_EXPORT 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.
 
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.
 
IMB_DLL_EXPORT void aes_gcm_init_256_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len)
 Initialize a gcm_context_data structure to prepare for AES-GCM-256 Encryption.
 
IMB_DLL_EXPORT void aes_gcm_enc_128_update_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Encrypt a block of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_enc_128_update_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Encrypt a block of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_enc_128_update_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Encrypt a block of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_enc_192_update_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Encrypt a block of a AES-GCM-192 encryption message.
 
IMB_DLL_EXPORT 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.
 
IMB_DLL_EXPORT void aes_gcm_enc_192_update_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Encrypt a block of a AES-GCM-192 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_enc_256_update_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Encrypt a block of a AES-GCM-256 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_enc_256_update_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Encrypt a block of a AES-GCM-256 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_enc_256_update_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Encrypt a block of a AES-GCM-256 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_128_update_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Decrypt a block of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_128_update_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Decrypt a block of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_128_update_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Decrypt a block of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_192_update_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Decrypt a block of a AES-GCM-192 encryption message.
 
IMB_DLL_EXPORT void 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.
 
IMB_DLL_EXPORT void aes_gcm_dec_192_update_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Decrypt a block of a AES-GCM-192 encryption message.
 
IMB_DLL_EXPORT 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.
 
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_DLL_EXPORT void aes_gcm_dec_256_update_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
 Decrypt a block of a AES-GCM-256 encryption message.
 
IMB_DLL_EXPORT void 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.
 
IMB_DLL_EXPORT void aes_gcm_enc_128_finalize_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End encryption of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_enc_128_finalize_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End encryption of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT 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.
 
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.
 
IMB_DLL_EXPORT void aes_gcm_enc_192_finalize_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End encryption of a AES-GCM-192 encryption message.
 
IMB_DLL_EXPORT void aes_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_DLL_EXPORT void aes_gcm_enc_256_finalize_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End encryption of a AES-GCM-256 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_enc_256_finalize_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End encryption of a AES-GCM-256 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_128_finalize_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End decryption of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_128_finalize_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End decryption of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_128_finalize_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End decryption of a AES-GCM-128 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_192_finalize_sse (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End decryption of a AES-GCM-192 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_192_finalize_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End decryption of a AES-GCM-192 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_192_finalize_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End decryption of a AES-GCM-192 encryption message.
 
IMB_DLL_EXPORT void aes_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.
 
IMB_DLL_EXPORT void aes_gcm_dec_256_finalize_avx_gen2 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End decryption of a AES-GCM-256 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_dec_256_finalize_avx_gen4 (const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *auth_tag, uint64_t auth_tag_len)
 End decryption of a AES-GCM-256 encryption message.
 
IMB_DLL_EXPORT void aes_gcm_precomp_128_sse (struct gcm_key_data *key_data)
 Precomputation of AES-GCM-128 HashKey constants.
 
IMB_DLL_EXPORT void aes_gcm_precomp_128_avx_gen2 (struct gcm_key_data *key_data)
 Precomputation of AES-GCM-128 HashKey constants.
 
IMB_DLL_EXPORT void aes_gcm_precomp_128_avx_gen4 (struct gcm_key_data *key_data)
 Precomputation of AES-GCM-128 HashKey constants.
 
IMB_DLL_EXPORT void aes_gcm_precomp_192_sse (struct gcm_key_data *key_data)
 Precomputation of AES-GCM-192 HashKey constants.
 
IMB_DLL_EXPORT void aes_gcm_precomp_192_avx_gen2 (struct gcm_key_data *key_data)
 Precomputation of AES-GCM-192 HashKey constants.
 
IMB_DLL_EXPORT void aes_gcm_precomp_192_avx_gen4 (struct gcm_key_data *key_data)
 Precomputation of AES-GCM-192 HashKey constants.
 
IMB_DLL_EXPORT void aes_gcm_precomp_256_sse (struct gcm_key_data *key_data)
 Precomputation of AES-GCM-256 HashKey constants.
 
IMB_DLL_EXPORT void aes_gcm_precomp_256_avx_gen2 (struct gcm_key_data *key_data)
 Precomputation of AES-GCM-256 HashKey constants.
 
IMB_DLL_EXPORT void aes_gcm_precomp_256_avx_gen4 (struct gcm_key_data *key_data)
 Precomputation of AES-GCM-256 HashKey constants.
 
IMB_DLL_EXPORT void aes_gcm_pre_128_sse (const void *key, struct gcm_key_data *key_data)
 Pre-processes AES-GCM-128 key data.
 
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.
 
IMB_DLL_EXPORT void aes_gcm_pre_128_avx_gen4 (const void *key, struct gcm_key_data *key_data)
 Pre-processes AES-GCM-128 key data.
 
IMB_DLL_EXPORT void aes_gcm_pre_192_sse (const void *key, struct gcm_key_data *key_data)
 Pre-processes AES-GCM-192 key data.
 
IMB_DLL_EXPORT void aes_gcm_pre_192_avx_gen2 (const void *key, struct gcm_key_data *key_data)
 Pre-processes AES-GCM-192 key data.
 
IMB_DLL_EXPORT void aes_gcm_pre_192_avx_gen4 (const void *key, struct gcm_key_data *key_data)
 Pre-processes AES-GCM-192 key data.
 
IMB_DLL_EXPORT void aes_gcm_pre_256_sse (const void *key, struct gcm_key_data *key_data)
 Pre-processes AES-GCM-256 key data.
 
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.
 
IMB_DLL_EXPORT void aes_gcm_pre_256_avx_gen4 (const void *key, struct gcm_key_data *key_data)
 Pre-processes AES-GCM-256 key data.
 
IMB_DLL_EXPORT int zuc_eea3_iv_gen (const uint32_t count, const uint8_t bearer, const uint8_t dir, void *iv_ptr)
 Generation of ZUC-EEA3 Initialization Vector.
 
IMB_DLL_EXPORT 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.
 
IMB_DLL_EXPORT int kasumi_f8_iv_gen (const uint32_t count, const uint8_t bearer, const uint8_t dir, void *iv_ptr)
 Generation of KASUMI F8 Initialization Vector.
 
IMB_DLL_EXPORT int kasumi_f9_iv_gen (const uint32_t count, const uint32_t fresh, void *iv_ptr)
 Generation of KASUMI F9 Initialization Vector.
 
IMB_DLL_EXPORT int snow3g_f8_iv_gen (const uint32_t count, const uint8_t bearer, const uint8_t dir, void *iv_ptr)
 Generation of SNOW3G F8 Initialization Vector.
 
IMB_DLL_EXPORT int snow3g_f9_iv_gen (const uint32_t count, const uint32_t fresh, const uint8_t dir, void *iv_ptr)
 Generation of SNOW3G F9 Initialization Vector.
 
IMB_DLL_EXPORT void imb_clear_mem (void *mem, const size_t size)
 Force clearing/zeroing of memory.
 
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.
 
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.
 
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.
 

Macro Definition Documentation

◆ __forceinline

#define __forceinline    static __forceinline

◆ DECLARE_ALIGNED

#define DECLARE_ALIGNED (   decl,
  alignval 
)     __declspec(align(alignval)) decl

Macros for aligning data structures and function inlines

◆ IMB_AES128_CFB_ONE

#define IMB_AES128_CFB_ONE (   _mgr,
  _dst,
  _src,
  _iv,
  _exp_key,
  _len 
)     ((_mgr)->aes128_cfb_one((_dst), (_src), (_iv), (_exp_key), (_len)))

AES-CFB-128 Encrypt/Decrypt up to one block.

Processes only one buffer at a time. Designed to manage partial blocks of DOCSIS 3.1 SEC BPI.

Parameters
[in]_mgrPointer to multi-buffer structure
[out]_dstPlaintext/Ciphertext output
[in]_srcPlaintext/Ciphertext input
[in]_ivPointer to 16 byte IV
[in]_exp_keyPointer to expanded AES keys
[in]_lenLength of data in bytes

◆ IMB_AES128_GCM_DEC

#define IMB_AES128_GCM_DEC (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len,
  _iv,
  _aad,
  _aadl,
  _tag,
  _tagl 
)
Value:
((_mgr)->gcm128_dec((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
(_aad), (_aadl), (_tag), (_tagl)))

◆ IMB_AES128_GCM_DEC_FINALIZE

#define IMB_AES128_GCM_DEC_FINALIZE (   _mgr,
  _exp_key,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->gcm128_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl)))

◆ IMB_AES128_GCM_DEC_UPDATE

#define IMB_AES128_GCM_DEC_UPDATE (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len 
)     ((_mgr)->gcm128_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len)))

◆ IMB_AES128_GCM_ENC

#define IMB_AES128_GCM_ENC (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len,
  _iv,
  _aad,
  _aadl,
  _tag,
  _tagl 
)
Value:
((_mgr)->gcm128_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
(_aad), (_aadl), (_tag), (_tagl)))

◆ IMB_AES128_GCM_ENC_FINALIZE

#define IMB_AES128_GCM_ENC_FINALIZE (   _mgr,
  _exp_key,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->gcm128_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl)))

◆ IMB_AES128_GCM_ENC_UPDATE

#define IMB_AES128_GCM_ENC_UPDATE (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len 
)     ((_mgr)->gcm128_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len)))

◆ IMB_AES128_GCM_INIT

#define IMB_AES128_GCM_INIT (   _mgr,
  _exp_key,
  _ctx,
  _iv,
  _aad,
  _aadl 
)     ((_mgr)->gcm128_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl)))

◆ IMB_AES128_GCM_INIT_VAR_IV

#define IMB_AES128_GCM_INIT_VAR_IV (   _mgr,
  _exp_key,
  _ctx,
  _iv,
  _ivl,
  _aad,
  _aadl 
)
Value:
((_mgr)->gcm128_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl), \
(_aad), (_aadl)))

◆ IMB_AES128_GCM_PRE

#define IMB_AES128_GCM_PRE (   _mgr,
  _key,
  _exp_key 
)     ((_mgr)->gcm128_pre((_key), (_exp_key)))

◆ IMB_AES128_GCM_PRECOMP

#define IMB_AES128_GCM_PRECOMP (   _mgr,
  _key 
)     ((_mgr)->gcm128_precomp((_key)))

◆ IMB_AES128_GMAC_FINALIZE

#define IMB_AES128_GMAC_FINALIZE (   _mgr,
  _exp_key,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->gmac128_finalize((_exp_key), (_ctx), (_tag), (_tagl)))

◆ IMB_AES128_GMAC_INIT

#define IMB_AES128_GMAC_INIT (   _mgr,
  _exp_key,
  _ctx,
  _iv,
  _ivl 
)     ((_mgr)->gmac128_init((_exp_key), (_ctx), (_iv), (_ivl)))

◆ IMB_AES128_GMAC_UPDATE

#define IMB_AES128_GMAC_UPDATE (   _mgr,
  _exp_key,
  _ctx,
  _src,
  _len 
)     ((_mgr)->gmac128_update((_exp_key), (_ctx), (_src), (_len)))

◆ IMB_AES192_GCM_DEC

#define IMB_AES192_GCM_DEC (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len,
  _iv,
  _aad,
  _aadl,
  _tag,
  _tagl 
)
Value:
((_mgr)->gcm192_dec((_exp_key), (_ctx), (_dst), (_src), (_len), \
(_iv), (_aad), (_aadl), (_tag), (_tagl)))

◆ IMB_AES192_GCM_DEC_FINALIZE

#define IMB_AES192_GCM_DEC_FINALIZE (   _mgr,
  _exp_key,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->gcm192_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl)))

◆ IMB_AES192_GCM_DEC_UPDATE

#define IMB_AES192_GCM_DEC_UPDATE (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len 
)     ((_mgr)->gcm192_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len)))

◆ IMB_AES192_GCM_ENC

#define IMB_AES192_GCM_ENC (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len,
  _iv,
  _aad,
  _aadl,
  _tag,
  _tagl 
)
Value:
((_mgr)->gcm192_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
(_aad), (_aadl), (_tag), (_tagl)))

◆ IMB_AES192_GCM_ENC_FINALIZE

#define IMB_AES192_GCM_ENC_FINALIZE (   _mgr,
  _exp_key,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->gcm192_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl)))

◆ IMB_AES192_GCM_ENC_UPDATE

#define IMB_AES192_GCM_ENC_UPDATE (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len 
)     ((_mgr)->gcm192_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len)))

◆ IMB_AES192_GCM_INIT

#define IMB_AES192_GCM_INIT (   _mgr,
  _exp_key,
  _ctx,
  _iv,
  _aad,
  _aadl 
)     ((_mgr)->gcm192_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl)))

◆ IMB_AES192_GCM_INIT_VAR_IV

#define IMB_AES192_GCM_INIT_VAR_IV (   _mgr,
  _exp_key,
  _ctx,
  _iv,
  _ivl,
  _aad,
  _aadl 
)
Value:
((_mgr)->gcm192_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl), \
(_aad), (_aadl)))

◆ IMB_AES192_GCM_PRE

#define IMB_AES192_GCM_PRE (   _mgr,
  _key,
  _exp_key 
)     ((_mgr)->gcm192_pre((_key), (_exp_key)))

◆ IMB_AES192_GCM_PRECOMP

#define IMB_AES192_GCM_PRECOMP (   _mgr,
  _key 
)     ((_mgr)->gcm192_precomp((_key)))

◆ IMB_AES192_GMAC_FINALIZE

#define IMB_AES192_GMAC_FINALIZE (   _mgr,
  _exp_key,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->gmac192_finalize((_exp_key), (_ctx), (_tag), (_tagl)))

◆ IMB_AES192_GMAC_INIT

#define IMB_AES192_GMAC_INIT (   _mgr,
  _exp_key,
  _ctx,
  _iv,
  _ivl 
)     ((_mgr)->gmac192_init((_exp_key), (_ctx), (_iv), (_ivl)))

◆ IMB_AES192_GMAC_UPDATE

#define IMB_AES192_GMAC_UPDATE (   _mgr,
  _exp_key,
  _ctx,
  _src,
  _len 
)     ((_mgr)->gmac192_update((_exp_key), (_ctx), (_src), (_len)))

◆ IMB_AES256_CFB_ONE

#define IMB_AES256_CFB_ONE (   _mgr,
  _dst,
  _src,
  _iv,
  _exp_key,
  _len 
)     ((_mgr)->aes256_cfb_one((_dst), (_src), (_iv), (_exp_key), (_len)))

AES-CFB-256 Encrypt/Decrypt up to one block.

Processes only one buffer at a time. Designed to manage partial blocks of DOCSIS 3.1 SEC BPI.

Parameters
[in]_mgrPointer to multi-buffer structure
[out]_dstPlaintext/Ciphertext output
[in]_srcPlaintext/Ciphertext input
[in]_ivPointer to 16 byte IV
[in]_exp_keyPointer to expanded AES keys
[in]_lenLength of data in bytes

◆ IMB_AES256_GCM_DEC

#define IMB_AES256_GCM_DEC (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len,
  _iv,
  _aad,
  _aadl,
  _tag,
  _tagl 
)
Value:
((_mgr)->gcm256_dec((_exp_key), (_ctx), (_dst), (_src), (_len), \
(_iv), (_aad), (_aadl), (_tag), (_tagl)))

◆ IMB_AES256_GCM_DEC_FINALIZE

#define IMB_AES256_GCM_DEC_FINALIZE (   _mgr,
  _exp_key,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->gcm256_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl)))

◆ IMB_AES256_GCM_DEC_UPDATE

#define IMB_AES256_GCM_DEC_UPDATE (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len 
)     ((_mgr)->gcm256_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len)))

◆ IMB_AES256_GCM_ENC

#define IMB_AES256_GCM_ENC (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len,
  _iv,
  _aad,
  _aadl,
  _tag,
  _tagl 
)
Value:
((_mgr)->gcm256_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
(_aad), (_aadl), (_tag), (_tagl)))

◆ IMB_AES256_GCM_ENC_FINALIZE

#define IMB_AES256_GCM_ENC_FINALIZE (   _mgr,
  _exp_key,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->gcm256_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl)))

◆ IMB_AES256_GCM_ENC_UPDATE

#define IMB_AES256_GCM_ENC_UPDATE (   _mgr,
  _exp_key,
  _ctx,
  _dst,
  _src,
  _len 
)     ((_mgr)->gcm256_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len)))

◆ IMB_AES256_GCM_INIT

#define IMB_AES256_GCM_INIT (   _mgr,
  _exp_key,
  _ctx,
  _iv,
  _aad,
  _aadl 
)     ((_mgr)->gcm256_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl)))

◆ IMB_AES256_GCM_INIT_VAR_IV

#define IMB_AES256_GCM_INIT_VAR_IV (   _mgr,
  _exp_key,
  _ctx,
  _iv,
  _ivl,
  _aad,
  _aadl 
)
Value:
((_mgr)->gcm256_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl), \
(_aad), (_aadl)))

◆ IMB_AES256_GCM_PRE

#define IMB_AES256_GCM_PRE (   _mgr,
  _key,
  _exp_key 
)     ((_mgr)->gcm256_pre((_key), (_exp_key)))

◆ IMB_AES256_GCM_PRECOMP

#define IMB_AES256_GCM_PRECOMP (   _mgr,
  _key 
)     ((_mgr)->gcm256_precomp((_key)))

◆ IMB_AES256_GMAC_FINALIZE

#define IMB_AES256_GMAC_FINALIZE (   _mgr,
  _exp_key,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->gmac256_finalize((_exp_key), (_ctx), (_tag), (_tagl)))

◆ IMB_AES256_GMAC_INIT

#define IMB_AES256_GMAC_INIT (   _mgr,
  _exp_key,
  _ctx,
  _iv,
  _ivl 
)     ((_mgr)->gmac256_init((_exp_key), (_ctx), (_iv), (_ivl)))

◆ IMB_AES256_GMAC_UPDATE

#define IMB_AES256_GMAC_UPDATE (   _mgr,
  _exp_key,
  _ctx,
  _src,
  _len 
)     ((_mgr)->gmac256_update((_exp_key), (_ctx), (_src), (_len)))

◆ IMB_AES_BLOCK_SIZE

#define IMB_AES_BLOCK_SIZE   16

◆ IMB_AES_CMAC_SUBKEY_GEN_128

#define IMB_AES_CMAC_SUBKEY_GEN_128 (   _mgr,
  _exp_key,
  _key1,
  _key2 
)     ((_mgr)->cmac_subkey_gen_128((_exp_key), (_key1), (_key2)))

Generate AES-128-CMAC subkeys.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyInput expanded AES-128-CMAC key
[out]_key1Subkey 1
[out]_key2Subkey 2

◆ IMB_AES_CMAC_SUBKEY_GEN_256

#define IMB_AES_CMAC_SUBKEY_GEN_256 (   _mgr,
  _exp_key,
  _key1,
  _key2 
)     ((_mgr)->cmac_subkey_gen_256((_exp_key), (_key1), (_key2)))

Generate AES-256-CMAC subkeys.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyInput expanded AES-256-CMAC key
[out]_key1Subkey 1
[out]_key2Subkey 2

◆ IMB_AES_KEYEXP_128

#define IMB_AES_KEYEXP_128 (   _mgr,
  _key,
  _enc_exp_key,
  _dec_exp_key 
)     ((_mgr)->keyexp_128((_key), (_enc_exp_key), (_dec_exp_key)))

Generate encryption/decryption AES-128 expansion keys.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_keyAES-128 key
[out]_enc_exp_keyAES-128 encryption expansion key
[out]_dec_exp_keyAES-128 decryption expansion key

◆ IMB_AES_KEYEXP_192

#define IMB_AES_KEYEXP_192 (   _mgr,
  _key,
  _enc_exp_key,
  _dec_exp_key 
)     ((_mgr)->keyexp_192((_key), (_enc_exp_key), (_dec_exp_key)))

Generate encryption/decryption AES-192 expansion keys.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_keyAES-192 key
[out]_enc_exp_keyAES-192 encryption expansion key
[out]_dec_exp_keyAES-192 decryption expansion key

◆ IMB_AES_KEYEXP_256

#define IMB_AES_KEYEXP_256 (   _mgr,
  _key,
  _enc_exp_key,
  _dec_exp_key 
)     ((_mgr)->keyexp_256((_key), (_enc_exp_key), (_dec_exp_key)))

Generate encryption/decryption AES-256 expansion keys.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_keyAES-256 key
[out]_enc_exp_keyAES-256 encryption expansion key
[out]_dec_exp_keyAES-256 decryption expansion key

◆ IMB_AES_XCBC_KEYEXP

#define IMB_AES_XCBC_KEYEXP (   _mgr,
  _key,
  _exp_key,
  _exp_key2,
  _exp_key3 
)     ((_mgr)->xcbc_keyexp((_key), (_exp_key), (_exp_key2), (_exp_key3)))

Generate AES-128-XCBC expansion keys.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_keyAES-128-XCBC key
[out]_exp_keyk1 expansion key
[out]_exp_key2k2 expansion key
[out]_exp_key3k3 expansion key

◆ IMB_ASSERT

#define IMB_ASSERT (   x)

Custom ASSERT and DIM macros

◆ IMB_CHACHA20_POLY1305_DEC_FINALIZE

#define IMB_CHACHA20_POLY1305_DEC_FINALIZE (   _mgr,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->chacha20_poly1305_finalize((_ctx), (_tag), (_tagl)))

◆ IMB_CHACHA20_POLY1305_DEC_UPDATE

#define IMB_CHACHA20_POLY1305_DEC_UPDATE (   _mgr,
  _key,
  _ctx,
  _dst,
  _src,
  _len 
)
Value:
((_mgr)->chacha20_poly1305_dec_update((_key), (_ctx), (_dst), (_src), \
(_len)))

◆ IMB_CHACHA20_POLY1305_ENC_FINALIZE

#define IMB_CHACHA20_POLY1305_ENC_FINALIZE (   _mgr,
  _ctx,
  _tag,
  _tagl 
)     ((_mgr)->chacha20_poly1305_finalize((_ctx), (_tag), (_tagl)))

◆ IMB_CHACHA20_POLY1305_ENC_UPDATE

#define IMB_CHACHA20_POLY1305_ENC_UPDATE (   _mgr,
  _key,
  _ctx,
  _dst,
  _src,
  _len 
)
Value:
((_mgr)->chacha20_poly1305_enc_update((_key), (_ctx), (_dst), (_src), \
(_len)))

◆ IMB_CHACHA20_POLY1305_INIT

#define IMB_CHACHA20_POLY1305_INIT (   _mgr,
  _key,
  _ctx,
  _iv,
  _aad,
  _aadl 
)
Value:
((_mgr)->chacha20_poly1305_init((_key), (_ctx), (_iv), (_aad), \
(_aadl)))

◆ IMB_CPUFLAGS_AVX

#define IMB_CPUFLAGS_AVX   (IMB_CPUFLAGS_SSE | IMB_FEATURE_AVX)

◆ IMB_CPUFLAGS_AVX2

#define IMB_CPUFLAGS_AVX2
Value:
#define IMB_CPUFLAGS_AVX
Definition intel-ipsec-mb.h:961
#define IMB_FEATURE_AVX2
Definition intel-ipsec-mb.h:932
#define IMB_FEATURE_BMI2
Definition intel-ipsec-mb.h:947

◆ IMB_CPUFLAGS_AVX2_T2

#define IMB_CPUFLAGS_AVX2_T2
Value:
#define IMB_FEATURE_VPCLMULQDQ
Definition intel-ipsec-mb.h:942
#define IMB_FEATURE_GFNI
Definition intel-ipsec-mb.h:945
#define IMB_CPUFLAGS_AVX2
Definition intel-ipsec-mb.h:962
#define IMB_FEATURE_SHANI
Definition intel-ipsec-mb.h:926
#define IMB_FEATURE_VAES
Definition intel-ipsec-mb.h:941

◆ IMB_CPUFLAGS_AVX2_T3

#define IMB_CPUFLAGS_AVX2_T3   (IMB_CPUFLAGS_AVX2_T2 | IMB_FEATURE_AVX_IFMA)

◆ IMB_CPUFLAGS_AVX512

#define IMB_CPUFLAGS_AVX512   (IMB_CPUFLAGS_AVX2 | IMB_FEATURE_AVX512_SKX)

◆ IMB_CPUFLAGS_AVX512_T2

#define IMB_CPUFLAGS_AVX512_T2
Value:
#define IMB_FEATURE_AVX512_IFMA
Definition intel-ipsec-mb.h:946
#define IMB_CPUFLAGS_AVX512
Definition intel-ipsec-mb.h:964

◆ IMB_CPUFLAGS_AVX_T2

#define IMB_CPUFLAGS_AVX_T2

◆ IMB_CPUFLAGS_NO_AESNI

#define IMB_CPUFLAGS_NO_AESNI   (IMB_FEATURE_SSE4_2 | IMB_FEATURE_CMOV)

CPU flags needed for each implementation

◆ IMB_CPUFLAGS_SSE

#define IMB_CPUFLAGS_SSE
Value:
#define IMB_FEATURE_AESNI
Definition intel-ipsec-mb.h:927
#define IMB_FEATURE_PCLMULQDQ
Definition intel-ipsec-mb.h:928
#define IMB_CPUFLAGS_NO_AESNI
Definition intel-ipsec-mb.h:956

◆ IMB_CPUFLAGS_SSE_T2

#define IMB_CPUFLAGS_SSE_T2   (IMB_CPUFLAGS_SSE | IMB_FEATURE_SHANI)

◆ IMB_CPUFLAGS_SSE_T3

#define IMB_CPUFLAGS_SSE_T3   (IMB_CPUFLAGS_SSE_T2 | IMB_FEATURE_GFNI)

◆ IMB_CRC10_IUUP_DATA

#define IMB_CRC10_IUUP_DATA (   _mgr,
  _src,
  _len 
)     (_mgr)->crc10_iuup_data(_src, _len)

IUUP CRC10 function (3GPP TS 25.415)

◆ IMB_CRC11_FP_HEADER

#define IMB_CRC11_FP_HEADER (   _mgr,
  _src,
  _len 
)     (_mgr)->crc11_fp_header(_src, _len)

Framing Protocol CRC11 function (3GPP TS 25.435, 3GPP TS 25.427)

◆ IMB_CRC16_FP_DATA

#define IMB_CRC16_FP_DATA (   _mgr,
  _src,
  _len 
)     (_mgr)->crc16_fp_data(_src, _len)

Framing Protocol CRC16 function (3GPP TS 25.435, 3GPP TS 25.427)

◆ IMB_CRC16_X25

#define IMB_CRC16_X25 (   _mgr,
  _src,
  _len 
)     (_mgr)->crc16_x25(_src, _len)

CRC16 X25 function

◆ IMB_CRC24_LTE_A

#define IMB_CRC24_LTE_A (   _mgr,
  _src,
  _len 
)     (_mgr)->crc24_lte_a(_src, _len)

LTE CRC24A function

◆ IMB_CRC24_LTE_B

#define IMB_CRC24_LTE_B (   _mgr,
  _src,
  _len 
)     (_mgr)->crc24_lte_b(_src, _len)

LTE CRC24B function

◆ IMB_CRC32_ETHERNET_FCS

#define IMB_CRC32_ETHERNET_FCS (   _mgr,
  _src,
  _len 
)     (_mgr)->crc32_ethernet_fcs(_src, _len)

CRC32 Ethernet FCS function

◆ IMB_CRC32_SCTP

#define IMB_CRC32_SCTP (   _mgr,
  _src,
  _len 
)     (_mgr)->crc32_sctp(_src, _len)

CRC32 SCTP function

◆ IMB_CRC32_WIMAX_OFDMA_DATA

#define IMB_CRC32_WIMAX_OFDMA_DATA (   _mgr,
  _src,
  _len 
)     (_mgr)->crc32_wimax_ofdma_data(_src, _len)

WIMAX OFDMA DATA CRC32 function (IEEE 802.16)

◆ IMB_CRC6_IUUP_HEADER

#define IMB_CRC6_IUUP_HEADER (   _mgr,
  _src,
  _len 
)     (_mgr)->crc6_iuup_header(_src, _len)

IUUP CRC6 function (3GPP TS 25.415)

◆ IMB_CRC7_FP_HEADER

#define IMB_CRC7_FP_HEADER (   _mgr,
  _src,
  _len 
)     (_mgr)->crc7_fp_header(_src, _len)

Framing Protocol CRC7 function (3GPP TS 25.435, 3GPP TS 25.427)

◆ IMB_CRC8_WIMAX_OFDMA_HCS

#define IMB_CRC8_WIMAX_OFDMA_HCS (   _mgr,
  _src,
  _len 
)     (_mgr)->crc8_wimax_ofdma_hcs(_src, _len)

WIMAX OFDMA HCS CRC8 function (IEEE 802.16)

◆ IMB_DES_BLOCK_SIZE

#define IMB_DES_BLOCK_SIZE   8

◆ IMB_DES_KEY_SCHED_SIZE

#define IMB_DES_KEY_SCHED_SIZE   (16 * 8)

Algorithm constants 16 rounds x 8 bytes

◆ IMB_DES_KEYSCHED

#define IMB_DES_KEYSCHED (   _mgr,
  _exp_key,
  _key 
)     ((_mgr)->des_key_sched((_exp_key), (_key)))

◆ IMB_DIM

#define IMB_DIM (   x)    (sizeof(x) / sizeof(x[0]))

◆ IMB_DLL_EXPORT

#define IMB_DLL_EXPORT

Windows DLL export is done via DEF file

◆ IMB_DLL_LOCAL

#define IMB_DLL_LOCAL

◆ IMB_DOCSIS_CRC32_MIN_ETH_PDU_SIZE

#define IMB_DOCSIS_CRC32_MIN_ETH_PDU_SIZE   14

Minimum Ethernet frame size to calculate CRC32 Source Address (6 bytes) + Destination Address (6 bytes) + Type/Len (2 bytes)

◆ IMB_DOCSIS_CRC32_TAG_SIZE

#define IMB_DOCSIS_CRC32_TAG_SIZE   4

◆ IMB_FEATURE_AESNI

#define IMB_FEATURE_AESNI   (1ULL << 1)

◆ IMB_FEATURE_AESNI_EMU

#define IMB_FEATURE_AESNI_EMU   (1ULL << 19)

◆ IMB_FEATURE_AVX

#define IMB_FEATURE_AVX   (1ULL << 5)

◆ IMB_FEATURE_AVX2

#define IMB_FEATURE_AVX2   (1ULL << 6)

◆ IMB_FEATURE_AVX512_IFMA

#define IMB_FEATURE_AVX512_IFMA   (1ULL << 17)

◆ IMB_FEATURE_AVX512_SKX

#define IMB_FEATURE_AVX512_SKX
Value:
#define IMB_FEATURE_AVX512BW
Definition intel-ipsec-mb.h:936
#define IMB_FEATURE_AVX512VL
Definition intel-ipsec-mb.h:937
#define IMB_FEATURE_AVX512DQ
Definition intel-ipsec-mb.h:934
#define IMB_FEATURE_AVX512F
Definition intel-ipsec-mb.h:933
#define IMB_FEATURE_AVX512CD
Definition intel-ipsec-mb.h:935

◆ IMB_FEATURE_AVX512BW

#define IMB_FEATURE_AVX512BW   (1ULL << 10)

◆ IMB_FEATURE_AVX512CD

#define IMB_FEATURE_AVX512CD   (1ULL << 9)

◆ IMB_FEATURE_AVX512DQ

#define IMB_FEATURE_AVX512DQ   (1ULL << 8)

◆ IMB_FEATURE_AVX512F

#define IMB_FEATURE_AVX512F   (1ULL << 7)

◆ IMB_FEATURE_AVX512VL

#define IMB_FEATURE_AVX512VL   (1ULL << 11)

◆ IMB_FEATURE_AVX_IFMA

#define IMB_FEATURE_AVX_IFMA   (1ULL << 22)

◆ IMB_FEATURE_BMI2

#define IMB_FEATURE_BMI2   (1ULL << 18)

◆ IMB_FEATURE_CMOV

#define IMB_FEATURE_CMOV   (1ULL << 3)

◆ IMB_FEATURE_GFNI

#define IMB_FEATURE_GFNI   (1ULL << 16)

◆ IMB_FEATURE_PCLMULQDQ

#define IMB_FEATURE_PCLMULQDQ   (1ULL << 2)

◆ IMB_FEATURE_SAFE_DATA

#define IMB_FEATURE_SAFE_DATA   (1ULL << 14)

◆ IMB_FEATURE_SAFE_PARAM

#define IMB_FEATURE_SAFE_PARAM   (1ULL << 15)

◆ IMB_FEATURE_SELF_TEST

#define IMB_FEATURE_SELF_TEST   (1ULL << 20) /* self-test feature present */

◆ IMB_FEATURE_SELF_TEST_PASS

#define IMB_FEATURE_SELF_TEST_PASS   (1ULL << 21) /* self-test passed */

◆ IMB_FEATURE_SHANI

#define IMB_FEATURE_SHANI   (1ULL << 0)

Multi-buffer manager detected features

  • if bit is set then hardware supports given extension
  • valid after call to init_mb_mgr() or alloc_mb_mgr()
  • some HW supported features can be disabled via IMB_FLAG_xxx (see above)

◆ IMB_FEATURE_SSE4_2

#define IMB_FEATURE_SSE4_2   (1ULL << 4)

◆ IMB_FEATURE_VAES

#define IMB_FEATURE_VAES   (1ULL << 12)

◆ IMB_FEATURE_VPCLMULQDQ

#define IMB_FEATURE_VPCLMULQDQ   (1ULL << 13)

◆ IMB_FLAG_AESNI_OFF

#define IMB_FLAG_AESNI_OFF   (1ULL << 1)

disable use of AESNI extension

◆ IMB_FLAG_GFNI_OFF

#define IMB_FLAG_GFNI_OFF   (1ULL << 2)

disable use of GFNI extension

◆ IMB_FLAG_SHANI_OFF

#define IMB_FLAG_SHANI_OFF   (1ULL << 0)

disable use of SHANI extension

◆ IMB_FLUSH_BURST

#define IMB_FLUSH_BURST (   _mgr,
  _max_jobs,
  _jobs 
)     ((_mgr)->flush_burst((_mgr), (_max_jobs), (_jobs)))

Force up to max_jobs outstanding jobs to completion.

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
[in]_max_jobsMaximum number of jobs to flush
[out]_jobsList of pointers to completed jobs
Returns
Number of completed jobs

◆ IMB_FLUSH_JOB

#define IMB_FLUSH_JOB (   _mgr)    ((_mgr)->flush_job((_mgr)))

Force processing until next job in queue is completed.

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no more jobs to process

◆ IMB_GCM_128_KEY_LEN

#define IMB_GCM_128_KEY_LEN   (16)

◆ IMB_GCM_192_KEY_LEN

#define IMB_GCM_192_KEY_LEN   (24)

◆ IMB_GCM_256_KEY_LEN

#define IMB_GCM_256_KEY_LEN   (32)

◆ IMB_GCM_BLOCK_LEN

#define IMB_GCM_BLOCK_LEN   16

◆ IMB_GCM_ENC_KEY_LEN

#define IMB_GCM_ENC_KEY_LEN   16

◆ IMB_GCM_IV_DATA_LEN

#define IMB_GCM_IV_DATA_LEN   (12)

IV data is limited to 16 bytes as follows: 12 bytes is provided by an application - pre-counter block j0: 4 byte salt (from Security Association) concatenated with 8 byte Initialization Vector (from IPSec ESP Payload). 4 byte value 0x00000001 is padded automatically by the library - there is no need to add these 4 bytes on application side anymore.

◆ IMB_GCM_KEY_SETS

#define IMB_GCM_KEY_SETS   (15)

exp key + 14 exp round keys

◆ IMB_GET_COMPLETED_JOB

#define IMB_GET_COMPLETED_JOB (   _mgr)    ((_mgr)->get_completed_job((_mgr)))

Get next completed job.

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if next job not complete

◆ IMB_GET_NEXT_BURST

#define IMB_GET_NEXT_BURST (   _mgr,
  _n_jobs,
  _jobs 
)     ((_mgr)->get_next_burst((_mgr), (_n_jobs), (_jobs)))

Get next available burst (list of pointers to available IMB_JOB structures).

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
[in]_n_jobsRequested number of burst jobs
[out]_jobsList of pointers to returned jobs
Returns
Number of returned jobs. May be less than number of requested jobs if not enough space in queue. IMB_FLUSH_BURST() can be used to free up space.

◆ IMB_GET_NEXT_JOB

#define IMB_GET_NEXT_JOB (   _mgr)    ((_mgr)->get_next_job((_mgr)))

Get next available job.

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
Returns
Pointer to next free IMB_JOB in the queue

◆ IMB_GHASH

#define IMB_GHASH (   _mgr,
  _exp_key,
  _src,
  _len,
  _tag,
  _tagl 
)     ((_mgr)->ghash((_exp_key), (_src), (_len), (_tag), (_tagl)))

◆ IMB_GHASH_PRE

#define IMB_GHASH_PRE (   _mgr,
  _key,
  _exp_key 
)     ((_mgr)->ghash_pre((_key), (_exp_key)))

◆ IMB_HEC_32

#define IMB_HEC_32 (   _mgr,
  _src 
)    ((_mgr)->hec_32(_src))

HEC compute functions

◆ IMB_HEC_64

#define IMB_HEC_64 (   _mgr,
  _src 
)    ((_mgr)->hec_64(_src))

◆ IMB_KASUMI_BLOCK_SIZE

#define IMB_KASUMI_BLOCK_SIZE   8

◆ IMB_KASUMI_DIGEST_SIZE

#define IMB_KASUMI_DIGEST_SIZE   4

◆ IMB_KASUMI_F8_1_BUFFER

#define IMB_KASUMI_F8_1_BUFFER (   _mgr,
  _exp_key,
  _iv,
  _src,
  _dst,
  _len 
)     ((_mgr)->f8_1_buffer((_exp_key), (_iv), (_src), (_dst), (_len)))

Kasumi byte-level f8 operation on a single buffer.

This function performs kasumi f8 operation on a single buffer. The key has already been scheduled with kasumi_init_f8_key_sched(). No extra bits are modified.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_ivInitialization vector
[in]_srcInput buffer
[out]_dstOutput buffer
[in]_lenLength in BYTES

◆ IMB_KASUMI_F8_1_BUFFER_BIT

#define IMB_KASUMI_F8_1_BUFFER_BIT (   _mgr,
  _exp_key,
  _iv,
  _src,
  _dst,
  _len,
  _offset 
)
Value:
((_mgr)->f8_1_buffer_bit((_exp_key), (_iv), (_src), (_dst), (_len), \
(_offset)))

Kasumi bit-level f8 operation on a single buffer.

This function performs kasumi f8 operation on a single buffer. The key has already been scheduled with kasumi_init_f8_key_sched(). No extra bits are modified.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_ivInitialization vector
[in]_srcInput buffer
[out]_dstOutput buffer
[in]_lenLength in BITS
[in]_offsetOffset in BITS from begin of input buffer

◆ IMB_KASUMI_F8_2_BUFFER

#define IMB_KASUMI_F8_2_BUFFER (   _mgr,
  _exp_key,
  _iv1,
  _iv2,
  _src1,
  _dst1,
  _len1,
  _src2,
  _dst2,
  _len2 
)
Value:
((_mgr)->f8_2_buffer((_exp_key), (_iv1), (_iv2), (_src1), (_dst1), \
(_len1), (_src2), (_dst2), (_len2)))

Kasumi byte-level f8 operation in parallel on two buffers.

This function performs kasumi f8 operation on a two buffers. They will be processed with the same key, which has already been scheduled with kasumi_init_f8_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_iv1Initialization vector for buffer in1
[in]_iv2Initialization vector for buffer in2
[in]_src1Input buffer 1
[out]_dst1Output buffer 1
[in]_len1Length in BYTES of input buffer 1
[in]_src2Input buffer 2
[out]_dst2Output buffer 2
[in]_len2Length in BYTES of input buffer 2

◆ IMB_KASUMI_F8_3_BUFFER

#define IMB_KASUMI_F8_3_BUFFER (   _mgr,
  _exp_key,
  _iv1,
  _iv2,
  _iv3,
  _src1,
  _dst1,
  _src2,
  _dst2,
  _src3,
  _dst3,
  _len 
)
Value:
((_mgr)->f8_3_buffer((_exp_key), (_iv1), (_iv2), (_iv3), (_src1), \
(_dst1), (_src2), (_dst2), (_src3), (_dst3), \
(_len)))

kasumi byte-level f8 operation in parallel on three buffers

This function performs kasumi f8 operation on a three buffers. They must all have the same length and they will be processed with the same key, which has already been scheduled with kasumi_init_f8_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_iv1Initialization vector for buffer in1
[in]_iv2Initialization vector for buffer in2
[in]_iv3Initialization vector for buffer in3
[in]_src1Input buffer 1
[out]_dst1Output buffer 1
[in]_src2Input buffer 2
[out]_dst2Output buffer 2
[in]_src3Input buffer 3
[out]_dst3Output buffer 3
[in]_lenCommon length in bytes for all buffers

◆ IMB_KASUMI_F8_4_BUFFER

#define IMB_KASUMI_F8_4_BUFFER (   _mgr,
  _exp_key,
  _iv1,
  _iv2,
  _iv3,
  _iv4,
  _src1,
  _dst1,
  _src2,
  _dst2,
  _src3,
  _dst3,
  _src4,
  _dst4,
  _len 
)
Value:
((_mgr)->f8_4_buffer((_exp_key), (_iv1), (_iv2), (_iv3), (_iv4), \
(_src1), (_dst1), (_src2), (_dst2), \
(_src3), (_dst3), (_src4), (_dst4), (_len)))

kasumi byte-level f8 operation in parallel on four buffers

This function performs kasumi f8 operation on four buffers. They must all have the same length and they will be processed with the same key, which has already been scheduled with kasumi_init_f8_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_iv1Initialization vector for buffer in1
[in]_iv2Initialization vector for buffer in2
[in]_iv3Initialization vector for buffer in3
[in]_iv4Initialization vector for buffer in4
[in]_src1Input buffer 1
[out]_dst1Output buffer 1
[in]_src2Input buffer 2
[out]_dst2Output buffer 2
[in]_src3Input buffer 3
[out]_dst3Output buffer 3
[in]_src4Input buffer 4
[out]_dst4Output buffer 4
[in]_lenCommon length in bytes for all buffers

◆ IMB_KASUMI_F8_N_BUFFER

#define IMB_KASUMI_F8_N_BUFFER (   _mgr,
  _exp_key,
  _iv,
  _src,
  _dst,
  _len,
  _count 
)
Value:
((_mgr)->f8_n_buffer((_exp_key), (_iv), (_src), (_dst), (_len), \
(_count)))

Kasumi f8 operation on N buffers.

All input buffers can have different lengths and they will be processed with the same key, which has already been scheduled with kasumi_init_f8_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_ivArray of IV values
[in]_srcArray of input buffers
[out]_dstArray of output buffers
[in]_lenArray of corresponding input buffer lengths in BITS
[in]_countNumber of input buffers

◆ IMB_KASUMI_F9_1_BUFFER

#define IMB_KASUMI_F9_1_BUFFER (   _mgr,
  _exp_key,
  _src,
  _len,
  _tag 
)     ((_mgr)->f9_1_buffer((_exp_key), (_src), (_len), (_tag)))

Kasumi bit-level f9 operation on a single buffer.

The first QWORD of in represents the COUNT and FRESH, the last QWORD represents the DIRECTION and PADDING. (See 3GPP TS 35.201 v10.0 section 4)

The key has already been scheduled with kasumi_init_f9_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_srcInput buffer
[in]_lenLength in BYTES of the data to be hashed
[out]_tagComputed digest

◆ IMB_KASUMI_F9_1_BUFFER_USER

#define IMB_KASUMI_F9_1_BUFFER_USER (   _mgr,
  _exp_key,
  _iv,
  _src,
  _len,
  _tag,
  _dir 
)
Value:
((_mgr)->f9_1_buffer_user((_exp_key), (_iv), (_src), (_len), \
(_tag), (_dir)))

Kasumi bit-level f9 operation on a single buffer.

The key has already been scheduled with kasumi_init_f9_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_ivInitialization vector
[in]_srcInput buffer
[in]_lenLength in BITS of the data to be hashed
[out]_tagComputed digest
[in]_dirDirection bit

◆ IMB_KASUMI_INIT_F8_KEY_SCHED

#define IMB_KASUMI_INIT_F8_KEY_SCHED (   _mgr,
  _key,
  _exp_key 
)     ((_mgr)->kasumi_init_f8_key_sched((_key), (_exp_key)))

KASUMI F8 key schedule init function.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_keyConfidentiality key (expected in LE format)
[out]_exp_keyKey schedule context to be initialised
Returns
0 on success, -1 on failure

◆ IMB_KASUMI_INIT_F9_KEY_SCHED

#define IMB_KASUMI_INIT_F9_KEY_SCHED (   _mgr,
  _key,
  _exp_key 
)     ((_mgr)->kasumi_init_f9_key_sched((_key), (_exp_key)))

KASUMI F9 key schedule init function.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_keyIntegrity key (expected in LE format)
[out]_exp_keyKey schedule context to be initialised
Returns
0 on success, -1 on failure

◆ IMB_KASUMI_IV_SIZE

#define IMB_KASUMI_IV_SIZE   8

◆ IMB_KASUMI_KEY_SCHED_SIZE

#define IMB_KASUMI_KEY_SCHED_SIZE (   _mgr)    ((_mgr)->kasumi_key_sched_size())

This function returns the size of the kasumi_key_sched_t, used to store the key schedule.

Parameters
[in]_mgrPointer to multi-buffer structure
Returns
size of kasumi_key_sched_t type success

◆ IMB_KASUMI_KEY_SIZE

#define IMB_KASUMI_KEY_SIZE   16

◆ IMB_MAX_BURST_SIZE

#define IMB_MAX_BURST_SIZE   128

◆ IMB_MAX_JOBS

#define IMB_MAX_JOBS   (IMB_MAX_BURST_SIZE * 2)

◆ IMB_MAX_TAG_LEN

#define IMB_MAX_TAG_LEN   (16)

Authenticated Tag Length in bytes. Valid values are 16 (most likely), 12 or 8.

◆ IMB_MD5_BLOCK_SIZE

#define IMB_MD5_BLOCK_SIZE   64

◆ IMB_MD5_DIGEST_SIZE_IN_BYTES

#define IMB_MD5_DIGEST_SIZE_IN_BYTES   16

◆ IMB_MD5_ONE_BLOCK

#define IMB_MD5_ONE_BLOCK (   _mgr,
  _src,
  _tag 
)     ((_mgr)->md5_one_block((_src), (_tag)))

Authenticate 64-byte data buffer with MD5.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_src64-byte data buffer
[out]_tagDigest output (16 bytes)

◆ IMB_QUEUE_SIZE

#define IMB_QUEUE_SIZE (   _mgr)    ((_mgr)->queue_size((_mgr)))

Get number of jobs queued to be processed.

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
Returns
Number of jobs in the queue

◆ IMB_SHA1

#define IMB_SHA1 (   _mgr,
  _src,
  _length,
  _tag 
)     ((_mgr)->sha1((_src), (_length), (_tag)))

Authenticate variable sized data with SHA1.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_srcData buffer
[in]_lengthLength of data in bytes for authentication.
[out]_tagDigest output (20 bytes)

◆ IMB_SHA1_BLOCK_SIZE

#define IMB_SHA1_BLOCK_SIZE   64

512 bits is 64 byte blocks

◆ IMB_SHA1_DIGEST_SIZE_IN_BYTES

#define IMB_SHA1_DIGEST_SIZE_IN_BYTES   20

◆ IMB_SHA1_ONE_BLOCK

#define IMB_SHA1_ONE_BLOCK (   _mgr,
  _src,
  _tag 
)     ((_mgr)->sha1_one_block((_src), (_tag)))

Authenticate 64-byte data buffer with SHA1.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_src64-byte data buffer
[out]_tagDigest output (20 bytes)

◆ IMB_SHA224

#define IMB_SHA224 (   _mgr,
  _src,
  _length,
  _tag 
)     ((_mgr)->sha224((_src), (_length), (_tag)))

Authenticate variable sized data with SHA224.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_srcData buffer
[in]_lengthLength of data in bytes for authentication.
[out]_tagDigest output (28 bytes)

◆ IMB_SHA224_DIGEST_SIZE_IN_BYTES

#define IMB_SHA224_DIGEST_SIZE_IN_BYTES   28

◆ IMB_SHA224_ONE_BLOCK

#define IMB_SHA224_ONE_BLOCK (   _mgr,
  _src,
  _tag 
)     ((_mgr)->sha224_one_block((_src), (_tag)))

Authenticate 64-byte data buffer with SHA224.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_src64-byte data buffer
[out]_tagDigest output (28 bytes)

◆ IMB_SHA256

#define IMB_SHA256 (   _mgr,
  _src,
  _length,
  _tag 
)     ((_mgr)->sha256((_src), (_length), (_tag)))

Authenticate variable sized data with SHA256.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_srcData buffer
[in]_lengthLength of data in bytes for authentication.
[out]_tagDigest output (32 bytes)

◆ IMB_SHA256_DIGEST_SIZE_IN_BYTES

#define IMB_SHA256_DIGEST_SIZE_IN_BYTES   32

◆ IMB_SHA256_ONE_BLOCK

#define IMB_SHA256_ONE_BLOCK (   _mgr,
  _src,
  _tag 
)     ((_mgr)->sha256_one_block((_src), (_tag)))

Authenticate 64-byte data buffer with SHA256.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_src64-byte data buffer
[out]_tagDigest output (32 bytes)

◆ IMB_SHA384

#define IMB_SHA384 (   _mgr,
  _src,
  _length,
  _tag 
)     ((_mgr)->sha384((_src), (_length), (_tag)))

Authenticate variable sized data with SHA384.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_srcData buffer
[in]_lengthLength of data in bytes for authentication.
[out]_tagDigest output (48 bytes)

◆ IMB_SHA384_DIGEST_SIZE_IN_BYTES

#define IMB_SHA384_DIGEST_SIZE_IN_BYTES   48

◆ IMB_SHA384_ONE_BLOCK

#define IMB_SHA384_ONE_BLOCK (   _mgr,
  _src,
  _tag 
)     ((_mgr)->sha384_one_block((_src), (_tag)))

Authenticate 128-byte data buffer with SHA384.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_src128-byte data buffer
[out]_tagDigest output (48 bytes)

◆ IMB_SHA512

#define IMB_SHA512 (   _mgr,
  _src,
  _length,
  _tag 
)     ((_mgr)->sha512((_src), (_length), (_tag)))

Authenticate variable sized data with SHA512.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_srcData buffer
[in]_lengthLength of data in bytes for authentication.
[out]_tagDigest output (20 bytes)

◆ IMB_SHA512_DIGEST_SIZE_IN_BYTES

#define IMB_SHA512_DIGEST_SIZE_IN_BYTES   64

◆ IMB_SHA512_ONE_BLOCK

#define IMB_SHA512_ONE_BLOCK (   _mgr,
  _src,
  _tag 
)     ((_mgr)->sha512_one_block((_src), (_tag)))

Authenticate 128-byte data buffer with SHA512.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_src128-byte data buffer
[out]_tagDigest output (64 bytes)

◆ IMB_SHA_224_BLOCK_SIZE

#define IMB_SHA_224_BLOCK_SIZE   64

512 bits is 64 byte blocks

◆ IMB_SHA_256_BLOCK_SIZE

#define IMB_SHA_256_BLOCK_SIZE   64

512 bits is 64 byte blocks

◆ IMB_SHA_384_BLOCK_SIZE

#define IMB_SHA_384_BLOCK_SIZE   128

◆ IMB_SHA_512_BLOCK_SIZE

#define IMB_SHA_512_BLOCK_SIZE   128

◆ IMB_SNOW3G_F8_1_BUFFER

#define IMB_SNOW3G_F8_1_BUFFER (   _mgr,
  _exp_key,
  _iv,
  _src,
  _dst,
  _len 
)     ((_mgr)->snow3g_f8_1_buffer((_exp_key), (_iv), (_src), (_dst), (_len)))

This function performs snow3g f8 operation on a single buffer. The key has already been scheduled with snow3g_init_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_iviv[3] = count iv[2] = (bearer << 27) | ((dir & 0x1) << 26) iv[1] = pIV[3] iv[0] = pIV[2]
[in]_srcInput buffer
[out]_dstOutput buffer
[in]_lenLength in bits of input buffer

◆ IMB_SNOW3G_F8_1_BUFFER_BIT

#define IMB_SNOW3G_F8_1_BUFFER_BIT (   _mgr,
  _exp_key,
  _iv,
  _src,
  _dst,
  _len,
  _offset 
)
Value:
((_mgr)->snow3g_f8_1_buffer_bit((_exp_key), (_iv), (_src), \
(_dst), (_len), (_offset)))

This function performs snow3g f8 operation on a single buffer. The key has already been scheduled with snow3g_init_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_iviv[3] = count iv[2] = (bearer << 27) | ((dir & 0x1) << 26) iv[1] = pIV[3] iv[0] = pIV[2]
[in]_srcInput buffer
[out]_dstOutput buffer
[in]_lenLength in bits of input buffer
[in]_offsetOffset in input/output buffer (in bits)

◆ IMB_SNOW3G_F8_2_BUFFER

#define IMB_SNOW3G_F8_2_BUFFER (   _mgr,
  _exp_key,
  _iv1,
  _iv2,
  _src1,
  _dst1,
  _len1,
  _src2,
  _dst2,
  _len2 
)
Value:
((_mgr)->snow3g_f8_2_buffer((_exp_key), (_iv1), (_iv2), \
(_src1), (_dst1), (_len1), \
(_src2), (_dst2), (_len2)))

This function performs snow3g f8 operation on two buffers. They will be processed with the same key, which has already been scheduled with snow3g_init_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_iv1IV to use for buffer pBufferIn1
[in]_iv2IV to use for buffer pBufferIn2
[in]_src1Input buffer 1
[out]_dst1Output buffer 1
[in]_len1Length in bytes of input buffer 1
[in]_src2Input buffer 2
[out]_dst2Output buffer 2
[in]_len2Length in bytes of input buffer 2

◆ IMB_SNOW3G_F8_4_BUFFER

#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 
)
Value:
((_mgr)->snow3g_f8_4_buffer((_exp_key), (_iv1), (_iv2), (_iv3), \
(_iv4), (_src1), (_dst1), (_len1), \
(_src2), (_dst2), (_len2), \
(_src3), (_dst3), (_len3), \
(_src4), (_dst4), (_len4)))

This function performs snow3g f8 operation on four buffers. They will be processed with the same key, which has already been scheduled with snow3g_init_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_iv1IV to use for buffer pBufferIn1
[in]_iv2IV to use for buffer pBufferIn2
[in]_iv3IV to use for buffer pBufferIn3
[in]_iv4IV to use for buffer pBufferIn4
[in]_src1Input buffer 1
[out]_dst1Output buffer 1
[in]_len1Length in bytes of input buffer 1
[in]_src2Input buffer 2
[out]_dst2Output buffer 2
[in]_len2Length in bytes of input buffer 2
[in]_src3Input buffer 3
[out]_dst3Output buffer 3
[in]_len3Length in bytes of input buffer 3
[in]_src4Input buffer 4
[out]_dst4Output buffer 4
[in]_len4Length in bytes of input buffer 4

◆ IMB_SNOW3G_F8_8_BUFFER

#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 
)
Value:
((_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)))

This function performs snow3g f8 operation on eight buffers. They will be processed with the same key, which has already been scheduled with snow3g_init_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_iv1IV to use for buffer pBufferIn1
[in]_iv2IV to use for buffer pBufferIn2
[in]_iv3IV to use for buffer pBufferIn3
[in]_iv4IV to use for buffer pBufferIn4
[in]_iv5IV to use for buffer pBufferIn5
[in]_iv6IV to use for buffer pBufferIn6
[in]_iv7IV to use for buffer pBufferIn7
[in]_iv8IV to use for buffer pBufferIn8
[in]_src1Input buffer 1
[out]_dst1Output buffer 1
[in]_len1Length in bytes of input buffer 1
[in]_src2Input buffer 2
[out]_dst2Output buffer 2
[in]_len2Length in bytes of input buffer 2
[in]_src3Input buffer 3
[out]_dst3Output buffer 3
[in]_len3Length in bytes of input buffer 3
[in]_src4Input buffer 4
[out]_dst4Output buffer 4
[in]_len4Length in bytes of input buffer 4
[in]_src5Input buffer 5
[out]_dst5Output buffer 5
[in]_len5Length in bytes of input buffer 5
[in]_src6Input buffer 6
[out]_dst6Output buffer 6
[in]_len6Length in bytes of input buffer 6
[in]_src7Input buffer 7
[out]_dst7Output buffer 7
[in]_len7Length in bytes of input buffer 7
[in]_src8Input buffer 8
[out]_dst8Output buffer 8
[in]_len8Length in bytes of input buffer 8

◆ IMB_SNOW3G_F8_8_BUFFER_MULTIKEY

#define IMB_SNOW3G_F8_8_BUFFER_MULTIKEY (   _mgr,
  _exp_key,
  _iv,
  _src,
  _dst,
  _len 
)
Value:
((_mgr)->snow3g_f8_8_buffer_multikey((_exp_key), (_iv), (_src), (_dst),\
(_len)))

This function performs snow3g f8 operation on eight buffers. They will be processed with individual keys, which have already been scheduled with snow3g_init_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyArray of 8 Contexts, where the scheduled keys are stored
[in]_ivArray of 8 IV values
[in]_srcArray of 8 input buffers
[out]_dstArray of 8 output buffers
[in]_lenArray of 8 corresponding input buffer lengths

◆ IMB_SNOW3G_F8_N_BUFFER

#define IMB_SNOW3G_F8_N_BUFFER (   _mgr,
  _exp_key,
  _iv,
  _src,
  _dst,
  _len,
  _count 
)
Value:
((_mgr)->snow3g_f8_n_buffer((_exp_key), (_iv), (_src), \
(_dst), (_len), (_count)))

This function performs snow3g f8 operation in parallel on N buffers. All input buffers can have different lengths and they will be processed with the same key, which has already been scheduled with snow3g_init_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_ivArray of IV values
[in]_srcArray of input buffers
[out]_dstArray of output buffers - out[0] set to NULL on failure
[in]_lenArray of corresponding input buffer lengths
[in]_countNumber of input buffers

◆ IMB_SNOW3G_F8_N_BUFFER_MULTIKEY

#define IMB_SNOW3G_F8_N_BUFFER_MULTIKEY (   _mgr,
  _exp_key,
  _iv,
  _src,
  _dst,
  _len,
  _count 
)
Value:
((_mgr)->snow3g_f8_n_buffer_multikey((_exp_key), (_iv), (_src), \
(_dst), (_len), (_count)))

This function performs snow3g f8 operation in parallel on N buffers. All input buffers can have different lengths. Confidentiallity keys can vary, schedules with snow3g_init_key_sched_multi().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyArray of Contexts, where the scheduled keys are stored
[in]_ivArray of IV values
[in]_srcArray of input buffers
[out]_dstArray of output buffers
  • out[0] set to NULL on failure
[in]_lenArray of corresponding input buffer lengths
[in]_countNumber of input buffers

◆ IMB_SNOW3G_F9_1_BUFFER

#define IMB_SNOW3G_F9_1_BUFFER (   _mgr,
  _exp_key,
  _iv,
  _src,
  _len,
  _tag 
)     ((_mgr)->snow3g_f9_1_buffer((_exp_key), (_iv), (_src), (_len), (_tag)))

This function performs a snow3g f9 operation on a single block of data. The key has already been scheduled with snow3g_init_f8_key_sched().

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_exp_keyContext where the scheduled keys are stored
[in]_iviv[3] = _BSWAP32(fresh^(dir<<15)) iv[2] = _BSWAP32(count^(dir<<31)) iv[1] = _BSWAP32(fresh) iv[0] = _BSWAP32(count)
[in]_srcInput buffer
[in]_lenLength in bits of the data to be hashed
[out]_tagComputed digest

◆ IMB_SNOW3G_INIT_KEY_SCHED

#define IMB_SNOW3G_INIT_KEY_SCHED (   _mgr,
  _key,
  _exp_key 
)     ((_mgr)->snow3g_init_key_sched((_key), (_exp_key)))

Snow3g key schedule init function.

Parameters
[in]_mgrPointer to multi-buffer structure
[in]_keyConfidentiality/Integrity key (expected in LE format)
[out]_exp_keyKey schedule context to be initialised
Returns
0 on success
-1 on error

◆ IMB_SNOW3G_KEY_SCHED_SIZE

#define IMB_SNOW3G_KEY_SCHED_SIZE (   _mgr)    ((_mgr)->snow3g_key_sched_size())

This function returns the size of the snow3g_key_schedule_t, used to store the key schedule.

Parameters
[in]_mgrPointer to multi-buffer structure
Returns
size of snow3g_key_schedule_t type

◆ IMB_SUBMIT_BURST

#define IMB_SUBMIT_BURST (   _mgr,
  _n_jobs,
  _jobs 
)     ((_mgr)->submit_burst((_mgr), (_n_jobs), (_jobs)))

Submit multiple jobs to be processed after validating.

Prior to submission, _jobs need to be initialized with correct crypto job parameters and followed with a call to imb_set_session().

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
[in]_n_jobsNumber of jobs to submit for processing
[in,out]_jobsIn: List of pointers to jobs for submission Out: List of pointers to completed jobs
See also
imb_set_session()
Returns
Number of completed jobs or zero on error. If zero, imb_get_errno() can be used to check for potential error conditions and _jobs[0] contains pointer to invalid job

◆ IMB_SUBMIT_BURST_NOCHECK

#define IMB_SUBMIT_BURST_NOCHECK (   _mgr,
  _n_jobs,
  _jobs 
)     ((_mgr)->submit_burst_nocheck((_mgr), (_n_jobs), (_jobs)))

Submit multiple jobs to be processed without validating.

Prior to submission _jobs need to be initialized with correct crypto job parameters and followed with call to imb_set_session().

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
[in]_n_jobsNumber of jobs to submit for processing
[in,out]_jobsIn: List of pointers to jobs for submission Out: List of pointers to completed jobs
See also
imb_set_session()
Returns
Number of completed jobs or zero on error

◆ IMB_SUBMIT_CIPHER_BURST

#define IMB_SUBMIT_CIPHER_BURST (   _mgr,
  _jobs,
  _n_jobs,
  _cipher,
  _dir,
  _key_size 
)
Value:
((_mgr)->submit_cipher_burst((_mgr), (_jobs), (_n_jobs), \
(_cipher), (_dir), (_key_size)))

Submit multiple cipher jobs to be processed synchronously after validating.

Parameters
[in]_mgrPointer to initialized IMB_MGR structure
[in,out]_jobsPointer to array of IMB_JOB structures
[in]_n_jobsNumber of jobs to process
[in]_cipherCipher algorithm of type IMB_CIPHER_MODE
[in]_dirCipher direction of type IMB_CIPHER_DIRECTION
[in]_key_sizeKey size in bytes of type IMB_KEY_SIZE_BYTES
Returns
Number of completed jobs

◆ IMB_SUBMIT_CIPHER_BURST_NOCHECK

#define IMB_SUBMIT_CIPHER_BURST_NOCHECK (   _mgr,
  _jobs,
  _n_jobs,
  _cipher,
  _dir,
  _key_size 
)
Value:
((_mgr)->submit_cipher_burst_nocheck((_mgr), (_jobs), (_n_jobs),\
(_cipher), (_dir), (_key_size)))

Submit multiple cipher jobs to be processed synchronously without validating.

This is more performant but less secure than IMB_SUBMIT_CIPHER_BURST().

Parameters
[in]_mgrPointer to initialized IMB_MGR structure
[in,out]_jobsPointer to array of IMB_JOB structures
[in]_n_jobsNumber of jobs to process
[in]_cipherCipher algorithm of type IMB_CIPHER_MODE
[in]_dirCipher direction of type IMB_CIPHER_DIRECTION
[in]_key_sizeKey size in bytes of type IMB_KEY_SIZE_BYTES
Returns
Number of completed jobs

◆ IMB_SUBMIT_HASH_BURST

#define IMB_SUBMIT_HASH_BURST (   _mgr,
  _jobs,
  _n_jobs,
  _hash 
)     ((_mgr)->submit_hash_burst((_mgr), (_jobs), (_n_jobs), (_hash)))

Submit multiple hash jobs to be processed synchronously after validating.

Parameters
[in]_mgrPointer to initialized IMB_MGR structure
[in,out]_jobsPointer to array of IMB_JOB structures
[in]_n_jobsNumber of jobs to process
[in]_hashHash algorithm of type IMB_HASH_ALG
Returns
Number of completed jobs

◆ IMB_SUBMIT_HASH_BURST_NOCHECK

#define IMB_SUBMIT_HASH_BURST_NOCHECK (   _mgr,
  _jobs,
  _n_jobs,
  _hash 
)     ((_mgr)->submit_hash_burst_nocheck((_mgr), (_jobs), (_n_jobs), (_hash)))

Submit multiple hash jobs to be processed synchronously without validating.

This is more performant but less secure than IMB_SUBMIT_HASH_BURST().

Parameters
[in]_mgrPointer to initialized IMB_MGR structure
[in,out]_jobsPointer to array of IMB_JOB structures
[in]_n_jobsNumber of jobs to process
[in]_hashHash algorithm of type IMB_HASH_ALG
Returns
Number of completed jobs

◆ IMB_SUBMIT_JOB

#define IMB_SUBMIT_JOB (   _mgr)    ((_mgr)->submit_job((_mgr)))

Submit job for processing after validating.

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed If NULL, imb_get_errno() can be used to check for potential error conditions

◆ IMB_SUBMIT_JOB_NOCHECK

#define IMB_SUBMIT_JOB_NOCHECK (   _mgr)    ((_mgr)->submit_job_nocheck((_mgr)))

Submit job for processing without validating.

This is more performant but less secure than submit_job_xxx()

Parameters
[in,out]_mgrPointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed

◆ IMB_VERSION

#define IMB_VERSION (   a,
  b,
 
)    (((a) << 16) + ((b) << 8) + (c))

Macro to translate version number

◆ IMB_VERSION_NUM

#define IMB_VERSION_NUM   0x10400

◆ IMB_VERSION_STR

#define IMB_VERSION_STR   "1.4.0-dev"

Library version

◆ IMB_ZUC256_DIGEST_LEN_IN_BYTES_MAX

#define IMB_ZUC256_DIGEST_LEN_IN_BYTES_MAX   16

◆ IMB_ZUC256_DIGEST_LEN_IN_BYTES_MIN

#define IMB_ZUC256_DIGEST_LEN_IN_BYTES_MIN   4

◆ IMB_ZUC256_IV_LEN_IN_BYTES_MAX

#define IMB_ZUC256_IV_LEN_IN_BYTES_MAX   25

◆ IMB_ZUC256_IV_LEN_IN_BYTES_MIN

#define IMB_ZUC256_IV_LEN_IN_BYTES_MIN   23

◆ IMB_ZUC256_KEY_LEN_IN_BYTES

#define IMB_ZUC256_KEY_LEN_IN_BYTES   32

◆ IMB_ZUC_DIGEST_LEN_IN_BYTES

#define IMB_ZUC_DIGEST_LEN_IN_BYTES   4

◆ IMB_ZUC_EEA3_1_BUFFER

#define IMB_ZUC_EEA3_1_BUFFER (   _mgr,
  _key,
  _iv,
  _src,
  _dst,
  _len 
)     ((_mgr)->eea3_1_buffer((_key), (_iv), (_src), (_dst), (_len)))

ZUC EEA3 Confidentiality functions.

Parameters
_mgrPointer to multi-buffer structure
_keyPointer to key
_ivPointer to 16-byte IV
_srcPointer to Plaintext/Ciphertext input.
_dstPointer to Ciphertext/Plaintext output.
_lenLength of input data in bytes.

◆ IMB_ZUC_EEA3_4_BUFFER

#define IMB_ZUC_EEA3_4_BUFFER (   _mgr,
  _key,
  _iv,
  _src,
  _dst,
  _len 
)     ((_mgr)->eea3_4_buffer((_key), (_iv), (_src), (_dst), (_len)))

◆ IMB_ZUC_EEA3_N_BUFFER

#define IMB_ZUC_EEA3_N_BUFFER (   _mgr,
  _key,
  _iv,
  _src,
  _dst,
  _len,
  _count 
)     ((_mgr)->eea3_n_buffer((_key), (_iv), (_src), (_dst), (_len), (_count)))

◆ IMB_ZUC_EIA3_1_BUFFER

#define IMB_ZUC_EIA3_1_BUFFER (   _mgr,
  _key,
  _iv,
  _src,
  _len,
  _tag 
)     ((_mgr)->eia3_1_buffer((_key), (_iv), (_src), (_len), (_tag)))

ZUC EIA3 Integrity function.

Parameters
_mgrPointer to multi-buffer structure
_keyPointer to key
_ivPointer to 16-byte IV
_srcPointer to Plaintext/Ciphertext input.
_lenLength of input data in bits.
_tagPointer to Authenticated Tag output (4 bytes)

◆ IMB_ZUC_EIA3_N_BUFFER

#define IMB_ZUC_EIA3_N_BUFFER (   _mgr,
  _key,
  _iv,
  _src,
  _len,
  _tag,
  _count 
)     ((_mgr)->eia3_n_buffer((_key), (_iv), (_src), (_len), (_tag), (_count)))

◆ IMB_ZUC_IV_LEN_IN_BYTES

#define IMB_ZUC_IV_LEN_IN_BYTES   16

◆ IMB_ZUC_KEY_LEN_IN_BYTES

#define IMB_ZUC_KEY_LEN_IN_BYTES   16

◆ KASUMI_KEY_SCHEDULE_SIZE

#define KASUMI_KEY_SCHEDULE_SIZE   64

Typedef Documentation

◆ aes_cfb_t

typedef void(* aes_cfb_t) (void *, const void *, const void *, const void *, uint64_t)

◆ aes_ecb_quic_t

typedef void(* aes_ecb_quic_t) (const void *, const void *, void *out, uint64_t)

◆ aes_gcm_enc_dec_finalize_t

typedef void(* aes_gcm_enc_dec_finalize_t) (const struct gcm_key_data *, struct gcm_context_data *, uint8_t *, uint64_t)

◆ aes_gcm_enc_dec_iv_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)

◆ aes_gcm_enc_dec_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)

◆ aes_gcm_enc_dec_update_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)

◆ aes_gcm_init_t

typedef void(* aes_gcm_init_t) (const struct gcm_key_data *, struct gcm_context_data *, const uint8_t *, uint8_t const *, uint64_t)

◆ aes_gcm_init_var_iv_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)

◆ aes_gcm_pre_t

typedef void(* aes_gcm_pre_t) (const void *, struct gcm_key_data *)

◆ aes_gcm_precomp_t

typedef void(* aes_gcm_precomp_t) (struct gcm_key_data *)

◆ aes_gmac_finalize_t

typedef void(* aes_gmac_finalize_t) (const struct gcm_key_data *, struct gcm_context_data *, uint8_t *, const uint64_t)

◆ aes_gmac_init_t

typedef void(* aes_gmac_init_t) (const struct gcm_key_data *, struct gcm_context_data *, const uint8_t *, const uint64_t)

◆ aes_gmac_update_t

typedef void(* aes_gmac_update_t) (const struct gcm_key_data *, struct gcm_context_data *, const uint8_t *, const uint64_t)

◆ burst_fn_t

typedef uint32_t(* burst_fn_t) (struct IMB_MGR *, const uint32_t, struct IMB_JOB **)

◆ chacha_poly_enc_dec_update_t

typedef void(* chacha_poly_enc_dec_update_t) (const void *, struct chacha20_poly1305_context_data *, void *, const void *, const uint64_t)

◆ chacha_poly_finalize_t

typedef void(* chacha_poly_finalize_t) (struct chacha20_poly1305_context_data *, void *, const uint64_t)

◆ chacha_poly_init_t

typedef void(* chacha_poly_init_t) (const void *, struct chacha20_poly1305_context_data *, const void *, const void *, const uint64_t)

◆ cmac_subkey_gen_t

typedef void(* cmac_subkey_gen_t) (const void *, void *, void *)

◆ crc32_fn_t

typedef uint32_t(* crc32_fn_t) (const void *, const uint64_t)

◆ des_keysched_t

typedef int(* des_keysched_t) (uint64_t *, const void *)

◆ flush_job_t

typedef IMB_JOB *(* flush_job_t) (struct IMB_MGR *)

◆ get_completed_job_t

typedef IMB_JOB *(* get_completed_job_t) (struct IMB_MGR *)

◆ get_next_job_t

typedef IMB_JOB *(* get_next_job_t) (struct IMB_MGR *)

◆ ghash_t

typedef void(* ghash_t) (const struct gcm_key_data *, const void *, const uint64_t, void *, const uint64_t)

◆ hash_fn_t

typedef void(* hash_fn_t) (const void *, const uint64_t, void *)

◆ hash_one_block_t

typedef void(* hash_one_block_t) (const void *, void *)

◆ hec_32_t

typedef uint32_t(* hec_32_t) (const uint8_t *)

◆ hec_64_t

typedef uint64_t(* hec_64_t) (const uint8_t *)

◆ IMB_JOB

typedef struct IMB_JOB IMB_JOB

Job structure.

For AES, enc_keys and dec_keys are expected to point to expanded keys structure.

  • AES-CTR, AES-ECB and AES-CCM, only enc_keys is used
  • DOCSIS (AES-CBC + AES-CFB), both pointers are used enc_keys has to be set always for the partial block

For DES, enc_keys and dec_keys are expected to point to DES key schedule.

  • same key schedule used for enc and dec operations

For 3DES, enc_keys and dec_keys are expected to point to an array of 3 pointers for the corresponding 3 key schedules.

  • same key schedule used for enc and dec operations

◆ IMB_MGR

typedef struct IMB_MGR IMB_MGR

◆ init_mb_mgr_t

typedef void(* init_mb_mgr_t) (struct IMB_MGR *)

◆ kasumi_f8_1_buffer_bit_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)

◆ kasumi_f8_1_buffer_t

typedef void(* kasumi_f8_1_buffer_t) (const kasumi_key_sched_t *, const uint64_t, const void *, void *, const uint32_t)

◆ kasumi_f8_2_buffer_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)

◆ kasumi_f8_3_buffer_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)

◆ kasumi_f8_4_buffer_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)

◆ kasumi_f8_n_buffer_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)

◆ kasumi_f9_1_buffer_t

typedef void(* kasumi_f9_1_buffer_t) (const kasumi_key_sched_t *, const void *, const uint32_t, void *)

◆ kasumi_f9_1_buffer_user_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)

◆ kasumi_init_f8_key_sched_t

typedef int(* kasumi_init_f8_key_sched_t) (const void *, kasumi_key_sched_t *)

◆ kasumi_init_f9_key_sched_t

typedef int(* kasumi_init_f9_key_sched_t) (const void *, kasumi_key_sched_t *)

◆ kasumi_key_sched_size_t

typedef size_t(* kasumi_key_sched_size_t) (void)

◆ kasumi_key_sched_t

Structure to maintain internal key scheduling

◆ keyexp_t

typedef void(* keyexp_t) (const void *, void *, void *)

◆ queue_size_t

typedef uint32_t(* queue_size_t) (struct IMB_MGR *)

◆ snow3g_f8_1_buffer_bit_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)

◆ snow3g_f8_1_buffer_t

typedef void(* snow3g_f8_1_buffer_t) (const snow3g_key_schedule_t *, const void *, const void *, void *, const uint32_t)

◆ snow3g_f8_2_buffer_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)

◆ snow3g_f8_4_buffer_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)

◆ snow3g_f8_8_buffer_multikey_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[])

◆ snow3g_f8_8_buffer_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)

◆ snow3g_f8_n_buffer_multikey_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)

◆ snow3g_f8_n_buffer_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)

◆ snow3g_f9_1_buffer_t

typedef void(* snow3g_f9_1_buffer_t) (const snow3g_key_schedule_t *, const void *, const void *, const uint64_t, void *)

◆ snow3g_init_key_sched_t

typedef int(* snow3g_init_key_sched_t) (const void *, snow3g_key_schedule_t *)

◆ snow3g_key_sched_size_t

typedef size_t(* snow3g_key_sched_size_t) (void)

◆ snow3g_key_schedule_t

Snow3G key scheduling structure

◆ submit_cipher_burst_t

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)

◆ submit_hash_burst_t

typedef uint32_t(* submit_hash_burst_t) (struct IMB_MGR *, struct IMB_JOB *, const uint32_t, const IMB_HASH_ALG hash)

◆ submit_job_t

typedef IMB_JOB *(* submit_job_t) (struct IMB_MGR *)

◆ xcbc_keyexp_t

typedef void(* xcbc_keyexp_t) (const void *, void *, void *, void *)

◆ zuc_eea3_1_buffer_t

typedef void(* zuc_eea3_1_buffer_t) (const void *, const void *, const void *, void *, const uint32_t)

◆ zuc_eea3_4_buffer_t

typedef void(* zuc_eea3_4_buffer_t) (const void *const *, const void *const *, const void *const *, void **, const uint32_t *)

◆ zuc_eea3_n_buffer_t

typedef void(* zuc_eea3_n_buffer_t) (const void *const *, const void *const *, const void *const *, void **, const uint32_t *, const uint32_t)

◆ zuc_eia3_1_buffer_t

typedef void(* zuc_eia3_1_buffer_t) (const void *, const void *, const void *, const uint32_t, uint32_t *)

◆ zuc_eia3_n_buffer_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)

Enumeration Type Documentation

◆ IMB_ARCH

enum IMB_ARCH

Architecture definitions

Enumerator
IMB_ARCH_NONE 
IMB_ARCH_NOAESNI 
IMB_ARCH_SSE 
IMB_ARCH_AVX 
IMB_ARCH_AVX2 
IMB_ARCH_AVX512 
IMB_ARCH_NUM 

◆ IMB_CHAIN_ORDER

Enumerator
IMB_ORDER_CIPHER_HASH 
IMB_ORDER_HASH_CIPHER 

◆ IMB_CIPHER_DIRECTION

Enumerator
IMB_DIR_ENCRYPT 
IMB_DIR_DECRYPT 

◆ IMB_CIPHER_MODE

IMB_ERR_MIN should be higher than __ELASTERROR to avoid overlap with standard error values

Enumerator
IMB_CIPHER_CBC 
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 

128-EEA2/NEA2 (3GPP)

IMB_CIPHER_ZUC_EEA3 

128-EEA3/NEA3 (3GPP)

IMB_CIPHER_SNOW3G_UEA2_BITLEN 

128-UEA2 (3GPP)

IMB_CIPHER_KASUMI_UEA1_BITLEN 

128-UEA1 (3GPP)

IMB_CIPHER_CBCS_1_9 

MPEG CENC (ISO 23001-7)

IMB_CIPHER_CHACHA20 
IMB_CIPHER_CHACHA20_POLY1305 

AEAD CHACHA20

IMB_CIPHER_CHACHA20_POLY1305_SGL 

AEAD CHACHA20 with SGL support

IMB_CIPHER_SNOW_V 
IMB_CIPHER_SNOW_V_AEAD 
IMB_CIPHER_GCM_SGL 
IMB_CIPHER_NUM 

◆ IMB_ERR

enum IMB_ERR

Library error types

Enumerator
IMB_ERR_MIN 
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 
IMB_ERR_MAX 

◆ IMB_HASH_ALG

Enumerator
IMB_AUTH_HMAC_SHA_1 

HMAC-SHA1

IMB_AUTH_HMAC_SHA_224 

HMAC-SHA224

IMB_AUTH_HMAC_SHA_256 

HMAC-SHA256

IMB_AUTH_HMAC_SHA_384 

HMAC-SHA384

IMB_AUTH_HMAC_SHA_512 

HMAC-SHA512

IMB_AUTH_AES_XCBC 
IMB_AUTH_MD5 

HMAC-MD5

IMB_AUTH_NULL 
IMB_AUTH_AES_GMAC 
IMB_AUTH_CUSTOM 
IMB_AUTH_AES_CCM 

AES128-CCM

IMB_AUTH_AES_CMAC 

AES128-CMAC

IMB_AUTH_SHA_1 

SHA1

IMB_AUTH_SHA_224 

SHA224

IMB_AUTH_SHA_256 

SHA256

IMB_AUTH_SHA_384 

SHA384

IMB_AUTH_SHA_512 

SHA512

IMB_AUTH_AES_CMAC_BITLEN 

128-EIA2/NIA2 (3GPP)

IMB_AUTH_PON_CRC_BIP 
IMB_AUTH_ZUC_EIA3_BITLEN 

128-EIA3/NIA3 (3GPP)

IMB_AUTH_DOCSIS_CRC32 

with DOCSIS_SEC_BPI only

IMB_AUTH_SNOW3G_UIA2_BITLEN 

128-UIA2 (3GPP)

IMB_AUTH_KASUMI_UIA1 

128-UIA1 (3GPP)

IMB_AUTH_AES_GMAC_128 

AES-GMAC (128-bit key)

IMB_AUTH_AES_GMAC_192 

AES-GMAC (192-bit key)

IMB_AUTH_AES_GMAC_256 

AES-GMAC (256-bit key)

IMB_AUTH_AES_CMAC_256 

AES256-CMAC

IMB_AUTH_POLY1305 

POLY1305

IMB_AUTH_CHACHA20_POLY1305 

AEAD POLY1305

IMB_AUTH_CHACHA20_POLY1305_SGL 

AEAD CHACHA20 with SGL support

IMB_AUTH_ZUC256_EIA3_BITLEN 

256-EIA3/NIA3 (3GPP)

IMB_AUTH_SNOW_V_AEAD 

SNOW-V-AEAD

IMB_AUTH_GCM_SGL 

AES-GCM with SGL support

IMB_AUTH_CRC32_ETHERNET_FCS 

CRC32-ETHERNET-FCS

IMB_AUTH_CRC32_SCTP 

CRC32-SCTP

IMB_AUTH_CRC32_WIMAX_OFDMA_DATA 

CRC32-WIMAX-OFDMA-DATA

IMB_AUTH_CRC24_LTE_A 

CRC32-LTE-A

IMB_AUTH_CRC24_LTE_B 

CRC32-LTE-B

IMB_AUTH_CRC16_X25 

CRC16-X25

IMB_AUTH_CRC16_FP_DATA 

CRC16-FP-DATA

IMB_AUTH_CRC11_FP_HEADER 

CRC11-FP-HEADER

IMB_AUTH_CRC10_IUUP_DATA 

CRC10-IUUP-DATA

IMB_AUTH_CRC8_WIMAX_OFDMA_HCS 

CRC8-WIMAX-OFDMA-HCS

IMB_AUTH_CRC7_FP_HEADER 

CRC7-FP-HEADER

IMB_AUTH_CRC6_IUUP_HEADER 

CRC6-IUUP-HEADER

IMB_AUTH_GHASH 

GHASH

IMB_AUTH_NUM 

◆ IMB_KEY_SIZE_BYTES

Enumerator
IMB_KEY_64_BYTES 
IMB_KEY_128_BYTES 
IMB_KEY_192_BYTES 
IMB_KEY_256_BYTES 

◆ IMB_SGL_STATE

Enumerator
IMB_SGL_INIT 
IMB_SGL_UPDATE 
IMB_SGL_COMPLETE 
IMB_SGL_ALL 

◆ IMB_STATUS

enum IMB_STATUS

Job structure definitions

Enumerator
IMB_STATUS_BEING_PROCESSED 
IMB_STATUS_COMPLETED_CIPHER 
IMB_STATUS_COMPLETED_AUTH 
IMB_STATUS_COMPLETED 

COMPLETED_CIPHER | COMPLETED_AUTH

IMB_STATUS_INVALID_ARGS 
IMB_STATUS_INTERNAL_ERROR 
IMB_STATUS_ERROR 

Function Documentation

◆ aes_cmac_subkey_gen_avx()

IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx ( const void *  key_exp,
void *  key1,
void *  key2 
)

Generate AES-128-CMAC subkeys.

Parameters
[in]key_expInput expanded AES-128-CMAC key
[out]key1Subkey 1
[out]key2Subkey 2

◆ aes_cmac_subkey_gen_avx2()

IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx2 ( const void *  key_exp,
void *  key1,
void *  key2 
)

Generate AES-128-CMAC subkeys.

Parameters
[in]key_expInput expanded AES-128-CMAC key
[out]key1Subkey 1
[out]key2Subkey 2

◆ aes_cmac_subkey_gen_avx512()

IMB_DLL_EXPORT void aes_cmac_subkey_gen_avx512 ( const void *  key_exp,
void *  key1,
void *  key2 
)

Generate AES-128-CMAC subkeys.

Parameters
[in]key_expInput expanded AES-128-CMAC key
[out]key1Subkey 1
[out]key2Subkey 2

◆ aes_cmac_subkey_gen_sse()

IMB_DLL_EXPORT void aes_cmac_subkey_gen_sse ( const void *  key_exp,
void *  key1,
void *  key2 
)

Generate AES-128-CMAC subkeys.

Parameters
[in]key_expInput expanded AES-128-CMAC key
[out]key1Subkey 1
[out]key2Subkey 2

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outPlaintext output. Decrypt in-place is allowed
[in]inCiphertext input
[in]lenLength of data in bytes for decryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8.

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authentication Data (AAD)
[in]aad_lenLength of AAD in bytes
[out]auth_tagAuthenticated Tag output
[in]auth_tag_lenAuthenticated Tag Length in bytes (must be a multiple of 4 bytes). Valid values are 16 (most likely), 12 or 8

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[out]outCiphertext output. Encrypt in-place is allowed
[in]inPlaintext input
[in]lenLength of data in bytes for encryption

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authenticated Data (AAD)
[in]aad_lenLength of AAD in bytes

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authenticated Data (AAD)
[in]aad_lenLength of AAD in bytes

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authenticated Data (AAD)
[in]aad_lenLength of AAD in bytes

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authenticated Data (AAD)
[in]aad_lenLength of AAD in bytes

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authenticated Data (AAD)
[in]aad_lenLength of AAD in bytes

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authenticated Data (AAD)
[in]aad_lenLength of AAD in bytes

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authenticated Data (AAD)
[in]aad_lenLength of AAD in bytes

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authenticated Data (AAD)
[in]aad_lenLength of AAD in bytes

◆ 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.

Parameters
[in]key_dataGCM expanded key data
[in,out]context_dataGCM operation context data
[in]ivPointer to 12 byte IV structure Internally, the library concatenates 0x00000001 to the IV
[in]aadAdditional Authenticated Data (AAD)
[in]aad_lenLength of AAD in bytes

◆ 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.

Prefills the gcm key data with key values for each round and the initial sub hash key for tag encoding

Parameters
[in]keyPointer to key data
[out]key_dataGCM expanded key data

◆ 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.

Prefills the gcm key data with key values for each round and the initial sub hash key for tag encoding

Parameters
[in]keyPointer to key data
[out]key_dataGCM expanded key data

◆ 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.

Prefills the gcm key data with key values for each round and the initial sub hash key for tag encoding

Parameters
[in]keyPointer to key data
[out]key_dataGCM expanded key data

◆ 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.

Prefills the gcm key data with key values for each round and the initial sub hash key for tag encoding

Parameters
[in]keyPointer to key data
[out]key_dataGCM expanded key data

◆ 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.

Prefills the gcm key data with key values for each round and the initial sub hash key for tag encoding

Parameters
[in]keyPointer to key data
[out]key_dataGCM expanded key data

◆ 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.

Prefills the gcm key data with key values for each round and the initial sub hash key for tag encoding

Parameters
[in]keyPointer to key data
[out]key_dataGCM expanded key data

◆ 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.

Prefills the gcm key data with key values for each round and the initial sub hash key for tag encoding

Parameters
[in]keyPointer to key data
[out]key_dataGCM expanded key data

◆ 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.

Prefills the gcm key data with key values for each round and the initial sub hash key for tag encoding

Parameters
[in]keyPointer to key data
[out]key_dataGCM expanded key data

◆ 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.

Prefills the gcm key data with key values for each round and the initial sub hash key for tag encoding

Parameters
[in]keyPointer to key data
[out]key_dataGCM expanded key data

◆ 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.

Precomputation of HashKey<<1 mod poly constants (shifted_hkey_X and shifted_hkey_X_k).

Parameters
[in,out]key_dataGCM key data

◆ 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.

Precomputation of HashKey<<1 mod poly constants (shifted_hkey_X and shifted_hkey_X_k).

Parameters
[in,out]key_dataGCM key data

◆ 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.

Precomputation of HashKey<<1 mod poly constants (shifted_hkey_X and shifted_hkey_X_k).

Parameters
[in,out]key_dataGCM key data

◆ 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.

Precomputation of HashKey<<1 mod poly constants (shifted_hkey_X and shifted_hkey_X_k).

Parameters
[in,out]key_dataGCM 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.

Precomputation of HashKey<<1 mod poly constants (shifted_hkey_X and shifted_hkey_X_k).

Parameters
[in,out]key_dataGCM key data

◆ 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.

Precomputation of HashKey<<1 mod poly constants (shifted_hkey_X and shifted_hkey_X_k).

Parameters
[in,out]key_dataGCM key data

◆ 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.

Precomputation of HashKey<<1 mod poly constants (shifted_hkey_X and shifted_hkey_X_k).

Parameters
[in,out]key_dataGCM key data

◆ 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.

Precomputation of HashKey<<1 mod poly constants (shifted_hkey_X and shifted_hkey_X_k).

Parameters
[in,out]key_dataGCM key data

◆ 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.

Precomputation of HashKey<<1 mod poly constants (shifted_hkey_X and shifted_hkey_X_k).

Parameters
[in,out]key_dataGCM key data

◆ aes_keyexp_128_avx()

IMB_DLL_EXPORT void aes_keyexp_128_avx ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-128 expansion keys.

Parameters
[in]keyAES-128 key
[out]enc_exp_keysAES-128 encryption expansion key
[out]dec_exp_keysAES-128 decryption expansion key

◆ aes_keyexp_128_avx2()

IMB_DLL_EXPORT void aes_keyexp_128_avx2 ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-128 expansion keys.

Parameters
[in]keyAES-128 key
[out]enc_exp_keysAES-128 encryption expansion key
[out]dec_exp_keysAES-128 decryption expansion key

◆ aes_keyexp_128_avx512()

IMB_DLL_EXPORT void aes_keyexp_128_avx512 ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-128 expansion keys.

Parameters
[in]keyAES-128 key
[out]enc_exp_keysAES-128 encryption expansion key
[out]dec_exp_keysAES-128 decryption expansion key

◆ aes_keyexp_128_enc_avx()

IMB_DLL_EXPORT void aes_keyexp_128_enc_avx ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-128 expansion keys.

Parameters
[in]keyAES-128 key
[out]enc_exp_keysAES-128 encryption expansion key

◆ aes_keyexp_128_enc_avx2()

IMB_DLL_EXPORT void aes_keyexp_128_enc_avx2 ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-128 expansion keys.

Parameters
[in]keyAES-128 key
[out]enc_exp_keysAES-128 encryption expansion key

◆ aes_keyexp_128_enc_avx512()

IMB_DLL_EXPORT void aes_keyexp_128_enc_avx512 ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-128 expansion keys.

Parameters
[in]keyAES-128 key
[out]enc_exp_keysAES-128 encryption expansion key

◆ aes_keyexp_128_enc_sse()

IMB_DLL_EXPORT void aes_keyexp_128_enc_sse ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-128 expansion keys.

Parameters
[in]keyAES-128 key
[out]enc_exp_keysAES-128 encryption expansion key

◆ aes_keyexp_128_sse()

IMB_DLL_EXPORT void aes_keyexp_128_sse ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-128 expansion keys.

Parameters
[in]keyAES-128 key
[out]enc_exp_keysAES-128 encryption expansion key
[out]dec_exp_keysAES-128 decryption expansion key

◆ aes_keyexp_192_avx()

IMB_DLL_EXPORT void aes_keyexp_192_avx ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key
[out]dec_exp_keysAES-256 decryption expansion key

◆ aes_keyexp_192_avx2()

IMB_DLL_EXPORT void aes_keyexp_192_avx2 ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key
[out]dec_exp_keysAES-256 decryption expansion key

◆ aes_keyexp_192_avx512()

IMB_DLL_EXPORT void aes_keyexp_192_avx512 ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key
[out]dec_exp_keysAES-256 decryption expansion key

◆ aes_keyexp_192_enc_avx()

IMB_DLL_EXPORT void aes_keyexp_192_enc_avx ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-192 expansion keys.

Parameters
[in]keyAES-192 key
[out]enc_exp_keysAES-192 encryption expansion key

◆ aes_keyexp_192_enc_avx2()

IMB_DLL_EXPORT void aes_keyexp_192_enc_avx2 ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-192 expansion keys.

Parameters
[in]keyAES-192 key
[out]enc_exp_keysAES-192 encryption expansion key

◆ aes_keyexp_192_enc_avx512()

IMB_DLL_EXPORT void aes_keyexp_192_enc_avx512 ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-192 expansion keys.

Parameters
[in]keyAES-192 key
[out]enc_exp_keysAES-192 encryption expansion key

◆ aes_keyexp_192_enc_sse()

IMB_DLL_EXPORT void aes_keyexp_192_enc_sse ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-192 expansion keys.

Parameters
[in]keyAES-192 key
[out]enc_exp_keysAES-192 encryption expansion key

◆ aes_keyexp_192_sse()

IMB_DLL_EXPORT void aes_keyexp_192_sse ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-192 expansion keys.

Parameters
[in]keyAES-192 key
[out]enc_exp_keysAES-192 encryption expansion key
[out]dec_exp_keysAES-192 decryption expansion key

◆ aes_keyexp_256_avx()

IMB_DLL_EXPORT void aes_keyexp_256_avx ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key
[out]dec_exp_keysAES-256 decryption expansion key

◆ aes_keyexp_256_avx2()

IMB_DLL_EXPORT void aes_keyexp_256_avx2 ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key
[out]dec_exp_keysAES-256 decryption expansion key

◆ aes_keyexp_256_avx512()

IMB_DLL_EXPORT void aes_keyexp_256_avx512 ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key
[out]dec_exp_keysAES-256 decryption expansion key

◆ aes_keyexp_256_enc_avx()

IMB_DLL_EXPORT void aes_keyexp_256_enc_avx ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key

◆ aes_keyexp_256_enc_avx2()

IMB_DLL_EXPORT void aes_keyexp_256_enc_avx2 ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key

◆ aes_keyexp_256_enc_avx512()

IMB_DLL_EXPORT void aes_keyexp_256_enc_avx512 ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key

◆ aes_keyexp_256_enc_sse()

IMB_DLL_EXPORT void aes_keyexp_256_enc_sse ( const void *  key,
void *  enc_exp_keys 
)

Generate encryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key

◆ aes_keyexp_256_sse()

IMB_DLL_EXPORT void aes_keyexp_256_sse ( const void *  key,
void *  enc_exp_keys,
void *  dec_exp_keys 
)

Generate encryption/decryption AES-256 expansion keys.

Parameters
[in]keyAES-256 key
[out]enc_exp_keysAES-256 encryption expansion key
[out]dec_exp_keysAES-256 decryption expansion key

◆ aes_xcbc_expand_key_avx()

IMB_DLL_EXPORT void aes_xcbc_expand_key_avx ( const void *  key,
void *  k1_exp,
void *  k2,
void *  k3 
)

Generate AES-128-XCBC expansion keys.

Parameters
[in]keyInput AES-128-XCBC key
[out]k1_expk1 expansion key
[out]k2k2 key
[out]k3k3 key

◆ aes_xcbc_expand_key_avx2()

IMB_DLL_EXPORT void aes_xcbc_expand_key_avx2 ( const void *  key,
void *  k1_exp,
void *  k2,
void *  k3 
)

Generate AES-128-XCBC expansion keys.

Parameters
[in]keyInput AES-128-XCBC key
[out]k1_expk1 expansion key
[out]k2k2 key
[out]k3k3 key

◆ aes_xcbc_expand_key_avx512()

IMB_DLL_EXPORT void aes_xcbc_expand_key_avx512 ( const void *  key,
void *  k1_exp,
void *  k2,
void *  k3 
)

Generate AES-128-XCBC expansion keys.

Parameters
[in]keyInput AES-128-XCBC key
[out]k1_expk1 expansion key
[out]k2k2 key
[out]k3k3 key

◆ aes_xcbc_expand_key_sse()

IMB_DLL_EXPORT void aes_xcbc_expand_key_sse ( const void *  key,
void *  k1_exp,
void *  k2,
void *  k3 
)

Generate AES-128-XCBC expansion keys.

Parameters
[in]keyInput AES-128-XCBC key
[out]k1_expk1 expansion key
[out]k2k2 key
[out]k3k3 key

◆ alloc_mb_mgr()

IMB_DLL_EXPORT IMB_MGR * alloc_mb_mgr ( uint64_t  flags)

Allocates memory for multi-buffer manager instance.

get_next_job returns a job object. This must be filled in and returned via submit_job before get_next_job is called again. After submit_job is called, one should call get_completed_job() at least once (and preferably until it returns NULL). get_completed_job and flush_job returns a job object. This job object ceases to be usable at the next call to get_next_job

For binary compatibility between library versions it is recommended to use this API.

Parameters
flagsmulti-buffer manager flags IMB_FLAG_SHANI_OFF - disable use (and detection) of SHA extensions, currently SHANI is only available for SSE IMB_FLAG_AESNI_OFF - disable use (and detection) of AES extensions. IMB_FLAG_GFNI_OFF - disable use (and detection) of Galois Field extensions.
Returns
Pointer to allocated memory for IMB_MGR structure
Return values
NULLon allocation error

◆ 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.

Processes only one buffer at a time. Designed to manage partial blocks of DOCSIS 3.1 SEC BPI.

Parameters
[out]outPlaintext/Ciphertext output
[in]inPlaintext/Ciphertext input
[in]ivPointer to 8 byte IV
[in]ksPointer to DES key schedule
[in]lenLength of data in bytes

◆ des_key_schedule()

IMB_DLL_EXPORT int des_key_schedule ( uint64_t *  ks,
const void *  key 
)

DES key schedule set up.

ks buffer needs to accommodate DES_KEY_SCHED_SIZE (128) bytes of data.

Parameters
[out]ksDestination buffer to accommodate DES key schedule
[in]keyPointer to an 8 byte DES key
Returns
Operation status
Return values
0success
!0error

◆ flush_job_avx()

IMB_DLL_EXPORT IMB_JOB * flush_job_avx ( IMB_MGR state)

Force processing until next job in queue is completed.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no more jobs to process

◆ flush_job_avx2()

IMB_DLL_EXPORT IMB_JOB * flush_job_avx2 ( IMB_MGR state)

Force processing until next job in queue is completed.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no more jobs to process

◆ flush_job_avx512()

IMB_DLL_EXPORT IMB_JOB * flush_job_avx512 ( IMB_MGR state)

Force processing until next job in queue is completed.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no more jobs to process

◆ flush_job_sse()

IMB_DLL_EXPORT IMB_JOB * flush_job_sse ( IMB_MGR state)

Force processing until next job in queue is completed.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no more jobs to process

◆ free_mb_mgr()

IMB_DLL_EXPORT void free_mb_mgr ( IMB_MGR ptr)

Frees memory allocated previously by alloc_mb_mgr()

Parameters
[in]ptrPointer to allocated MB_MGR structure

◆ get_completed_job_avx()

IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx ( IMB_MGR state)

Get next completed job.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if next job not complete

◆ get_completed_job_avx2()

IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx2 ( IMB_MGR state)

Get next completed job.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if next job not complete

◆ get_completed_job_avx512()

IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx512 ( IMB_MGR state)

Get next completed job.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if next job not complete

◆ get_completed_job_sse()

IMB_DLL_EXPORT IMB_JOB * get_completed_job_sse ( IMB_MGR state)

Get next completed job.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if next job not complete

◆ get_next_job_avx()

IMB_DLL_EXPORT IMB_JOB * get_next_job_avx ( IMB_MGR state)

Get next available job.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to next free IMB_JOB in the queue

◆ get_next_job_avx2()

IMB_DLL_EXPORT IMB_JOB * get_next_job_avx2 ( IMB_MGR state)

Get next available job.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to next free IMB_JOB in the queue

◆ get_next_job_avx512()

IMB_DLL_EXPORT IMB_JOB * get_next_job_avx512 ( IMB_MGR state)

Get next available job.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to next free IMB_JOB in the queue

◆ get_next_job_sse()

IMB_DLL_EXPORT IMB_JOB * get_next_job_sse ( IMB_MGR state)

Get next available job.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to next free IMB_JOB in the queue

◆ imb_clear_mem()

IMB_DLL_EXPORT void imb_clear_mem ( void *  mem,
const size_t  size 
)

Force clearing/zeroing of memory.

Parameters
[in]memPointer to memory address to clear
[in]sizeSize of memory to clear (in bytes)

◆ imb_get_errno()

IMB_DLL_EXPORT int imb_get_errno ( IMB_MGR mb_mgr)

API to get error status.

Parameters
mb_mgrPointer to multi-buffer manager
Return values
Integererror type

◆ 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/initialize IMB_MGR;.

Returns
Bitmask containing feature flags

◆ imb_get_mb_mgr_size()

IMB_DLL_EXPORT size_t imb_get_mb_mgr_size ( void  )

Calculates necessary memory size for IMB_MGR.

Returns
Size for IMB_MGR (aligned to 64 bytes)

◆ imb_get_strerror()

IMB_DLL_EXPORT const char * imb_get_strerror ( int  errnum)

API to get description for errnum.

Parameters
errnumerror type
Return values
Stringdescription of errnum

◆ imb_get_version()

IMB_DLL_EXPORT unsigned imb_get_version ( void  )

Get library version in numerical format.

Use IMB_VERSION() macro to compare this numerical version against known library version.

Returns
library version number

◆ imb_get_version_str()

IMB_DLL_EXPORT const char * imb_get_version_str ( void  )

Get library version in string format.

API definitions

Returns
library version string

◆ 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.

Parameters
[in]mb_mgrPointer to initialized IMB_MGR structure
[in]sha_typeType of HMAC_SHA from IMB_HASH_ALG enum
[in]pkeyPointer to a HMAC key
[in]key_lenLength of the HMAC key
[out]ipad_hashBlock-sized inner padding
[out]opad_hashBlock-sized outer padding

◆ 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.

Note
IV length of 12 bytes is assumed.
If used out of place then AAD needs to be copied by the caller.
For more info on key_data refer to IMB_AES128/192/256_GCM_PRE() API’s
Parameters
[in]statepointer to IMB_MGR
[in]key_datainitialized key data (AES keys and hash keys)
[in]key_sizekey size (in bytes, see IMB_KEY_128_BYTES etc.)
[in]cipher_dircipher direction (IMB_DIR_ENCRYPT / DECRYPT)
[out]dst_ptr_arrayarray with destination pointers
[in]src_ptr_arrayarray with source pointers
[in]len_arrayarray with message lengths in bytes
[in]iv_ptr_arrayarray with IV pointers
[in]aad_ptr_arrayarray with AAD pointers
[in]aad_lenAAD length in bytes
[out]tag_ptr_arrayarray with authentication TAG pointers
[in]tag_lenauthentication TAG length in bytes
[in]num_packetsnumber of packets in this batch

◆ 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.

Sample size is fixed to 16 bytes (read from source pointers). Mask output size is fixed to 5 bytes (written to destination pointer). Cipher direction is fixed to ENCRYPT.

Parameters
[in]statepointer to IMB_MGR
[in]exp_key_dataexpanded AES encrypt keys
[out]dst_ptr_arrayarray with destination pointers
[in]src_ptr_arrayarray with source sample pointers
[in]num_packetsnumber of packets in this batch
[in]key_sizekey size (in bytes, see IMB_KEY_128_BYTES etc.)

◆ 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.

imb_get_mb_mgr_size() should be called to know how much memory should be allocated externally.

init_mb_mgr_XXX() must be called after this function call, whereas XXX is the desired architecture.

Parameters
[in]ptra pointer to allocated memory
[in]flagsmulti-buffer manager flags IMB_FLAG_SHANI_OFF - disable use (and detection) of SHA extensions, currently SHANI is only available for SSE IMB_FLAG_AESNI_OFF - disable use (and detection) of AES extensions. IMB_FLAG_GFNI_OFF - disable use (and detection) of Galois Field extensions.
[in]reset_mgrif 0, IMB_MGR structure is not cleared, else it is.
Returns
Pointer to IMB_MGR structure

◆ 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.

This is mandatory operation for BURST API as suite_id is used to speed up job dispatch process. This operation is optional but helpful for JOB API use case.

'session_id' field is for application use to optimize job set up process. If JOB structure provided by library for a new operation has same session ID as required for the next operation then only message pointers and sizes need to be set up by the application. All other session fields are guaranteed to be unmodified by the library:

  • cipher mode
  • cipher direction
  • hash algorithm
  • key size
  • encrypt & decrypt key pointers
  • suite_id If allocated JOB structure contains different session ID then all required session and crypto operation fields need to be set up.

In connection oriented applications, a template filled-in job structure can be cached within connection structure and reused in submit operations.

For given set of parameters: cipher mode, cipher key size, cipher direction and authentication mode, suite_id field is the same.

See also
IMB_SUBMIT_BURST()
IMB_SUBMIT_BURST_NOCHECK()
IMB_SUBMIT_JOB()
IMB_SUBMIT_JOB_NOCHECK()
Parameters
[in]statepointer to IMB_MGR
[in,out]jobpointer to prepared JOB structure
Returns
Session ID value
Return values
0on error

◆ 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.

Parameters
[in]statePointer to MB_MGR struct
[out]archPointer to arch enum to be set (can be NULL)

◆ init_mb_mgr_avx()

IMB_DLL_EXPORT void init_mb_mgr_avx ( IMB_MGR state)

Initialize Multi-Buffer Manager structure.

Must be called before calling JOB/BURST API.

Parameters
[in,out]statePointer to IMB_MGR structure For binary compatibility between library versions, it is recommended to allocate the IMB_MGR structure using the alloc_mb_mgr() API

◆ init_mb_mgr_avx2()

IMB_DLL_EXPORT void init_mb_mgr_avx2 ( IMB_MGR state)

Initialize Multi-Buffer Manager structure.

Must be called before calling JOB/BURST API.

Parameters
[in,out]statePointer to IMB_MGR structure For binary compatibility between library versions, it is recommended to allocate the IMB_MGR structure using the alloc_mb_mgr() API

◆ init_mb_mgr_avx512()

IMB_DLL_EXPORT void init_mb_mgr_avx512 ( IMB_MGR state)

Initialize Multi-Buffer Manager structure.

Must be called before calling JOB/BURST API.

Parameters
[in,out]statePointer to IMB_MGR structure For binary compatibility between library versions, it is recommended to allocate the IMB_MGR structure using the alloc_mb_mgr() API

◆ init_mb_mgr_sse()

IMB_DLL_EXPORT void init_mb_mgr_sse ( IMB_MGR state)

Initialize Multi-Buffer Manager structure.

Must be called before calling JOB/BURST API.

Parameters
[in,out]statePointer to IMB_MGR structure For binary compatibility between library versions, it is recommended to allocate the IMB_MGR structure using the alloc_mb_mgr() API

◆ 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.

Parameters
[in]countCOUNT (4 bytes in Little Endian)
[in]bearerBEARER (5 bits)
[in]dirDIRECTION (1 bit)
[out]iv_ptrPointer to generated IV (16 bytes)
Returns
Operation status
Return values
0success
-1if one or more parameters are invalid

◆ 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.

Parameters
[in]countCOUNT (4 bytes in Little Endian)
[in]freshFRESH (4 bytes in Little Endian)
[out]iv_ptrPointer to generated IV (16 bytes)
Returns
Operation status
Return values
0success
-1if one or more parameters are invalid

◆ md5_one_block_avx()

IMB_DLL_EXPORT void md5_one_block_avx ( const void *  data,
void *  digest 
)

Authenticate 64-byte data buffer with MD5.

Parameters
[in]data64-byte data buffer
[out]digestDigest output (16 bytes)

◆ md5_one_block_avx2()

IMB_DLL_EXPORT void md5_one_block_avx2 ( const void *  data,
void *  digest 
)

Authenticate 64-byte data buffer with MD5.

Parameters
[in]data64-byte data buffer
[out]digestDigest output (16 bytes)

◆ md5_one_block_avx512()

IMB_DLL_EXPORT void md5_one_block_avx512 ( const void *  data,
void *  digest 
)

Authenticate 64-byte data buffer with MD5.

Parameters
[in]data64-byte data buffer
[out]digestDigest output (16 bytes)

◆ md5_one_block_sse()

IMB_DLL_EXPORT void md5_one_block_sse ( const void *  data,
void *  digest 
)

Authenticate 64-byte data buffer with MD5.

Parameters
[in]data64-byte data buffer
[out]digestDigest output (16 bytes)

◆ queue_size_avx()

IMB_DLL_EXPORT uint32_t queue_size_avx ( IMB_MGR state)

Get number of jobs queued to be processed.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Number of jobs in the queue

◆ queue_size_avx2()

IMB_DLL_EXPORT uint32_t queue_size_avx2 ( IMB_MGR state)

Get number of jobs queued to be processed.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Number of jobs in the queue

◆ queue_size_avx512()

IMB_DLL_EXPORT uint32_t queue_size_avx512 ( IMB_MGR state)

Get number of jobs queued to be processed.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Number of jobs in the queue

◆ queue_size_sse()

IMB_DLL_EXPORT uint32_t queue_size_sse ( IMB_MGR state)

Get number of jobs queued to be processed.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Number of jobs in the queue

◆ 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.

Parameters are passed in Little Endian format and used to generate the IV in Big Endian format.

Parameters
[in]countCOUNT (4 bytes in Little Endian)
[in]bearerBEARER (5 bits)
[in]dirDIRECTION (1 bit)
[out]iv_ptrPointer to generated IV (16 bytes) in Big Endian format
Returns
Operation status
Return values
0success
-1if one or more parameters are invalid

◆ 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.

Parameters are passed in Little Endian format and used to generate the IV in Big Endian format.

Parameters
[in]countCOUNT (4 bytes in Little Endian)
[in]freshFRESH (4 bytes in Little Endian)
[in]dirDIRECTION (1 bit)
[out]iv_ptrPointer to generated IV (16 bytes) in Big Endian format
Returns
Operation status
Return values
0success
-1if one or more parameters are invalid

◆ submit_job_avx()

IMB_DLL_EXPORT IMB_JOB * submit_job_avx ( IMB_MGR state)

Submit job for processing after validating.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed If NULL, imb_get_errno() can be used to check for potential error conditions

◆ submit_job_avx2()

IMB_DLL_EXPORT IMB_JOB * submit_job_avx2 ( IMB_MGR state)

Submit job for processing after validating.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed If NULL, imb_get_errno() can be used to check for potential error conditions

◆ submit_job_avx512()

IMB_DLL_EXPORT IMB_JOB * submit_job_avx512 ( IMB_MGR state)

Submit job for processing after validating.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed If NULL, imb_get_errno() can be used to check for potential error conditions

◆ submit_job_nocheck_avx()

IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_avx ( IMB_MGR state)

Submit job for processing without validating.

This is more performant but less secure than submit_job_xxx()

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed

◆ submit_job_nocheck_avx2()

IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_avx2 ( IMB_MGR state)

Submit job for processing without validating.

This is more performant but less secure than submit_job_xxx()

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed

◆ submit_job_nocheck_avx512()

IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_avx512 ( IMB_MGR state)

Submit job for processing without validating.

This is more performant but less secure than submit_job_xxx()

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed

◆ submit_job_nocheck_sse()

IMB_DLL_EXPORT IMB_JOB * submit_job_nocheck_sse ( IMB_MGR state)

Submit job for processing without validating.

This is more performant but less secure than submit_job_xxx()

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed

◆ submit_job_sse()

IMB_DLL_EXPORT IMB_JOB * submit_job_sse ( IMB_MGR state)

Submit job for processing after validating.

Parameters
[in,out]statePointer to initialized IMB_MGR structure
Returns
Pointer to completed IMB_JOB or NULL if no job completed If NULL, imb_get_errno() can be used to check for potential error conditions

◆ 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.

Parameters
[in]countCOUNT (4 bytes in Little Endian)
[in]bearerBEARER (5 bits)
[in]dirDIRECTION (1 bit)
[out]iv_ptrPointer to generated IV (16 bytes)
Returns
Operation status
Return values
0success
-1if one or more parameters are invalid

◆ 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.

Parameters
[in]countCOUNT (4 bytes in Little Endian)
[in]bearerBEARER (5 bits)
[in]dirDIRECTION (1 bit)
[out]iv_ptrPointer to generated IV (16 bytes)
Returns
Operation status
Return values
0success
-1if one or more parameters are invalid