### Build and Install Provider Source: https://github.com/intel/intel-ipsec-mb/blob/main/test/imb-provider/README.md Build the provider using CMake and then install it. Use sudo if installing to system directories. ```sh cmake --build . --parallel cmake --install . ``` -------------------------------- ### Compile and Install on Unix Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Compile the library and then install it on Unix-like systems. Ensure you have CMake installed and are in the build directory. ```bash cmake --build . sudo cmake --install . ``` -------------------------------- ### Compile and Install on Windows Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Compile and install the library on Windows from a command prompt in administrator mode. Use the --config Release flag for release builds. ```bash cmake --build . --config Release cmake --install . --config Release ``` -------------------------------- ### Install Library with Custom Prefix on Windows Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Specify a custom installation path using the --prefix option when installing the library on Windows. The default is C:\Program Files. ```bash cmake --install . --config Release --prefix= ``` -------------------------------- ### Install Library with Custom Prefix on Unix Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Specify a custom installation path using the --prefix option when installing the library on Unix-like systems. ```bash sudo cmake --install . --prefix= ``` -------------------------------- ### Configure Install Directories on Unix Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Set custom installation directories for libraries and include files during the CMake configuration step on Unix-like systems. ```bash cmake -DLIB_INSTALL_DIR=/usr/lib64 -DINCLUDE_INSTALL_DIR=/usr/include .. cmake --build . --parallel sudo cmake --install . ``` -------------------------------- ### Generate Documentation Locally Source: https://github.com/intel/intel-ipsec-mb/blob/main/README.md Use CMake to build the documentation locally. Ensure you have CMake installed and the project source code available. ```bash cmake -B build cmake --build build --target doxy ``` -------------------------------- ### Configure Project with CMake Source: https://github.com/intel/intel-ipsec-mb/blob/main/test/imb-provider/README.md Configure the project using CMake, specifying installation and build directories for IPSecMB and the OpenSSL installation directory. ```sh cmake -DWITH_IPSEC_INSTALL_DIR=/local/ipsec-install/ -DWITH_IPSEC_BUILD_DIR=/ipsec-mb/build/ -DOPENSSL_INSTALL_DIR=/custom/openssl/ .. ``` -------------------------------- ### Basic CMake Project Setup Source: https://github.com/intel/intel-ipsec-mb/blob/main/test/imb-provider/test/CMakeLists.txt Sets the minimum CMake version and defines the project name and language. ```cmake cmake_minimum_required(VERSION 3.10) project(imb_provider_test C) ``` -------------------------------- ### Install DEB Package on Debian/Ubuntu Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Installs the generated .deb package on Debian/Ubuntu systems using dpkg. ```bash sudo dpkg -i intel-ipsec-mb__amd64.deb ``` -------------------------------- ### Install RPM Package on RHEL/Fedora/SUSE Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Installs the generated .rpm package on RHEL/Fedora/SUSE systems using rpm. ```bash sudo rpm -ivh intel-ipsec-mb--1.x86_64.rpm ``` -------------------------------- ### Initialize Multi-Buffer Manager (Auto) Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h_source.html Initializes the multi-buffer manager state, automatically detecting and setting up the appropriate architecture. This simplifies initialization by abstracting architecture-specific setup. ```c void init_mb_mgr_auto([IMB_MGR](structIMB__MGR.html) *state, [IMB_ARCH](intel-ipsec-mb_8h.html#ad138a5bf5508a0be5d3d61f018d5ebb6) *arch); ``` -------------------------------- ### Run Basic Sample Application Source: https://github.com/intel/intel-ipsec-mb/blob/main/examples/sb-app/README.md Execute the basic sample application with a specified SHA algorithm. This command serves as the primary way to run the demonstration. ```bash ./imb-single-buff SHAx ``` -------------------------------- ### Print CMake Build Help (Unix) Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Displays available build options and their explanations for CMake on Unix-like systems. ```bash cmake --build . --target print_help ``` -------------------------------- ### Display Help on Windows Source: https://github.com/intel/intel-ipsec-mb/blob/main/test/wycheproof-app/README.md Show an extensive help page for the Wycheproof test application on a Windows system. ```bash imb-wycheproof.exe --help ``` -------------------------------- ### Display Help Page (Linux) Source: https://github.com/intel/intel-ipsec-mb/blob/main/test/kat-app/README.md Show an extensive help page for the KAT application on Linux to understand all available options and commands. ```bash ./imb-kat --help ``` -------------------------------- ### Display Help on Linux Source: https://github.com/intel/intel-ipsec-mb/blob/main/test/wycheproof-app/README.md Show an extensive help page for the Wycheproof test application on a Linux system. ```bash ./imb-wycheproof --help ``` -------------------------------- ### Install RPM Package using yum/dnf Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Installs the .rpm package using package managers like yum or dnf on RHEL/Fedora/SUSE systems. ```bash sudo yum install intel-ipsec-mb--1.x86_64.rpm # or sudo dnf install intel-ipsec-mb--1.x86_64.rpm ``` -------------------------------- ### Display Help for imb-speed.py Source: https://github.com/intel/intel-ipsec-mb/blob/main/perf/README.md Shows all available command-line options and usage instructions for the `imb-speed.py` script. ```bash imb-speed.py -h ``` -------------------------------- ### get_next_job_sse Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h_source.html Get the next available job from the IMB manager. ```APIDOC ## get_next_job_sse ### Description Get the next available job from the IMB manager. ### Function Signature ```c IMB_JOB *get_next_job_sse(IMB_MGR *state); ``` ### Parameters #### Path Parameters - **state** (IMB_MGR *) - Pointer to the IMB manager state. ``` -------------------------------- ### Get Error Number Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h.html Retrieves the current error status from the multi-buffer manager. ```APIDOC ## imb_get_errno ### Description API to get error status. ### Signature int imb_get_errno(IMB_MGR *mb_mgr) ### Parameters #### Path Parameters - **mb_mgr** (IMB_MGR *) - Required - Pointer to the multi-buffer manager structure. ``` -------------------------------- ### Get Multi-Buffer Manager Size Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h.html Calculates the required memory size for an IMB_MGR structure. ```APIDOC ## imb_get_mb_mgr_size ### Description Calculates necessary memory size for IMB_MGR. ### Signature size_t imb_get_mb_mgr_size(void) ### Returns The size in bytes required for an IMB_MGR structure. ``` -------------------------------- ### Display Help Page (Windows) Source: https://github.com/intel/intel-ipsec-mb/blob/main/test/kat-app/README.md Show an extensive help page for the KAT application on Windows to understand all available options and commands. ```cmd imb-kat.exe --help ``` -------------------------------- ### Get Error Description String Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h.html Retrieves a human-readable description for a given error number. ```APIDOC ## imb_get_strerror ### Description API to get description for _errnum_. ### Signature const char * imb_get_strerror(int errnum) ### Parameters #### Path Parameters - **errnum** (int) - Required - The error number to get the description for. ``` -------------------------------- ### IMB_QUEUE_SIZE Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h.html Gets the number of jobs currently queued for processing. This provides insight into the workload. ```APIDOC ## IMB_QUEUE_SIZE ### Description Get number of jobs queued to be processed. ### Method Macro ### Signature `IMB_QUEUE_SIZE(_mgr)` ### Parameters * `_mgr` - Pointer to the job manager structure. ``` -------------------------------- ### Get SNOW3G Key Schedule Size Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h_source.html Retrieves the size of the SNOW3G key schedule. ```c #define IMB_SNOW3G_KEY_SCHED_SIZE(_mgr) ((\_mgr)->snow3g_key_sched_size()) ``` -------------------------------- ### Basic Usage Skeleton for Intel IPsec MB Library Source: https://github.com/intel/intel-ipsec-mb/blob/main/ReleaseNotes.md Illustrates the fundamental workflow for initializing the library, performing key expansion, and processing jobs using get_next_job, submit_job, and get_completed_job. ```pseudo_code init_mb_mgr(&mb_mgr); ... aes_keyexp_128(key, enc_exp_keys, dec_exp_keys); ... while (work_to_be_done) { job = get_next_job(&mb_mgr); // TODO: Fill in job fields job = submit_job(&mb_mgr); while (job) { // TODO: Complete processing on job job = get_completed_job(&mb_mgr); } } ``` -------------------------------- ### Display Help for Performance Tool Source: https://github.com/intel/intel-ipsec-mb/wiki/Performance-Application Access the help menu for the ipsec_perf_tool.py script to understand all available options and parameters. ```bash ipsec_perf_tool.py -h ``` -------------------------------- ### Get Kasumi Key Schedule Size Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h_source.html Retrieves the size of the Kasumi key schedule. ```c #define IMB_KASUMI_KEY_SCHED_SIZE(_mgr) ((\_mgr)->kasumi_key_sched_size()) ``` -------------------------------- ### Get Completed Job Functions Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/globals_func.html Retrieves completed jobs for different architecture extensions. ```APIDOC ## get_completed_job_avx2() ### Description Retrieves a completed job using AVX2 instructions. ### Method Not specified (likely a C function call) ### Endpoint N/A ## get_completed_job_avx512() ### Description Retrieves a completed job using AVX-512 instructions. ### Method Not specified (likely a C function call) ### Endpoint N/A ## get_completed_job_sse() ### Description Retrieves a completed job using SSE instructions. ### Method Not specified (likely a C function call) ### Endpoint N/A ``` -------------------------------- ### Set Application and Library Paths Source: https://github.com/intel/intel-ipsec-mb/blob/main/examples/burst-app/CMakeLists.txt Defines the name of the sample application and the directories for libraries and include files. ```cmake set(SAMPLE_APP imb-burst) set(LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../lib) set(TEST_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include) ``` -------------------------------- ### Get Library Version Number Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h.html Retrieves the version of the Intel IPsec-MB library as a numerical value. ```APIDOC ## imb_get_version ### Description Get library version in numerical format. ### Signature unsigned imb_get_version(void) ### Returns An unsigned integer representing the library version. ``` -------------------------------- ### Benchmark All IPsec Algorithms Source: https://github.com/intel/intel-ipsec-mb/wiki/Performance-Application Run this command to benchmark all available cipher, hash, and AEAD algorithms on all architectures. Results are redirected to a file. ```bash ipsec_perf_tool.py > file.txt ``` -------------------------------- ### Initialize Multi-Buffer Manager (SSE) Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h.html Initializes the Multi-Buffer Manager structure with SSE support. ```APIDOC ## init_mb_mgr_sse ### Description Initialize Multi-Buffer Manager structure. ### Signature void init_mb_mgr_sse(IMB_MGR *state) ### Parameters #### Path Parameters - **state** (IMB_MGR *) - Required - Pointer to the Multi-Buffer Manager structure to initialize. ``` -------------------------------- ### Get Library Version String Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h.html Retrieves the version of the Intel IPsec-MB library as a human-readable string. ```APIDOC ## imb_get_version_str ### Description Get library version in string format. ### Signature const char * imb_get_version_str(void) ### Returns A string representing the library version. ``` -------------------------------- ### Queue Size Functions Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/globals_func.html Functions to get the current queue size for different architecture extensions. ```APIDOC ## queue_size_avx2() ### Description Gets the current queue size using AVX2 instructions. ### Method Not specified (likely a C function call) ### Endpoint N/A ## queue_size_avx512() ### Description Gets the current queue size using AVX-512 instructions. ### Method Not specified (likely a C function call) ### Endpoint N/A ## queue_size_sse() ### Description Gets the current queue size using SSE instructions. ### Method Not specified (likely a C function call) ### Endpoint N/A ``` -------------------------------- ### Display help for imb-perf on Linux Source: https://github.com/intel/intel-ipsec-mb/wiki/Performance-Application Command to display all available options and usage information for the imb-perf application on Linux. ```bash ./imb-perf -h ``` -------------------------------- ### Update Linker Cache on Debian/Ubuntu Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Updates the dynamic linker cache after installing the library on Debian/Ubuntu systems. ```bash sudo ldconfig ``` -------------------------------- ### Create RPM Package using CPack Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Configures, builds the library, and then creates an RPM package using CPack. ```bash # Configure and build cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBRARY_ONLY=ON cmake --build build --parallel # Create RPM package cd build cpack -G RPM ``` -------------------------------- ### Run All Algorithms on Windows Source: https://github.com/intel/intel-ipsec-mb/blob/main/test/kat-app/README.md Execute the KAT application to test all algorithms across all supported architectures on a Windows system. ```cmd imb-kat.exe ``` -------------------------------- ### queue_size_avx512 Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h.html Gets the number of jobs currently queued for processing. This function is optimized for AVX-512 instruction sets. ```APIDOC ## queue_size_avx512 ### Description Gets the number of jobs currently queued to be processed by the Multi-buffer manager. This function is optimized for AVX-512 instruction sets. ### Signature uint32_t queue_size_avx512([IMB_MGR](structIMB__MGR.html) *state) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Response Returns the number of queued jobs as a uint32_t. ``` -------------------------------- ### IMB_GET_NEXT_JOB Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/intel-ipsec-mb_8h_source.html Macro to get the next job from the multi-buffer manager. It abstracts the underlying architecture-specific function calls. ```APIDOC ## IMB_GET_NEXT_JOB ### Description Macro to get the next job from the multi-buffer manager. It abstracts the underlying architecture-specific function calls. ### Usage `IMB_GET_NEXT_JOB(mgr)` ### Parameters * **mgr** (IMB_MGR *) - Pointer to the multi-buffer manager state. ``` -------------------------------- ### Display Help Page on Windows Source: https://github.com/intel/intel-ipsec-mb/blob/main/test/xvalid-app/README.md Display an extensive help page for the cross validation application on Windows. ```bash imb-xvalid.exe --help ``` -------------------------------- ### Get Next Job Functions Source: https://github.com/intel/intel-ipsec-mb/blob/main/docs/globals_func.html Retrieves the next available job for processing on different architecture extensions. ```APIDOC ## get_next_job_avx2() ### Description Gets the next job to process using AVX2 instructions. ### Method Not specified (likely a C function call) ### Endpoint N/A ## get_next_job_avx512() ### Description Gets the next job to process using AVX-512 instructions. ### Method Not specified (likely a C function call) ### Endpoint N/A ## get_next_job_sse() ### Description Gets the next job to process using SSE instructions. ### Method Not specified (likely a C function call) ### Endpoint N/A ``` -------------------------------- ### Create DEB Package using CPack Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Configures, builds the library, and then creates a DEB package using CPack. ```bash # Configure and build cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBRARY_ONLY=ON cmake --build build --parallel # Create DEB package cd build cpack -G DEB ``` -------------------------------- ### Compile Library and Applications Source: https://github.com/intel/intel-ipsec-mb/blob/main/INSTALL.md Compile the library and associated applications before proceeding with testing. Use the --parallel flag for faster compilation. ```bash cmake --build . --parallel ```