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