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.4.0-dev"
95#define IMB_VERSION_NUM 0x10400
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_MD5_DIGEST_SIZE_IN_BYTES 16
145#define IMB_SHA1_BLOCK_SIZE 64
146#define IMB_SHA_224_BLOCK_SIZE 64
147#define IMB_SHA_256_BLOCK_SIZE 64
148#define IMB_SHA_384_BLOCK_SIZE 128
149#define IMB_SHA_512_BLOCK_SIZE 128
151#define IMB_MD5_BLOCK_SIZE 64
153#define IMB_KASUMI_KEY_SIZE 16
154#define IMB_KASUMI_IV_SIZE 8
155#define IMB_KASUMI_BLOCK_SIZE 8
156#define IMB_KASUMI_DIGEST_SIZE 4
158#define IMB_ZUC_KEY_LEN_IN_BYTES 16
159#define IMB_ZUC_IV_LEN_IN_BYTES 16
160#define IMB_ZUC256_KEY_LEN_IN_BYTES 32
161#define IMB_ZUC256_IV_LEN_IN_BYTES_MIN 23
162#define IMB_ZUC256_IV_LEN_IN_BYTES_MAX 25
163#define IMB_ZUC_DIGEST_LEN_IN_BYTES 4
164#define IMB_ZUC256_DIGEST_LEN_IN_BYTES_MIN 4
165#define IMB_ZUC256_DIGEST_LEN_IN_BYTES_MAX 16
171#define IMB_DOCSIS_CRC32_MIN_ETH_PDU_SIZE 14
172#define IMB_DOCSIS_CRC32_TAG_SIZE 4
256#if __ELASTERROR > 2000
257#error "Library error codes conflict with errno.h - please update IMB_ERR_MIN!"
437 struct _HMAC_specific_fields {
445 struct _AES_XCBC_specific_fields {
453 struct _AES_CCM_specific_fields {
458 struct _AES_CMAC_specific_fields {
464 struct _AES_GCM_specific_fields {
467 uint64_t aad_len_in_bytes;
471 struct _ZUC_EIA3_specific_fields {
479 struct _SNOW3G_UIA2_specific_fields {
485 struct _KASUMI_UIA1_specific_fields {
489 struct _AES_GMAC_specific_fields {
494 uint64_t iv_len_in_bytes;
497 struct _GHASH_specific_fields {
502 struct _POLY1305_specific_fields {
506 struct _CHACHA20_POLY1305_specific_fields {
509 uint64_t aad_len_in_bytes;
514 struct _SNOW_V_AEAD_specific_fields {
517 uint64_t aad_len_in_bytes;
544 struct _CBCS_specific_fields {
558#define KASUMI_KEY_SCHEDULE_SIZE 64
570#define IMB_GCM_BLOCK_LEN 16
586#undef IMB_GCM_BLOCK_LEN
611#define IMB_MAX_TAG_LEN (16)
622#define IMB_GCM_IV_DATA_LEN (12)
624#define IMB_GCM_128_KEY_LEN (16)
625#define IMB_GCM_192_KEY_LEN (24)
626#define IMB_GCM_256_KEY_LEN (32)
628#define IMB_GCM_ENC_KEY_LEN 16
629#define IMB_GCM_KEY_SETS (15)
684__attribute__((aligned(64)));
689#undef IMB_GCM_ENC_KEY_LEN
690#undef IMB_GCM_KEY_SETS
714typedef void (*
keyexp_t)(
const void *,
void *,
void *);
717typedef void (*
hash_fn_t)(
const void *,
const uint64_t,
void *);
720typedef void (*
aes_cfb_t)(
void *,
const void *,
const void *,
const void *,
724 uint8_t *, uint8_t
const *, uint64_t,
725 const uint8_t *, uint8_t
const *, uint64_t,
726 uint8_t *, uint64_t);
729 uint8_t
const *,
const uint64_t,
730 const uint8_t *, uint8_t
const *,
731 const uint64_t, uint8_t *,
732 const uint64_t,
const uint64_t);
735 const uint8_t *, uint8_t
const *, uint64_t);
738 const uint8_t *,
const uint64_t,
739 const uint8_t *,
const uint64_t);
742 uint8_t *,
const uint8_t *, uint64_t);
745 uint8_t *, uint64_t);
751 const uint8_t *,
const uint64_t);
754 const uint8_t *,
const uint64_t);
757 uint8_t *,
const uint64_t);
761 const void *,
const void *,
const uint64_t);
764 void *,
const void *,
const uint64_t);
766 void *,
const uint64_t);
768 const uint64_t,
void *,
const uint64_t);
771 void *,
const uint32_t);
774 const void *
const *,
void **,
778 const void *
const *,
void **,
779 const uint32_t *,
const uint32_t);
782 const uint32_t, uint32_t *);
785 const void *
const *,
786 const uint32_t *, uint32_t **,
791 const uint64_t,
const void *,
void *,
794 const uint64_t,
const void *,
796 const uint32_t,
const uint32_t);
798 const uint64_t,
const uint64_t,
799 const void *,
void *,
801 const void *,
void *,
804 const uint64_t,
const uint64_t,
806 const void *,
void *,
807 const void *,
void *,
808 const void *,
void *,
811 const uint64_t,
const uint64_t,
812 const uint64_t,
const uint64_t,
813 const void *,
void *,
814 const void *,
void *,
815 const void *,
void *,
816 const void *,
void *,
819 const uint64_t *,
const void *
const *,
820 void **,
const uint32_t *,
823 const uint64_t,
const void *,
824 const uint32_t,
void *,
828 const uint32_t,
void *);
845 const void *,
const void *,
846 void *,
const uint32_t);
849 const void *,
const void *,
void *,
850 const uint32_t,
const uint32_t);
853 const void *,
const void *,
854 const void *,
void *,
const uint32_t,
855 const void *,
void *,
const uint32_t);
858 const void *,
const void *,
const void *,
859 const void *,
const void *,
void *,
860 const uint32_t,
const void *,
void *,
861 const uint32_t,
const void *,
void *,
862 const uint32_t,
const void *,
void *,
866 const void *,
const void *,
const void *,
867 const void *,
const void *,
const void *,
868 const void *,
const void *,
const void *,
869 void *,
const uint32_t,
const void *,
870 void *,
const uint32_t,
const void *,
871 void *,
const uint32_t,
const void *,
872 void *,
const uint32_t,
const void *,
873 void *,
const uint32_t,
const void *,
874 void *,
const uint32_t,
const void *,
875 void *,
const uint32_t,
const void *,
876 void *,
const uint32_t);
880 const void *
const [],
const void *
const [],
881 void *[],
const uint32_t[]);
884 const void *
const [],
885 const void *
const [],
886 void *[],
const uint32_t[],
891 const void *
const [],
892 const void *
const [],
893 void *[],
const uint32_t[],
897 const void *,
const void *,
898 const uint64_t,
void *);
911 void *out, uint64_t);
915#define IMB_FLAG_SHANI_OFF (1ULL << 0)
916#define IMB_FLAG_AESNI_OFF (1ULL << 1)
917#define IMB_FLAG_GFNI_OFF (1ULL << 2)
926#define IMB_FEATURE_SHANI (1ULL << 0)
927#define IMB_FEATURE_AESNI (1ULL << 1)
928#define IMB_FEATURE_PCLMULQDQ (1ULL << 2)
929#define IMB_FEATURE_CMOV (1ULL << 3)
930#define IMB_FEATURE_SSE4_2 (1ULL << 4)
931#define IMB_FEATURE_AVX (1ULL << 5)
932#define IMB_FEATURE_AVX2 (1ULL << 6)
933#define IMB_FEATURE_AVX512F (1ULL << 7)
934#define IMB_FEATURE_AVX512DQ (1ULL << 8)
935#define IMB_FEATURE_AVX512CD (1ULL << 9)
936#define IMB_FEATURE_AVX512BW (1ULL << 10)
937#define IMB_FEATURE_AVX512VL (1ULL << 11)
938#define IMB_FEATURE_AVX512_SKX (IMB_FEATURE_AVX512F | IMB_FEATURE_AVX512DQ | \
939 IMB_FEATURE_AVX512CD | IMB_FEATURE_AVX512BW | \
940 IMB_FEATURE_AVX512VL)
941#define IMB_FEATURE_VAES (1ULL << 12)
942#define IMB_FEATURE_VPCLMULQDQ (1ULL << 13)
943#define IMB_FEATURE_SAFE_DATA (1ULL << 14)
944#define IMB_FEATURE_SAFE_PARAM (1ULL << 15)
945#define IMB_FEATURE_GFNI (1ULL << 16)
946#define IMB_FEATURE_AVX512_IFMA (1ULL << 17)
947#define IMB_FEATURE_BMI2 (1ULL << 18)
948#define IMB_FEATURE_AESNI_EMU (1ULL << 19)
949#define IMB_FEATURE_SELF_TEST (1ULL << 20)
950#define IMB_FEATURE_SELF_TEST_PASS (1ULL << 21)
951#define IMB_FEATURE_AVX_IFMA (1ULL << 22)
956#define IMB_CPUFLAGS_NO_AESNI (IMB_FEATURE_SSE4_2 | IMB_FEATURE_CMOV)
957#define IMB_CPUFLAGS_SSE (IMB_CPUFLAGS_NO_AESNI | IMB_FEATURE_AESNI | \
958 IMB_FEATURE_PCLMULQDQ)
959#define IMB_CPUFLAGS_SSE_T2 (IMB_CPUFLAGS_SSE | IMB_FEATURE_SHANI)
960#define IMB_CPUFLAGS_SSE_T3 (IMB_CPUFLAGS_SSE_T2 | IMB_FEATURE_GFNI)
961#define IMB_CPUFLAGS_AVX (IMB_CPUFLAGS_SSE | IMB_FEATURE_AVX)
962#define IMB_CPUFLAGS_AVX2 (IMB_CPUFLAGS_AVX | IMB_FEATURE_AVX2 | \
964#define IMB_CPUFLAGS_AVX512 (IMB_CPUFLAGS_AVX2 | IMB_FEATURE_AVX512_SKX)
965#define IMB_CPUFLAGS_AVX512_T2 (IMB_CPUFLAGS_AVX512 | IMB_FEATURE_VAES | \
966 IMB_FEATURE_VPCLMULQDQ | IMB_FEATURE_GFNI | \
967 IMB_FEATURE_AVX512_IFMA | IMB_FEATURE_SHANI)
968#define IMB_CPUFLAGS_AVX2_T2 (IMB_CPUFLAGS_AVX2 | IMB_FEATURE_SHANI | \
969 IMB_FEATURE_VAES | IMB_FEATURE_VPCLMULQDQ | \
971#define IMB_CPUFLAGS_AVX_T2 (IMB_CPUFLAGS_AVX | IMB_FEATURE_SHANI | \
973#define IMB_CPUFLAGS_AVX2_T3 (IMB_CPUFLAGS_AVX2_T2 | IMB_FEATURE_AVX_IFMA)
977#define IMB_MAX_BURST_SIZE 128
978#define IMB_MAX_JOBS (IMB_MAX_BURST_SIZE * 2)
1282 const unsigned reset_mgr);
1487#define IMB_GET_NEXT_JOB(_mgr) ((_mgr)->get_next_job((_mgr)))
1498#define IMB_SUBMIT_JOB(_mgr) ((_mgr)->submit_job((_mgr)))
1509#define IMB_SUBMIT_JOB_NOCHECK(_mgr) ((_mgr)->submit_job_nocheck((_mgr)))
1518#define IMB_GET_COMPLETED_JOB(_mgr) ((_mgr)->get_completed_job((_mgr)))
1527#define IMB_FLUSH_JOB(_mgr) ((_mgr)->flush_job((_mgr)))
1536#define IMB_QUEUE_SIZE(_mgr) ((_mgr)->queue_size((_mgr)))
1550#define IMB_GET_NEXT_BURST(_mgr, _n_jobs, _jobs) \
1551 ((_mgr)->get_next_burst((_mgr), (_n_jobs), (_jobs)))
1569#define IMB_SUBMIT_BURST(_mgr, _n_jobs, _jobs) \
1570 ((_mgr)->submit_burst((_mgr), (_n_jobs), (_jobs)))
1586#define IMB_SUBMIT_BURST_NOCHECK(_mgr, _n_jobs, _jobs) \
1587 ((_mgr)->submit_burst_nocheck((_mgr), (_n_jobs), (_jobs)))
1598#define IMB_FLUSH_BURST(_mgr, _max_jobs, _jobs) \
1599 ((_mgr)->flush_burst((_mgr), (_max_jobs), (_jobs)))
1613#define IMB_SUBMIT_CIPHER_BURST(_mgr, _jobs, _n_jobs, _cipher, \
1615 ((_mgr)->submit_cipher_burst((_mgr), (_jobs), (_n_jobs), \
1616 (_cipher), (_dir), (_key_size)))
1631#define IMB_SUBMIT_CIPHER_BURST_NOCHECK(_mgr, _jobs, _n_jobs, _cipher, \
1633 ((_mgr)->submit_cipher_burst_nocheck((_mgr), (_jobs), (_n_jobs),\
1634 (_cipher), (_dir), (_key_size)))
1645#define IMB_SUBMIT_HASH_BURST(_mgr, _jobs, _n_jobs, _hash) \
1646 ((_mgr)->submit_hash_burst((_mgr), (_jobs), (_n_jobs), (_hash)))
1660#define IMB_SUBMIT_HASH_BURST_NOCHECK(_mgr, _jobs, _n_jobs, _hash) \
1661 ((_mgr)->submit_hash_burst_nocheck((_mgr), (_jobs), (_n_jobs), (_hash)))
1673#define IMB_AES_KEYEXP_128(_mgr, _key, _enc_exp_key, _dec_exp_key) \
1674 ((_mgr)->keyexp_128((_key), (_enc_exp_key), (_dec_exp_key)))
1683#define IMB_AES_KEYEXP_192(_mgr, _key, _enc_exp_key, _dec_exp_key) \
1684 ((_mgr)->keyexp_192((_key), (_enc_exp_key), (_dec_exp_key)))
1693#define IMB_AES_KEYEXP_256(_mgr, _key, _enc_exp_key, _dec_exp_key) \
1694 ((_mgr)->keyexp_256((_key), (_enc_exp_key), (_dec_exp_key)))
1704#define IMB_AES_CMAC_SUBKEY_GEN_128(_mgr, _exp_key, _key1, _key2) \
1705 ((_mgr)->cmac_subkey_gen_128((_exp_key), (_key1), (_key2)))
1715#define IMB_AES_CMAC_SUBKEY_GEN_256(_mgr, _exp_key, _key1, _key2) \
1716 ((_mgr)->cmac_subkey_gen_256((_exp_key), (_key1), (_key2)))
1727#define IMB_AES_XCBC_KEYEXP(_mgr, _key, _exp_key, _exp_key2, _exp_key3) \
1728 ((_mgr)->xcbc_keyexp((_key), (_exp_key), (_exp_key2), (_exp_key3)))
1730#define IMB_DES_KEYSCHED(_mgr, _exp_key, _key) \
1731 ((_mgr)->des_key_sched((_exp_key), (_key)))
1742#define IMB_SHA1_ONE_BLOCK(_mgr, _src, _tag) \
1743 ((_mgr)->sha1_one_block((_src), (_tag)))
1753#define IMB_SHA1(_mgr, _src, _length, _tag) \
1754 ((_mgr)->sha1((_src), (_length), (_tag)))
1762#define IMB_SHA224_ONE_BLOCK(_mgr, _src, _tag) \
1763 ((_mgr)->sha224_one_block((_src), (_tag)))
1773#define IMB_SHA224(_mgr, _src, _length, _tag) \
1774 ((_mgr)->sha224((_src), (_length), (_tag)))
1782#define IMB_SHA256_ONE_BLOCK(_mgr, _src, _tag) \
1783 ((_mgr)->sha256_one_block((_src), (_tag)))
1792#define IMB_SHA256(_mgr, _src, _length, _tag) \
1793 ((_mgr)->sha256((_src), (_length), (_tag)))
1801#define IMB_SHA384_ONE_BLOCK(_mgr, _src, _tag) \
1802 ((_mgr)->sha384_one_block((_src), (_tag)))
1811#define IMB_SHA384(_mgr, _src, _length, _tag) \
1812 ((_mgr)->sha384((_src), (_length), (_tag)))
1820#define IMB_SHA512_ONE_BLOCK(_mgr, _src, _tag) \
1821 ((_mgr)->sha512_one_block((_src), (_tag)))
1830#define IMB_SHA512(_mgr, _src, _length, _tag) \
1831 ((_mgr)->sha512((_src), (_length), (_tag)))
1839#define IMB_MD5_ONE_BLOCK(_mgr, _src, _tag) \
1840 ((_mgr)->md5_one_block((_src), (_tag)))
1855#define IMB_AES128_CFB_ONE(_mgr, _dst, _src, _iv, _exp_key, _len) \
1856 ((_mgr)->aes128_cfb_one((_dst), (_src), (_iv), (_exp_key), (_len)))
1871#define IMB_AES256_CFB_ONE(_mgr, _dst, _src, _iv, _exp_key, _len) \
1872 ((_mgr)->aes256_cfb_one((_dst), (_src), (_iv), (_exp_key), (_len)))
1875#define IMB_AES128_GCM_ENC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad, \
1876 _aadl, _tag, _tagl) \
1877 ((_mgr)->gcm128_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
1878 (_aad), (_aadl), (_tag), (_tagl)))
1879#define IMB_AES192_GCM_ENC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad, \
1880 _aadl, _tag, _tagl) \
1881 ((_mgr)->gcm192_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
1882 (_aad), (_aadl), (_tag), (_tagl)))
1883#define IMB_AES256_GCM_ENC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad, \
1884 _aadl, _tag, _tagl) \
1885 ((_mgr)->gcm256_enc((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
1886 (_aad), (_aadl), (_tag), (_tagl)))
1888#define IMB_AES128_GCM_DEC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, _aad, \
1889 _aadl, _tag, _tagl) \
1890 ((_mgr)->gcm128_dec((_exp_key), (_ctx), (_dst), (_src), (_len), (_iv), \
1891 (_aad), (_aadl), (_tag), (_tagl)))
1892#define IMB_AES192_GCM_DEC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, \
1893 _aad, _aadl, _tag, _tagl) \
1894 ((_mgr)->gcm192_dec((_exp_key), (_ctx), (_dst), (_src), (_len), \
1895 (_iv), (_aad), (_aadl), (_tag), (_tagl)))
1896#define IMB_AES256_GCM_DEC(_mgr, _exp_key, _ctx, _dst, _src, _len, _iv, \
1897 _aad, _aadl, _tag, _tagl) \
1898 ((_mgr)->gcm256_dec((_exp_key), (_ctx), (_dst), (_src), (_len), \
1899 (_iv), (_aad), (_aadl), (_tag), (_tagl)))
1901#define IMB_AES128_GCM_INIT(_mgr, _exp_key, _ctx, _iv, _aad, _aadl) \
1902 ((_mgr)->gcm128_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl)))
1903#define IMB_AES192_GCM_INIT(_mgr, _exp_key, _ctx, _iv, _aad, _aadl) \
1904 ((_mgr)->gcm192_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl)))
1905#define IMB_AES256_GCM_INIT(_mgr, _exp_key, _ctx, _iv, _aad, _aadl) \
1906 ((_mgr)->gcm256_init((_exp_key), (_ctx), (_iv), (_aad), (_aadl)))
1908#define IMB_AES128_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, \
1910 ((_mgr)->gcm128_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl), \
1912#define IMB_AES192_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, \
1914 ((_mgr)->gcm192_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl), \
1916#define IMB_AES256_GCM_INIT_VAR_IV(_mgr, _exp_key, _ctx, _iv, _ivl, _aad, \
1918 ((_mgr)->gcm256_init_var_iv((_exp_key), (_ctx), (_iv), (_ivl), \
1921#define IMB_AES128_GCM_ENC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
1922 ((_mgr)->gcm128_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
1923#define IMB_AES192_GCM_ENC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
1924 ((_mgr)->gcm192_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
1925#define IMB_AES256_GCM_ENC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
1926 ((_mgr)->gcm256_enc_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
1928#define IMB_AES128_GCM_DEC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
1929 ((_mgr)->gcm128_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
1930#define IMB_AES192_GCM_DEC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
1931 ((_mgr)->gcm192_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
1932#define IMB_AES256_GCM_DEC_UPDATE(_mgr, _exp_key, _ctx, _dst, _src, _len) \
1933 ((_mgr)->gcm256_dec_update((_exp_key), (_ctx), (_dst), (_src), (_len)))
1935#define IMB_AES128_GCM_ENC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
1936 ((_mgr)->gcm128_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
1937#define IMB_AES192_GCM_ENC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
1938 ((_mgr)->gcm192_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
1939#define IMB_AES256_GCM_ENC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
1940 ((_mgr)->gcm256_enc_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
1942#define IMB_AES128_GCM_DEC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
1943 ((_mgr)->gcm128_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
1944#define IMB_AES192_GCM_DEC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
1945 ((_mgr)->gcm192_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
1946#define IMB_AES256_GCM_DEC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
1947 ((_mgr)->gcm256_dec_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
1949#define IMB_AES128_GMAC_INIT(_mgr, _exp_key, _ctx, _iv, _ivl) \
1950 ((_mgr)->gmac128_init((_exp_key), (_ctx), (_iv), (_ivl)))
1951#define IMB_AES192_GMAC_INIT(_mgr, _exp_key, _ctx, _iv, _ivl) \
1952 ((_mgr)->gmac192_init((_exp_key), (_ctx), (_iv), (_ivl)))
1953#define IMB_AES256_GMAC_INIT(_mgr, _exp_key, _ctx, _iv, _ivl) \
1954 ((_mgr)->gmac256_init((_exp_key), (_ctx), (_iv), (_ivl)))
1956#define IMB_AES128_GMAC_UPDATE(_mgr, _exp_key, _ctx, _src, _len) \
1957 ((_mgr)->gmac128_update((_exp_key), (_ctx), (_src), (_len)))
1958#define IMB_AES192_GMAC_UPDATE(_mgr, _exp_key, _ctx, _src, _len) \
1959 ((_mgr)->gmac192_update((_exp_key), (_ctx), (_src), (_len)))
1960#define IMB_AES256_GMAC_UPDATE(_mgr, _exp_key, _ctx, _src, _len) \
1961 ((_mgr)->gmac256_update((_exp_key), (_ctx), (_src), (_len)))
1963#define IMB_AES128_GMAC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
1964 ((_mgr)->gmac128_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
1965#define IMB_AES192_GMAC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
1966 ((_mgr)->gmac192_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
1967#define IMB_AES256_GMAC_FINALIZE(_mgr, _exp_key, _ctx, _tag, _tagl) \
1968 ((_mgr)->gmac256_finalize((_exp_key), (_ctx), (_tag), (_tagl)))
1970#define IMB_AES128_GCM_PRECOMP(_mgr, _key) \
1971 ((_mgr)->gcm128_precomp((_key)))
1972#define IMB_AES192_GCM_PRECOMP(_mgr, _key) \
1973 ((_mgr)->gcm192_precomp((_key)))
1974#define IMB_AES256_GCM_PRECOMP(_mgr, _key) \
1975 ((_mgr)->gcm256_precomp((_key)))
1977#define IMB_AES128_GCM_PRE(_mgr, _key, _exp_key) \
1978 ((_mgr)->gcm128_pre((_key), (_exp_key)))
1979#define IMB_AES192_GCM_PRE(_mgr, _key, _exp_key) \
1980 ((_mgr)->gcm192_pre((_key), (_exp_key)))
1981#define IMB_AES256_GCM_PRE(_mgr, _key, _exp_key) \
1982 ((_mgr)->gcm256_pre((_key), (_exp_key)))
1984#define IMB_GHASH_PRE(_mgr, _key, _exp_key) \
1985 ((_mgr)->ghash_pre((_key), (_exp_key)))
1986#define IMB_GHASH(_mgr, _exp_key, _src, _len, _tag, _tagl) \
1987 ((_mgr)->ghash((_exp_key), (_src), (_len), (_tag), (_tagl)))
1990#define IMB_CHACHA20_POLY1305_INIT(_mgr, _key, _ctx, _iv, _aad, _aadl) \
1991 ((_mgr)->chacha20_poly1305_init((_key), (_ctx), (_iv), (_aad), \
1994#define IMB_CHACHA20_POLY1305_ENC_UPDATE(_mgr, _key, _ctx, _dst, _src, _len) \
1995 ((_mgr)->chacha20_poly1305_enc_update((_key), (_ctx), (_dst), (_src), \
1997#define IMB_CHACHA20_POLY1305_DEC_UPDATE(_mgr, _key, _ctx, _dst, _src, _len) \
1998 ((_mgr)->chacha20_poly1305_dec_update((_key), (_ctx), (_dst), (_src), \
2001#define IMB_CHACHA20_POLY1305_ENC_FINALIZE(_mgr, _ctx, _tag, _tagl) \
2002 ((_mgr)->chacha20_poly1305_finalize((_ctx), (_tag), (_tagl)))
2004#define IMB_CHACHA20_POLY1305_DEC_FINALIZE(_mgr, _ctx, _tag, _tagl) \
2005 ((_mgr)->chacha20_poly1305_finalize((_ctx), (_tag), (_tagl)))
2019#define IMB_ZUC_EEA3_1_BUFFER(_mgr, _key, _iv, _src, _dst, _len) \
2020 ((_mgr)->eea3_1_buffer((_key), (_iv), (_src), (_dst), (_len)))
2021#define IMB_ZUC_EEA3_4_BUFFER(_mgr, _key, _iv, _src, _dst, _len) \
2022 ((_mgr)->eea3_4_buffer((_key), (_iv), (_src), (_dst), (_len)))
2023#define IMB_ZUC_EEA3_N_BUFFER(_mgr, _key, _iv, _src, _dst, _len, _count) \
2024 ((_mgr)->eea3_n_buffer((_key), (_iv), (_src), (_dst), (_len), (_count)))
2037#define IMB_ZUC_EIA3_1_BUFFER(_mgr, _key, _iv, _src, _len, _tag) \
2038 ((_mgr)->eia3_1_buffer((_key), (_iv), (_src), (_len), (_tag)))
2039#define IMB_ZUC_EIA3_N_BUFFER(_mgr, _key, _iv, _src, _len, _tag, _count) \
2040 ((_mgr)->eia3_n_buffer((_key), (_iv), (_src), (_len), (_tag), (_count)))
2060#define IMB_KASUMI_F8_1_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len) \
2061 ((_mgr)->f8_1_buffer((_exp_key), (_iv), (_src), (_dst), (_len)))
2079#define IMB_KASUMI_F8_1_BUFFER_BIT(_mgr, _exp_key, _iv, _src, _dst, _len, \
2081 ((_mgr)->f8_1_buffer_bit((_exp_key), (_iv), (_src), (_dst), (_len), \
2103#define IMB_KASUMI_F8_2_BUFFER(_mgr, _exp_key, _iv1, _iv2, _src1, _dst1, \
2104 _len1, _src2, _dst2, _len2) \
2105 ((_mgr)->f8_2_buffer((_exp_key), (_iv1), (_iv2), (_src1), (_dst1), \
2106 (_len1), (_src2), (_dst2), (_len2)))
2128#define IMB_KASUMI_F8_3_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _src1, _dst1, \
2129 _src2, _dst2, _src3, _dst3, _len) \
2130 ((_mgr)->f8_3_buffer((_exp_key), (_iv1), (_iv2), (_iv3), (_src1), \
2131 (_dst1), (_src2), (_dst2), (_src3), (_dst3), \
2157#define IMB_KASUMI_F8_4_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4, \
2158 _src1, _dst1, _src2, _dst2, _src3, _dst3, \
2159 _src4, _dst4, _len) \
2160 ((_mgr)->f8_4_buffer((_exp_key), (_iv1), (_iv2), (_iv3), (_iv4), \
2161 (_src1), (_dst1), (_src2), (_dst2), \
2162 (_src3), (_dst3), (_src4), (_dst4), (_len)))
2178#define IMB_KASUMI_F8_N_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len, _count) \
2179 ((_mgr)->f8_n_buffer((_exp_key), (_iv), (_src), (_dst), (_len), \
2196#define IMB_KASUMI_F9_1_BUFFER(_mgr, _exp_key, _src, _len, _tag) \
2197 ((_mgr)->f9_1_buffer((_exp_key), (_src), (_len), (_tag)))
2213#define IMB_KASUMI_F9_1_BUFFER_USER(_mgr, _exp_key, _iv, _src, _len, _tag, \
2215 ((_mgr)->f9_1_buffer_user((_exp_key), (_iv), (_src), (_len), \
2227#define IMB_KASUMI_INIT_F8_KEY_SCHED(_mgr, _key, _exp_key) \
2228 ((_mgr)->kasumi_init_f8_key_sched((_key), (_exp_key)))
2239#define IMB_KASUMI_INIT_F9_KEY_SCHED(_mgr, _key, _exp_key) \
2240 ((_mgr)->kasumi_init_f9_key_sched((_key), (_exp_key)))
2251#define IMB_KASUMI_KEY_SCHED_SIZE(_mgr)((_mgr)->kasumi_key_sched_size())
2271#define IMB_SNOW3G_F8_1_BUFFER_BIT(_mgr, _exp_key, _iv, _src, _dst, \
2273 ((_mgr)->snow3g_f8_1_buffer_bit((_exp_key), (_iv), (_src), \
2274 (_dst), (_len), (_offset)))
2290#define IMB_SNOW3G_F8_1_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len) \
2291 ((_mgr)->snow3g_f8_1_buffer((_exp_key), (_iv), (_src), (_dst), (_len)))
2309#define IMB_SNOW3G_F8_2_BUFFER(_mgr, _exp_key, _iv1, _iv2, \
2310 _src1, _dst1, _len1, \
2311 _src2, _dst2, _len2) \
2312 ((_mgr)->snow3g_f8_2_buffer((_exp_key), (_iv1), (_iv2), \
2313 (_src1), (_dst1), (_len1), \
2314 (_src2), (_dst2), (_len2)))
2341#define IMB_SNOW3G_F8_4_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4, \
2342 _src1, _dst1, _len1, \
2343 _src2, _dst2, _len2, \
2344 _src3, _dst3, _len3, \
2345 _src4, _dst4, _len4) \
2346 ((_mgr)->snow3g_f8_4_buffer((_exp_key), (_iv1), (_iv2), (_iv3), \
2347 (_iv4), (_src1), (_dst1), (_len1), \
2348 (_src2), (_dst2), (_len2), \
2349 (_src3), (_dst3), (_len3), \
2350 (_src4), (_dst4), (_len4)))
2393#define IMB_SNOW3G_F8_8_BUFFER(_mgr, _exp_key, _iv1, _iv2, _iv3, _iv4, \
2394 _iv5, _iv6, _iv7, _iv8, \
2395 _src1, _dst1, _len1, \
2396 _src2, _dst2, _len2, \
2397 _src3, _dst3, _len3, \
2398 _src4, _dst4, _len4, \
2399 _src5, _dst5, _len5, \
2400 _src6, _dst6, _len6, \
2401 _src7, _dst7, _len7, \
2402 _src8, _dst8, _len8) \
2403 ((_mgr)->snow3g_f8_8_buffer((_exp_key), (_iv1), (_iv2), (_iv3), \
2404 (_iv4), (_iv5), (_iv6), (_iv7), \
2405 (_iv8), (_src1), (_dst1), (_len1), \
2406 (_src2), (_dst2), (_len2), \
2407 (_src3), (_dst3), (_len3), \
2408 (_src4), (_dst4), (_len4), \
2409 (_src5), (_dst5), (_len5), \
2410 (_src6), (_dst6), (_len6), \
2411 (_src7), (_dst7), (_len7), \
2412 (_src8), (_dst8), (_len8)))
2426#define IMB_SNOW3G_F8_8_BUFFER_MULTIKEY(_mgr, _exp_key, _iv, _src, _dst, _len) \
2427 ((_mgr)->snow3g_f8_8_buffer_multikey((_exp_key), (_iv), (_src), (_dst),\
2444#define IMB_SNOW3G_F8_N_BUFFER(_mgr, _exp_key, _iv, _src, _dst, _len, _count) \
2445 ((_mgr)->snow3g_f8_n_buffer((_exp_key), (_iv), (_src), \
2446 (_dst), (_len), (_count)))
2462#define IMB_SNOW3G_F8_N_BUFFER_MULTIKEY(_mgr, _exp_key, _iv, _src, \
2463 _dst, _len, _count) \
2464 ((_mgr)->snow3g_f8_n_buffer_multikey((_exp_key), (_iv), (_src), \
2465 (_dst), (_len), (_count)))
2482#define IMB_SNOW3G_F9_1_BUFFER(_mgr, _exp_key, _iv, _src, _len, _tag) \
2483 ((_mgr)->snow3g_f9_1_buffer((_exp_key), (_iv), (_src), (_len), (_tag)))
2495#define IMB_SNOW3G_INIT_KEY_SCHED(_mgr, _key, _exp_key) \
2496 ((_mgr)->snow3g_init_key_sched((_key), (_exp_key)))
2507#define IMB_SNOW3G_KEY_SCHED_SIZE(_mgr)((_mgr)->snow3g_key_sched_size())
2512#define IMB_HEC_32(_mgr, _src)((_mgr)->hec_32(_src))
2513#define IMB_HEC_64(_mgr, _src)((_mgr)->hec_64(_src))
2518#define IMB_CRC32_ETHERNET_FCS(_mgr, _src, _len) \
2519 (_mgr)->crc32_ethernet_fcs(_src, _len)
2524#define IMB_CRC16_X25(_mgr, _src, _len) \
2525 (_mgr)->crc16_x25(_src, _len)
2530#define IMB_CRC32_SCTP(_mgr, _src, _len) \
2531 (_mgr)->crc32_sctp(_src, _len)
2536#define IMB_CRC24_LTE_A(_mgr, _src, _len) \
2537 (_mgr)->crc24_lte_a(_src, _len)
2542#define IMB_CRC24_LTE_B(_mgr, _src, _len) \
2543 (_mgr)->crc24_lte_b(_src, _len)
2548#define IMB_CRC16_FP_DATA(_mgr, _src, _len) \
2549 (_mgr)->crc16_fp_data(_src, _len)
2554#define IMB_CRC11_FP_HEADER(_mgr, _src, _len) \
2555 (_mgr)->crc11_fp_header(_src, _len)
2560#define IMB_CRC7_FP_HEADER(_mgr, _src, _len) \
2561 (_mgr)->crc7_fp_header(_src, _len)
2566#define IMB_CRC10_IUUP_DATA(_mgr, _src, _len) \
2567 (_mgr)->crc10_iuup_data(_src, _len)
2572#define IMB_CRC6_IUUP_HEADER(_mgr, _src, _len) \
2573 (_mgr)->crc6_iuup_header(_src, _len)
2578#define IMB_CRC32_WIMAX_OFDMA_DATA(_mgr, _src, _len) \
2579 (_mgr)->crc32_wimax_ofdma_data(_src, _len)
2584#define IMB_CRC8_WIMAX_OFDMA_HCS(_mgr, _src, _len) \
2585 (_mgr)->crc8_wimax_ofdma_hcs(_src, _len)
2616 const void *pkey,
const size_t key_len,
2617 void *ipad_hash,
void *opad_hash);
2633 const uint64_t *ks,
const int len);
2664 void *dec_exp_keys);
2669 void *dec_exp_keys);
2674 void *dec_exp_keys);
2679 void *dec_exp_keys);
2689 void *dec_exp_keys);
2694 void *dec_exp_keys);
2699 void *dec_exp_keys);
2704 void *dec_exp_keys);
2714 void *dec_exp_keys);
2719 void *dec_exp_keys);
2724 void *dec_exp_keys);
2729 void *dec_exp_keys);
2738 void *enc_exp_keys);
2743 void *enc_exp_keys);
2748 void *enc_exp_keys);
2753 void *enc_exp_keys);
2762 void *enc_exp_keys);
2767 void *enc_exp_keys);
2772 void *enc_exp_keys);
2777 void *enc_exp_keys);
2786 void *enc_exp_keys);
2791 void *enc_exp_keys);
2796 void *enc_exp_keys);
2801 void *enc_exp_keys);
2812 void *k2,
void *k3);
2817 void *k2,
void *k3);
2822 void *k2,
void *k3);
2827 void *k2,
void *k3);
2880 uint8_t *out, uint8_t
const *in, uint64_t len,
2881 const uint8_t *iv, uint8_t
const *aad, uint64_t aad_len,
2882 uint8_t *auth_tag, uint64_t auth_tag_len);
2889 uint8_t *out, uint8_t
const *in, uint64_t len,
2891 uint8_t
const *aad, uint64_t aad_len,
2892 uint8_t *auth_tag, uint64_t auth_tag_len);
2899 uint8_t *out, uint8_t
const *in, uint64_t len,
2901 uint8_t
const *aad, uint64_t aad_len,
2902 uint8_t *auth_tag, uint64_t auth_tag_len);
2924 uint8_t *out, uint8_t
const *in, uint64_t len,
2925 const uint8_t *iv, uint8_t
const *aad, uint64_t aad_len,
2926 uint8_t *auth_tag, uint64_t auth_tag_len);
2933 uint8_t *out, uint8_t
const *in, uint64_t len,
2935 uint8_t
const *aad, uint64_t aad_len,
2936 uint8_t *auth_tag, uint64_t auth_tag_len);
2943 uint8_t *out, uint8_t
const *in, uint64_t len,
2945 uint8_t
const *aad, uint64_t aad_len,
2946 uint8_t *auth_tag, uint64_t auth_tag_len);
2969 uint8_t *out, uint8_t
const *in, uint64_t len,
2971 uint8_t
const *aad, uint64_t aad_len,
2972 uint8_t *auth_tag, uint64_t auth_tag_len);
2979 uint8_t *out, uint8_t
const *in, uint64_t len,
2981 uint8_t
const *aad, uint64_t aad_len,
2982 uint8_t *auth_tag, uint64_t auth_tag_len);
2989 uint8_t *out, uint8_t
const *in, uint64_t len,
2991 uint8_t
const *aad, uint64_t aad_len,
2992 uint8_t *auth_tag, uint64_t auth_tag_len);
3015 uint8_t *out, uint8_t
const *in, uint64_t len,
3016 const uint8_t *iv, uint8_t
const *aad, uint64_t aad_len,
3017 uint8_t *auth_tag, uint64_t auth_tag_len);
3024 uint8_t *out, uint8_t
const *in, uint64_t len,
3026 uint8_t
const *aad, uint64_t aad_len,
3027 uint8_t *auth_tag, uint64_t auth_tag_len);
3034 uint8_t *out, uint8_t
const *in, uint64_t len,
3036 uint8_t
const *aad, uint64_t aad_len,
3037 uint8_t *auth_tag, uint64_t auth_tag_len);
3060 uint8_t *out, uint8_t
const *in, uint64_t len,
3061 const uint8_t *iv, uint8_t
const *aad, uint64_t aad_len,
3062 uint8_t *auth_tag, uint64_t auth_tag_len);
3069 uint8_t *out, uint8_t
const *in, uint64_t len,
3071 uint8_t
const *aad, uint64_t aad_len,
3072 uint8_t *auth_tag, uint64_t auth_tag_len);
3079 uint8_t *out, uint8_t
const *in, uint64_t len,
3081 uint8_t
const *aad, uint64_t aad_len,
3082 uint8_t *auth_tag, uint64_t auth_tag_len);
3105 uint8_t *out, uint8_t
const *in, uint64_t len,
3106 const uint8_t *iv, uint8_t
const *aad, uint64_t aad_len,
3107 uint8_t *auth_tag, uint64_t auth_tag_len);
3114 uint8_t *out, uint8_t
const *in, uint64_t len,
3116 uint8_t
const *aad, uint64_t aad_len,
3117 uint8_t *auth_tag, uint64_t auth_tag_len);
3124 uint8_t *out, uint8_t
const *in, uint64_t len,
3126 uint8_t
const *aad, uint64_t aad_len,
3127 uint8_t *auth_tag, uint64_t auth_tag_len);
3144 const uint8_t *iv, uint8_t
const *aad, uint64_t aad_len);
3152 uint8_t
const *aad, uint64_t aad_len);
3160 uint8_t
const *aad, uint64_t aad_len);
3176 const uint8_t *iv, uint8_t
const *aad, uint64_t aad_len);
3184 uint8_t
const *aad, uint64_t aad_len);
3192 uint8_t
const *aad, uint64_t aad_len);
3208 const uint8_t *iv, uint8_t
const *aad, uint64_t aad_len);
3216 uint8_t
const *aad, uint64_t aad_len);
3224 uint8_t
const *aad, uint64_t aad_len);
3238 uint8_t *out,
const uint8_t *in, uint64_t len);
3245 uint8_t *out,
const uint8_t *in, uint64_t len);
3252 uint8_t *out,
const uint8_t *in, uint64_t len);
3266 uint8_t *out,
const uint8_t *in, uint64_t len);
3273 uint8_t *out,
const uint8_t *in, uint64_t len);
3280 uint8_t *out,
const uint8_t *in, uint64_t len);
3294 uint8_t *out,
const uint8_t *in, uint64_t len);
3301 uint8_t *out,
const uint8_t *in, uint64_t len);
3308 uint8_t *out,
const uint8_t *in, uint64_t len);
3322 uint8_t *out,
const uint8_t *in, uint64_t len);
3329 uint8_t *out,
const uint8_t *in, uint64_t len);
3336 uint8_t *out,
const uint8_t *in, uint64_t len);
3350 uint8_t *out,
const uint8_t *in, uint64_t len);
3357 uint8_t *out,
const uint8_t *in, uint64_t len);
3364 uint8_t *out,
const uint8_t *in, uint64_t len);
3378 uint8_t *out,
const uint8_t *in, uint64_t len);
3385 uint8_t *out,
const uint8_t *in, uint64_t len);
3392 uint8_t *out,
const uint8_t *in, uint64_t len);
3407 uint8_t *auth_tag, uint64_t auth_tag_len);
3414 uint8_t *auth_tag, uint64_t auth_tag_len);
3421 uint8_t *auth_tag, uint64_t auth_tag_len);
3436 uint8_t *auth_tag, uint64_t auth_tag_len);
3443 uint8_t *auth_tag, uint64_t auth_tag_len);
3450 uint8_t *auth_tag, uint64_t auth_tag_len);
3465 uint8_t *auth_tag, uint64_t auth_tag_len);
3472 uint8_t *auth_tag, uint64_t auth_tag_len);
3479 uint8_t *auth_tag, uint64_t auth_tag_len);
3494 uint8_t *auth_tag, uint64_t auth_tag_len);
3501 uint8_t *auth_tag, uint64_t auth_tag_len);
3508 uint8_t *auth_tag, uint64_t auth_tag_len);
3523 uint8_t *auth_tag, uint64_t auth_tag_len);
3530 uint8_t *auth_tag, uint64_t auth_tag_len);
3537 uint8_t *auth_tag, uint64_t auth_tag_len);
3552 uint8_t *auth_tag, uint64_t auth_tag_len);
3559 uint8_t *auth_tag, uint64_t auth_tag_len);
3566 uint8_t *auth_tag, uint64_t auth_tag_len);
3705 const uint8_t bearer,
3721 const uint8_t bearer,
3738 const uint8_t bearer,
3753 const uint32_t fresh,
3772 const uint8_t bearer,
3791 const uint32_t fresh,
3828 void *dst_ptr_array[],
3829 const void *
const src_ptr_array[],
3830 const uint64_t len_array[],
3831 const void *
const iv_ptr_array[],
3832 const void *
const aad_ptr_array[],
3833 const uint64_t aad_len,
3834 void *tag_ptr_array[],
3835 const uint64_t tag_len,
3836 const uint64_t num_packets);
3854 const void *exp_key_data,
3855 void *dst_ptr_array[],
3856 const void *
const src_ptr_array[],
3857 const uint64_t num_packets,
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:558
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:770
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:628
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.
void(* snow3g_f8_8_buffer_multikey_t)(const snow3g_key_schedule_t *const [], const void *const [], const void *const [], void *[], const uint32_t[])
Definition intel-ipsec-mb.h:879
void(* aes_gcm_pre_t)(const void *, struct gcm_key_data *)
Definition intel-ipsec-mb.h:747
void(* ghash_t)(const struct gcm_key_data *, const void *, const uint64_t, void *, const uint64_t)
Definition intel-ipsec-mb.h:767
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 aes_gcm_enc_192_update_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, const uint8_t *in, uint64_t len)
Encrypt a block of a AES-GCM-192 encryption message.
IMB_DLL_EXPORT void aes_gcm_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:765
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:348
@ IMB_KEY_192_BYTES
Definition intel-ipsec-mb.h:351
@ IMB_KEY_64_BYTES
Definition intel-ipsec-mb.h:349
@ IMB_KEY_256_BYTES
Definition intel-ipsec-mb.h:352
@ IMB_KEY_128_BYTES
Definition intel-ipsec-mb.h:350
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:844
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 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:777
void(* aes_gmac_init_t)(const struct gcm_key_data *, struct gcm_context_data *, const uint8_t *, const uint64_t)
Definition intel-ipsec-mb.h:749
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 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 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:261
@ IMB_CIPHER_DES
Definition intel-ipsec-mb.h:268
@ IMB_CIPHER_NULL
Definition intel-ipsec-mb.h:264
@ IMB_CIPHER_CBC
Definition intel-ipsec-mb.h:262
@ IMB_CIPHER_GCM
Definition intel-ipsec-mb.h:266
@ IMB_CIPHER_ECB
Definition intel-ipsec-mb.h:273
@ IMB_CIPHER_ZUC_EEA3
Definition intel-ipsec-mb.h:275
@ IMB_CIPHER_CHACHA20
Definition intel-ipsec-mb.h:279
@ IMB_CIPHER_KASUMI_UEA1_BITLEN
Definition intel-ipsec-mb.h:277
@ IMB_CIPHER_CHACHA20_POLY1305_SGL
Definition intel-ipsec-mb.h:281
@ IMB_CIPHER_CUSTOM
Definition intel-ipsec-mb.h:267
@ IMB_CIPHER_GCM_SGL
Definition intel-ipsec-mb.h:284
@ IMB_CIPHER_CNTR
Definition intel-ipsec-mb.h:263
@ IMB_CIPHER_DES3
Definition intel-ipsec-mb.h:271
@ IMB_CIPHER_CNTR_BITLEN
Definition intel-ipsec-mb.h:274
@ IMB_CIPHER_CBCS_1_9
Definition intel-ipsec-mb.h:278
@ IMB_CIPHER_NUM
Definition intel-ipsec-mb.h:285
@ IMB_CIPHER_CCM
Definition intel-ipsec-mb.h:270
@ IMB_CIPHER_SNOW3G_UEA2_BITLEN
Definition intel-ipsec-mb.h:276
@ IMB_CIPHER_PON_AES_CNTR
Definition intel-ipsec-mb.h:272
@ IMB_CIPHER_CHACHA20_POLY1305
Definition intel-ipsec-mb.h:280
@ IMB_CIPHER_SNOW_V_AEAD
Definition intel-ipsec-mb.h:283
@ IMB_CIPHER_DOCSIS_SEC_BPI
Definition intel-ipsec-mb.h:265
@ IMB_CIPHER_DOCSIS_DES
Definition intel-ipsec-mb.h:269
@ IMB_CIPHER_SNOW_V
Definition intel-ipsec-mb.h:282
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:890
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:697
void(* chacha_poly_enc_dec_update_t)(const void *, struct chacha20_poly1305_context_data *, void *, const void *, const uint64_t)
Definition intel-ipsec-mb.h:762
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:343
@ IMB_ORDER_HASH_CIPHER
Definition intel-ipsec-mb.h:345
@ IMB_ORDER_CIPHER_HASH
Definition intel-ipsec-mb.h:344
void(* chacha_poly_init_t)(const void *, struct chacha20_poly1305_context_data *, const void *, const void *, const uint64_t)
Definition intel-ipsec-mb.h:759
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:852
uint32_t(* submit_hash_burst_t)(struct IMB_MGR *, struct IMB_JOB *, const uint32_t, const IMB_HASH_ALG hash)
Definition intel-ipsec-mb.h:710
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:818
IMB_DLL_EXPORT uint32_t queue_size_avx512(IMB_MGR *state)
Get number of jobs queued to be processed.
IMB_DLL_EXPORT void aes_gcm_enc_256_avx_gen4(const struct gcm_key_data *key_data, struct gcm_context_data *context_data, uint8_t *out, uint8_t const *in, uint64_t len, const uint8_t *iv, uint8_t const *aad, uint64_t aad_len, uint8_t *auth_tag, uint64_t auth_tag_len)
AES-GCM-256 Encryption.
IMB_DLL_EXPORT void aes_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:803
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:908
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.
#define IMB_GCM_BLOCK_LEN
Definition intel-ipsec-mb.h:570
IMB_JOB *(* get_next_job_t)(struct IMB_MGR *)
Definition intel-ipsec-mb.h:696
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 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:719
void(* keyexp_t)(const void *, void *, void *)
Definition intel-ipsec-mb.h:714
void(* snow3g_f8_8_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, const void *, const void *, const void *, const void *, const void *, const void *, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t)
Definition intel-ipsec-mb.h:865
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:736
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.
void(* snow3g_f8_n_buffer_t)(const snow3g_key_schedule_t *, const void *const [], const void *const [], void *[], const uint32_t[], const uint32_t)
Definition intel-ipsec-mb.h:883
IMB_SGL_STATE
Definition intel-ipsec-mb.h:355
@ IMB_SGL_UPDATE
Definition intel-ipsec-mb.h:357
@ IMB_SGL_ALL
Definition intel-ipsec-mb.h:359
@ IMB_SGL_COMPLETE
Definition intel-ipsec-mb.h:358
@ IMB_SGL_INIT
Definition intel-ipsec-mb.h:356
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 des_cfb_one(void *out, const void *in, const uint64_t *iv, const uint64_t *ks, const int len)
DES-CFB Encrypt/Decrypt up to one block.
IMB_DLL_EXPORT void 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:722
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:629
IMB_DLL_EXPORT void aes_keyexp_256_enc_avx2(const void *key, void *enc_exp_keys)
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 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 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.
void(* snow3g_f8_1_buffer_bit_t)(const snow3g_key_schedule_t *, const void *, const void *, void *, const uint32_t, const uint32_t)
Definition intel-ipsec-mb.h:848
int(* kasumi_init_f8_key_sched_t)(const void *, kasumi_key_sched_t *)
Definition intel-ipsec-mb.h:829
void(* zuc_eea3_4_buffer_t)(const void *const *, const void *const *, const void *const *, void **, const uint32_t *)
Definition intel-ipsec-mb.h:773
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 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:793
struct kasumi_key_sched_s kasumi_key_sched_t
IMB_HASH_ALG
Definition intel-ipsec-mb.h:293
@ IMB_AUTH_AES_CMAC_256
Definition intel-ipsec-mb.h:320
@ IMB_AUTH_AES_XCBC
Definition intel-ipsec-mb.h:299
@ IMB_AUTH_ZUC_EIA3_BITLEN
Definition intel-ipsec-mb.h:313
@ IMB_AUTH_AES_GMAC_128
Definition intel-ipsec-mb.h:317
@ IMB_AUTH_CRC16_X25
Definition intel-ipsec-mb.h:332
@ IMB_AUTH_NULL
Definition intel-ipsec-mb.h:301
@ IMB_AUTH_PON_CRC_BIP
Definition intel-ipsec-mb.h:312
@ IMB_AUTH_SHA_224
Definition intel-ipsec-mb.h:307
@ IMB_AUTH_CRC24_LTE_A
Definition intel-ipsec-mb.h:330
@ IMB_AUTH_CRC32_ETHERNET_FCS
Definition intel-ipsec-mb.h:327
@ IMB_AUTH_KASUMI_UIA1
Definition intel-ipsec-mb.h:316
@ IMB_AUTH_HMAC_SHA_1
Definition intel-ipsec-mb.h:294
@ IMB_AUTH_SHA_256
Definition intel-ipsec-mb.h:308
@ IMB_AUTH_SNOW3G_UIA2_BITLEN
Definition intel-ipsec-mb.h:315
@ IMB_AUTH_SNOW_V_AEAD
Definition intel-ipsec-mb.h:325
@ IMB_AUTH_CRC32_SCTP
Definition intel-ipsec-mb.h:328
@ IMB_AUTH_NUM
Definition intel-ipsec-mb.h:340
@ IMB_AUTH_HMAC_SHA_256
Definition intel-ipsec-mb.h:296
@ IMB_AUTH_GHASH
Definition intel-ipsec-mb.h:339
@ IMB_AUTH_CUSTOM
Definition intel-ipsec-mb.h:303
@ IMB_AUTH_CHACHA20_POLY1305_SGL
Definition intel-ipsec-mb.h:323
@ IMB_AUTH_CRC24_LTE_B
Definition intel-ipsec-mb.h:331
@ IMB_AUTH_ZUC256_EIA3_BITLEN
Definition intel-ipsec-mb.h:324
@ IMB_AUTH_AES_CCM
Definition intel-ipsec-mb.h:304
@ IMB_AUTH_CRC6_IUUP_HEADER
Definition intel-ipsec-mb.h:338
@ IMB_AUTH_POLY1305
Definition intel-ipsec-mb.h:321
@ IMB_AUTH_MD5
Definition intel-ipsec-mb.h:300
@ IMB_AUTH_SHA_512
Definition intel-ipsec-mb.h:310
@ IMB_AUTH_AES_GMAC
Definition intel-ipsec-mb.h:302
@ IMB_AUTH_CRC16_FP_DATA
Definition intel-ipsec-mb.h:333
@ IMB_AUTH_AES_CMAC_BITLEN
Definition intel-ipsec-mb.h:311
@ IMB_AUTH_CRC11_FP_HEADER
Definition intel-ipsec-mb.h:334
@ IMB_AUTH_CHACHA20_POLY1305
Definition intel-ipsec-mb.h:322
@ IMB_AUTH_CRC7_FP_HEADER
Definition intel-ipsec-mb.h:337
@ IMB_AUTH_CRC10_IUUP_DATA
Definition intel-ipsec-mb.h:335
@ IMB_AUTH_HMAC_SHA_224
Definition intel-ipsec-mb.h:295
@ IMB_AUTH_CRC32_WIMAX_OFDMA_DATA
Definition intel-ipsec-mb.h:329
@ IMB_AUTH_HMAC_SHA_512
Definition intel-ipsec-mb.h:298
@ IMB_AUTH_GCM_SGL
Definition intel-ipsec-mb.h:326
@ IMB_AUTH_SHA_1
Definition intel-ipsec-mb.h:306
@ IMB_AUTH_AES_GMAC_192
Definition intel-ipsec-mb.h:318
@ IMB_AUTH_DOCSIS_CRC32
Definition intel-ipsec-mb.h:314
@ IMB_AUTH_CRC8_WIMAX_OFDMA_HCS
Definition intel-ipsec-mb.h:336
@ IMB_AUTH_AES_GMAC_256
Definition intel-ipsec-mb.h:319
@ IMB_AUTH_HMAC_SHA_384
Definition intel-ipsec-mb.h:297
@ IMB_AUTH_AES_CMAC
Definition intel-ipsec-mb.h:305
@ IMB_AUTH_SHA_384
Definition intel-ipsec-mb.h:309
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.
IMB_DLL_EXPORT void imb_quic_hp_aes_ecb(IMB_MGR *state, const void *exp_key_data, void *dst_ptr_array[], const void *const src_ptr_array[], const uint64_t num_packets, const IMB_KEY_SIZE_BYTES key_size)
Batch of AES-ECB encrypt/decrypt operations with the same key.
void(* kasumi_f8_1_buffer_t)(const kasumi_key_sched_t *, const uint64_t, const void *, void *, const uint32_t)
Definition intel-ipsec-mb.h:790
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:826
int(* kasumi_init_f9_key_sched_t)(const void *, kasumi_key_sched_t *)
Definition intel-ipsec-mb.h:831
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:743
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 imb_quic_aes_gcm(IMB_MGR *state, const struct gcm_key_data *key_data, const IMB_KEY_SIZE_BYTES key_size, const IMB_CIPHER_DIRECTION cipher_dir, void *dst_ptr_array[], const void *const src_ptr_array[], const uint64_t len_array[], const void *const iv_ptr_array[], const void *const aad_ptr_array[], const uint64_t aad_len, void *tag_ptr_array[], const uint64_t tag_len, const uint64_t num_packets)
Batch of GCM encrypt/decrypt operations with the same key.
IMB_DLL_EXPORT 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 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:781
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:700
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 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:192
@ IMB_ERR_NULL_JOB
Definition intel-ipsec-mb.h:240
@ IMB_ERR_JOB_NULL_SGL_CTX
Definition intel-ipsec-mb.h:212
@ IMB_ERR_AAD_LEN
Definition intel-ipsec-mb.h:227
@ IMB_ERR_NULL_CTX
Definition intel-ipsec-mb.h:230
@ IMB_ERR_JOB_NULL_IV
Definition intel-ipsec-mb.h:198
@ IMB_ERR_JOB_NULL_HMAC_IPAD
Definition intel-ipsec-mb.h:233
@ IMB_ERR_SELFTEST
Definition intel-ipsec-mb.h:245
@ IMB_ERR_NULL_DST
Definition intel-ipsec-mb.h:216
@ IMB_ERR_JOB_AUTH_TAG_LEN
Definition intel-ipsec-mb.h:205
@ IMB_ERR_NULL_AUTH
Definition intel-ipsec-mb.h:220
@ IMB_ERR_JOB_SRC_OFFSET
Definition intel-ipsec-mb.h:207
@ IMB_ERR_SRC_OFFSET
Definition intel-ipsec-mb.h:228
@ IMB_ERR_JOB_NULL_KEY
Definition intel-ipsec-mb.h:197
@ IMB_ERR_NULL_SRC
Definition intel-ipsec-mb.h:215
@ IMB_ERR_JOB_AAD_LEN
Definition intel-ipsec-mb.h:206
@ IMB_ERR_JOB_IV_LEN
Definition intel-ipsec-mb.h:203
@ IMB_ERR_NULL_EXP_KEY
Definition intel-ipsec-mb.h:218
@ IMB_ERR_JOB_NULL_AAD
Definition intel-ipsec-mb.h:200
@ IMB_ERR_MIN
Definition intel-ipsec-mb.h:193
@ IMB_ERR_BURST_SUITE_ID
Definition intel-ipsec-mb.h:246
@ IMB_ERR_NO_AESNI_EMU
Definition intel-ipsec-mb.h:231
@ IMB_ERR_JOB_NULL_SRC
Definition intel-ipsec-mb.h:195
@ IMB_ERR_QUEUE_SPACE
Definition intel-ipsec-mb.h:241
@ IMB_ERR_JOB_NULL_AUTH
Definition intel-ipsec-mb.h:199
@ IMB_ERR_JOB_NULL_DST
Definition intel-ipsec-mb.h:196
@ IMB_ERR_CIPH_MODE
Definition intel-ipsec-mb.h:209
@ IMB_ERR_NULL_KEY
Definition intel-ipsec-mb.h:217
@ IMB_ERR_JOB_NULL_XCBC_K1_EXP
Definition intel-ipsec-mb.h:234
@ IMB_ERR_JOB_AUTH_LEN
Definition intel-ipsec-mb.h:202
@ IMB_ERR_AUTH_TAG_LEN
Definition intel-ipsec-mb.h:226
@ IMB_ERR_JOB_NULL_GHASH_INIT_TAG
Definition intel-ipsec-mb.h:238
@ IMB_ERR_HASH_ALGO
Definition intel-ipsec-mb.h:210
@ IMB_ERR_KEY_LEN
Definition intel-ipsec-mb.h:225
@ IMB_ERR_JOB_NULL_AUTH_KEY
Definition intel-ipsec-mb.h:211
@ IMB_ERR_JOB_NULL_NEXT_IV
Definition intel-ipsec-mb.h:213
@ IMB_ERR_NULL_BURST
Definition intel-ipsec-mb.h:242
@ IMB_ERR_NULL_MBMGR
Definition intel-ipsec-mb.h:194
@ IMB_ERR_NULL_AUTH_KEY
Definition intel-ipsec-mb.h:229
@ IMB_ERR_IV_LEN
Definition intel-ipsec-mb.h:224
@ IMB_ERR_CIPH_LEN
Definition intel-ipsec-mb.h:222
@ IMB_ERR_MISSING_CPUFLAGS_INIT_MGR
Definition intel-ipsec-mb.h:239
@ IMB_ERR_MAX
Definition intel-ipsec-mb.h:248
@ IMB_ERR_JOB_CHAIN_ORDER
Definition intel-ipsec-mb.h:208
@ IMB_ERR_JOB_NULL_HMAC_OPAD
Definition intel-ipsec-mb.h:232
@ IMB_ERR_JOB_CIPH_DIR
Definition intel-ipsec-mb.h:237
@ IMB_ERR_JOB_PON_PLI
Definition intel-ipsec-mb.h:214
@ IMB_ERR_JOB_NULL_XCBC_K2
Definition intel-ipsec-mb.h:235
@ IMB_ERR_NULL_AAD
Definition intel-ipsec-mb.h:221
@ IMB_ERR_JOB_KEY_LEN
Definition intel-ipsec-mb.h:204
@ IMB_ERR_JOB_CIPH_LEN
Definition intel-ipsec-mb.h:201
@ IMB_ERR_BURST_SIZE
Definition intel-ipsec-mb.h:243
@ IMB_ERR_BURST_OOO
Definition intel-ipsec-mb.h:244
@ IMB_ERR_JOB_NULL_XCBC_K3
Definition intel-ipsec-mb.h:236
@ IMB_ERR_NULL_IV
Definition intel-ipsec-mb.h:219
@ IMB_ERR_AUTH_LEN
Definition intel-ipsec-mb.h:223
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:905
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:906
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:715
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:716
uint32_t(* burst_fn_t)(struct IMB_MGR *, const uint32_t, struct IMB_JOB **)
Definition intel-ipsec-mb.h:701
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:978
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:746
IMB_DLL_EXPORT void imb_hmac_ipad_opad(struct IMB_MGR *mb_mgr, const IMB_HASH_ALG sha_type, const void *pkey, const size_t key_len, void *ipad_hash, void *opad_hash)
Ipad Opad padding for HMAC.
IMB_DLL_EXPORT void 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:752
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:718
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 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:288
@ IMB_DIR_DECRYPT
Definition intel-ipsec-mb.h:290
@ IMB_DIR_ENCRYPT
Definition intel-ipsec-mb.h:289
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 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:822
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 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:704
void(* aes_gcm_enc_dec_iv_t)(const struct gcm_key_data *, struct gcm_context_data *, uint8_t *, uint8_t const *, const uint64_t, const uint8_t *, uint8_t const *, const uint64_t, uint8_t *, const uint64_t, const uint64_t)
Definition intel-ipsec-mb.h:727
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:698
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:810
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.
size_t(* kasumi_key_sched_size_t)(void)
Definition intel-ipsec-mb.h:833
size_t(* snow3g_key_sched_size_t)(void)
Definition intel-ipsec-mb.h:903
IMB_DLL_EXPORT IMB_JOB * get_completed_job_avx2(IMB_MGR *state)
Get next completed job.
void(* aes_ecb_quic_t)(const void *, const void *, void *out, uint64_t)
Definition intel-ipsec-mb.h:910
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 uint32_t imb_set_session(IMB_MGR *state, IMB_JOB *job)
Sets up suite_id and session_id fields for selected cipher suite in provided job structure.
void(* zuc_eia3_n_buffer_t)(const void *const *, const void *const *, const void *const *, const uint32_t *, uint32_t **, const uint32_t)
Definition intel-ipsec-mb.h:784
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:733
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:900
void(* snow3g_f8_4_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, const void *, const void *, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t)
Definition intel-ipsec-mb.h:857
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_JOB *(* flush_job_t)(struct IMB_MGR *)
Definition intel-ipsec-mb.h:699
void(* snow3g_f9_1_buffer_t)(const snow3g_key_schedule_t *, const void *, const void *, const uint64_t, void *)
Definition intel-ipsec-mb.h:896
void(* aes_cfb_t)(void *, const void *, const void *, const void *, uint64_t)
Definition intel-ipsec-mb.h:720
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 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:695
void(* kasumi_f8_2_buffer_t)(const kasumi_key_sched_t *, const uint64_t, const uint64_t, const void *, void *, const uint32_t, const void *, void *, const uint32_t)
Definition intel-ipsec-mb.h:797
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:755
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:740
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:717
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:178
@ IMB_STATUS_ERROR
Definition intel-ipsec-mb.h:186
@ IMB_STATUS_COMPLETED
Definition intel-ipsec-mb.h:182
@ IMB_STATUS_INTERNAL_ERROR
Definition intel-ipsec-mb.h:185
@ IMB_STATUS_COMPLETED_CIPHER
Definition intel-ipsec-mb.h:180
@ IMB_STATUS_COMPLETED_AUTH
Definition intel-ipsec-mb.h:181
@ IMB_STATUS_BEING_PROCESSED
Definition intel-ipsec-mb.h:179
@ IMB_STATUS_INVALID_ARGS
Definition intel-ipsec-mb.h:184
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:390
union IMB_JOB::@11 cipher_fields
struct gcm_context_data * ctx
Definition intel-ipsec-mb.h:468
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:526
struct IMB_JOB::@10::_POLY1305_specific_fields POLY1305
uint64_t num_sgl_io_segs
Definition intel-ipsec-mb.h:405
const void * _init_tag
Definition intel-ipsec-mb.h:500
const struct IMB_SGL_IOV * sgl_io_segs
Definition intel-ipsec-mb.h:398
uint64_t iv_len_in_bytes
Definition intel-ipsec-mb.h:430
struct IMB_JOB::@10::_SNOW3G_UIA2_specific_fields SNOW3G_UIA2
const uint8_t * _iv23
Definition intel-ipsec-mb.h:476
const uint8_t * _hashed_auth_key_xor_ipad
Definition intel-ipsec-mb.h:438
void * suite_id[4]
Definition intel-ipsec-mb.h:550
struct IMB_JOB::@10::_AES_XCBC_specific_fields XCBC
const struct gcm_key_data * _key
Definition intel-ipsec-mb.h:490
IMB_SGL_STATE sgl_state
Definition intel-ipsec-mb.h:539
uint64_t msg_len_to_hash_in_bytes
Definition intel-ipsec-mb.h:424
IMB_CHAIN_ORDER chain_order
Definition intel-ipsec-mb.h:528
uint64_t msg_len_to_cipher_in_bits
Definition intel-ipsec-mb.h:419
const void * _iv
Definition intel-ipsec-mb.h:482
struct IMB_JOB::@10::_AES_CMAC_specific_fields CMAC
struct chacha20_poly1305_context_data * ctx
Definition intel-ipsec-mb.h:511
const void * aad
Definition intel-ipsec-mb.h:454
void * user_data2
Definition intel-ipsec-mb.h:532
void * next_iv
Definition intel-ipsec-mb.h:545
uint64_t cipher_start_offset_in_bits
Definition intel-ipsec-mb.h:413
int(* hash_func)(struct IMB_JOB *)
Definition intel-ipsec-mb.h:536
int(* cipher_func)(struct IMB_JOB *)
Definition intel-ipsec-mb.h:534
const uint8_t * _hashed_auth_key_xor_opad
Definition intel-ipsec-mb.h:441
uint64_t auth_tag_output_len_in_bytes
Definition intel-ipsec-mb.h:432
const uint32_t * _k1_expanded
Definition intel-ipsec-mb.h:446
IMB_CIPHER_MODE cipher_mode
Definition intel-ipsec-mb.h:525
const void * _key
Definition intel-ipsec-mb.h:480
const uint8_t * _key
Definition intel-ipsec-mb.h:472
struct IMB_JOB::@11::_CBCS_specific_fields CBCS
const void * _skey2
Definition intel-ipsec-mb.h:462
const void * _key_expanded
Definition intel-ipsec-mb.h:459
const uint8_t * iv
Definition intel-ipsec-mb.h:429
uint64_t msg_len_to_cipher_in_bytes
Definition intel-ipsec-mb.h:417
void * reserved
Definition intel-ipsec-mb.h:519
IMB_HASH_ALG hash_alg
Definition intel-ipsec-mb.h:527
uint64_t aad_len_in_bytes
Definition intel-ipsec-mb.h:456
struct IMB_JOB::@10::_HMAC_specific_fields HMAC
struct IMB_JOB::@10::_ZUC_EIA3_specific_fields ZUC_EIA3
uint32_t session_id
Definition intel-ipsec-mb.h:551
const void * _skey1
Definition intel-ipsec-mb.h:461
void * user_data
Definition intel-ipsec-mb.h:531
uint64_t key_len_in_bytes
Definition intel-ipsec-mb.h:393
struct IMB_JOB::@10::_SNOW_V_AEAD_specific_fields SNOW_V_AEAD
uint8_t * dst
Definition intel-ipsec-mb.h:402
uint8_t * auth_tag_output
Definition intel-ipsec-mb.h:431
const void * enc_keys
Definition intel-ipsec-mb.h:391
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:524
const uint8_t * _k2
Definition intel-ipsec-mb.h:448
uint64_t cipher_start_src_offset_in_bytes
Definition intel-ipsec-mb.h:409
uint64_t msg_len_to_hash_in_bits
Definition intel-ipsec-mb.h:426
const uint8_t * _iv
Definition intel-ipsec-mb.h:474
struct IMB_JOB::@10::_GHASH_specific_fields GHASH
uint64_t cipher_start_src_offset_in_bits
Definition intel-ipsec-mb.h:411
const void * dec_keys
Definition intel-ipsec-mb.h:392
uint64_t hash_start_src_offset_in_bytes
Definition intel-ipsec-mb.h:422
const uint8_t * src
Definition intel-ipsec-mb.h:395
const uint8_t * _k3
Definition intel-ipsec-mb.h:450
Definition intel-ipsec-mb.h:980
aes_gmac_finalize_t gmac192_finalize
Definition intel-ipsec-mb.h:1091
aes_gcm_init_t gcm192_init
Definition intel-ipsec-mb.h:1028
aes_gmac_finalize_t gmac128_finalize
Definition intel-ipsec-mb.h:1090
void * aes256_ccm_ooo
Definition intel-ipsec-mb.h:1164
crc32_fn_t crc24_lte_a
Definition intel-ipsec-mb.h:1100
aes_gmac_update_t gmac256_update
Definition intel-ipsec-mb.h:1089
hec_32_t hec_32
Definition intel-ipsec-mb.h:1093
int imb_errno
Definition intel-ipsec-mb.h:988
void * aes_cmac_ooo
Definition intel-ipsec-mb.h:1158
int next_job
Definition intel-ipsec-mb.h:1132
aes_gmac_init_t gmac128_init
Definition intel-ipsec-mb.h:1084
uint64_t reserved[5]
Definition intel-ipsec-mb.h:985
aes_gcm_pre_t gcm192_pre
Definition intel-ipsec-mb.h:1046
snow3g_f8_4_buffer_t snow3g_f8_4_buffer
Definition intel-ipsec-mb.h:1069
aes_gcm_precomp_t gcm256_precomp
Definition intel-ipsec-mb.h:1044
aes_gcm_pre_t gcm128_pre
Definition intel-ipsec-mb.h:1045
submit_hash_burst_t submit_hash_burst
Definition intel-ipsec-mb.h:1121
flush_job_t flush_job
Definition intel-ipsec-mb.h:1000
snow3g_f8_2_buffer_t snow3g_f8_2_buffer
Definition intel-ipsec-mb.h:1068
void * zuc_eea3_ooo
Definition intel-ipsec-mb.h:1159
aes_gcm_enc_dec_update_t gcm128_dec_update
Definition intel-ipsec-mb.h:1033
void * des3_dec_ooo
Definition intel-ipsec-mb.h:1146
keyexp_t keyexp_192
Definition intel-ipsec-mb.h:1003
aes_gcm_enc_dec_t gcm128_dec
Definition intel-ipsec-mb.h:1024
burst_fn_t submit_burst_nocheck
Definition intel-ipsec-mb.h:1117
get_next_job_t get_next_job
Definition intel-ipsec-mb.h:996
void * sha_256_ooo
Definition intel-ipsec-mb.h:1170
snow3g_init_key_sched_t snow3g_init_key_sched
Definition intel-ipsec-mb.h:1075
aes_gcm_enc_dec_update_t gcm192_enc_update
Definition intel-ipsec-mb.h:1031
aes_gmac_finalize_t gmac256_finalize
Definition intel-ipsec-mb.h:1092
void * docsis_des_dec_ooo
Definition intel-ipsec-mb.h:1148
aes_gmac_init_t gmac192_init
Definition intel-ipsec-mb.h:1085
zuc_eia3_1_buffer_t eia3_1_buffer
Definition intel-ipsec-mb.h:1052
void * aes_ccm_ooo
Definition intel-ipsec-mb.h:1157
hec_64_t hec_64
Definition intel-ipsec-mb.h:1094
keyexp_t keyexp_256
Definition intel-ipsec-mb.h:1004
aes_ecb_quic_t aes_ecb_128_quic
Definition intel-ipsec-mb.h:1125
aes_gcm_pre_t gcm256_pre
Definition intel-ipsec-mb.h:1047
uint32_t used_arch
Definition intel-ipsec-mb.h:986
void * hmac_sha_1_ooo
Definition intel-ipsec-mb.h:1150
crc32_fn_t crc32_sctp
Definition intel-ipsec-mb.h:1099
crc32_fn_t crc11_fp_header
Definition intel-ipsec-mb.h:1103
aes_gcm_enc_dec_finalize_t gcm192_dec_finalize
Definition intel-ipsec-mb.h:1040
kasumi_f9_1_buffer_user_t f9_1_buffer_user
Definition intel-ipsec-mb.h:1061
void * sha_384_ooo
Definition intel-ipsec-mb.h:1171
aes_gmac_update_t gmac192_update
Definition intel-ipsec-mb.h:1088
crc32_fn_t crc16_x25
Definition intel-ipsec-mb.h:1098
hash_fn_t sha224
Definition intel-ipsec-mb.h:1015
hash_one_block_t md5_one_block
Definition intel-ipsec-mb.h:1013
void * des_enc_ooo
Definition intel-ipsec-mb.h:1143
kasumi_init_f9_key_sched_t kasumi_init_f9_key_sched
Definition intel-ipsec-mb.h:1063
queue_size_t queue_size
Definition intel-ipsec-mb.h:1001
aes_gcm_enc_dec_finalize_t gcm256_dec_finalize
Definition intel-ipsec-mb.h:1041
snow3g_key_sched_size_t snow3g_key_sched_size
Definition intel-ipsec-mb.h:1076
aes_ecb_quic_t aes_ecb_256_quic
Definition intel-ipsec-mb.h:1126
crc32_fn_t crc8_wimax_ofdma_hcs
Definition intel-ipsec-mb.h:1108
void * zuc256_eia3_ooo
Definition intel-ipsec-mb.h:1163
snow3g_f8_8_buffer_t snow3g_f8_8_buffer
Definition intel-ipsec-mb.h:1070
hash_fn_t sha512
Definition intel-ipsec-mb.h:1018
void * hmac_sha_256_ooo
Definition intel-ipsec-mb.h:1152
snow3g_f8_n_buffer_multikey_t snow3g_f8_n_buffer_multikey
Definition intel-ipsec-mb.h:1073
aes_gcm_enc_dec_update_t gcm192_dec_update
Definition intel-ipsec-mb.h:1034
chacha_poly_init_t chacha20_poly1305_init
Definition intel-ipsec-mb.h:1110
zuc_eea3_n_buffer_t eea3_n_buffer
Definition intel-ipsec-mb.h:1051
aes_gcm_precomp_t gcm128_precomp
Definition intel-ipsec-mb.h:1042
void * aes256_ooo
Definition intel-ipsec-mb.h:1138
void * zuc256_eea3_ooo
Definition intel-ipsec-mb.h:1162
void * end_ooo
Definition intel-ipsec-mb.h:1173
void * sha_512_ooo
Definition intel-ipsec-mb.h:1172
chacha_poly_enc_dec_update_t chacha20_poly1305_dec_update
Definition intel-ipsec-mb.h:1112
aes_gcm_enc_dec_t gcm256_enc
Definition intel-ipsec-mb.h:1023
aes_gcm_init_var_iv_t gcm192_init_var_iv
Definition intel-ipsec-mb.h:1081
keyexp_t keyexp_128
Definition intel-ipsec-mb.h:1002
crc32_fn_t crc10_iuup_data
Definition intel-ipsec-mb.h:1105
submit_hash_burst_t submit_hash_burst_nocheck
Definition intel-ipsec-mb.h:1122
hash_one_block_t sha1_one_block
Definition intel-ipsec-mb.h:1008
snow3g_f8_n_buffer_t snow3g_f8_n_buffer
Definition intel-ipsec-mb.h:1071
hash_fn_t sha1
Definition intel-ipsec-mb.h:1014
crc32_fn_t crc32_ethernet_fcs
Definition intel-ipsec-mb.h:1097
void * hmac_md5_ooo
Definition intel-ipsec-mb.h:1155
void * des3_enc_ooo
Definition intel-ipsec-mb.h:1145
hash_one_block_t sha512_one_block
Definition intel-ipsec-mb.h:1012
aes_gcm_init_t gcm256_init
Definition intel-ipsec-mb.h:1029
snow3g_f8_8_buffer_multikey_t snow3g_f8_8_buffer_multikey
Definition intel-ipsec-mb.h:1072
submit_cipher_burst_t submit_cipher_burst
Definition intel-ipsec-mb.h:1119
burst_fn_t get_next_burst
Definition intel-ipsec-mb.h:1115
hash_fn_t sha256
Definition intel-ipsec-mb.h:1016
aes_gcm_enc_dec_finalize_t gcm128_enc_finalize
Definition intel-ipsec-mb.h:1036
aes_gmac_update_t gmac128_update
Definition intel-ipsec-mb.h:1087
void * zuc_eia3_ooo
Definition intel-ipsec-mb.h:1160
aes_gcm_enc_dec_finalize_t gcm192_enc_finalize
Definition intel-ipsec-mb.h:1037
kasumi_f8_3_buffer_t f8_3_buffer
Definition intel-ipsec-mb.h:1057
hash_one_block_t sha384_one_block
Definition intel-ipsec-mb.h:1011
void * docsis_des_enc_ooo
Definition intel-ipsec-mb.h:1147
void * docsis128_sec_ooo
Definition intel-ipsec-mb.h:1139
void(* set_suite_id)(struct IMB_MGR *, IMB_JOB *)
Definition intel-ipsec-mb.h:1128
aes_gcm_enc_dec_finalize_t gcm256_enc_finalize
Definition intel-ipsec-mb.h:1038
void * aes128_ooo
Definition intel-ipsec-mb.h:1136
get_completed_job_t get_completed_job
Definition intel-ipsec-mb.h:999
aes_gcm_enc_dec_update_t gcm256_dec_update
Definition intel-ipsec-mb.h:1035
snow3g_f9_1_buffer_t snow3g_f9_1_buffer
Definition intel-ipsec-mb.h:1074
void * aes128_cbcs_ooo
Definition intel-ipsec-mb.h:1161
aes_gcm_enc_dec_t gcm128_enc
Definition intel-ipsec-mb.h:1021
hash_fn_t sha384
Definition intel-ipsec-mb.h:1017
burst_fn_t flush_burst
Definition intel-ipsec-mb.h:1118
void * sha_224_ooo
Definition intel-ipsec-mb.h:1169
cmac_subkey_gen_t cmac_subkey_gen_128
Definition intel-ipsec-mb.h:1005
crc32_fn_t crc6_iuup_header
Definition intel-ipsec-mb.h:1106
burst_fn_t submit_burst
Definition intel-ipsec-mb.h:1116
void * snow3g_uia2_ooo
Definition intel-ipsec-mb.h:1167
aes_gcm_enc_dec_t gcm192_enc
Definition intel-ipsec-mb.h:1022
submit_job_t submit_job_nocheck
Definition intel-ipsec-mb.h:998
kasumi_f8_1_buffer_bit_t f8_1_buffer_bit
Definition intel-ipsec-mb.h:1055
hash_one_block_t sha224_one_block
Definition intel-ipsec-mb.h:1009
des_keysched_t des_key_sched
Definition intel-ipsec-mb.h:1007
void * snow3g_uea2_ooo
Definition intel-ipsec-mb.h:1166
submit_job_t submit_job
Definition intel-ipsec-mb.h:997
chacha_poly_finalize_t chacha20_poly1305_finalize
Definition intel-ipsec-mb.h:1113
chacha_poly_enc_dec_update_t chacha20_poly1305_enc_update
Definition intel-ipsec-mb.h:1111
kasumi_init_f8_key_sched_t kasumi_init_f8_key_sched
Definition intel-ipsec-mb.h:1062
IMB_JOB jobs[IMB_MAX_JOBS]
Definition intel-ipsec-mb.h:1133
aes_cfb_t aes256_cfb_one
Definition intel-ipsec-mb.h:1123
zuc_eia3_n_buffer_t eia3_n_buffer
Definition intel-ipsec-mb.h:1079
snow3g_f8_1_buffer_t snow3g_f8_1_buffer
Definition intel-ipsec-mb.h:1067
void * hmac_sha_224_ooo
Definition intel-ipsec-mb.h:1151
kasumi_key_sched_size_t kasumi_key_sched_size
Definition intel-ipsec-mb.h:1064
aes_cfb_t aes128_cfb_one
Definition intel-ipsec-mb.h:1019
cmac_subkey_gen_t cmac_subkey_gen_256
Definition intel-ipsec-mb.h:1095
crc32_fn_t crc24_lte_b
Definition intel-ipsec-mb.h:1101
aes_gcm_precomp_t gcm192_precomp
Definition intel-ipsec-mb.h:1043
aes_gcm_enc_dec_update_t gcm256_enc_update
Definition intel-ipsec-mb.h:1032
zuc_eea3_4_buffer_t eea3_4_buffer
Definition intel-ipsec-mb.h:1050
int earliest_job
Definition intel-ipsec-mb.h:1131
kasumi_f8_2_buffer_t f8_2_buffer
Definition intel-ipsec-mb.h:1056
crc32_fn_t crc7_fp_header
Definition intel-ipsec-mb.h:1104
aes_gmac_init_t gmac256_init
Definition intel-ipsec-mb.h:1086
submit_cipher_burst_t submit_cipher_burst_nocheck
Definition intel-ipsec-mb.h:1120
void * docsis256_sec_ooo
Definition intel-ipsec-mb.h:1141
void * aes256_cmac_ooo
Definition intel-ipsec-mb.h:1165
void * sha_1_ooo
Definition intel-ipsec-mb.h:1168
void * docsis128_crc32_sec_ooo
Definition intel-ipsec-mb.h:1140
aes_gcm_enc_dec_t gcm256_dec
Definition intel-ipsec-mb.h:1026
crc32_fn_t crc32_wimax_ofdma_data
Definition intel-ipsec-mb.h:1107
aes_gcm_enc_dec_update_t gcm128_enc_update
Definition intel-ipsec-mb.h:1030
void * aes_xcbc_ooo
Definition intel-ipsec-mb.h:1156
crc32_fn_t crc16_fp_data
Definition intel-ipsec-mb.h:1102
snow3g_f8_1_buffer_bit_t snow3g_f8_1_buffer_bit
Definition intel-ipsec-mb.h:1066
aes_gcm_init_t gcm128_init
Definition intel-ipsec-mb.h:1027
hash_one_block_t sha256_one_block
Definition intel-ipsec-mb.h:1010
aes_gcm_enc_dec_t gcm192_dec
Definition intel-ipsec-mb.h:1025
kasumi_f8_n_buffer_t f8_n_buffer
Definition intel-ipsec-mb.h:1059
uint64_t flags
Definition intel-ipsec-mb.h:982
xcbc_keyexp_t xcbc_keyexp
Definition intel-ipsec-mb.h:1006
aes_gcm_init_var_iv_t gcm128_init_var_iv
Definition intel-ipsec-mb.h:1080
zuc_eea3_1_buffer_t eea3_1_buffer
Definition intel-ipsec-mb.h:1049
void * des_dec_ooo
Definition intel-ipsec-mb.h:1144
kasumi_f8_4_buffer_t f8_4_buffer
Definition intel-ipsec-mb.h:1058
void * hmac_sha_512_ooo
Definition intel-ipsec-mb.h:1154
void * docsis256_crc32_sec_ooo
Definition intel-ipsec-mb.h:1142
aes_gcm_pre_t ghash_pre
Definition intel-ipsec-mb.h:1096
kasumi_f8_1_buffer_t f8_1_buffer
Definition intel-ipsec-mb.h:1054
uint64_t features
Definition intel-ipsec-mb.h:983
aes_gcm_enc_dec_finalize_t gcm128_dec_finalize
Definition intel-ipsec-mb.h:1039
aes_gcm_init_var_iv_t gcm256_init_var_iv
Definition intel-ipsec-mb.h:1082
kasumi_f9_1_buffer_t f9_1_buffer
Definition intel-ipsec-mb.h:1060
ghash_t ghash
Definition intel-ipsec-mb.h:1078
void * hmac_sha_384_ooo
Definition intel-ipsec-mb.h:1153
void * aes192_ooo
Definition intel-ipsec-mb.h:1137
Definition intel-ipsec-mb.h:365
uint64_t len
Definition intel-ipsec-mb.h:368
void * out
Definition intel-ipsec-mb.h:367
const void * in
Definition intel-ipsec-mb.h:366
holds Chacha20-Poly1305 operation context
Definition intel-ipsec-mb.h:591
uint64_t remain_ct_bytes
Definition intel-ipsec-mb.h:601
uint64_t aad_len
Definition intel-ipsec-mb.h:593
uint64_t remain_ks_bytes
Definition intel-ipsec-mb.h:599
uint8_t poly_scratch[16]
Definition intel-ipsec-mb.h:597
uint8_t poly_key[32]
Definition intel-ipsec-mb.h:596
uint8_t IV[12]
Definition intel-ipsec-mb.h:604
uint64_t last_block_count
Definition intel-ipsec-mb.h:598
uint64_t hash_len
Definition intel-ipsec-mb.h:594
uint64_t hash[3]
Definition intel-ipsec-mb.h:592
uint8_t last_ks[64]
Definition intel-ipsec-mb.h:595
holds GCM operation context
Definition intel-ipsec-mb.h:577
uint64_t in_length
Definition intel-ipsec-mb.h:580
uint8_t current_counter[IMB_GCM_BLOCK_LEN]
Definition intel-ipsec-mb.h:583
uint8_t partial_block_enc_key[IMB_GCM_BLOCK_LEN]
Definition intel-ipsec-mb.h:581
uint8_t orig_IV[IMB_GCM_BLOCK_LEN]
Definition intel-ipsec-mb.h:582
uint64_t partial_block_length
Definition intel-ipsec-mb.h:584
uint8_t aad_hash[IMB_GCM_BLOCK_LEN]
Definition intel-ipsec-mb.h:578
uint64_t aad_length
Definition intel-ipsec-mb.h:579
holds intermediate key data needed to improve performance
Definition intel-ipsec-mb.h:639
uint8_t shifted_hkey[IMB_GCM_ENC_KEY_LEN *8]
Definition intel-ipsec-mb.h:649
struct gcm_key_data::@12::@14 avx2_avx512
uint8_t shifted_hkey_k[IMB_GCM_ENC_KEY_LEN *8]
Definition intel-ipsec-mb.h:658
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:640
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:563
uint16_t msk16[KASUMI_KEY_SCHEDULE_SIZE]
Definition intel-ipsec-mb.h:566
uint16_t sk16[KASUMI_KEY_SCHEDULE_SIZE]
Definition intel-ipsec-mb.h:565
Definition intel-ipsec-mb.h:839
uint32_t k[4]
Definition intel-ipsec-mb.h:841