Merge ~hectorcao/ubuntu/+source/ipp-crypto:ubuntu/devel into ubuntu/+source/ipp-crypto:ubuntu/devel

Proposed by Hector CAO
Status: Needs review
Proposed branch: ~hectorcao/ubuntu/+source/ipp-crypto:ubuntu/devel
Merge into: ubuntu/+source/ipp-crypto:ubuntu/devel
Diff against target: 222616 lines (+106969/-25034)
971 files modified
.clang-tidy (+24/-0)
BUILD.md (+60/-54)
CHANGELOG.md (+14/-3)
CMakeLists.txt (+27/-11)
CONST_TIME_EXECUTION_TESTING.md (+17/-3)
CONTRIBUTING.md (+10/-10)
DEPRECATION_NOTES.md (+19/-4)
OVERVIEW.md (+191/-31)
README.md (+17/-13)
README_FIPS.md (+38/-29)
THIRD-PARTY-PROGRAMS.txt (+1/-1)
debian/changelog (+12/-0)
debian/control (+10/-10)
debian/patches/0001-Undefine-FORTIFY_SOURCE-before-define.patch (+27/-27)
debian/watch (+3/-3)
dev/null (+0/-124)
examples/CMakeLists.txt (+10/-4)
examples/FindIPPCrypto.cmake (+8/-8)
examples/README.md (+8/-8)
examples/ecdsa/categoryOptions.cmake (+20/-0)
examples/ecdsa/ecdsa-256r1-sign.cpp (+141/-0)
examples/examplesBuildOptions.cmake (+4/-3)
examples/hash/sm3_hash_rmf.cpp (+103/-0)
examples/post-quantum/lms_m32_h5_w8_verification.cpp (+213/-0)
examples/utils/examples_common.h (+2/-2)
include/ippcp.h (+15/-358)
include/ippcp/fips_cert.h (+6/-2)
include/ippcpdefs.h (+33/-15)
include/ippcpversion.h (+41/-0)
include/ippversion.h (+13/-8)
sources/cmake/CMakeASM_NASMOptions.txt (+1/-1)
sources/cmake/ippcp-config-version.cmake.in (+1/-1)
sources/cmake/ippcp-config.cmake.in (+4/-5)
sources/cmake/ippcp-utils.cmake (+10/-10)
sources/cmake/linux/Clang9.0.0.cmake (+4/-5)
sources/cmake/linux/GNU8.2.0.cmake (+5/-6)
sources/cmake/linux/Intel19.0.0.cmake (+7/-7)
sources/cmake/linux/IntelLLVM2023.1.0.cmake (+9/-10)
sources/cmake/linux/common.cmake (+1/-1)
sources/cmake/macosx/AppleClang11.0.0.cmake (+4/-5)
sources/cmake/macosx/Intel19.0.0.cmake (+5/-6)
sources/cmake/macosx/common.cmake (+1/-1)
sources/cmake/os_common.cmake (+2/-2)
sources/cmake/pkg-config/crypto_mb-dynamic.pc.in (+1/-1)
sources/cmake/pkg-config/crypto_mb-static.pc.in (+1/-1)
sources/cmake/pkg-config/ippcp-dynamic.pc.in (+1/-1)
sources/cmake/pkg-config/ippcp-static.pc.in (+1/-1)
sources/cmake/windows/Intel19.0.0.cmake (+7/-5)
sources/cmake/windows/IntelLLVM2023.1.0.cmake (+6/-7)
sources/cmake/windows/MSVC19.14.cmake (+4/-2)
sources/cmake/windows/common.cmake (+1/-1)
sources/dispatcher/gen_disp_common.py (+8/-8)
sources/dispatcher/gen_disp_lin32.nonpic.py (+3/-3)
sources/dispatcher/gen_disp_lin32.py (+2/-2)
sources/dispatcher/gen_disp_lin64.nonpic.py (+2/-2)
sources/dispatcher/gen_disp_lin64.py (+4/-2)
sources/dispatcher/gen_disp_mac64.py (+4/-4)
sources/dispatcher/gen_disp_win32.py (+4/-4)
sources/dispatcher/gen_disp_win64.py (+11/-11)
sources/gen_cpu_spc_header/gen_cpu_spc_1cpu_header.py (+19/-3)
sources/gen_cpu_spc_header/gen_cpu_spc_header.py (+1/-1)
sources/include/asmdefs.inc (+3/-17)
sources/include/dispatcher.h (+20/-36)
sources/include/fips_cert_internal/bn_common.h (+2/-2)
sources/include/ippres.gen (+33/-33)
sources/include/ippver.h (+7/-7)
sources/include/lms_internal/lmots.h (+3/-3)
sources/include/lms_internal/lms.h (+1/-1)
sources/include/noexec_stack.inc (+47/-0)
sources/include/owndefs.h (+12/-12)
sources/include/stateful_sig_common/common.h (+1/-1)
sources/include/xmss_internal/wots.h (+3/-3)
sources/include/xmss_internal/xmss.h (+1/-1)
sources/ippcp/CMakeLists.txt (+33/-19)
sources/ippcp/asm_ia32/pcpbnumulschoolv8as.asm (+13/-13)
sources/ippcp/asm_ia32/pcpbnusqrw7as.asm (+13/-13)
sources/ippcp/asm_ia32/pcpmd5w7as.asm (+3/-7)
sources/ippcp/asm_ia32/pcpsha1w7as.asm (+3/-7)
sources/ippcp/asm_ia32/pcpsha256g9as.asm (+5/-0)
sources/ippcp/asm_ia32/pcpsha256w7as.asm (+3/-15)
sources/ippcp/asm_ia32/pcpsha512g9as.asm (+3/-12)
sources/ippcp/asm_ia32/pcpsha512w7as.asm (+3/-12)
sources/ippcp/asm_ia32/pcpvariant.inc (+1/-2)
sources/ippcp/asm_ia32/pcpvariant_txt_acm.inc (+1/-2)
sources/ippcp/asm_ia32/pcpvariant_xmm7560.inc (+1/-2)
sources/ippcp/asm_intel64/gcm_vaes_avx512.inc (+1/-1)
sources/ippcp/asm_intel64/pcpaesgcme9as.asm (+8/-8)
sources/ippcp/asm_intel64/pcpbnudivm7as.asm (+1/-1)
sources/ippcp/asm_intel64/pcpsha1e9as.asm (+4/-6)
sources/ippcp/asm_intel64/pcpsha1m7as.asm (+3/-7)
sources/ippcp/asm_intel64/pcpsha1u8as.asm (+3/-7)
sources/ippcp/asm_intel64/pcpsha256m7as.asm (+3/-15)
sources/ippcp/asm_intel64/pcpsha512m7as.asm (+3/-14)
sources/ippcp/asm_intel64/pcpsm3l9_ni_as.asm (+231/-0)
sources/ippcp/asm_intel64/pcpvariant.inc (+1/-2)
sources/ippcp/asm_intel64/pcpvariant_txt_acm.inc (+1/-2)
sources/ippcp/cpinit.c (+89/-62)
sources/ippcp/crypto_mb/CMakeLists.txt (+67/-8)
sources/ippcp/crypto_mb/Readme.md (+27/-17)
sources/ippcp/crypto_mb/dispatcher/gen_disp_common_crypto_mb.py (+81/-0)
sources/ippcp/crypto_mb/dispatcher/gen_disp_crypto_mb.py (+113/-0)
sources/ippcp/crypto_mb/gen_cpu_spc_header/gen_cpu_spc_1cpu_header_crypto_mb.py (+92/-0)
sources/ippcp/crypto_mb/gen_cpu_spc_header/gen_cpu_spc_header_crypto_mb.py (+91/-0)
sources/ippcp/crypto_mb/include/crypto_mb/cpu_features.h (+24/-6)
sources/ippcp/crypto_mb/include/crypto_mb/defs.h (+44/-11)
sources/ippcp/crypto_mb/include/crypto_mb/ec_nistp256.h (+24/-25)
sources/ippcp/crypto_mb/include/crypto_mb/ec_nistp384.h (+25/-25)
sources/ippcp/crypto_mb/include/crypto_mb/ec_nistp521.h (+24/-25)
sources/ippcp/crypto_mb/include/crypto_mb/ec_sm2.h (+17/-16)
sources/ippcp/crypto_mb/include/crypto_mb/ed25519.h (+7/-6)
sources/ippcp/crypto_mb/include/crypto_mb/exp.h (+11/-12)
sources/ippcp/crypto_mb/include/crypto_mb/fips_cert.h (+13/-12)
sources/ippcp/crypto_mb/include/crypto_mb/rsa.h (+29/-28)
sources/ippcp/crypto_mb/include/crypto_mb/sm3.h (+7/-7)
sources/ippcp/crypto_mb/include/crypto_mb/sm4.h (+17/-16)
sources/ippcp/crypto_mb/include/crypto_mb/sm4_ccm.h (+12/-10)
sources/ippcp/crypto_mb/include/crypto_mb/sm4_gcm.h (+9/-9)
sources/ippcp/crypto_mb/include/crypto_mb/status.h (+34/-21)
sources/ippcp/crypto_mb/include/crypto_mb/version.h (+8/-7)
sources/ippcp/crypto_mb/include/crypto_mb/x25519.h (+4/-4)
sources/ippcp/crypto_mb/include/internal/common/crypto_mb_ver.h (+4/-9)
sources/ippcp/crypto_mb/include/internal/common/ifma_cvt52.h (+24/-0)
sources/ippcp/crypto_mb/include/internal/common/ifma_defs.h (+10/-0)
sources/ippcp/crypto_mb/include/internal/common/ifma_math.h (+33/-18)
sources/ippcp/crypto_mb/include/internal/common/internal_defs.h (+46/-0)
sources/ippcp/crypto_mb/include/internal/common/mem_fns.h (+2/-2)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_arith_p256.h (+13/-9)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_arith_p384.h (+12/-8)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_arith_p521.h (+12/-8)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_ecpoint_p256.h (+104/-6)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_ecpoint_p384.h (+103/-6)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_ecpoint_p521.h (+103/-6)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_ecprecomp4_p256.h (+4/-0)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_ecprecomp4_p384.h (+4/-0)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_ecprecomp4_p521.h (+4/-0)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_ecprecomp5_p256.h (+4/-0)
sources/ippcp/crypto_mb/include/internal/ecnist/ifma_ecprecomp7_p256.h (+4/-0)
sources/ippcp/crypto_mb/include/internal/ed25519/ifma_arith_ed25519.h (+29/-10)
sources/ippcp/crypto_mb/include/internal/ed25519/ifma_arith_n25519.h (+4/-0)
sources/ippcp/crypto_mb/include/internal/ed25519/ifma_arith_p25519.h (+14/-10)
sources/ippcp/crypto_mb/include/internal/ed25519/ifma_ed25519_precomp4.h (+4/-0)
sources/ippcp/crypto_mb/include/internal/ed25519/sha512.h (+8/-0)
sources/ippcp/crypto_mb/include/internal/exp/ifma_exp_method.h (+14/-5)
sources/ippcp/crypto_mb/include/internal/rsa/avxifma_ahmm.h (+230/-0)
sources/ippcp/crypto_mb/include/internal/rsa/avxifma_ahmr.h (+89/-0)
sources/ippcp/crypto_mb/include/internal/rsa/avxifma_amm.h (+191/-0)
sources/ippcp/crypto_mb/include/internal/rsa/avxifma_ams.h (+281/-0)
sources/ippcp/crypto_mb/include/internal/rsa/avxifma_extract_multiplier.h (+91/-0)
sources/ippcp/crypto_mb/include/internal/rsa/ifma_div_104_by_52.h (+48/-44)
sources/ippcp/crypto_mb/include/internal/rsa/ifma_rsa_arith.h (+334/-109)
sources/ippcp/crypto_mb/include/internal/rsa/ifma_rsa_layer_cp.h (+67/-37)
sources/ippcp/crypto_mb/include/internal/rsa/ifma_rsa_layer_ssl.h (+116/-72)
sources/ippcp/crypto_mb/include/internal/rsa/ifma_rsa_method.h (+104/-56)
sources/ippcp/crypto_mb/include/internal/sm2/ifma_arith_sm2.h (+13/-9)
sources/ippcp/crypto_mb/include/internal/sm2/ifma_ecpoint_sm2.h (+100/-5)
sources/ippcp/crypto_mb/include/internal/sm2/ifma_ecprecomp4_psm2.h (+4/-0)
sources/ippcp/crypto_mb/include/internal/sm3/sm3_common.h (+12/-14)
sources/ippcp/crypto_mb/include/internal/sm3/sm3_mb16.h (+15/-4)
sources/ippcp/crypto_mb/include/internal/sm3/sm3_mb8.h (+6/-2)
sources/ippcp/crypto_mb/include/internal/sm4/sm4_ccm_mb.h (+14/-4)
sources/ippcp/crypto_mb/include/internal/sm4/sm4_gcm_mb.h (+18/-9)
sources/ippcp/crypto_mb/include/internal/sm4/sm4_mb.h (+50/-23)
sources/ippcp/crypto_mb/src/CMakeLists.txt (+152/-65)
sources/ippcp/crypto_mb/src/cmake/crypto_mb-utils.cmake (+4/-4)
sources/ippcp/crypto_mb/src/cmake/dll_export/crypto_mb.defs (+1/-0)
sources/ippcp/crypto_mb/src/cmake/dll_export/crypto_mb.linux.lib-export (+1/-0)
sources/ippcp/crypto_mb/src/cmake/dll_export/crypto_mb.macosx.lib-export (+1/-0)
sources/ippcp/crypto_mb/src/cmake/dll_export/crypto_mb_fips_selftests.defs (+1/-0)
sources/ippcp/crypto_mb/src/cmake/linux/Clang.cmake (+13/-9)
sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake (+14/-9)
sources/ippcp/crypto_mb/src/cmake/linux/Intel.cmake (+7/-5)
sources/ippcp/crypto_mb/src/cmake/linux/IntelLLVM.cmake (+12/-5)
sources/ippcp/crypto_mb/src/cmake/macosx/AppleClang.cmake (+5/-5)
sources/ippcp/crypto_mb/src/cmake/macosx/Intel.cmake (+5/-2)
sources/ippcp/crypto_mb/src/cmake/windows/Intel.cmake (+4/-1)
sources/ippcp/crypto_mb/src/cmake/windows/IntelLLVM.cmake (+12/-7)
sources/ippcp/crypto_mb/src/cmake/windows/MSVC.cmake (+4/-1)
sources/ippcp/crypto_mb/src/common/cpu_features.c (+107/-27)
sources/ippcp/crypto_mb/src/common/crypto_mb_res.gen (+2/-2)
sources/ippcp/crypto_mb/src/common/emptyfile.c (+3/-6)
sources/ippcp/crypto_mb/src/common/ifma_cvt52.c (+680/-19)
sources/ippcp/crypto_mb/src/common/ifma_version.c (+17/-8)
sources/ippcp/crypto_mb/src/ecnist/ifma_arith_m256.c (+3/-0)
sources/ippcp/crypto_mb/src/ecnist/ifma_arith_n256.c (+3/-0)
sources/ippcp/crypto_mb/src/ecnist/ifma_arith_n384.c (+5/-1)
sources/ippcp/crypto_mb/src/ecnist/ifma_arith_n521.c (+8/-4)
sources/ippcp/crypto_mb/src/ecnist/ifma_arith_p256.c (+3/-0)
sources/ippcp/crypto_mb/src/ecnist/ifma_arith_p384.c (+6/-2)
sources/ippcp/crypto_mb/src/ecnist/ifma_arith_p521.c (+8/-4)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecdh_p256.c (+13/-126)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecdh_p384.c (+12/-126)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecdh_p521.c (+12/-126)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecdsa_p256.c (+49/-530)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecdsa_p384.c (+50/-528)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecdsa_p521.c (+49/-523)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecpoint_p256.c (+8/-5)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecpoint_p384.c (+9/-6)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecpoint_p521.c (+8/-5)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecpubkey_p256.c (+12/-88)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecpubkey_p384.c (+13/-88)
sources/ippcp/crypto_mb/src/ecnist/ifma_ecpubkey_p521.c (+12/-88)
sources/ippcp/crypto_mb/src/ecnist/internal_avx512/internal_ecdsa_p256.c (+632/-0)
sources/ippcp/crypto_mb/src/ecnist/internal_avx512/internal_ecdsa_p384.c (+634/-0)
sources/ippcp/crypto_mb/src/ecnist/internal_avx512/internal_ecdsa_p521.c (+632/-0)
sources/ippcp/crypto_mb/src/ecnist/internal_avx512/internal_ecpubkey_p256.c (+136/-0)
sources/ippcp/crypto_mb/src/ecnist/internal_avx512/internal_ecpubkey_p384.c (+137/-0)
sources/ippcp/crypto_mb/src/ecnist/internal_avx512/internal_ecpubkey_p521.c (+137/-0)
sources/ippcp/crypto_mb/src/ecnist/internal_avx512/internal_ifma_ecdh_p256.c (+173/-0)
sources/ippcp/crypto_mb/src/ecnist/internal_avx512/internal_ifma_ecdh_p384.c (+170/-0)
sources/ippcp/crypto_mb/src/ecnist/internal_avx512/internal_ifma_ecdh_p521.c (+169/-0)
sources/ippcp/crypto_mb/src/ed25519/ifma_arith_ed25519.c (+9/-5)
sources/ippcp/crypto_mb/src/ed25519/ifma_arith_n25519.c (+4/-0)
sources/ippcp/crypto_mb/src/ed25519/ifma_arith_p25519.c (+10/-6)
sources/ippcp/crypto_mb/src/ed25519/ifma_ed25519.c (+18/-252)
sources/ippcp/crypto_mb/src/ed25519/internal_avx512/internal_ed25519.c (+306/-0)
sources/ippcp/crypto_mb/src/ed25519/sha512.c (+11/-7)
sources/ippcp/crypto_mb/src/exp/ifma_exp1k_mb.c (+3/-0)
sources/ippcp/crypto_mb/src/exp/ifma_exp2k_mb.c (+3/-0)
sources/ippcp/crypto_mb/src/exp/ifma_exp3k_mb.c (+3/-0)
sources/ippcp/crypto_mb/src/exp/ifma_exp4k_mb.c (+3/-0)
sources/ippcp/crypto_mb/src/exp/ifma_exp_mb.c (+40/-10)
sources/ippcp/crypto_mb/src/exp/ifma_exp_method.c (+5/-1)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_ed25519_public_key_mb8.c (+16/-3)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_ed25519_sign_mb8.c (+6/-1)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_ed25519_verify_mb8.c (+4/-0)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp256_ecdh_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp256_ecdsa_sign_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp256_ecdsa_sign_setup_complete_mb8.c (+21/-3)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp256_ecdsa_verify_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp256_ecpublic_key_mb8.c (+41/-10)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp384_ecdh_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp384_ecdsa_sign_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp384_ecdsa_sign_setup_complete_mb8.c (+24/-4)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp384_ecdsa_verify_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp384_ecpublic_key_mb8.c (+30/-5)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp521_ecdh_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp521_ecdsa_sign_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp521_ecdsa_sign_setup_complete_mb8.c (+24/-4)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp521_ecdsa_verify_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_nistp521_ecpublic_key_mb8.c (+36/-6)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_rsa2k_private_crt_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_rsa2k_private_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_rsa2k_public_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_rsa3k_private_crt_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_rsa3k_private_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_rsa3k_public_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_rsa4k_private_crt_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_rsa4k_private_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/fips_cert/selftest_mbx_rsa4k_public_mb8.c (+12/-2)
sources/ippcp/crypto_mb/src/rsa/ifma_div_104_by_52.c (+109/-107)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x10_mb8.c (+240/-101)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x20_65537_mb8.c (+105/-52)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x20_mb8.c (+326/-173)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x30_mb8.c (+306/-165)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x40_65537_mb8.c (+105/-51)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x40_mb8.c (+339/-201)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x60_65537_mb8.c (+96/-46)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x60_mb8.c (+396/-256)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x79_65537_mb8.c (+96/-46)
sources/ippcp/crypto_mb/src/rsa/ifma_exp52x79_mb8.c (+452/-312)
sources/ippcp/crypto_mb/src/rsa/ifma_method.c (+546/-266)
sources/ippcp/crypto_mb/src/rsa/ifma_other52x_mb8.c (+1389/-531)
sources/ippcp/crypto_mb/src/rsa/ifma_rsa_layer_mb8.c (+313/-94)
sources/ippcp/crypto_mb/src/rsa/ifma_rsa_mb8.c (+149/-126)
sources/ippcp/crypto_mb/src/rsa/ifma_rsa_ssl_prv2_layer_mb8.c (+312/-99)
sources/ippcp/crypto_mb/src/rsa/ifma_rsa_ssl_prv2_mb8.c (+76/-35)
sources/ippcp/crypto_mb/src/rsa/ifma_rsa_ssl_prv5_layer_mb8.c (+653/-190)
sources/ippcp/crypto_mb/src/rsa/ifma_rsa_ssl_prv5_mb8.c (+83/-43)
sources/ippcp/crypto_mb/src/rsa/ifma_rsa_ssl_pub65537_mb8.c (+77/-38)
sources/ippcp/crypto_mb/src/rsa/ifma_rsa_ssl_pub_layer_mb8.c (+221/-82)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/AMS4x52x20_diagonal_stitched_with_extract_mb4.c (+93/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/AMS4x52x30_diagonal_stitched_with_extract_mb4.c (+93/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/AMS4x52x40_diagonal_stitched_with_extract_mb4.c (+93/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ahmm52x20_mb4.c (+34/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ahmm52x30_mb4.c (+34/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ahmm52x40_mb4.c (+34/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ahmr52x20_mb4.c (+29/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ahmr52x30_mb4.c (+29/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ahmr52x40_mb4.c (+29/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_amm52x10_mb4.c (+27/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_amm52x20_mb4.c (+28/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_amm52x30_mb4.c (+28/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_amm52x40_mb4.c (+22/-29)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_amm52x60_mb4.c (+28/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_amm52x79_mb4.c (+28/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ams52x10_diagonal_mb4.c (+274/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ams52x20_diagonal_mb4.c (+669/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ams52x30_diagonal_mb4.c (+1274/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ams52x40_diagonal_mb4.c (+2089/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ams52x60_diagonal_mb4.c (+4384/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx2/ifma_ams52x79_diagonal_mb4.c (+7328/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/AMS4x52x20_diagonal_stitched_with_extract_mb8.c (+2051/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ahmm52x20_mb8.c (+297/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ahmr52x20_mb8.c (+213/-210)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_amm52x10_mb8.c (+116/-113)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_amm52x20_mb8.c (+198/-195)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_amm52x30_mb8.c (+278/-276)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_amm52x40_mb8.c (+360/-359)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_amm52x60_mb8.c (+522/-525)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_amm52x79_mb8.c (+676/-683)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ams52x10_diagonal_mb8.c (+433/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ams52x20_diagonal_mb8.c (+1464/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ams52x30_diagonal_mb8.c (+1410/-1410)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ams52x40_diagonal_mb8.c (+2160/-2160)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ams52x60_diagonal_mb8.c (+4370/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ams52x79_diagonal_mb8.c (+7107/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ams5x52x10_diagonal_mb8.c (+438/-0)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ams5x52x20_diagonal_mb8.c (+1406/-1411)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_ams5x52x40_diagonal_mb8.c (+2263/-2264)
sources/ippcp/crypto_mb/src/rsa/internal_avx512/ifma_extract_amm52x20_mb8.c (+251/-245)
sources/ippcp/crypto_mb/src/sm2/ifma_arith_nsm2.c (+3/-0)
sources/ippcp/crypto_mb/src/sm2/ifma_arith_psm2.c (+4/-0)
sources/ippcp/crypto_mb/src/sm2/ifma_ecdh_sm2.c (+13/-126)
sources/ippcp/crypto_mb/src/sm2/ifma_ecdsa_sm2.c (+33/-590)
sources/ippcp/crypto_mb/src/sm2/ifma_ecpoint_sm2.c (+9/-5)
sources/ippcp/crypto_mb/src/sm2/ifma_ecpubkey_sm2.c (+12/-89)
sources/ippcp/crypto_mb/src/sm2/internal_avx512/internal_ecdsa_sm2.c (+694/-0)
sources/ippcp/crypto_mb/src/sm2/internal_avx512/internal_ifma_ecdh_sm2.c (+178/-0)
sources/ippcp/crypto_mb/src/sm2/internal_avx512/internal_ifma_ecpubkey_sm2.c (+144/-0)
sources/ippcp/crypto_mb/src/sm3/internal_avx512/internal_sm3_final_mb16.c (+120/-0)
sources/ippcp/crypto_mb/src/sm3/internal_avx512/internal_sm3_init_mb16.c (+59/-0)
sources/ippcp/crypto_mb/src/sm3/internal_avx512/internal_sm3_messagedigest_mb16.c (+48/-0)
sources/ippcp/crypto_mb/src/sm3/internal_avx512/internal_sm3_update_mb16.c (+154/-0)
sources/ippcp/crypto_mb/src/sm3/sm3_avx512_mb16.c (+16/-12)
sources/ippcp/crypto_mb/src/sm3/sm3_avx512_mb8.c (+10/-7)
sources/ippcp/crypto_mb/src/sm3/sm3_final_mb16.c (+6/-79)
sources/ippcp/crypto_mb/src/sm3/sm3_final_mb8.c (+16/-8)
sources/ippcp/crypto_mb/src/sm3/sm3_init_mb16.c (+6/-35)
sources/ippcp/crypto_mb/src/sm3/sm3_init_mb8.c (+4/-0)
sources/ippcp/crypto_mb/src/sm3/sm3_messagedigest_mb16.c (+6/-21)
sources/ippcp/crypto_mb/src/sm3/sm3_messagedigest_mb8.c (+4/-0)
sources/ippcp/crypto_mb/src/sm3/sm3_update_mb16.c (+6/-108)
sources/ippcp/crypto_mb/src/sm3/sm3_update_mb8.c (+22/-9)
sources/ippcp/crypto_mb/src/sm4/ccm/internal_avx512/sm4_ccm_decrypt_mb16.c (+8/-1)
sources/ippcp/crypto_mb/src/sm4/ccm/internal_avx512/sm4_ccm_encrypt_mb16.c (+8/-1)
sources/ippcp/crypto_mb/src/sm4/ccm/internal_avx512/sm4_ccm_get_tag_mb16.c (+8/-1)
sources/ippcp/crypto_mb/src/sm4/ccm/internal_avx512/sm4_ccm_init_mb16.c (+62/-0)
sources/ippcp/crypto_mb/src/sm4/ccm/internal_avx512/sm4_ccm_set_msg_len_mb16.c (+4/-0)
sources/ippcp/crypto_mb/src/sm4/ccm/internal_avx512/sm4_ccm_set_tag_len_mb16.c (+4/-0)
sources/ippcp/crypto_mb/src/sm4/ccm/internal_avx512/sm4_ccm_update_aad_mb16.c (+8/-1)
sources/ippcp/crypto_mb/src/sm4/ccm/internal_avx512/sm4_ccm_update_iv_mb16.c (+4/-0)
sources/ippcp/crypto_mb/src/sm4/ccm/sm4_ccm_decrypt_mb16_api.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/ccm/sm4_ccm_encrypt_mb16_api.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/ccm/sm4_ccm_get_tag_mb16_api.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/ccm/sm4_ccm_init_mb16_api.c (+9/-32)
sources/ippcp/crypto_mb/src/sm4/ccm/sm4_ccm_update_aad_mb16_api.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_decrypt_mb16.c (+4/-0)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_encrypt_j0_mb16.c (+4/-0)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_encrypt_mb16.c (+4/-0)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_finalize_iv_mb16.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_gctr_kernel_mb16.c (+5/-1)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_get_tag_mb16.c (+12/-5)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_ghash_mul_single_block_mb16.c (+4/-0)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_init_mb16.c (+71/-0)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_precompute_hashkey_mb16.c (+3/-0)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_update_aad_mb16.c (+4/-0)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_update_ghash_full_blocks_mb16.c (+10/-6)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_update_ghash_partial_blocks_mb16.c (+9/-5)
sources/ippcp/crypto_mb/src/sm4/gcm/internal_avx512/sm4_gcm_update_iv_mb16.c (+4/-0)
sources/ippcp/crypto_mb/src/sm4/gcm/sm4_gcm_decrypt_mb16_api.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/gcm/sm4_gcm_encrypt_mb16_api.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/gcm/sm4_gcm_get_tag_mb16_api.c (+9/-6)
sources/ippcp/crypto_mb/src/sm4/gcm/sm4_gcm_init_mb16_api.c (+11/-45)
sources/ippcp/crypto_mb/src/sm4/gcm/sm4_gcm_update_aad_mb16_api.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/gcm/sm4_gcm_update_iv_mb16_api.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/internal_avx512/internal_sm4_setkey_mb16.c (+111/-0)
sources/ippcp/crypto_mb/src/sm4/internal_avx512/sm4_cbc_mb16.c (+11/-2)
sources/ippcp/crypto_mb/src/sm4/internal_avx512/sm4_cfb_mb16.c (+10/-2)
sources/ippcp/crypto_mb/src/sm4/internal_avx512/sm4_ctr_mb16.c (+9/-2)
sources/ippcp/crypto_mb/src/sm4/internal_avx512/sm4_ecb_mb16.c (+8/-1)
sources/ippcp/crypto_mb/src/sm4/internal_avx512/sm4_ofb_mb16.c (+8/-1)
sources/ippcp/crypto_mb/src/sm4/internal_avx512/sm4_xts_mb16.c (+8/-1)
sources/ippcp/crypto_mb/src/sm4/sm4_cbc_dec_mb16.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/sm4_cbc_enc_mb16.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/sm4_cfb_dec_mb16.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/sm4_cfb_enc_mb16.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/sm4_ctr_dec_mb16.c (+3/-4)
sources/ippcp/crypto_mb/src/sm4/sm4_ctr_enc_mb16.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/sm4_ecb_dec_mb16.c (+8/-3)
sources/ippcp/crypto_mb/src/sm4/sm4_ecb_enc_mb16.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/sm4_ofb_dec_mb16.c (+3/-2)
sources/ippcp/crypto_mb/src/sm4/sm4_ofb_enc_mb16.c (+8/-4)
sources/ippcp/crypto_mb/src/sm4/sm4_setkey_mb16.c (+17/-83)
sources/ippcp/crypto_mb/src/sm4/sm4_xts_dec_mb16.c (+9/-5)
sources/ippcp/crypto_mb/src/sm4/sm4_xts_enc_mb16.c (+9/-5)
sources/ippcp/crypto_mb/src/x25519/ifma_x25519.c (+12/-1634)
sources/ippcp/crypto_mb/src/x25519/internal_avx512/internal_ifma_x25519.c (+1677/-0)
sources/ippcp/exports.linux.lib-export (+2/-244)
sources/ippcp/exports.linux.selftests-export (+6/-244)
sources/ippcp/exports.macosx.lib-export (+1/-122)
sources/ippcp/exports.macosx.selftests-export (+2/-1)
sources/ippcp/fips_cert/selftest_aes_upd_hmac.c (+33/-4)
sources/ippcp/fips_cert/selftest_hash_msg_upd_sha.c (+37/-21)
sources/ippcp/fips_cert/selftest_lms_verify.c (+276/-0)
sources/ippcp/fips_cert/selftest_rsa_enc_dec_oaep.c (+43/-5)
sources/ippcp/fips_cert/selftest_rsa_sign_verify_pkcs_v15.c (+41/-5)
sources/ippcp/fips_cert/selftest_rsa_sign_verify_pss.c (+60/-8)
sources/ippcp/gfpec/ecnist/ifma_arith_method_n256.c (+3/-3)
sources/ippcp/gfpec/ecnist/ifma_arith_method_n384.c (+3/-3)
sources/ippcp/gfpec/ecnist/ifma_arith_method_n521.c (+3/-3)
sources/ippcp/gfpec/ecnist/ifma_arith_method_p256.c (+2/-2)
sources/ippcp/gfpec/ecnist/ifma_arith_method_p384.c (+2/-2)
sources/ippcp/gfpec/ecnist/ifma_arith_method_p521.c (+2/-2)
sources/ippcp/gfpec/ecnist/ifma_arith_method_p521.h (+1/-1)
sources/ippcp/gfpec/ecnist/ifma_arith_n256.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_arith_n384.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_arith_n521.c (+2/-2)
sources/ippcp/gfpec/ecnist/ifma_arith_n521.h (+1/-1)
sources/ippcp/gfpec/ecnist/ifma_arith_p256.c (+5/-5)
sources/ippcp/gfpec/ecnist/ifma_arith_p256.h (+3/-3)
sources/ippcp/gfpec/ecnist/ifma_arith_p384.c (+5/-5)
sources/ippcp/gfpec/ecnist/ifma_arith_p384.h (+3/-3)
sources/ippcp/gfpec/ecnist/ifma_arith_p521.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_arith_p521.h (+1/-1)
sources/ippcp/gfpec/ecnist/ifma_defs.h (+2/-2)
sources/ippcp/gfpec/ecnist/ifma_defs_p521.h (+3/-3)
sources/ippcp/gfpec/ecnist/ifma_ec_addpoint_p256.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_addpoint_p384.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_addpoint_p521.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_dh_p256.c (+5/-5)
sources/ippcp/gfpec/ecnist/ifma_ec_dh_p384.c (+5/-5)
sources/ippcp/gfpec/ecnist/ifma_ec_dh_p521.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_dsasign_p256.c (+11/-7)
sources/ippcp/gfpec/ecnist/ifma_ec_dsasign_p384.c (+11/-7)
sources/ippcp/gfpec/ecnist/ifma_ec_dsasign_p521.c (+11/-7)
sources/ippcp/gfpec/ecnist/ifma_ec_dsaverify_p256.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_dsaverify_p384.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_dsaverify_p521.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_mulpoint_p256.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_mulpoint_p384.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_mulpoint_p521.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_on_curve_p256.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_on_curve_p384.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_on_curve_p521.c (+4/-4)
sources/ippcp/gfpec/ecnist/ifma_ec_pubkey_p256.c (+5/-5)
sources/ippcp/gfpec/ecnist/ifma_ec_pubkey_p384.c (+5/-5)
sources/ippcp/gfpec/ecnist/ifma_ec_pubkey_p521.c (+5/-5)
sources/ippcp/gfpec/ecnist/ifma_ecpoint_p256.c (+9/-9)
sources/ippcp/gfpec/ecnist/ifma_ecpoint_p256.h (+6/-6)
sources/ippcp/gfpec/ecnist/ifma_ecpoint_p384.c (+8/-8)
sources/ippcp/gfpec/ecnist/ifma_ecpoint_p384.h (+6/-6)
sources/ippcp/gfpec/ecnist/ifma_ecpoint_p521.c (+7/-7)
sources/ippcp/gfpec/ecnist/ifma_ecpoint_p521.h (+6/-6)
sources/ippcp/gfpec/ecnist/ifma_ecprecomp4_p256.h (+2/-2)
sources/ippcp/gfpec/ecnist/ifma_ecprecomp4_p384.h (+3/-3)
sources/ippcp/gfpec/ecnist/ifma_ecprecomp4_p521.h (+3/-3)
sources/ippcp/gfpec/ecnist/ifma_ecprecomp7_p256.h (+3/-3)
sources/ippcp/gfpec/ecnist/ifma_norm.c (+2/-2)
sources/ippcp/gfpec/pcpeccp.h (+8/-12)
sources/ippcp/gfpec/pcpeccpstdca_112r1.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_112r2.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_128r1.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_128r2.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_160r1.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_160r2.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_192r1.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_224r1.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_256r1.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_384r1.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_521r1.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_BN_256.c (+1/-1)
sources/ippcp/gfpec/pcpeccpstdca_SM2_256.c (+1/-1)
sources/ippcp/gfpec/pcpgfp.c (+8/-8)
sources/ippcp/gfpec/pcpgfp_exp.c (+2/-2)
sources/ippcp/gfpec/pcpgfp_get.c (+2/-2)
sources/ippcp/gfpec/pcpgfp_getoctstring.c (+2/-2)
sources/ippcp/gfpec/pcpgfp_gfeqnr.c (+7/-7)
sources/ippcp/gfpec/pcpgfp_inv.c (+2/-2)
sources/ippcp/gfpec/pcpgfp_rand.c (+2/-2)
sources/ippcp/gfpec/pcpgfp_set.c (+2/-2)
sources/ippcp/gfpec/pcpgfp_setgfp.c (+7/-7)
sources/ippcp/gfpec/pcpgfp_setoctstring.c (+2/-2)
sources/ippcp/gfpec/pcpgfp_sqrt.c (+2/-2)
sources/ippcp/gfpec/pcpgfpadd.c (+6/-6)
sources/ippcp/gfpec/pcpgfpaddpe.c (+6/-6)
sources/ippcp/gfpec/pcpgfpbufsize.c (+3/-3)
sources/ippcp/gfpec/pcpgfpcmpelem.c (+3/-3)
sources/ippcp/gfpec/pcpgfpconj.c (+6/-6)
sources/ippcp/gfpec/pcpgfpcpyelem.c (+6/-6)
sources/ippcp/gfpec/pcpgfpec.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_add.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_addaffine.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_baseprod.c (+2/-2)
sources/ippcp/gfpec/pcpgfpec_comppont.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_dblpoint.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_getpoint.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_makepoint.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_mul.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_mul1.c (+2/-2)
sources/ippcp/gfpec/pcpgfpec_mulbase.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_mulbase1.c (+2/-2)
sources/ippcp/gfpec/pcpgfpec_negpoint.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_prod.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_selectp192r1w7.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_selectp224r1w7.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_selectp256r1w7.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_selectp384r1w5.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_selectp521r1w5.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_setpoint.c (+5/-5)
sources/ippcp/gfpec/pcpgfpec_setuptable.c (+129/-0)
sources/ippcp/gfpec/pcpgfpecaddpoint.c (+109/-0)
sources/ippcp/gfpec/pcpgfpecbindstd192r1.c (+5/-5)
sources/ippcp/gfpec/pcpgfpecbindstd224r1.c (+5/-5)
sources/ippcp/gfpec/pcpgfpecbindstd256r1.c (+109/-0)
sources/ippcp/gfpec/pcpgfpecbindstd384r1.c (+109/-0)
sources/ippcp/gfpec/pcpgfpecbindstd521r1.c (+109/-0)
sources/ippcp/gfpec/pcpgfpecbindstdsm2.c (+108/-0)
sources/ippcp/gfpec/pcpgfpecbufsize.c (+3/-3)
sources/ippcp/gfpec/pcpgfpeccmppoint.c (+76/-0)
sources/ippcp/gfpec/pcpgfpeccpypoint.c (+74/-0)
sources/ippcp/gfpec/pcpgfpecdh.c (+183/-0)
sources/ippcp/gfpec/pcpgfpecdhc.c (+140/-0)
sources/ippcp/gfpec/pcpgfpecesdecryptsm2.c (+65/-0)
sources/ippcp/gfpec/pcpgfpecesencryptsm2.c (+65/-0)
sources/ippcp/gfpec/pcpgfpecesfinalsm2.c (+72/-0)
sources/ippcp/gfpec/pcpgfpecesgetbufferssizesm2.c (+60/-0)
sources/ippcp/gfpec/pcpgfpecesgetsizesm2.c (+29/-30)
sources/ippcp/gfpec/pcpgfpecesinitsm2.c (+77/-0)
sources/ippcp/gfpec/pcpgfpecessetkeysm2.c (+97/-0)
sources/ippcp/gfpec/pcpgfpecessm2.h (+76/-0)
sources/ippcp/gfpec/pcpgfpecesstartsm2.c (+14/-24)
sources/ippcp/gfpec/pcpgfpecget.c (+38/-62)
sources/ippcp/gfpec/pcpgfpecgetinfo.c (+32/-28)
sources/ippcp/gfpec/pcpgfpecgetpoint.c (+84/-0)
sources/ippcp/gfpec/pcpgfpecgetpointoctstring.c (+88/-0)
sources/ippcp/gfpec/pcpgfpecgetpointreg.c (+106/-0)
sources/ippcp/gfpec/pcpgfpecgetsize.c (+25/-23)
sources/ippcp/gfpec/pcpgfpecgetsubgroup.c (+120/-0)
sources/ippcp/gfpec/pcpgfpecinit.c (+121/-0)
sources/ippcp/gfpec/pcpgfpecinitstd128r1.c (+116/-0)
sources/ippcp/gfpec/pcpgfpecinitstd128r2.c (+116/-0)
sources/ippcp/gfpec/pcpgfpecinitstd192r1.c (+116/-0)
sources/ippcp/gfpec/pcpgfpecinitstd224r1.c (+116/-0)
sources/ippcp/gfpec/pcpgfpecinitstd256r1.c (+125/-0)
sources/ippcp/gfpec/pcpgfpecinitstd384r1.c (+124/-0)
sources/ippcp/gfpec/pcpgfpecinitstd521r1.c (+125/-0)
sources/ippcp/gfpec/pcpgfpecinitstdbn256.c (+116/-0)
sources/ippcp/gfpec/pcpgfpecinitstdsm2.c (+127/-0)
sources/ippcp/gfpec/pcpgfpeckeys.c (+156/-0)
sources/ippcp/gfpec/pcpgfpecmakepoint.c (+86/-0)
sources/ippcp/gfpec/pcpgfpecmulpoint.c (+154/-0)
sources/ippcp/gfpec/pcpgfpecnegpoint.c (+18/-52)
sources/ippcp/gfpec/pcpgfpecpoint.c (+111/-0)
sources/ippcp/gfpec/pcpgfpecpointstuff.c (+132/-0)
sources/ippcp/gfpec/pcpgfpecprivatekey.c (+29/-42)
sources/ippcp/gfpec/pcpgfpecpublickey.c (+122/-0)
sources/ippcp/gfpec/pcpgfpecset.c (+98/-0)
sources/ippcp/gfpec/pcpgfpecsetpoint.c (+84/-0)
sources/ippcp/gfpec/pcpgfpecsetpointatinf.c (+20/-28)
sources/ippcp/gfpec/pcpgfpecsetpointhash.c (+153/-0)
sources/ippcp/gfpec/pcpgfpecsetpointhash_backc.c (+154/-0)
sources/ippcp/gfpec/pcpgfpecsetpointhash_backc_rmf.c (+150/-0)
sources/ippcp/gfpec/pcpgfpecsetpointhash_rmf.c (+149/-0)
sources/ippcp/gfpec/pcpgfpecsetpointoctstring.c (+88/-0)
sources/ippcp/gfpec/pcpgfpecsetpointrand.c (+134/-0)
sources/ippcp/gfpec/pcpgfpecsetpointreg.c (+105/-0)
sources/ippcp/gfpec/pcpgfpecsetsubgroup.c (+119/-0)
sources/ippcp/gfpec/pcpgfpecsigndsa.c (+251/-0)
sources/ippcp/gfpec/pcpgfpecsignnr.c (+205/-0)
sources/ippcp/gfpec/pcpgfpecsignsm2.c (+164/-31)
sources/ippcp/gfpec/pcpgfpecstuff.h (+15/-15)
sources/ippcp/gfpec/pcpgfpectstpoint.c (+79/-0)
sources/ippcp/gfpec/pcpgfpectstpointinsubgroup.c (+90/-0)
sources/ippcp/gfpec/pcpgfpecverify.c (+141/-0)
sources/ippcp/gfpec/pcpgfpecverifydsa.c (+204/-0)
sources/ippcp/gfpec/pcpgfpecverifynr.c (+165/-0)
sources/ippcp/gfpec/pcpgfpecverifysm2.c (+84/-71)
sources/ippcp/gfpec/pcpgfpelemgetsize.c (+61/-0)
sources/ippcp/gfpec/pcpgfpeleminit.c (+77/-0)
sources/ippcp/gfpec/pcpgfpexp.c (+79/-0)
sources/ippcp/gfpec/pcpgfpgetelem.c (+82/-0)
sources/ippcp/gfpec/pcpgfpgetelemoctstr.c (+90/-0)
sources/ippcp/gfpec/pcpgfpgetsize.c (+22/-30)
sources/ippcp/gfpec/pcpgfpinfo.c (+26/-39)
sources/ippcp/gfpec/pcpgfpinit.c (+109/-0)
sources/ippcp/gfpec/pcpgfpinitarbitrary.c (+82/-0)
sources/ippcp/gfpec/pcpgfpinitfixed.c (+74/-0)
sources/ippcp/gfpec/pcpgfpinv.c (+76/-0)
sources/ippcp/gfpec/pcpgfpisunityelem.c (+83/-0)
sources/ippcp/gfpec/pcpgfpiszeroelem.c (+73/-0)
sources/ippcp/gfpec/pcpgfpmethod.h (+62/-0)
sources/ippcp/gfpec/pcpgfpmethod_192r1.c (+206/-0)
sources/ippcp/gfpec/pcpgfpmethod_224r1.c (+206/-0)
sources/ippcp/gfpec/pcpgfpmethod_256.c (+50/-0)
sources/ippcp/gfpec/pcpgfpmethod_256.h (+129/-0)
sources/ippcp/gfpec/pcpgfpmethod_256bn.c (+52/-0)
sources/ippcp/gfpec/pcpgfpmethod_256r1.c (+214/-0)
sources/ippcp/gfpec/pcpgfpmethod_384r1.c (+212/-0)
sources/ippcp/gfpec/pcpgfpmethod_521r1.c (+219/-0)
sources/ippcp/gfpec/pcpgfpmethod_com.c (+47/-0)
sources/ippcp/gfpec/pcpgfpmethod_sm2.c (+218/-0)
sources/ippcp/gfpec/pcpgfpmul.c (+78/-0)
sources/ippcp/gfpec/pcpgfpmulexp.c (+132/-0)
sources/ippcp/gfpec/pcpgfpmulpe.c (+82/-0)
sources/ippcp/gfpec/pcpgfpneg.c (+72/-0)
sources/ippcp/gfpec/pcpgfpsetelem.c (+88/-0)
sources/ippcp/gfpec/pcpgfpsetelemhash.c (+98/-0)
sources/ippcp/gfpec/pcpgfpsetelemhashrmf.c (+98/-0)
sources/ippcp/gfpec/pcpgfpsetelemoctstr.c (+95/-0)
sources/ippcp/gfpec/pcpgfpsetelemrand.c (+72/-0)
sources/ippcp/gfpec/pcpgfpsetelemreg.c (+30/-30)
sources/ippcp/gfpec/pcpgfpsqr.c (+73/-0)
sources/ippcp/gfpec/pcpgfpsqrt.c (+78/-0)
sources/ippcp/gfpec/pcpgfpstuff.h (+208/-0)
sources/ippcp/gfpec/pcpgfpsub.c (+75/-0)
sources/ippcp/gfpec/pcpgfpsubpe.c (+79/-0)
sources/ippcp/gfpec/pcpgfpx.c (+70/-0)
sources/ippcp/gfpec/pcpgfpx_add_gfe.c (+42/-0)
sources/ippcp/gfpec/pcpgfpx_conj.c (+41/-0)
sources/ippcp/gfpec/pcpgfpx_exp.c (+141/-0)
sources/ippcp/gfpec/pcpgfpx_get.c (+57/-0)
sources/ippcp/gfpec/pcpgfpx_getpolyterm.c (+35/-0)
sources/ippcp/gfpec/pcpgfpx_inv.c (+222/-0)
sources/ippcp/gfpec/pcpgfpx_mul_gfe.c (+47/-0)
sources/ippcp/gfpec/pcpgfpx_multiexp.c (+183/-0)
sources/ippcp/gfpec/pcpgfpx_neg.c (+45/-0)
sources/ippcp/gfpec/pcpgfpx_rand.c (+51/-0)
sources/ippcp/gfpec/pcpgfpx_set.c (+55/-0)
sources/ippcp/gfpec/pcpgfpx_setpolyterm.c (+35/-0)
sources/ippcp/gfpec/pcpgfpx_sub_gfe.c (+42/-0)
sources/ippcp/gfpec/pcpgfpxgetsize.c (+84/-0)
sources/ippcp/gfpec/pcpgfpxinit.c (+107/-0)
sources/ippcp/gfpec/pcpgfpxinitbinomial.c (+91/-0)
sources/ippcp/gfpec/pcpgfpxmethod_binom.c (+122/-0)
sources/ippcp/gfpec/pcpgfpxmethod_binom2.c (+190/-0)
sources/ippcp/gfpec/pcpgfpxmethod_binom3.c (+194/-0)
sources/ippcp/gfpec/pcpgfpxmethod_binom3_epid2.c (+253/-0)
sources/ippcp/gfpec/pcpgfpxmethod_binom_epid2.c (+273/-0)
sources/ippcp/gfpec/pcpgfpxmethod_binom_epid2.h (+98/-0)
sources/ippcp/gfpec/pcpgfpxmethod_binom_mulc.h (+56/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com.c (+73/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com.h (+52/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_add.c (+44/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_decode.c (+43/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_div2.c (+43/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_encode.c (+43/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_mul.c (+83/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_mul2.c (+43/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_mul3.c (+43/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_neg.c (+43/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_sqr.c (+83/-0)
sources/ippcp/gfpec/pcpgfpxmethod_com_sub.c (+44/-0)
sources/ippcp/gfpec/pcpgfpxstuff.c (+55/-0)
sources/ippcp/gfpec/pcpgfpxstuff.h (+142/-0)
sources/ippcp/gfpec/pcpp192r1precomca.c (+1936/-0)
sources/ippcp/gfpec/pcpp224r1precomca.c (+4488/-0)
sources/ippcp/gfpec/pcpp256r1precomca.c (+2539/-0)
sources/ippcp/gfpec/pcpp384r1precomca.c (+1523/-0)
sources/ippcp/gfpec/pcpp521r1precomca.c (+4056/-0)
sources/ippcp/gfpec/sm2/ifma_arith_method_nsm2.c (+49/-0)
sources/ippcp/gfpec/sm2/ifma_arith_method_psm2.c (+48/-0)
sources/ippcp/gfpec/sm2/ifma_arith_method_sm2.h (+37/-0)
sources/ippcp/gfpec/sm2/ifma_arith_nsm2.c (+250/-0)
sources/ippcp/gfpec/sm2/ifma_arith_nsm2.h (+110/-0)
sources/ippcp/gfpec/sm2/ifma_arith_psm2.c (+387/-0)
sources/ippcp/gfpec/sm2/ifma_arith_psm2.h (+174/-0)
sources/ippcp/gfpec/sm2/ifma_defs_sm2.h (+77/-0)
sources/ippcp/gfpec/sm2/ifma_ec_addpoint_sm2.c (+58/-0)
sources/ippcp/gfpec/sm2/ifma_ec_dh_sm2.c (+79/-0)
sources/ippcp/gfpec/sm2/ifma_ec_mulpoint_sm2.c (+64/-0)
sources/ippcp/gfpec/sm2/ifma_ec_on_curve_sm2.c (+44/-0)
sources/ippcp/gfpec/sm2/ifma_ec_pubkey_sm2.c (+74/-0)
sources/ippcp/gfpec/sm2/ifma_ec_sign_sm2.c (+164/-0)
sources/ippcp/gfpec/sm2/ifma_ec_verify_sm2.c (+147/-0)
sources/ippcp/gfpec/sm2/ifma_ecpoint_sm2.c (+8/-8)
sources/ippcp/gfpec/sm2/ifma_ecpoint_sm2.h (+192/-0)
sources/ippcp/gfpec/sm2/ifma_ecprecomp7_sm2.h (+3/-3)
sources/ippcp/gfpec/sm2/ifma_sm2_key_exchange_shared_key.c (+263/-0)
sources/ippcp/gfpec/sm2/pcpsm2pprecomca.c (+2539/-0)
sources/ippcp/gfpec/sm2/sm2_decrypt_ext.c (+186/-0)
sources/ippcp/gfpec/sm2/sm2_decrypt_ext_dec_msg_size.c (+65/-0)
sources/ippcp/gfpec/sm2/sm2_encrypt_ext.c (+199/-0)
sources/ippcp/gfpec/sm2/sm2_encrypt_ext_enc_msg_size.c (+68/-0)
sources/ippcp/gfpec/sm2/sm2_key_exchange_confirmation.c (+115/-0)
sources/ippcp/gfpec/sm2/sm2_key_exchange_get_size.c (+57/-0)
sources/ippcp/gfpec/sm2/sm2_key_exchange_init.c (+107/-0)
sources/ippcp/gfpec/sm2/sm2_key_exchange_method.h (+62/-0)
sources/ippcp/gfpec/sm2/sm2_key_exchange_setup.c (+144/-0)
sources/ippcp/gfpec/sm2/sm2_key_exchange_shared_key.c (+309/-0)
sources/ippcp/gfpec/sm2/sm2_message_representation.c (+105/-0)
sources/ippcp/gfpec/sm2/sm2_stuff.c (+177/-0)
sources/ippcp/gfpec/sm2/sm2_stuff.h (+179/-0)
sources/ippcp/gfpec/sm2/sm2_user_id_hash.c (+124/-0)
sources/ippcp/gsmod_montinv.c (+4/-4)
sources/ippcp/gsmodmethod.h (+5/-5)
sources/ippcp/gsmodstuff.h (+2/-2)
sources/ippcp/hash/md5/pcphashmd5px.c (+205/-0)
sources/ippcp/hash/md5/pcphashmethod_md5.c (+66/-0)
sources/ippcp/hash/md5/pcphashmethodset_md5.c (+27/-30)
sources/ippcp/hash/md5/pcpmd5ca.c (+60/-0)
sources/ippcp/hash/md5/pcpmd5stuff.h (+99/-0)
sources/ippcp/hash/pcphash.h (+236/-0)
sources/ippcp/hash/pcphash_digest.c (+125/-0)
sources/ippcp/hash/pcphash_func.h (+107/-0)
sources/ippcp/hash/pcphash_init.c (+65/-0)
sources/ippcp/hash/pcphash_reinit.c (+24/-13)
sources/ippcp/hash/pcphash_rmf.h (+47/-0)
sources/ippcp/hash/pcphashca_rmf.c (+56/-0)
sources/ippcp/hash/pcphashcnt.c (+434/-0)
sources/ippcp/hash/pcphashduplicate.c (+28/-16)
sources/ippcp/hash/pcphashduplicate_rmf.c (+25/-20)
sources/ippcp/hash/pcphashfinal.c (+30/-12)
sources/ippcp/hash/pcphashfinal_rmf.c (+37/-11)
sources/ippcp/hash/pcphashgetinfo_rmf.c (+88/-0)
sources/ippcp/hash/pcphashgetsize.c (+19/-13)
sources/ippcp/hash/pcphashgetsize_rmf.c (+20/-14)
sources/ippcp/hash/pcphashgettag.c (+31/-12)
sources/ippcp/hash/pcphashgettag_rmf.c (+33/-32)
sources/ippcp/hash/pcphashinit.c (+31/-13)
sources/ippcp/hash/pcphashinit_rmf.c (+23/-13)
sources/ippcp/hash/pcphashmessage.c (+144/-0)
sources/ippcp/hash/pcphashmessage_rmf.c (+85/-0)
sources/ippcp/hash/pcphashmethod_rmf.h (+44/-0)
sources/ippcp/hash/pcphashmethodgetsize.c (+12/-17)
sources/ippcp/hash/pcphashpack.c (+30/-13)
sources/ippcp/hash/pcphashpack_rmf.c (+28/-13)
sources/ippcp/hash/pcphashunpack.c (+22/-14)
sources/ippcp/hash/pcphashunpack_rmf.c (+22/-14)
sources/ippcp/hash/pcphashupdate.c (+136/-0)
sources/ippcp/hash/pcphashupdate_rmf.c (+114/-0)
sources/ippcp/hash/sha1/pcphashmethod_sha1.c (+63/-0)
sources/ippcp/hash/sha1/pcphashmethod_sha1_ni.c (+68/-0)
sources/ippcp/hash/sha1/pcphashmethod_sha1_tt.c (+72/-0)
sources/ippcp/hash/sha1/pcphashmethodset_sha1.c (+22/-20)
sources/ippcp/hash/sha1/pcphashmethodset_sha1_ni.c (+75/-0)
sources/ippcp/hash/sha1/pcphashmethodset_sha1_tt.c (+32/-27)
sources/ippcp/hash/sha1/pcphashsha1px.c (+176/-0)
sources/ippcp/hash/sha1/pcpsha1ca.c (+65/-0)
sources/ippcp/hash/sha1/pcpsha1stuff.h (+86/-0)
sources/ippcp/hash/sha224/pcphashmethod_sha224.c (+64/-0)
sources/ippcp/hash/sha224/pcphashmethod_sha224_ni.c (+69/-0)
sources/ippcp/hash/sha224/pcphashmethod_sha224_tt.c (+72/-0)
sources/ippcp/hash/sha224/pcphashmethodset_sha224.c (+27/-15)
sources/ippcp/hash/sha224/pcphashmethodset_sha224_ni.c (+76/-0)
sources/ippcp/hash/sha224/pcphashmethodset_sha224_tt.c (+29/-19)
sources/ippcp/hash/sha224/pcphashstatemethodset_sha224.c (+24/-29)
sources/ippcp/hash/sha224/pcphashstatemethodset_sha224_ni.c (+78/-0)
sources/ippcp/hash/sha224/pcphashstatemethodset_sha224_tt.c (+34/-27)
sources/ippcp/hash/sha256/pcphashmethod_sha256.c (+63/-0)
sources/ippcp/hash/sha256/pcphashmethod_sha256_ni.c (+68/-0)
sources/ippcp/hash/sha256/pcphashmethod_sha256_tt.c (+72/-0)
sources/ippcp/hash/sha256/pcphashmethodset_sha256.c (+26/-15)
sources/ippcp/hash/sha256/pcphashmethodset_sha256_ni.c (+39/-27)
sources/ippcp/hash/sha256/pcphashmethodset_sha256_tt.c (+33/-27)
sources/ippcp/hash/sha256/pcphashsha256px.c (+207/-0)
sources/ippcp/hash/sha256/pcphashstatemethodset_sha256.c (+26/-28)
sources/ippcp/hash/sha256/pcphashstatemethodset_sha256_ni.c (+77/-0)
sources/ippcp/hash/sha256/pcphashstatemethodset_sha256_tt.c (+35/-28)
sources/ippcp/hash/sha256/pcpsha256ca.c (+64/-0)
sources/ippcp/hash/sha256/pcpsha256stuff.h (+174/-0)
sources/ippcp/hash/sha384/pcphashmethod_sha384.c (+30/-34)
sources/ippcp/hash/sha384/pcphashmethodset_sha384.c (+22/-24)
sources/ippcp/hash/sha384/pcphashstatemethodset_sha384.c (+27/-23)
sources/ippcp/hash/sha512/pcphashmethod_sha512.c (+64/-0)
sources/ippcp/hash/sha512/pcphashmethod_sha512_224.c (+64/-0)
sources/ippcp/hash/sha512/pcphashmethod_sha512_256.c (+64/-0)
sources/ippcp/hash/sha512/pcphashmethodset_sha512.c (+26/-15)
sources/ippcp/hash/sha512/pcphashmethodset_sha512_224.c (+21/-19)
sources/ippcp/hash/sha512/pcphashmethodset_sha512_256.c (+27/-15)
sources/ippcp/hash/sha512/pcphashsha512px.c (+214/-0)
sources/ippcp/hash/sha512/pcphashstatemethodset_sha512.c (+27/-27)
sources/ippcp/hash/sha512/pcphashstatemethodset_sha512_224.c (+23/-19)
sources/ippcp/hash/sha512/pcphashstatemethodset_sha512_256.c (+27/-27)
sources/ippcp/hash/sha512/pcpsha512stuff.h (+199/-0)
sources/ippcp/hash/sm3/pcphashmethod_sm3.c (+71/-0)
sources/ippcp/hash/sm3/pcphashmethodset_sm3.c (+31/-30)
sources/ippcp/hash/sm3/pcphashsm3px.c (+337/-0)
sources/ippcp/hash/sm3/pcphashstatemethodset_sm3.c (+71/-0)
sources/ippcp/hash/sm3/pcpsm3ca.c (+55/-0)
sources/ippcp/hash/sm3/pcpsm3stuff.h (+102/-0)
sources/ippcp/ifma_exp52x20.c (+1/-1)
sources/ippcp/ifma_exp52x20_dual.c (+1/-1)
sources/ippcp/ifma_exp52x30_dual.c (+1/-1)
sources/ippcp/ifma_exp52x40_dual.c (+1/-1)
sources/ippcp/ifma_math_avx512vl.h (+11/-11)
sources/ippcp/ippcp.def (+1/-122)
sources/ippcp/ippcp_fips_selftests.def (+3/-122)
sources/ippcp/lms/lms_setters_getters.c (+2/-2)
sources/ippcp/owncp.h (+3/-4)
sources/ippcp/pcpaes_avx2_vaes.h (+12/-12)
sources/ippcp/pcpaes_ccmdecrypt.c (+1/-1)
sources/ippcp/pcpaes_ccmencrypt.c (+2/-2)
sources/ippcp/pcpaes_ccmgetsize.c (+2/-2)
sources/ippcp/pcpaes_ccmgettag.c (+2/-2)
sources/ippcp/pcpaes_ccminit.c (+2/-2)
sources/ippcp/pcpaes_ccmmessagelen.c (+2/-2)
sources/ippcp/pcpaes_ccmstart.c (+1/-1)
sources/ippcp/pcpaes_ccmtaglen.c (+2/-2)
sources/ippcp/pcpaes_cfbdecrypt_vaes512.c (+2/-2)
sources/ippcp/pcpaes_cmac_stuff.h (+3/-3)
sources/ippcp/pcpaes_ctr_process.h (+9/-9)
sources/ippcp/pcpaes_ctrencrypt_rij128pipe_vaes512.c (+2/-2)
sources/ippcp/pcpaes_gcm_vaes512.h (+4/-4)
sources/ippcp/pcpaes_gcmmul_vaes512.c (+3/-3)
sources/ippcp/pcpaes_sivstuff.h (+7/-7)
sources/ippcp/pcpaes_xts_vaes512.c (+2/-2)
sources/ippcp/pcpaesauthgcm.h (+8/-8)
sources/ippcp/pcpaesgcmtbl2k_mulpx.c (+9/-9)
sources/ippcp/pcpaesm.h (+6/-6)
sources/ippcp/pcpaesmxts.h (+5/-5)
sources/ippcp/pcpaesmxtsstuff.h (+5/-5)
sources/ippcp/pcpaesnoise.h (+3/-3)
sources/ippcp/pcpbn.h (+14/-15)
sources/ippcp/pcpbn_pack.c (+5/-6)
sources/ippcp/pcpbn_unpack.c (+5/-6)
sources/ippcp/pcpbn_val1.c (+5/-6)
sources/ippcp/pcpbn_val2.c (+4/-5)
sources/ippcp/pcpbn_val3.c (+4/-5)
sources/ippcp/pcpbnarithadd.c (+4/-5)
sources/ippcp/pcpbnarithcmp.c (+4/-5)
sources/ippcp/pcpbnarithcmpz.c (+4/-5)
sources/ippcp/pcpbnarithdiv.c (+4/-5)
sources/ippcp/pcpbnarithgcd.c (+4/-5)
sources/ippcp/pcpbnarithmac.c (+4/-5)
sources/ippcp/pcpbnarithminv.c (+4/-5)
sources/ippcp/pcpbnarithmod.c (+4/-5)
sources/ippcp/pcpbnarithmul.c (+4/-5)
sources/ippcp/pcpbnarithsub.c (+4/-5)
sources/ippcp/pcpbngetext.c (+4/-5)
sources/ippcp/pcpbngetlen.c (+4/-5)
sources/ippcp/pcpbngetref.c (+9/-10)
sources/ippcp/pcpbngetsize.c (+4/-5)
sources/ippcp/pcpbngetwords.c (+3/-4)
sources/ippcp/pcpbninit.c (+1/-2)
sources/ippcp/pcpbnsetwords.c (+3/-4)
sources/ippcp/pcpbnu32_arith_add.c (+4/-4)
sources/ippcp/pcpbnu32_arith_dec.c (+4/-4)
sources/ippcp/pcpbnu32_arith_div.c (+5/-5)
sources/ippcp/pcpbnu32_arith_inc.c (+4/-4)
sources/ippcp/pcpbnu32_arith_muldigit.c (+4/-4)
sources/ippcp/pcpbnu32_arith_sub.c (+1/-1)
sources/ippcp/pcpbnu32_arith_submuldigit.c (+4/-4)
sources/ippcp/pcpbnu32_getoctstr.c (+4/-4)
sources/ippcp/pcpbnu32_nlz.c (+4/-4)
sources/ippcp/pcpbnu32_setoctstr.c (+4/-4)
sources/ippcp/pcpbnu32arith.h (+4/-4)
sources/ippcp/pcpbnu32misc.h (+5/-5)
sources/ippcp/pcpbnu_arith_add.c (+4/-4)
sources/ippcp/pcpbnu_arith_addmuldigit.c (+4/-4)
sources/ippcp/pcpbnu_arith_dec.c (+4/-4)
sources/ippcp/pcpbnu_arith_gcd.c (+4/-4)
sources/ippcp/pcpbnu_arith_inc.c (+4/-4)
sources/ippcp/pcpbnu_arith_minv.c (+4/-4)
sources/ippcp/pcpbnu_arith_mul_adc.c (+4/-4)
sources/ippcp/pcpbnu_arith_sqr_adc.c (+4/-4)
sources/ippcp/pcpbnu_arith_sub.c (+4/-4)
sources/ippcp/pcpbnu_arith_submuldigit.c (+4/-4)
sources/ippcp/pcpbnu_getoctstr.c (+5/-5)
sources/ippcp/pcpbnu_lsr.c (+5/-5)
sources/ippcp/pcpbnu_msbit.c (+4/-4)
sources/ippcp/pcpbnu_nlz.c (+4/-4)
sources/ippcp/pcpbnu_ntz.c (+4/-4)
sources/ippcp/pcpbnu_setoctstr.c (+5/-5)
sources/ippcp/pcpbnuarith.h (+10/-10)
sources/ippcp/pcpbnuimpl.h (+5/-5)
sources/ippcp/pcpbnumisc.h (+10/-10)
sources/ippcp/pcpdlp_packctx.c (+3/-3)
sources/ippcp/pcpdlpgeneratedh.c (+13/-4)
sources/ippcp/pcpdlpgeneratedsa.c (+13/-3)
sources/ippcp/pcpdlpsigndsaca.c (+1/-1)
sources/ippcp/pcphmac.h (+1/-1)
sources/ippcp/pcphmac_rmf.h (+1/-1)
sources/ippcp/pcpmask_ct.h (+30/-53)
sources/ippcp/pcpmgf1ca_rmf.c (+1/-1)
sources/ippcp/pcpmgf2ca_rmf.c (+1/-1)
sources/ippcp/pcpmont_expbinbnu_sscm.c (+6/-8)
sources/ippcp/pcpmont_getsize.c (+3/-4)
sources/ippcp/pcpmont_init.c (+3/-4)
sources/ippcp/pcpmont_multiexp_fast.c (+1/-1)
sources/ippcp/pcpmont_multiexpinitarray.c (+1/-7)
sources/ippcp/pcpmont_packctx.c (+3/-4)
sources/ippcp/pcpmont_set.c (+4/-5)
sources/ippcp/pcpmont_unpackctx.c (+3/-4)
sources/ippcp/pcpmontexp.c (+3/-4)
sources/ippcp/pcpmontform.c (+3/-4)
sources/ippcp/pcpmontget.c (+3/-4)
sources/ippcp/pcpmontgetsize.c (+3/-4)
sources/ippcp/pcpmontgomery.h (+17/-18)
sources/ippcp/pcpmontinit.c (+3/-4)
sources/ippcp/pcpmontmul.c (+4/-5)
sources/ippcp/pcpmontred.c (+3/-4)
sources/ippcp/pcpmontred.h (+4/-5)
sources/ippcp/pcpmontset.c (+3/-4)
sources/ippcp/pcpname.h (+2/-4)
sources/ippcp/pcpngmontexpstuff.h (+8/-8)
sources/ippcp/pcpngmontexpstuff_avx2.c (+2/-2)
sources/ippcp/pcpngmontexpstuff_avx2.h (+3/-3)
sources/ippcp/pcpngmontexpstuff_avx512.h (+4/-4)
sources/ippcp/pcpngmontexpstuff_sse2.h (+3/-3)
sources/ippcp/pcpprime_mimimaltest.c (+3/-3)
sources/ippcp/pcpprime_packctx.c (+3/-3)
sources/ippcp/pcpprime_test.c (+4/-4)
sources/ippcp/pcpprime_unpackctx.c (+3/-3)
sources/ippcp/pcpprimeg.h (+4/-5)
sources/ippcp/pcpprimegen_bn.c (+3/-3)
sources/ippcp/pcpprimegenca.c (+3/-3)
sources/ippcp/pcpprimeget.c (+3/-3)
sources/ippcp/pcpprimeget_bn.c (+3/-3)
sources/ippcp/pcpprimegetsize.c (+3/-3)
sources/ippcp/pcpprimeginitca.c (+3/-3)
sources/ippcp/pcpprimegsetca.c (+3/-3)
sources/ippcp/pcpprimeset_bn.c (+4/-4)
sources/ippcp/pcpprimetest.c (+3/-3)
sources/ippcp/pcpprimetest_bn.c (+3/-3)
sources/ippcp/pcpprng_gen.c (+1/-1)
sources/ippcp/pcpprng_genhw.h (+8/-8)
sources/ippcp/pcpprngen_bn.c (+1/-1)
sources/ippcp/pcpprngen_pattern.c (+0/-1)
sources/ippcp/pcpprngen_range.c (+0/-1)
sources/ippcp/pcpprngenca.c (+0/-1)
sources/ippcp/pcpprnggetsize.c (+0/-1)
sources/ippcp/pcpprnginitca.c (+1/-1)
sources/ippcp/pcprij128safe.h (+7/-7)
sources/ippcp/pcprij128safe2.h (+7/-7)
sources/ippcp/pcprij128safedec2pxca.c (+11/-11)
sources/ippcp/pcprij128safeenc2pxca.c (+8/-8)
sources/ippcp/pcprij128safeencpxca.c (+6/-6)
sources/ippcp/pcprijkeysca.c (+1/-1)
sources/ippcp/pcprsa_emsa_pkcs1v15.h (+0/-1)
sources/ippcp/pcprsa_generatesign_pkcs1v15.h (+0/-1)
sources/ippcp/pcprsa_gsmethod__avx2_private.c (+2/-2)
sources/ippcp/pcprsa_gsmethod__avx2_public.c (+2/-2)
sources/ippcp/pcprsa_gsmethod__avx512_private.c (+2/-2)
sources/ippcp/pcprsa_gsmethod__avx512_public.c (+2/-2)
sources/ippcp/pcprsa_gsmethod__gpr_private.c (+2/-2)
sources/ippcp/pcprsa_gsmethod__gpr_public.c (+2/-2)
sources/ippcp/pcprsa_gsmethod__sse2_private.c (+2/-2)
sources/ippcp/pcprsa_gsmethod__sse2_public.c (+2/-2)
sources/ippcp/pcprsa_montexpgetsize.c (+2/-2)
sources/ippcp/pcprsa_pkcs1c15_data.h (+1/-1)
sources/ippcp/pcprsa_pkcs1v15_preproc.h (+3/-3)
sources/ippcp/pcprsa_pss_preproc.h (+3/-3)
sources/ippcp/pcprsa_verifysign_pkcs1v15.h (+0/-1)
sources/ippcp/pcprsadecrypt_oaep.c (+10/-1)
sources/ippcp/pcprsadecrypt_oaep_rmf.c (+10/-1)
sources/ippcp/pcprsaencrypt_oaep.c (+1/-1)
sources/ippcp/pcprsaencrypt_oaep_rmf.c (+1/-1)
sources/ippcp/pcprsasign_pkcs1v15.c (+1/-1)
sources/ippcp/pcprsasign_pkcs1v15_rmf.c (+1/-1)
sources/ippcp/pcprsasign_pss.c (+1/-1)
sources/ippcp/pcprsasign_pss_rmf.c (+1/-1)
sources/ippcp/pcprsaverify_pkcs1v15.c (+1/-1)
sources/ippcp/pcprsaverify_pkcs1v15_rmf.c (+1/-1)
sources/ippcp/pcprsaverify_pss.c (+1/-1)
sources/ippcp/pcprsaverify_pss_rmf.c (+1/-1)
sources/ippcp/pcpscramble.h (+7/-7)
sources/ippcp/pcpshsmgfca.c (+1/-1)
sources/ippcp/pcpsms4.h (+11/-11)
sources/ippcp/pcpsms4_ccmdecrypt.c (+7/-7)
sources/ippcp/pcpsms4_ccmencrypt.c (+8/-8)
sources/ippcp/pcpsms4_ctr_gfni.c (+2/-2)
sources/ippcp/pcpsms4ctrl9cn.c (+3/-3)
sources/ippcp/pcpsms4ctry8cn.c (+1/-1)
sources/ippcp/pcpsms4ecb_setkeysy8cn.c (+6/-6)
sources/ippcp/pcptool.h (+18/-18)
sources/ippcp/pcpvariant.h (+15/-14)
sources/ippcp/pcpver.c (+67/-33)
sources/ippcp/pcpver.h (+1/-2)
tools/ipp_custom_library_tool_python/gui/app.py (+24/-28)
tools/ipp_custom_library_tool_python/gui/controller.py (+60/-60)
tools/ipp_custom_library_tool_python/gui/custom_functions_panel.py (+67/-8)
tools/ipp_custom_library_tool_python/gui/selection_panel.py (+19/-12)
tools/ipp_custom_library_tool_python/gui/settings_panel.py (+51/-45)
tools/ipp_custom_library_tool_python/main.py (+100/-87)
tools/ipp_custom_library_tool_python/tests/functions_tests.py (+38/-38)
tools/ipp_custom_library_tool_python/tests/utils.py (+10/-32)
tools/ipp_custom_library_tool_python/tool/core.py (+27/-22)
tools/ipp_custom_library_tool_python/tool/generators.py (+183/-126)
tools/ipp_custom_library_tool_python/tool/generators_utils.py (+198/-252)
tools/ipp_custom_library_tool_python/tool/package.py (+76/-66)
tools/ipp_custom_library_tool_python/tool/utils.py (+163/-222)
Reviewer Review Type Date Requested Status
Simon Quigley (community) retroactive no-op approve Approve
git-ubuntu import Pending
Review via email: mp+477141@code.launchpad.net

Commit message

To post a comment you must log in.
Revision history for this message
Simon Quigley (tsimonq2) :
review: Approve (retroactive no-op approve)

Unmerged commits

fcdf44a... by Hector CAO

changelog

08a2e43... by Hector CAO

d/control : update package names for ipcrypto-mb and libippcp

bc9a5b6... by Hector CAO

d/p: refresh patch

a79ce29... by Hector CAO

d/control : change upstream vcs and description

d73e77c... by Hector CAO

New upstream version 1.0.0

086ff37... by Hector CAO

d/watch : upstream repo renaming and versioning scheme change

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.clang-tidy b/.clang-tidy
2new file mode 100644
3index 0000000..2cd04a8
4--- /dev/null
5+++ b/.clang-tidy
6@@ -0,0 +1,24 @@
7+#===============================================================================
8+# Copyright (C) 2024 Intel Corporation
9+#
10+# Licensed under the Apache License, Version 2.0 (the 'License');
11+# you may not use this file except in compliance with the License.
12+# You may obtain a copy of the License at
13+#
14+# http://www.apache.org/licenses/LICENSE-2.0
15+#
16+# Unless required by applicable law or agreed to in writing,
17+# software distributed under the License is distributed on an 'AS IS' BASIS,
18+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19+# See the License for the specific language governing permissions
20+# and limitations under the License.
21+#
22+#===============================================================================
23+
24+Checks: '
25+ -*,
26+ bugprone-infinite-loop,
27+ misc-header-include-cycle,
28+ readability-duplicate-include'
29+
30+HeaderFilterRegex: '.*(/include/ipp/|/sources/ippcp/|/examples/).*'
31diff --git a/BUILD.md b/BUILD.md
32index e6b0fe9..8c0074c 100644
33--- a/BUILD.md
34+++ b/BUILD.md
35@@ -1,13 +1,13 @@
36-# How to Build Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) <!-- omit in toc -->
37+# How to Build Intel® Cryptography Primitives Library <!-- omit in toc -->
38
39 - [Software Requirements](#software-requirements)
40 - [Common tools](#common-tools)
41 - [Linux* OS](#linux-os)
42 - [Windows* OS](#windows-os)
43 - [macOS*](#macos)
44-- [Building Intel IPP Cryptography on Linux\* OS](#building-intel-ipp-cryptography-on-linux-os)
45-- [Building Intel IPP Cryptography on Windows\* OS](#building-intel-ipp-cryptography-on-windows-os)
46-- [Building Intel IPP Cryptography on macOS\*](#building-intel-ipp-cryptography-on-macos)
47+- [Building Intel® Cryptography Primitives Library on Linux\* OS](#building-intel-cryptography-primitives-library-on-linux-os)
48+- [Building Intel® Cryptography Primitives Library on Windows\* OS](#building-intel-cryptography-primitives-library-on-windows-os)
49+- [Building Intel® Cryptography Primitives Library on macOS\*](#building-intel-cryptography-primitives-library-on-macos)
50 - [CMake Build Options](#cmake-build-options)
51 - [Common for all operating systems](#common-for-all-operating-systems)
52 - [Windows\* OS](#windows-os)
53@@ -17,44 +17,48 @@
54 - [How to build a 64-bit generic library without any CPU-specific optimizations?](#how-to-build-a-64-bit-generic-library-without-any-cpu-specific-optimizations)
55 - [How to build two libraries with optimizations for Intel® Advanced Vector Extensions 2 and Intel® Advanced Vector Extensions 512 instruction sets?](#how-to-build-two-libraries-with-optimizations-for-intel-advanced-vector-extensions-2-and-intel-advanced-vector-extensions-512-instruction-sets)
56 - [How to build a library to work in a kernel space?](#how-to-build-a-library-to-work-in-a-kernel-space)
57-- [Incorporating Intel® IPP Cryptography sources into custom build system](#incorporating-intel-ipp-cryptography-sources-into-custom-build-system)
58+- [Incorporating Intel® Cryptography Primitives Library sources into custom build system](#incorporating-intel-cryptography-primitives-library-sources-into-custom-build-system)
59
60
61 ## Software Requirements
62 ### Common tools
63 - [CMake\*](https://cmake.org/download) 3.18 or higher
64 - Python 3.8.1
65-- The Netwide Assembler (NASM) 2.15
66-- OpenSSL\* 3.0.8 or higher **OR** BoringSSL* [45cf810d](https://github.com/google/boringssl/archive/45cf810dbdbd767f09f8cb0b0fcccd342c39041f.tar.gz) **OR** Tongsuo* 8.2.1
67+- The Netwide Assembler (NASM) 2.16.02
68+- OpenSSL\* 3.0.8 or higher **OR** BoringSSL* [45cf810d](https://github.com/google/boringssl/archive/45cf810dbdbd767f09f8cb0b0fcccd342c39041f.tar.gz) **OR** Tongsuo* 8.3.3
69
70
71 ### Linux* OS
72 - [Common tools](#common-tools)
73-- Intel® C++ Compiler Classic 2021.9 for Linux\* OS
74+- Intel® oneAPI DPC++/C++ Compiler latest for Linux\* OS
75 - GCC 8.5
76 - GCC 11.4
77+- GCC 14.1
78 - Clang 9.0
79 - Clang 12.0
80 - Clang 16.0
81 - GNU binutils 2.32
82+> **NOTE:** [CMake\*](https://cmake.org/download) 3.22 or higher is required to build using Intel® oneAPI DPC++/C++ Compiler.
83+
84 ### Windows* OS
85 - [Common tools](#common-tools)
86-- Intel® C++ Compiler Classic 2021.9 for Windows\* OS
87-- Microsoft Visual C++ Compiler\* version 19.16 provided by Microsoft Visual Studio\* 2017 version 15.9
88-> **NOTE:** Support for this compiler version will be removed from Intel IPP Cryptography starting 2021.4 release. If you use it for building Intel IPP Cryptography library, please plan on migrating to a newer supported version of Microsoft Visual C++ Compiler\*.
89-- Microsoft Visual C++ Compiler\* version 19.24 provided by Microsoft Visual Studio\* 2019 version 16.4
90-- Microsoft Visual C++ Compiler\* version 19.30 provided by Microsoft Visual Studio\* 2022 version 17.0
91+- Intel® oneAPI DPC++/C++ Compiler latest for Windows\* OS
92+- Microsoft Visual C++ Compiler\* version 19.29 provided by Microsoft Visual Studio\* 2019 version 16.11
93+- Microsoft Visual C++ Compiler\* version 19.30 provided by Microsoft Visual Studio\* 2022 version 17.11
94 > **NOTE:** [CMake\*](https://cmake.org/download) 3.21 or higher is required to build using Microsoft Visual Studio\* 2022.
95+
96+> **NOTE:** [CMake\*](https://cmake.org/download) 3.22 or higher is required to build using Intel® oneAPI DPC++/C++ Compiler.
97+
98 ### macOS*
99 - [Common tools](#common-tools)
100 - Intel® C++ Compiler Classic 2021.9 for macOS\*
101-## Building Intel IPP Cryptography on Linux\* OS
102+## Building Intel® Cryptography Primitives Library on Linux\* OS
103
104 The software was validated on:
105
106 - Red Hat\* Enterprise Linux\* 8
107
108-To build the Intel IPP Cryptography library on Linux\* OS, complete the following steps:
109+To build the Intel® Cryptography Primitives Library on Linux\* OS, complete the following steps:
110 1. Clone the source code from GitHub\* as follows:
111
112 ``` bash
113@@ -63,22 +67,22 @@ To build the Intel IPP Cryptography library on Linux\* OS, complete the followin
114
115 2. Set the environment for one of the supported C/C++ compilers.
116
117- *Example for Intel® Compiler:*
118+ *example for Intel® oneAPI DPC++/C++ Compiler:*
119
120 ```bash
121- source /opt/intel/bin/compilervars.sh intel64
122+ source /opt/intel/oneapi/setvars.sh intel64
123 ```
124
125- For details, refer to the [Intel® C++ Compiler Developer Guide and Reference](https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/current/specifying-the-location-of-compiler-components.html).
126+ For details, refer to the [Intel® oneAPI DPC++/C++ Compiler Developer Guide and Reference](https://www.intel.com/content/www/us/en/docs/dpcpp-cpp-compiler/developer-guide-reference/current/specifying-the-location-of-compiler-components.html).
127
128 3. Run CMake\* in the command line.
129
130 *Examples*:
131
132- For Intel® C++ Compiler:
133+ for Intel® oneAPI DPC++/C++ Compiler:
134
135 ``` bash
136- CC=icc CXX=icpc cmake CMakeLists.txt -B_build -DARCH=intel64
137+ CC=icx CXX=icpx cmake CMakeLists.txt -B_build -DARCH=intel64
138 ```
139
140 For GCC:
141@@ -98,13 +102,13 @@ To build the Intel IPP Cryptography library on Linux\* OS, complete the followin
142
143 You can find the built libraries in the `<build_dir>/.build/<RELEASE|DEBUG>/lib` directory.
144
145-## Building Intel IPP Cryptography on Windows\* OS
146+## Building Intel® Cryptography Primitives Library on Windows\* OS
147
148 The software was validated on:
149
150 - Windows Server\* 2019
151
152-To build the Intel IPP Cryptography library on Windows* OS, complete the following steps:
153+To build the Intel® Cryptography Primitives Library on Windows* OS, complete the following steps:
154
155 1. Clone the source code from GitHub\* as follows:
156
157@@ -113,17 +117,18 @@ To build the Intel IPP Cryptography library on Windows* OS, complete the followi
158 ```
159
160 2. Set the environment variables for one of the supported C/C++ compilers.
161- For Intel® Compiler instructions, refer to the [Intel® C++ Compiler Developer Guide and Reference](https://www.intel.com/content/www/us/en/docs/cpp-compiler/developer-guide-reference/current/overview.html).
162- For MSVC* Compiler, refer to [Use the MSVC toolset from the command line](https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=vs-2017).
163+
164+ For Intel® oneAPI DPC++/C++ Compiler instructions, refer to the [Intel® oneAPI DPC++/C++ Compiler Developer Guide and Reference](https://www.intel.com/content/www/us/en/docs/dpcpp-cpp-compiler/developer-guide-reference/current/specifying-the-location-of-compiler-components.html).
165+ For MSVC* Compiler, refer to [Use the MSVC toolset from the command line](https://learn.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=msvc-160).
166
167 3. Run CMake\* in the command line.
168
169 *Examples*:
170
171- For Intel® C++ Compiler and Visual Studio\* 2019:
172+ For Intel® oneAPI DPC++/C++ Compiler and Visual Studio\* 2019:
173
174 ``` bash
175- cmake CMakeLists.txt -B_build -G"Visual Studio 16 2019" -T"Intel C++ Compiler 19.2" -Ax64
176+ cmake CMakeLists.txt -B_build -G"Visual Studio 16 2019" -T"Intel C++ Compiler 2024" -Ax64
177 ```
178
179 For MSVC\* Compiler and Visual Studio\* 2019:
180@@ -145,13 +150,13 @@ To build the Intel IPP Cryptography library on Windows* OS, complete the followi
181 *Build from Visual Studio\*:*
182 Open the Microsoft Visual Studio\* solution `Intel(R) IPP Crypto.sln`, choose project (build target) from the Solution Explorer and run the build.
183
184-## Building Intel IPP Cryptography on macOS\*
185+## Building Intel® Cryptography Primitives Library on macOS\*
186
187-> **NOTE:** Intel IPP Cryptography stopped macOS\* validation and maintenance based on the announcement in the [Intel IPP Cryptography 2021.9 release notes](https://www.intel.com/content/www/us/en/developer/articles/release-notes/release-notes-for-oneapi-integrated-performance-primitives.html#inpage-nav-3-1).\
188-The Intel IPP Cryptography 2021.10 release is the last release validated on macOS\* 12.0.\
189+> **NOTE:** Intel® Cryptography Primitives Library stopped macOS\* validation and maintenance based on the announcement in the [Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) 2021.9 release notes](https://www.intel.com/content/www/us/en/developer/articles/release-notes/release-notes-for-oneapi-integrated-performance-primitives.html#inpage-nav-3-1).\
190+The Intel® IPP Cryptography 2021.10 release is the last release validated on macOS\* 12.0.\
191 For further macOS\* testing and maintenance we are relying on contributions from the community. For more details, see [Contributing Rules](./CONTRIBUTING.md).
192
193-To build the Intel IPP Cryptography library on macOS\*, complete the following steps:
194+To build the Intel® Cryptography Primitives Library on macOS\*, complete the following steps:
195
196 1. Clone the source code from GitHub\* as follows:
197
198@@ -196,12 +201,12 @@ To build the Intel IPP Cryptography library on macOS\*, complete the following s
199
200 - `-B<build-dir>` - defines the build directory. This is the directory where CMake puts the generated Microsoft Visual Studio\* solution or makefiles.
201
202-- `-DARCH=<ia32|intel64>` - on Linux* OS and macOS*, defines the target architecture for the build of the Intel IPP Cryptography library.
203+- `-DARCH=<ia32|intel64>` - on Linux* OS and macOS*, defines the target architecture for the build of the Intel® Cryptography Primitives Library.
204 > **NOTE:** On Windows* OS, use `-G`/`-A` instead. See the description of these options [below](#windows-os-1).
205
206- > **NOTE:** Due to the significant shift in the industry towards 64-bit architecture, the support of 32-bit libraries is deprecated in the Intel IPP Cryptography 2021.9 release and targeted to be removed after one year deprecation notice period.
207+ > **NOTE:** Due to the significant shift in the industry towards 64-bit architecture, the support of 32-bit libraries is deprecated in the Intel® IPP Cryptography 2021.9 release and targeted to be removed after one year deprecation notice period.
208
209-- `-DMERGED_BLD:BOOL=<on|off>` - optional. Defines the configuration of the Intel IPP Cryptography library to build:
210+- `-DMERGED_BLD:BOOL=<on|off>` - optional. Defines the configuration of the Intel® Cryptography Primitives Library to build:
211
212 - `-DMERGED_BLD:BOOL=on`: default configuration. It includes the following steps:
213 - Build of a dispatched static library with all available optimizations
214@@ -213,12 +218,13 @@ To build the Intel IPP Cryptography library on macOS\*, complete the following s
215 - `-DPLATFORM_LIST="<platform list>"` - optional, works only if `-DMERGED_BLD:BOOL=off` is set. Sets target platforms for the code to be compiled. See the supported platforms list [here](./OVERVIEW.md).
216
217 - Example for Linux\* OS and the IA-32 architecture:
218- `-DPLATFORM_LIST="m7;s8;p8;g9;h9"`
219+ `-DPLATFORM_LIST="w7;s8;p8;g9;h9"`
220
221 - Example for Linux\* OS and the Intel® 64 architecture:
222- `-DPLATFORM_LIST="w7;n8;y8;e9;l9;k0"`
223+ `-DPLATFORM_LIST="m7;n8;y8;e9;l9;k0;k1"`
224 - `-DNO_CRYPTO_MB:BOOL=TRUE` - optional, turns off the build of [Crypto Multi Buffer library](./sources/ippcp/crypto_mb/Readme.md) and, as a consequence, removes all dependencies on OpenSSL library.
225-- `-DBABASSL:BOOL=on`, `-DBORINGSSL:BOOL=on` - required only if forks of OpenSSL library are used to resolve OpenSSL dependencies - Tongsuo and BoringSSL respectively. These flags make sense when [Crypto Multi Buffer library](./sources/ippcp/crypto_mb/Readme.md) is built.
226+- `-DTONGSUO:BOOL=on`, `-DBORINGSSL:BOOL=on` - required only if forks of OpenSSL library are used to resolve OpenSSL dependencies - Tongsuo and BoringSSL respectively. These flags make sense when [Crypto Multi Buffer library](./sources/ippcp/crypto_mb/Readme.md) is built.
227+> **NOTE:** -DBABASSL:BOOL=on flag is deprecated and targeted to be removed in the future releases. Please use -DTONGSUO:BOOL=on instead.\*.
228 - `-DIPPCP_CUSTOM_BUILD="<CPU features list>"` - optional, works only if `-DMERGED_BLD:BOOL=off` is set, i.e. only for 1CPU libraries. Enables the CPU feature dispatching mask at compile-time based on the provided list.
229
230 - Currently supported by the library custom features dispatching:
231@@ -228,11 +234,11 @@ To build the Intel IPP Cryptography library on macOS\*, complete the following s
232 `-DIPPCP_CUSTOM_BUILD="IPPCP_AES_ON;IPPCP_CLMUL_ON"` - this combination enables Intel® AES-NI in all 1CPU libraries, which contains this code path.
233 - Example of using a combination of CPU features:
234 `-DIPPCP_CUSTOM_BUILD="IPPCP_AES_ON;IPPCP_CLMUL_ON;IPPCP_VAES_ON;IPPCP_VCLMUL_ON"` - in this combination the highest available feature in each 1CPU library will be enabled (e.g. for `"y8"` it’s Intel® AES-NI, for `"l9"` it's Intel® AVX2 VAES, and for `"k1"` - Intel® AVX-512 VAES)
235-- `-DIPPCP_FIPS_MODE:BOOL=<on|off>` - optional. Regulates the build of FIPS-compliant Intel IPP Cryptography library.
236+- `-DIPPCP_FIPS_MODE:BOOL=<on|off>` - optional. Regulates the build of FIPS-compliant Intel® Cryptography Primitives Library.
237
238- - `-DIPPCP_FIPS_MODE:BOOL=on`: enables all FIPS-compliance changes in Intel IPP Cryptography library.
239- - `-DIPPCP_FIPS_MODE:BOOL=off`: default configuration. Intel IPP Cryptography library build with such option is not FIPS-compliant.
240-- `-DIPPCP_SELFTEST_USE_MALLOC:BOOL=<on|off>` - optional. Enables internal memory allocation and release using `malloc()` and `free()` functions inside Intel IPP Cryptography library selftests.
241+ - `-DIPPCP_FIPS_MODE:BOOL=on`: enables all FIPS-compliance changes in Intel® Cryptography Primitives Library.
242+ - `-DIPPCP_FIPS_MODE:BOOL=off`: default configuration. Intel® Cryptography Primitives Library build with such option is not FIPS-compliant.
243+- `-DIPPCP_SELFTEST_USE_MALLOC:BOOL=<on|off>` - optional. Enables internal memory allocation and release using `malloc()` and `free()` functions inside Intel® Cryptography Primitives Library selftests.
244 - `-DIPPCP_SELFTEST_USE_MALLOC:BOOL=on`: memory management is held by FIPS selftests, all processing APIs should be called with input parameters equal to `NULL`.
245 - `-DIPPCP_SELFTEST_USE_MALLOC:BOOL=off`: default configuration. Memory management is held by customer's application, all processing APIs should be called with work buffers of the valid length.
246 - `-DMBX_FIPS_MODE:BOOL=<on|off>` - optional. Regulates the build of FIPS-compliant Crypto Multi-buffer Library.
247@@ -247,10 +253,10 @@ To build the Intel IPP Cryptography library on macOS\*, complete the following s
248 - `-G"<tool-chain-generator>"` - defines the native build system CMake will generate from the input files.
249 Refer to CMake [documentation](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators) for the Visual Studio\* generators options.
250
251-- `-A<x64|Win32>` - for Visual Studio\* 2019+, defines the target architecture for the build of the Intel IPP Cryptography library.
252+- `-A<x64|Win32>` - for Visual Studio\* 2019+, defines the target architecture for the build of the Intel® Cryptography Primitives Library.
253
254 - `-T<Compiler>` - defines the compiler for building.
255- For example, to use Intel® Compiler, specify `-T"Intel C++ Compiler 19.1"`.
256+ For example, to use Intel® oneAPI DPC++/C++ Compiler, specify `-T"Intel C++ Compiler 2024"`.
257
258 > **NOTE:** Refer to CMake [documentation](https://cmake.org/cmake/help/latest/manual/ccmake.1.html) for more information on these options.
259
260@@ -264,10 +270,6 @@ To build the Intel IPP Cryptography library on macOS\*, complete the following s
261
262 ## CMake Commands FAQ
263
264-### How to build a 32-bit library?
265-
266-`cmake CMakeLists.txt -B_build -DARCH=ia32`
267-
268 ### How to build a 64-bit generic library without any CPU-specific optimizations?
269
270 `cmake CMakeLists.txt -B_build -DARCH=intel64 -DMERGED_BLD:BOOL=off -DPLATFORM_LIST=mx`
271@@ -283,9 +285,9 @@ To build the Intel IPP Cryptography library on macOS\*, complete the following s
272 ### How to specify path to OpenSSL\*
273 `cmake CMakeLists.txt -B_build -DARCH=intel64 -DOPENSSL_INCLUDE_DIR=/path/to/openssl/include -DOPENSSL_LIBRARIES=/path/to/openssl/lib -DOPENSSL_ROOT_DIR=/path/to/openssl`
274
275-## Incorporating Intel® IPP Cryptography sources into custom build system
276+## Incorporating Intel® Cryptography Primitives Library sources into custom build system
277
278-You can include Intel IPP Cryptography sources into some arbitrary project's CMake build system and build them with it.
279+You can include Intel® Cryptography Primitives Library sources into some arbitrary project's CMake build system and build them with it.
280
281 Here is the minimal working example:
282
283@@ -294,28 +296,32 @@ cmake_minimum_required(VERSION 3.18)
284
285 project("test_proj")
286
287-# `crypto` is the repository root folder of Intel IPP Cryptography
288+# `crypto` is the repository root folder of Intel® Cryptography Primitives Library
289 add_subdirectory(crypto)
290 include_directories(crypto/include)
291
292 # 'main.cpp' is some arbitrary project's source file
293 add_executable("test_proj" main.cpp)
294-# `ippcp_s` is the target name of static library in the Intel IPP Cryptography build system.
295+# `ippcp_s` is the target name of static library in the Intel® Cryptography Primitives Library build system.
296 # This static library will be built automatically, when you build your project.
297 target_link_libraries("test_proj" "ippcp_s")
298 ```
299
300-Also you can use CMake module to find the Intel IPP Cryptography library installed on the system. The module location is `examples/FindIPPCrypto.cmake` and here is the example of its usage:
301+Also you can use the CMake module to find the Intel® Cryptography Primitives Library installed on the system. The module location is `examples/FindIPPCrypto.cmake` and here is the example of its usage:
302
303 ``` bash
304 find_package(IPPCrypto REQUIRED MODULE)
305
306 if (NOT IPPCRYPTO_FOUND)
307- message(FATAL_ERROR "No Intel IPP Cryptography library found on the system.")
308+ message(FATAL_ERROR "No Intel® Cryptography Primitives Library found on the system.")
309 endif()
310
311-# If Intel IPP Cryptography is found, the following variables will be defined:
312+# If Intel® Cryptography Primitives Library is found, the following variables will be defined:
313 # `IPPCRYPTO_LIBRARIES` - static library name
314-# `IPPCRYPTO_INCLUDE_DIRS` - path to Intel IPP Cryptography headers
315+# `IPPCRYPTO_INCLUDE_DIRS` - path to Intel® Cryptography Primitives Library headers
316 # `IPPCRYPTO_ROOT_DIR` - library root dir (a folder with 'include' and 'lib' directories)
317 ```
318+
319+### How to run Intel® IPP Cryptography with clang-tidy?
320+
321+`CC=clang CXX=clang++ cmake CMakeLists.txt -B_build -DARCH=intel64 -DCRYPTO_USE_CLANG_TIDY:BOOL=on`
322\ No newline at end of file
323diff --git a/CHANGELOG.md b/CHANGELOG.md
324index a3d628b..c51d085 100644
325--- a/CHANGELOG.md
326+++ b/CHANGELOG.md
327@@ -1,6 +1,17 @@
328-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
329-
330-This is a list of notable changes to Intel(R) IPP Cryptography, in reverse chronological order.
331+# Intel® Cryptography Primitives Library
332+
333+This is a list of notable changes to Intel® Cryptography Primitives Library, in reverse chronological order.
334+
335+## Intel(R) Cryptography Primitives Library 1.0.0
336+- Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) was renamed to Intel(R) Cryptography Primitives Library.
337+- Added IPPCP SM3 hash algorithm optimization with the new instruction set (SM3-NI) for Lunar Lake and Arrow Lake CPUs.
338+- Added Intel® AVX-IFMA RSA implementation to Crypto Multi buffer library.
339+- Fixed bug in IceLake optimization (`k1` branch) of ECDSA signature function caused by incorrect processing of R and S component's size and sign.
340+- Added FIPS selftest for Leighton-Micali Hash-Based Signatures(LMS) verification algorithm.
341+- Added examples for SM3 Hash / LMS post-quantum verification / NIST Curve P-256 ECDSA signature generation algorithms.
342+- Changed `-DBABASSL:BOOL=on` CMake build option to `-DTONGSUO:BOOL=on` for Tongsuo library.
343+- Removed API that were deprecated in Intel® Integrated Performance Primitives Cryptography 2020 Update1. More details can be found in [DEPRECATION_NOTES.md](./DEPRECATION_NOTES.md). Please note that `ippsHash<GetSize/Init/Duplicate/Pack/Unpack/Update/GetTag/Final/HashMessage>` API still remain in the library.
344+- Removed support for SSSE3(`s8` for ia32 and `n8` for intel64) and AVX(`g9` for ia32 and `e9` for intel64) code-paths. Execution was moved to SSE3(`w7` for ia32 and `m7` for intel64) and SSE4.2(`p8` for ia32 and `y8` for intel64) respectively. There is still the possibility to use 1cpu headers and 1cpu libraries without breaking change for 1 year but some performance drops are expected.
345
346 ## Intel(R) IPP Cryptography 2021.12.1
347 - Added `FIPS_CUSTOM_IPPCP_API_HEADER` build flag to support FIPS self-tests for a specific use case when Custom Library Tool is used with custom prefix for IPPCP API.
348diff --git a/CMakeLists.txt b/CMakeLists.txt
349index 27d9d3a..6d0d978 100644
350--- a/CMakeLists.txt
351+++ b/CMakeLists.txt
352@@ -15,23 +15,22 @@
353 #=========================================================================
354
355 #
356-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
357+# Intel® Cryptography Primitives Library
358 #
359
360 cmake_minimum_required(VERSION 3.12)
361
362 include("${CMAKE_CURRENT_SOURCE_DIR}/sources/cmake/ippcp-utils.cmake")
363-ippcp_getlibversion("${CMAKE_CURRENT_SOURCE_DIR}/include/ippversion.h")
364+ippcp_getlibversion("${CMAKE_CURRENT_SOURCE_DIR}/include/ippcpversion.h")
365 if ((NOT DEFINED IPPCP_VERSION_MAJOR) OR
366 (NOT DEFINED IPPCP_VERSION_MINOR) OR
367 (NOT DEFINED IPPCP_VERSION_UPDATE) OR
368 (NOT DEFINED IPPCP_INTERFACE_VERSION_MAJOR) OR
369 (NOT DEFINED IPPCP_INTERFACE_VERSION_MINOR))
370- message(WARNING "Cannot parse version from ippversion.h file. The project might be corrupted.")
371+ message(WARNING "Cannot parse version from ippcpversion.h file. The project might be corrupted.")
372 endif()
373
374-set(PROJECT_FULL_NAME "Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)")
375-set(PROJECT_NAME "Intel(R) IPP Crypto")
376+set(PROJECT_FULL_NAME "Intel® Cryptography Primitives Library")
377 set(PROJECT_VERSION ${IPPCP_VERSION})
378
379 set(LIB_NAME ippcp)
380@@ -51,7 +50,7 @@ if("${CMAKE_GENERATOR}" STREQUAL "NMake Makefiles")
381 endif()
382 endif()
383
384-project(${PROJECT_NAME}
385+project(${PROJECT_FULL_NAME}
386 VERSION ${PROJECT_VERSION}
387 LANGUAGES C CXX)
388
389@@ -148,6 +147,12 @@ if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
390 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}")
391 endif()
392
393+if (CRYPTO_USE_CLANG_TIDY AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL "12.0.0")
394+ find_program(DO_CLANG_TIDY NAMES clang-tidy)
395+ set(CMAKE_CXX_CLANG_TIDY ${DO_CLANG_TIDY})
396+ set(CMAKE_C_CLANG_TIDY ${DO_CLANG_TIDY})
397+endif ()
398+
399 message (STATUS "PROJECT ............................... " ${PROJECT_FULL_NAME})
400 message (STATUS "CMAKE_BINARY_DIR ...................... " ${CMAKE_BINARY_DIR})
401 message (STATUS "CMAKE_OUTPUT_DIR ...................... " ${CMAKE_OUTPUT_DIR})
402@@ -163,6 +168,12 @@ message (STATUS "ARCH .................................. " ${ARCH})
403 message (STATUS "DYNAMIC_LIB ........................... " ${DYNAMIC_LIB})
404 message (STATUS "CMAKE_INSTALL_PREFIX .................. " ${CMAKE_INSTALL_PREFIX})
405
406+if(CRYPTO_USE_CLANG_TIDY)
407+ message (STATUS "CLANG_TIDY ............................ on")
408+else()
409+ message (STATUS "CLANG_TIDY ............................ off")
410+endif()
411+
412 if(Python_Interpreter_FOUND)
413 message (STATUS "PYTHON_VERSION_STRING ................. " ${Python_VERSION})
414 else()
415@@ -221,13 +232,18 @@ else()
416 endif()
417
418 add_subdirectory(sources/ippcp)
419-if(EXISTS "${IPP_CRYPTO_DIR}/tests/")
420- add_subdirectory(tests)
421-endif()
422-if(EXISTS "${IPP_CRYPTO_DIR}/perf_tests/")
423- add_subdirectory(perf_tests)
424+
425+if (NOT (CRYPTO_USE_CLANG_TIDY))
426+
427+ if(EXISTS "${IPP_CRYPTO_DIR}/tests/")
428+ add_subdirectory(tests)
429+ endif()
430+ if(EXISTS "${IPP_CRYPTO_DIR}/perf_tests/")
431+ add_subdirectory(perf_tests)
432+ endif()
433 endif()
434
435+
436 if(BUILD_EXAMPLES)
437 # This helps to organize examples projects structure in IDE by folders
438 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
439diff --git a/CONST_TIME_EXECUTION_TESTING.md b/CONST_TIME_EXECUTION_TESTING.md
440index 1bf9c7d..9acc211 100644
441--- a/CONST_TIME_EXECUTION_TESTING.md
442+++ b/CONST_TIME_EXECUTION_TESTING.md
443@@ -1,12 +1,12 @@
444-# Scope of the Constant-time execution testing of Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
445+# Scope of the Constant-time execution testing of Intel® Cryptography Primitives Library
446
447 - [General information](#general)
448 - [Scope for ippcp library](#ippcp)
449 - [Scope for crypto_mb library](#cryptomb)
450
451 ## General information <div id = 'general'>
452-- Testing is conducted under Linux for 64-bit Intel® IPP Cryptography built with the compilers listed in [Build](./BUILD.md).
453-- Tested platforms: w7, n8, y8, e9, l9, k0 (see the supported platforms list [here](./OVERVIEW.md#target-optimization-codes-in-function-names)).
454+- Testing is conducted under Linux for 64-bit Intel® Cryptography Primitives Library built with the compilers listed in [Build](./BUILD.md).
455+- Tested platforms: m7, y8, l9, k0, k1 (see the supported platforms list [here](./OVERVIEW.md#target-optimization-codes-in-function-names)).
456 - Testing scope described below is guaranteed to pass for **`release`** branches. This is not guaranteed for the **`develop`** branch ([branches description](./OVERVIEW.md#branches-description))
457 - Information about Pin-Based Constant Execution Checker can be found [here](https://github.com/intel/pin_based_cec)
458
459@@ -69,6 +69,7 @@
460 | ippsGFpMul_PE | - |
461 | ippsGFpMultiExp | - |
462 | ippsGFpNeg | - |
463+| ippsGFpSqr | - |
464 | ippsGFpSub | - |
465 | ippsGFpSub_PE | - |
466 | ippsHMACInit_rmf | Different hashes:<br>sha1, sha256, sha224, sha384, sha512, <br>sha512-256, sha512-224, sm3 |
467@@ -150,5 +151,18 @@
468 | mbx_sm4_encrypt_ofb_mb16 | - |
469 | mbx_sm4_encrypt_cfb128_mb16 | - |
470 | mbx_sm4_decrypt_cfb128_mb16 | - |
471+| mbx_sm4_xts_encrypt_mb16 | - |
472+| mbx_sm4_xts_decrypt_mb16 | - |
473+| mbx_sm4_ccm_init_mb16 | - |
474+| mbx_sm4_ccm_update_aad_mb16 | - |
475+| mbx_sm4_ccm_encrypt_mb16 | - |
476+| mbx_sm4_ccm_decrypt_mb16 | - |
477+| mbx_sm4_ccm_get_tag_mb16 | - |
478+| mbx_sm4_gcm_init_mb16 | - |
479+| mbx_sm4_gcm_update_iv_mb16 | - |
480+| mbx_sm4_gcm_update_aad_mb16 | - |
481+| mbx_sm4_gcm_encrypt_mb16 | - |
482+| mbx_sm4_gcm_decrypt_mb16 | - |
483+| mbx_sm4_gcm_get_tag_mb16 | - |
484 | mbx_x25519_public_key_mb8 | - |
485 | mbx_x25519_mb8 | - |
486diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
487index a417079..dfaa0ef 100644
488--- a/CONTRIBUTING.md
489+++ b/CONTRIBUTING.md
490@@ -1,9 +1,9 @@
491-Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) Contribution Rules
492-===============================================================
493+Intel® Cryptography Primitives Library Contribution Rules
494+=========================================================
495
496 ## How to Contribute
497
498-We welcome community contributions to Intel® IPP Cryptography!
499+We welcome community contributions to Intel® Cryptography Primitives Library!
500
501 If you have an idea how to improve the product:
502
503@@ -12,9 +12,9 @@ If you have an idea how to improve the product:
504
505
506
507-## Intel® IPP Cryptography repository scheme
508+## Intel® Cryptography Primitives Library repository scheme
509
510-Intel® IPP Cryptography supports two repositories that are named as "Public Repository" and "Inner Repository". Privately hosted "Inner Repository" is required for extensive internal testing and experimental features development.
511+Intel® Cryptography Primitives Library supports two repositories that are named as "Public Repository" and "Inner Repository". Privately hosted "Inner Repository" is required for extensive internal testing and experimental features development.
512
513 Existing automation guarantees regular synchronization of repositories.
514
515@@ -29,7 +29,7 @@ Existing automation guarantees regular synchronization of repositories.
516 </pre>
517
518 ## License
519-Intel® IPP Cryptography is licensed under the terms in LICENSE <https://github.com/intel/ipp-crypto/blob/develop/LICENSE>. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.
520+Intel® Cryptography Primitives Library is licensed under the terms in LICENSE <https://github.com/intel/ipp-crypto/blob/develop/LICENSE>. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.
521
522 ## Developer Certification of Origin (DCO)
523 We encourage you to use Signed-off-by feature to comply with [Developer Certification of Origin (DCO)](https://developercertificate.org/).
524@@ -42,9 +42,9 @@ The name in the commit message Signed-off-by line and your email must match the
525 ## Contribution Flow
526
527 - Contributor creates fork from develop, commits the changes into the created branch, opens a PR and requests a review.
528-- Contributor applies feedback provided by Intel® IPP Cryptography repository maintainer in opened PR.
529-- Intel® IPP Cryptography repository maintainer must ensure that the code is safe for internal execution, get code into inner repository and run private testing.
530-- Intel® IPP Cryptography repository maintainer merges the changes "as is" from inner repository, when private testing is passed.
531+- Contributor applies feedback provided by Intel® Cryptography Primitives Library repository maintainer in opened PR.
532+- Intel® Cryptography Primitives Library repository maintainer must ensure that the code is safe for internal execution, get code into inner repository and run private testing.
533+- Intel® Cryptography Primitives Library repository maintainer merges the changes "as is" from inner repository, when private testing is passed.
534 > **Note**
535 > Original PR is closed because merging PRs on the external GitHub repo isn't supported.
536
537@@ -74,7 +74,7 @@ The name in the commit message Signed-off-by line and your email must match the
538
539 ## Pull Request Checklist
540 Before sending your pull requests, ensure that:
541- - Intel® IPP Cryptography builds successfully with proposed changes using one of the compilers listed in [Build](./BUILD.md). Please specify which exact compiler was used.
542+ - Intel® Cryptography Primitives Library builds successfully with proposed changes using one of the compilers listed in [Build](./BUILD.md). Please specify which exact compiler was used.
543 - Relevant documentation are added (for example CHANDELOG.md, README.md etc)
544 - For new features make sure that
545 - All new files are covered by copyrights.
546diff --git a/DEPRECATION_NOTES.md b/DEPRECATION_NOTES.md
547index 3ef6475..138bb66 100644
548--- a/DEPRECATION_NOTES.md
549+++ b/DEPRECATION_NOTES.md
550@@ -1,10 +1,25 @@
551-# Deprecated API in Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
552+# Deprecated API in Intel® Cryptography Primitives Library
553
554-This document describes deprecated API in different Intel IPP Cryptography versions and recommendations for transition.
555+This document describes deprecated API in different Intel® Cryptography Primitives Library versions and recommendations for transition.
556
557-The deprecated API means it is obsolete and will be removed in one of future Intel IPP Cryptography releases. If you have any concerns, please use the following link for opening a ticket and providing feedback: <https://supporttickets.intel.com.>
558+The deprecated API means it is obsolete and will be removed in one of future Intel® Cryptography Primitives Library releases. If you have any concerns, please use the following link for opening a ticket and providing feedback: <https://supporttickets.intel.com.>
559
560-## 2020 Update1 (branch [ipp-crypto_2020_update1](https://github.com/intel/ipp-crypto/tree/ipp-crypto_2020_update1))
561+## Intel® Cryptography Primitives Library v1.0.0
562+
563+### Service Functions
564+
565+| Deprecated | Recommended replacement |
566+| :------------------------------------------------ | :------------------------------------------------------------: |
567+| ippcpGetNumThreads | N/A |
568+| ippcpGetEnabledNumThreads | N/A |
569+| ippcpSetNumThreads | N/A |
570+| ippcpGetLibVersion | cryptoGetLibVersion |
571+
572+### Deprecated Optimizations
573+
574+The code paths n8/s8 (Intel® SSSE3) and g9/e9 (Intel® AVX) are deprecated and removed from the merged build of Intel® Cryptography Primitives Library, lower optimizations are used instead. 1cpu headers are still available for all code paths. These branches can also be built as 1cpu libraries if specified in the platform list, e.g. `-DMERGED_BLD:BOOL=off -DPLATFORM_LIST=s8;e9`.
575+
576+## Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) 2020 Update1 (branch [ipp-crypto_2020_update1](https://github.com/intel/ipp-crypto/tree/ipp-crypto_2020_update1))
577
578 ### Hash Functionality
579
580diff --git a/OVERVIEW.md b/OVERVIEW.md
581index 0cf934e..7e1c85e 100644
582--- a/OVERVIEW.md
583+++ b/OVERVIEW.md
584@@ -1,4 +1,4 @@
585-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) Library Overview <!-- omit in toc -->
586+# Intel® Cryptography Primitives Library Overview <!-- omit in toc -->
587
588 - [Repository Structure](#repository-structure)
589 - [Branches Description](#branches-description)
590@@ -19,7 +19,7 @@
591 - [Dynamic Library with Custom functionality](#dynamic-library-with-custom-functionality)
592
593 <!-- Images List -->
594-[sha256-dispatching]: ./data/images/README-pictures-0-dispatcher.png "Intel IPP Crypto function dispatching scheme"
595+[sha256-dispatching]: ./data/images/README-pictures-0-dispatcher.png "Intel® Cryptography Primitives Library function dispatching scheme"
596 [library configurations]: ./data/images/README-pictures-1-library-configurations.png "Library configurations picture"
597 [build targets]: ./data/images/README-pictures-1a-build-targets.png "Build targets picture"
598 [merged library]: ./data/images/README-pictures-2-merged-library.png "Merged library scheme"
599@@ -31,26 +31,43 @@
600 ## Repository Structure
601
602 ``` bash
603-├── CHANGELOG.md
604-├── CMakeLists.txt < Main CMake file
605-├── examples < Examples of the library usage
606-├── include < Public headers
607-├── LICENSE
608-├── README.md
609+├── data/images
610+├── examples < Examples of the library usage
611+├── include < Public headers
612 ├── sources
613-│   ├── cmake < OS-specific CMake files
614+│   ├── cmake < OS-specific CMake files
615 │   │   ├── linux
616 │   │   ├── macosx
617 │   │   └── windows
618-│   ├── dispatcher < CPU dispatcher generator
619-│   ├── gen_cpu_spc_header < Single CPU headers generator
620-│   ├── include < Internal headers
621-│   └── ippcp < C-sources
622-│   ├── asm_ia32 < IA-32 Assembler sources
623-│   ├── asm_intel64 < Intel® 64 Assembler sources
624-│   └── ifma_rsa_mb < Sources of RSA IFMA Multi-buffer library
625-└── tools
626- └── ipp_custom_library_tool_python < Custom Library Tool
627+│   ├── dispatcher < CPU dispatcher generator
628+│   ├── gen_cpu_spc_header < Single CPU headers generator
629+│   ├── include < Internal headers
630+│   └── ippcp < C-sources
631+│   ├── asm_ia32 < IA-32 Assembler sources
632+│   ├── asm_intel64 < Intel® 64 Assembler sources
633+│   ├── crypto_mb < Sources of the Crypto Multi-buffer library
634+│   ├── fips_cert
635+│   ├── gfpec
636+│   ├── hash
637+│   ├── lms
638+│   └── xmss
639+├── tools
640+| └── ipp_custom_library_tool_python < Custom Library Tool
641+├── .clang-format
642+├── .clang-tidy
643+├── BUILD.md
644+├── CHANGELOG.md
645+├── CMakeLists.txt < Main CMake file
646+├── CONST_TIME_EXECUTION_TESTING.md < Information about security testing
647+├── CONTRIBUTING.md
648+├── DEPRECATION_NOTES.md
649+├── LICENSE
650+├── OVERVIEW.md
651+├── README.md
652+├── README_FIPS.md < FIPS compliance guide
653+├── SECURITY.md
654+├── SUPPORT.md
655+└── THIRD-PARTY-PROGRAMS.txt
656 ```
657
658 ### Branches Description
659@@ -63,13 +80,42 @@ Contains code that may not be fully functional and that Intel may substantially
660
661 ### CPU Dispatching
662
663-For the best performance, Intel IPP Cryptography uses multiple implementations of each function, optimized for various CPUs, and the [library version targeted for any CPU](#all-cpus-library) contains all of these implementations.
664+For the best performance, Intel® Cryptography Primitives Library uses multiple implementations of each function, optimized for various CPUs, and the [library version targeted for any CPU](#all-cpus-library) contains all of these implementations.
665
666 With the dispatcher, the library detects an available CPU in a runtime and chooses the best for the current hardware version of a function. The process of dispatching is transparent and you can always call a generic function as illustrated at the picture below.
667
668-![Dispatcher picture][sha256-dispatching]
669+```mermaid
670+flowchart LR
671+ classDef class1 fill:#0054AE, stroke:none, color:#FFFFFF
672+
673+ function["ippsAES_GCMEncrypt()"]:::class1
674+
675+ %% Subgraph for Merged Library
676+ subgraph ML[**Merged Library**]
677+ dispatcher["Dispatcher"]:::class1
678
679-The prefix before the function name ("m7_", "n8_", etc) is a naming convention for the function implementations that are included in the [library with dispatcher](#all-cpus-library). It refers to the CPU instruction set for which the function is optimized (for all available prefixes see the [table](#target-optimization-codes-in-function-names) below).
680+ m7["m7_ippsAES_GCMEncrypt()"]:::class1
681+ y8["y8_ippsAES_GCMEncrypt()"]:::class1
682+ l9["l9_ippsAES_GCMEncrypt()"]:::class1
683+ k0["k0_ippsAES_GCMEncrypt()"]:::class1
684+ k1["k1_ippsAES_GCMEncrypt()"]:::class1
685+
686+ %% Connections
687+ dispatcher == SSE3==> m7
688+ dispatcher == SSSE4.2 ==> y8
689+ dispatcher == AVX2 ==> l9
690+ dispatcher == AVX512 (formerly codenamed SkyLake) ==> k0
691+ dispatcher == AVX512 (formerly codenamed IceLake) ==> k1
692+ end
693+
694+ style ML fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
695+
696+ function ==> dispatcher
697+
698+ linkStyle 0,1,2,3,4,5 stroke:#FFE500
699+```
700+
701+The prefix before the function name ("m7_", "y8_", etc) is a naming convention for the function implementations that are included in the [library with dispatcher](#all-cpus-library). It refers to the CPU instruction set for which the function is optimized (for all available prefixes see the [table](#target-optimization-codes-in-function-names) below).
702
703 The dispatcher is designed to add no performance overhead when the library is initialized, in other words, when CPU features are detected. You can initialize the library either explicitly in advance by calling the dedicated function [ippcpInit()](https://www.intel.com/content/www/us/en/docs/ipp-crypto/developer-reference/current/init.html) or it will be done implicitly during the first call of any function of the library.
704
705@@ -82,14 +128,12 @@ By default, the dispatcher chooses the most appropriate optimization for the cur
706 | px | mx | Generic code without hardware specific optimizations suitable for any CPU |
707 | w7 | - | Optimized for processors with Intel® Streaming SIMD Extensions 2 (Intel® SSE2) |
708 | - | m7 | Optimized for processors with Intel® SSE3 |
709-| s8 | n8 | Optimized for processors with Supplemental Streaming SIMD Extensions 3 (SSSE3) |
710 | p8 | y8 | Optimized for processors with Intel® SSE4.2 |
711-| g9 | e9 | Optimized for processors with Intel® Advanced Vector Extensions (Intel® AVX) |
712 | h9 | l9 | Optimized for processors with Intel® Advanced Vector Extensions 2 (Intel® AVX2) |
713 | - | k0 | Optimized for processors with Intel® Advanced Vector Extensions 512 (Intel® AVX-512) (formerly codenamed SkyLake) |
714 | - | k1 | Optimized for processors with Intel® Advanced Vector Extensions 512 (Intel® AVX-512) (formerly codenamed IceLake) |
715
716-> **NOTE:** Due to the significant shift in the industry towards 64-bit architecture, the support of 32-bit libraries is deprecated in the Intel IPP Cryptography 2021.9 release and targeted to be removed after one year deprecation notice period.
717+> **NOTE:** Due to the significant shift in the industry towards 64-bit architecture, the support of 32-bit libraries is deprecated in the Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) 2021.9 release. No new features (only critical security fixes) are targeted for 32-bit libraries and testing scope is limited by Linux OS & Clang compiler.
718
719 ### CPU Feature Dispatching
720
721@@ -106,6 +150,7 @@ List of CPU feature subsets that the library has special optimizations for:
722 - Intel AVX-512/AVX2 VAES
723 - Intel AVX-512 IFMA
724 - Intel AVX-512 GFNI
725+- SM3-NI
726
727 > **NOTE:** For some features there is also an opportunity to force their dispatching inside the 1CPU libraries manually during the compile time. For more information please, refer to [common for all operating systems CMake build options](./BUILD.md/#common-for-all-operating-systems).
728
729@@ -115,7 +160,7 @@ To leave only specific ISA when linking with an [All CPUs Static Library](#all-c
730
731 ## Library Configurations
732
733-The Intel IPP Cryptography library supports configurations by:
734+The Intel® Cryptography Primitives Library supports configurations by:
735
736 1) [*Linkage Mode*](#linkage-mode): to produce a static or dynamic library
737
738@@ -133,7 +178,61 @@ The Intel IPP Cryptography library supports configurations by:
739
740 All possible configuration combinations are shown in the picture below.
741
742-![Library configurations picture][library configurations]
743+
744+```mermaid
745+flowchart
746+
747+ %% Style for classes
748+ classDef class1 fill:#0054AE, stroke:none, color:#FFFFFF
749+ classDef class2 fill:#0054AE, stroke:none, color:#FFFFFF
750+
751+ library["Intel® Cryptography Primitives Library"]:::class1
752+
753+ %% Subgraph for the picture
754+ subgraph base[" "]
755+ subgraph first["Link type "]
756+ Static:::class2
757+ Dynamic:::class2
758+ end
759+
760+ subgraph second["Position Independent Code"]
761+ non-PIC:::class2
762+ PIC:::class2
763+ end
764+
765+ subgraph third["Dispatcher"]
766+ allCPU["All CPU + Disptacher"]:::class2
767+ singleCPU[Single CPU]:::class2
768+ end
769+
770+ subgraph forth["Library Components"]
771+ customFunc["Custom Functionality"]:::class2
772+ allFunc["All Functionality"]:::class2
773+ end
774+
775+ %% Connections
776+ library ==> Static
777+ library ==> Dynamic
778+
779+ Static ==> non-PIC
780+ Static & Dynamic ==> PIC
781+
782+ second ==> third
783+
784+ allCPU ==> customFunc
785+ singleCPU & allCPU ==> allFunc
786+ end
787+
788+ %% Style for subgraphs
789+ style first fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
790+ style second fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
791+ style third fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
792+ style forth fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
793+
794+ linkStyle 0,1,2,3,4,5,6,7,8 stroke:#FFE500
795+
796+ style base fill:none, stroke:#15BCEF, stroke-width:3px
797+```
798
799 ### Linkage Mode
800
801@@ -145,7 +244,7 @@ The corresponding build target names for the libraries are shown at the picture
802
803 ### Code Position
804
805-Be default, the Intel IPP Cryptography library is built with the [Position Independent Code (PIC)](https://en.wikipedia.org/wiki/Position-independent_code) option.
806+Be default, the Intel® Cryptography Primitives Library is built with the [Position Independent Code (PIC)](https://en.wikipedia.org/wiki/Position-independent_code) option.
807
808 But on Linux* OS, when the library is supposed to work in kernel space, it is possible to compile the static library in a non-PIC mode. For more information about build options, refer to the [Linux* OS build options](./BUILD.md).
809
810@@ -155,7 +254,66 @@ But on Linux* OS, when the library is supposed to work in kernel space, it is po
811
812 Each function of the library is built in several instances with optimizations for each supported instruction set (see example for the `func2` function in green). Those functions instances are all included into a single library along with the [dispatcher](#dispatcher) that lets the library choose right function instance depending on current CPU. Such library build is called a merged library build.
813
814-![Merged library picture][merged library]
815+```mermaid
816+flowchart TD
817+ %% Style for classes
818+ classDef class1 fill:#0054AE, stroke:none, color:#FFFFFF, font-size:16pt
819+ classDef class2 fill:#0054AE, stroke:none, color:#FFFFFF, font-size:12pt
820+ subgraph base[" "]
821+
822+ Dispatcher["Dispatcher"]:::class1
823+
824+ subgraph m7_graph["SSE3 version"]
825+ m7_1["m7_func1"]:::class2
826+ m7_2["m7_func2"]:::class2
827+ m7_3["m7_<...>"]:::class2
828+ m7_4["m7_funcN"]:::class2
829+ end
830+
831+ subgraph y8_graph["SSE4.2 version"]
832+ y8_1["y8_func1"]:::class2
833+ y8_2["y8_func2"]:::class2
834+ y8_3["y8_<...>"]:::class2
835+ y8_4["y8_funcN"]:::class2
836+ end
837+
838+ subgraph l9_graph["AVX2 version"]
839+ l9_1["l9_func1"]:::class2
840+ l9_2["l9_func2"]:::class2
841+ l9_3["l9_<...>"]:::class2
842+ l9_4["l9_funcN"]:::class2
843+ end
844+
845+ subgraph k0_graph["AVX512 k0 version"]
846+ k0_1["k0_func1"]:::class2
847+ k0_2["k0_func2"]:::class2
848+ k0_3["k0_<...>"]:::class2
849+ k0_4["k0_funcN"]:::class2
850+ end
851+
852+ subgraph k1_graph["AVX512 k1 version"]
853+ k1_1["k1_func1"]:::class2
854+ k1_2["k1_func2"]:::class2
855+ k1_3["k1_<...>"]:::class2
856+ k1_4["k1_funcN"]:::class2
857+ end
858+
859+ Dispatcher ~~~ m7_graph
860+ Dispatcher ~~~ y8_graph
861+ Dispatcher ~~~ l9_graph
862+ Dispatcher ~~~ k0_graph
863+ Dispatcher ~~~ k1_graph
864+ end
865+
866+ %% Style for subgraphs
867+ style m7_graph fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
868+ style y8_graph fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
869+ style l9_graph fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
870+ style k0_graph fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
871+ style k1_graph fill:#15BCEF, stroke:#15BCEF, color:#FFFFFF
872+
873+ style base fill:none, stroke:#15BCEF, stroke-width:3px, color:#0054AE, font-size:16pt
874+```
875
876 The advantage of this configuration is that the library works on any CPU.
877
878@@ -167,6 +325,8 @@ The build system produces several separate libraries each optimized for its own
879
880 To specify for what instruction set targeted libraries must be produced, use the `PLATFORM_LIST` CMake variable. It contains semicolon-delimited list of CPU codes (for the complete list of codes see the table in [this](#target-optimization-codes-in-function-names) section).
881
882+> **NOTE:** Platforms n8 (optimized for processors with Supplemental Streaming SIMD Extensions 3 (SSSE3)) and e9 (optimized for processors with Intel® Advanced Vector Extensions (Intel® AVX)) have been deprecated but are still supported in the specific ISA library build. Support for these platforms is targeted to be removed in a future release.
883+
884 For example, to create two libraries - one with SSE4.2 optimizations and another with Intel AVX-512 optimizations, specify `-DPLATFORM_LIST="y8;k0"`.
885
886 ![CPU specific libraries picture][CPU-specific libraries]
887@@ -193,13 +353,13 @@ It is important to ensure that both processor and operating system supports full
888
889 ### Functionality
890
891-By default, Intel IPP Cryptography libraries (both static and dynamic) contain all functionality that exists in the product. But when footprint size matters, the library can contain only required functionality and have no unused code.
892+By default, Intel® Cryptography Primitives Library (both static and dynamic libraries) contain all functionality that exists in the product. But when footprint size matters, the library can contain only required functionality and have no unused code.
893
894 #### Static Library with Custom functionality
895
896 With the static linking having only required functionality in the library is not so actual as leaving only those parts of a library that are used by application, is automatically managed by linker.
897
898-Considering Intel IPP Cryptography design that implies minimal internal dependencies, the application linked with the Intel IPP Cryptography static library contains only relevant library functionality, and has minimal footprint size.
899+Considering Intel® Cryptography Primitives Library design that implies minimal internal dependencies, the application linked with the static Intel® Cryptography Primitives Library contains only relevant library functionality, and has minimal footprint size.
900
901 #### Dynamic Library with Custom functionality
902
903@@ -207,4 +367,4 @@ To build your own dynamic library containing only the functionality that is nece
904
905 The tool is located in the `tools/ipp_custom_library_tool_python` directory.
906
907-Please refer to the [tool documentation](https://www.intel.com/content/www/us/en/docs/ipp/developer-guide-oneapi/current/ipp-custom-library-tool.html) for more information.
908+Please refer to the [tool documentation](https://www.intel.com/content/www/us/en/docs/ipp/developer-guide-reference/current/ipp-custom-library-tool.html) for more information.
909diff --git a/README.md b/README.md
910index bda5510..82c1f06 100644
911--- a/README.md
912+++ b/README.md
913@@ -1,8 +1,8 @@
914-# Intel® Integrated Performance Primitives Cryptography
915+# Intel® Cryptography Primitives Library
916
917 [Build Instructions](./BUILD.md) | [Contributing Guide](#how-to-contribute) | [Documentation](#documentation) | [Get Help](#get-help) | [Intel IPP Product Page](https://www.intel.com/content/www/us/en/developer/tools/oneapi/ipp.html)
918
919-Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) is a secure, fast and lightweight library of building blocks for cryptography, highly-optimized for various Intel® CPUs.
920+Intel® Cryptography Primitives Library is a secure, fast and lightweight library of building blocks for cryptography, highly-optimized for various Intel® CPUs.
921
922 ## Key Features
923 The library provides a comprehensive set of routines commonly used for cryptographic operations, including:
924@@ -28,7 +28,7 @@ The library provides a comprehensive set of routines commonly used for cryptogra
925 - PRNG/TRNG and Prime Numbers Generation
926 - Hash-based signature algorithms
927
928-## Reasons to Use Intel IPP Cryptography
929+## Reasons to Use Intel® Cryptography Primitives Library
930 - Security (constant-time execution for secret processing functions)
931 - Designed for the small footprint size
932 - Optimized for different Intel CPUs and instruction set architectures (including hardware cryptography instructions support):
933@@ -44,21 +44,21 @@ The library provides a comprehensive set of routines commonly used for cryptogra
934
935 ## FIPS 140 Compliance
936
937-Intel IPP Cryptography supports building blocks (self-tests, services) for FIPS 140-3 compliance.
938-See [FIPS] (./README_FIPS.md) document for details.
939+Intel® Cryptography Primitives Library supports building blocks (self-tests, services) for FIPS 140-3 compliance.
940+See [FIPS](./README_FIPS.md) document for details.
941
942 ## Installation
943
944-[How to Get and Build the Intel IPP Cryptography Library](./BUILD.md)
945+[How to Get and Build the Intel® Cryptography Primitives Library](./BUILD.md)
946
947 ## Documentation
948
949-- [Introduction to Intel IPP Cryptography Library](./OVERVIEW.md)
950+- [Introduction to Intel® Cryptography Primitives Library](./OVERVIEW.md)
951 - [Introduction to Crypto Multi-buffer Library](./sources/ippcp/crypto_mb/Readme.md)
952-- [Intel IPP Cryptography Build Instructions](./BUILD.md)
953-- [Intel IPP Release Notes](https://www.intel.com/content/www/us/en/developer/articles/release-notes/release-notes-for-oneapi-integrated-performance-primitives.html)
954-- [Intel IPP Cryptography Developer Reference](https://www.intel.com/content/www/us/en/docs/ipp-crypto/developer-reference/current/overview.html)
955-- [Intel IPP Documentation](https://www.intel.com/content/www/us/en/developer/tools/oneapi/ipp-documentation.html)
956+- [Intel® Cryptography Primitives Library Build Instructions](./BUILD.md)
957+- [Intel® Integrated Performance Primitives Release Notes](https://www.intel.com/content/www/us/en/developer/articles/release-notes/release-notes-for-oneapi-integrated-performance-primitives.html)
958+- [Developer Guide and Reference for Intel® Cryptography Primitives Library](https://www.intel.com/content/www/us/en/docs/ipp-crypto/developer-guide-reference/current/overview.htmll)
959+- [Intel® Integrated Performance Primitives Documentation](https://www.intel.com/content/www/us/en/developer/tools/oneapi/ipp-documentation.html)
960
961 ## Branches Description
962
963@@ -71,8 +71,12 @@ Contains code that may not be fully functional and that Intel may substantially
964 See [Contributing](./CONTRIBUTING.md) document for details about contribution process.
965
966 ### License
967-Intel IPP Cryptography is licensed under Apache License, Version 2.0. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.
968+Intel® Cryptography Primitives Library is licensed under Apache License, Version 2.0. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.
969
970 ## Certification
971
972-Intel IPP Cryptography library is not certified for FIPS-140-2 (Security Requirements for Cryptographic Modules) and CMVP (Cryptographic Module Validation Program).
973+Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) 2021.10 release is validated for FIPS-140-3 (Security Requirements for Cryptographic Modules) compliance and has the following CAVP (Cryptographic Algorithm Validation Program) certificates:
974+
975+- [Intel® Crypto Multi-buffer Library](https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/details?product=17987)
976+- [Intel® Cryptography Primitives Library optimized for Intel® AVX2 ISA](https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/details?product=17988)
977+- [Intel® Cryptography Primitives Library optimized for Intel® AVX512 ISA](https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/details?product=17989)
978diff --git a/README_FIPS.md b/README_FIPS.md
979index ca16a29..6c3870a 100644
980--- a/README_FIPS.md
981+++ b/README_FIPS.md
982@@ -1,4 +1,4 @@
983-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography) FIPS
984+# Intel(R) Cryptography Primitives Library FIPS
985
986 ## What is FIPS 140?
987
988@@ -23,44 +23,44 @@ In addition, **in recent years FIPS 140 has become a more and more popular requi
989 FIPS 140-3 defines 4 security levels (from level 1 - the easiest to level 4 - the most stringent).
990 In general, software may be certified at up to level 2.
991
992-Intel® Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
993+Intel® Cryptography Primitives Library
994 provides building blocks of FIPS-mode API (such as self-tests, FIPS-approved
995 functionality status query) which can help the end users to fulfill FIPS level 1 requirements.
996 Please, refer to [Covered Algorithms](#covered-algorithms) section for the full
997 list of FIPS-Approved API which are covered with the selftests.
998
999-> NOTE: Intel(R) IPP Cryptography is not **FIPS-Certified** on its own but **FIPS-Compliant**:
1000-that means Intel(R) IPP Cryptography releases will have Cryptographic Algorithm
1001+> NOTE: Intel® Cryptography Primitives Library is not **FIPS-Certified** on its own but **FIPS-Compliant**:
1002+that means Intel® Cryptography Primitives Library releases will have Cryptographic Algorithm
1003 Validation Program (CAVP) testing and certification done but don't have full
1004 Cryptographic Module Validation Program certificate as the context of the usage
1005-of Intel(R) IPP Cryptography's high-performant primitives depends on a more high-level application.
1006+of Intel® Cryptography Primitives Library's high-performant primitives depends on a more high-level application.
1007
1008-For the results of CAVP testing please contact us via [Intel(R) Community](https://community.intel.com/t5/Intel-Integrated-Performance/bd-p/integrated-performance-primitives).
1009+For the results of CAVP testing please refer to [Certification](./README.md#Certification) chapter.
1010
1011-Intel(R) IPP Cryptography may be built in FIPS-mode with IPPCP_FIPS_MODE=on
1012+Intel® Cryptography Primitives Library may be built in FIPS-mode with IPPCP_FIPS_MODE=on
1013 configuration for ippcp and MBX_FIPS_MODE=on for crypto_MB (see details in [Build section](#build)).
1014
1015-Application, which uses Intel(R) IPP Cryptography may be **FIPS-Certified** by
1016+Application, which uses Intel® Cryptography Primitives Library may be **FIPS-Certified** by
1017 matching FIPS 140 requirement and obtaining NIST certificate or also be **FIPS-Compliant** for their own customers.
1018
1019 Please, refer to [Level 1 Specific Requirements](#level-1-specific-requirements)
1020-for the detailed description of what is done on Intel(R) IPP Cryptography-side
1021+for the detailed description of what is done on Intel® Cryptography Primitives Library-side
1022 and what should be done by a more high-level application.
1023
1024 ### Level 1 Specific Requirements
1025
1026 | # | Requirement | Note |
1027 |---|-------------|------|
1028-| 1 |Provide service to output module's name / identifier and version to User | Intel(R) IPP Cryptography provides such functionality via ippcpGetLibVersion() API for IPPCP and mbx_getversion() API for crypto_MB |
1029-| 2 |For every service, output to the user whether it is a FIPS-approved service or not | Intel(R) IPP Cryptography provides such functionality via [ippcp_is_fips_approved_func](#api-for-an-indicator-if-a-function-is-fips-approved) for ippcp and [mbx_is_fips_approved_func](#crypto-multi-buffer-library-api-for-an-indicator-if-a-function-is-fips-approved) for crypto_MB |
1030+| 1 |Provide service to output module's name / identifier and version to User | Intel® Cryptography Primitives Library provides such functionality via ippcpGetLibVersion() API for IPPCP and mbx_getversion() API for crypto_MB |
1031+| 2 |For every service, output to the user whether it is a FIPS-approved service or not | Intel® Cryptography Primitives Library provides such functionality via [ippcp_is_fips_approved_func](#api-for-an-indicator-if-a-function-is-fips-approved) for ippcp and [mbx_is_fips_approved_func](#crypto-multi-buffer-library-api-for-an-indicator-if-a-function-is-fips-approved) for crypto_MB |
1032 | 3 |Zeroize unprotected keys using manual/procedural destruction method | **User's application effort required** |
1033 | 4 |Run integrity selftest at power on for SW component | **User's application effort required** |
1034-| 5 | Run known-answer or comparison or fault-detection selftest for individual crypto algorithms before first use | Intel(R) IPP Cryptography provides [fips_selftest_ippcp<algorithm name> API](#covered-algorithms) to run selftests. User's application should call them before the first use of algorithm (see [Example](#example-of-api-usage)) |
1035-| 6 | Run pairwise consistency selftest for newly generated RSA/ECC keypair | Intel(R) IPP Cryptography provides [fips_selftest_ippcp<algorithm name> API](#covered-algorithms) to run selftests |
1036-| 7 | Module to guarantee uniqueness of GSM key + IV | **User's application effort required** |
1037-| 8 | Module to guarantee XTS key1 != key2 | Intel(R) IPP Cryptography-side check |
1038+| 5 | Run known-answer or comparison or fault-detection selftest for individual crypto algorithms before first use | Intel® Cryptography Primitives Library provides [fips_selftest_ippcp<algorithm name> API](#covered-algorithms) to run selftests. User's application should call them before the first use of algorithm (see [Example](#example-of-api-usage)) |
1039+| 6 | Run pairwise consistency selftest for newly generated RSA/ECC keypair | Intel® Cryptography Primitives Library provides [fips_selftest_ippcp<algorithm name> API](#covered-algorithms) to run selftests |
1040+| 7 | Module to guarantee uniqueness of GCM key + IV | **User's application effort required** |
1041+| 8 | Module to guarantee XTS key1 != key2 | Intel® Cryptography Primitives Library-side check |
1042 | 9 | (non-production) Extract raw noise source output samples of RBG for quality analysis | DBRNG is currently out of the cryptography boundary |
1043-| 10| (non-production) Run crypto algorithm testing with NIST-generated vectors | Done offline by Intel(R) IPP Cryptography for the [covered algorithms](#covered-algorithms) |
1044+| 10| (non-production) Run crypto algorithm testing with NIST-generated vectors | Done offline by Intel® Cryptography Primitives Library for the [covered algorithms](#covered-algorithms) |
1045
1046 For the implementation details about the steps in [Level 1 Specific Requirements](#level-1-specific-requirements)
1047 specified as **User's application effort required** please refer to the
1048@@ -68,11 +68,11 @@ specified as **User's application effort required** please refer to the
1049
1050 ## Cryptographic boundary
1051
1052-### Intel(R) IPP Cryptography Structure Diagram
1053+### Intel® Cryptography Primitives Library Structure Diagram
1054
1055-![Intel(R) IPP Cryptography Architecture](./data/images/README_FIPS-pictures-0-ippcp_architecture.png)
1056+![Intel® Cryptography Primitives Library Architecture](./data/images/README_FIPS-pictures-0-ippcp_architecture.png)
1057
1058-1. Intel(R) IPP Cryptography Library uses special structures (Spec and States)
1059+1. Intel® Cryptography Primitives Library uses special structures (Spec and States)
1060 to store context information and provides service functions to work with context (e.g. Initialization).
1061
1062 > Note: Application responsible for the life-cycle of context. All memory allocations
1063@@ -82,7 +82,7 @@ and sanitizing happens on application side (including #3 in [Level 1 Specific Re
1064 3. FIPS Self-tests API and service to query if algorithm is FIPS-Compliant
1065 (API for #2, #5, #6 in [Level 1 Specific Requirements](#level-1-specific-requirements)).
1066 4. Version information (API for #1 in [Level 1 Specific Requirements](#level-1-specific-requirements)), Dispatcher control.
1067-5. Intel(R) IPP Cryptography chooses the optimal code path depending on
1068+5. Intel® Cryptography Primitives Library chooses the optimal code path depending on
1069 hardware features and application settings (via Dispatcher control API).
1070 6. The algorithms may have multiple code branches for different hardware
1071 architecture and different compilation flags may be used to achieve better performance.
1072@@ -91,10 +91,10 @@ Refer to [Covered Algorithms](#covered-algorithms) section to check which
1073 algorithms are within the cryptographic boundary.
1074
1075 > Note: For #10 in [Level 1 Specific Requirements](#level-1-specific-requirements)
1076-Intel(R) IPP Cryptography tests all code-paths and algorithms modes as
1077+Intel® Cryptography Primitives Library tests all code-paths and algorithms modes as
1078 the implementation may vary depending on the target hardware.
1079
1080-## Intel(R) IPP Cryptography Usage in the FIPS-mode
1081+## Intel® Cryptography Primitives Library Usage in the FIPS-mode
1082
1083 ### Build
1084
1085@@ -103,9 +103,9 @@ CMake flag -DIPPCP_FIPS_MODE:BOOL=on should be used to build ippcp library and
1086 self-tests and FIPS-support query (see [covered algorithms](#covered-algorithms) for the details).
1087 Selftests can be build in two modes - with internal memory allocation or without it.
1088
1089-Configuration example for ippcp with Intel® C++ Compiler:
1090+Configuration example for ippcp with Intel® oneAPI DPC++/C++ Compiler:
1091
1092-`CC=icc CXX=icpc cmake CMakeLists.txt -B_build -DARCH=intel64 -DIPPCP_FIPS_MODE:BOOL=on[-DIPPCP_SELFTEST_USE_MALLOC:BOOL=on]`
1093+`CC=icx CXX=icpx cmake CMakeLists.txt -B_build -DARCH=intel64 -DIPPCP_FIPS_MODE:BOOL=on [-DIPPCP_SELFTEST_USE_MALLOC:BOOL=on]`
1094
1095 > Note: selftests with internal memory allocation uses malloc, which introduces
1096 a c runtime dependency.
1097@@ -118,7 +118,7 @@ Configuration example for crypto_MB with GCC:
1098
1099 ### Example of API Usage
1100
1101-#### Intel(R) IPP Cryptography Example
1102+#### Intel® Cryptography Primitives Library Example
1103
1104 ```cpp
1105
1106@@ -132,7 +132,7 @@ if(!ippcp_is_fips_approved_func(AESEncryptCBC)) {
1107 // 2. Run the Selftest
1108 fips_test_status selftest_status = IPPCP_ALGO_SELFTEST_OK;
1109
1110-// Query buffer size for the test and allocate it (it can be done on Intel(R) IPP Cryptography side with IPPCP_SELFTEST_USE_MALLOC=on)
1111+// Query buffer size for the test and allocate it (it can be done on Intel® Cryptography Primitives Library side with IPPCP_SELFTEST_USE_MALLOC=on)
1112 int BuffSize = 0;
1113 selftest_status += fips_selftest_ippsAESEncryptDecrypt_get_size(&BuffSize);
1114 std::vector<Ipp8u> pBuff(BuffSize);
1115@@ -147,7 +147,7 @@ if (IPPCP_ALGO_SELFTEST_OK != selftest_status) {
1116
1117 //------ FIPS-required part ends (only needed before the first use of algorithm)
1118
1119-//------ Common Intel(R) IPP Cryptography usage
1120+//------ Common Intel® Cryptography Primitives Library usage
1121 // ...
1122 IppStatus status = ippsAESEncryptCBC(plain, cipher, block_size, pAES, cipherV);
1123 // ...
1124@@ -183,10 +183,10 @@ mbx_nistp256_ecdh_mb8(sharedBA, prvB, pubAx, pubAy, pubAz_curr, 0);
1125
1126 ### Covered Algorithms
1127
1128-#### Intel(R) IPP Cryptography
1129+#### Intel® Cryptography Primitives Library
1130
1131 Each API from the list is covered with the selftest fips_selftest_ipps<API_name>
1132-available in Intel(R) IPP Cryptography build in FIPS mode.
1133+available in Intel® Cryptography Primitives Library build in FIPS mode.
1134
1135 ##### AES
1136
1137@@ -316,6 +316,15 @@ fips_test_status fips_selftest_ippsGFpECSharedSecretDH (Ipp8u *pGFpBuff Ipp8u *p
1138 valid buffer for selftest of size indicated by `fips_selftest_ippsGFpECSignVerifyDSA_get_size_GFpEC_buff`
1139 and `pDataBuff` is the valid buffer for selftest of size indicated by `fips_selftest_ippsGFpECSignVerifyDSA_get_size_data_buff`.
1140
1141+##### LMS verify
1142+
1143+```cpp
1144+fips_test_status fips_selftest_ippsLMSVerify_get_size (int *pBuffSize);
1145+fips_test_status fips_selftest_ippsLMSVerify (Ipp8u *pBuffer);
1146+```
1147+
1148+, where `pBuffer` is the valid buffer for selftest of size indicated by `fips_selftest_ippsLMSVerify_get_size`.
1149+
1150 ##### API for an indicator if a function is FIPS-approved
1151
1152 ```cpp
1153diff --git a/THIRD-PARTY-PROGRAMS.txt b/THIRD-PARTY-PROGRAMS.txt
1154index ba4c3b5..d84bd6c 100644
1155--- a/THIRD-PARTY-PROGRAMS.txt
1156+++ b/THIRD-PARTY-PROGRAMS.txt
1157@@ -1,4 +1,4 @@
1158-Intel(R) Integrated Performance Primitives Cryptography Third Party Programs File
1159+Intel(R) Cryptography Primitives Library Third Party Programs File
1160
1161 This file contains the list of third party software (“third party programs”) contained in the Intel software and their required notices and/or license terms.
1162 This third party software, even if included with the distribution of the Intel software, may be governed by separate license terms, including without limitation, third party license terms, other Intel software license terms, and open source software license terms.
1163diff --git a/debian/changelog b/debian/changelog
1164index 4cc1686..10326db 100644
1165--- a/debian/changelog
1166+++ b/debian/changelog
1167@@ -1,3 +1,15 @@
1168+ipp-crypto (1:1.0.0-0ubuntu1) plucky; urgency=medium
1169+
1170+ * d/changelog : add epoch to version since upstream uses now
1171+ semantic versioning
1172+ * d/control : update package names for ipcrypto-mb and libippcp
1173+ * d/control : change upstream vcs and description
1174+ * d/p : refresh patch
1175+ * New upstream version 1.0.0
1176+ * d/watch : upstream repo renaming and versioning scheme change
1177+
1178+ -- Hector Cao <hector.cao@canonical.com> Mon, 25 Nov 2024 12:45:16 +0100
1179+
1180 ipp-crypto (2021.12.1-0ubuntu1) oracular; urgency=medium
1181
1182 * New upstream release (LP: #2075496).
1183diff --git a/debian/control b/debian/control
1184index 9f0a92a..bcdc780 100644
1185--- a/debian/control
1186+++ b/debian/control
1187@@ -12,15 +12,15 @@ Build-Depends: debhelper-compat (=13),
1188 nasm,
1189 libssl-dev
1190 Standards-Version: 4.6.2
1191-Homepage: https://github.com/intel/ipp-crypto
1192+Homepage: https://github.com/intel/cryptography-primitives
1193
1194-Package: libippcp11
1195+Package: libippcp12
1196 Section: libs
1197 Architecture: amd64
1198 Depends: ${shlibs:Depends}, ${misc:Depends}
1199 Pre-Depends: ${misc:Pre-Depends}
1200-Description: Intel® Integrated Performance Primitives Cryptography
1201- Intel® Integrated Performance Primitives (Intel® IPP) Cryptography is a
1202+Description: Intel® Cryptography Primitives Library
1203+ Intel® Cryptography Primitives Library (Intel® IPP) Cryptography is a
1204 secure, fast and lightweight library of building blocks for cryptography,
1205 highly-optimized for various Intel® CPUs.
1206 .
1207@@ -37,20 +37,20 @@ Description: Intel® Integrated Performance Primitives Cryptography
1208 Package: libippcp-dev
1209 Section: libdevel
1210 Architecture: amd64
1211-Depends: ${misc:Depends}, libippcp11 (= ${binary:Version})
1212+Depends: ${misc:Depends}, libippcp12 (= ${binary:Version})
1213 Pre-Depends: ${misc:Pre-Depends}
1214-Description: Intel® Integrated Performance Primitives Cryptography development files
1215- Intel® Integrated Performance Primitives (Intel® IPP) Cryptography is a
1216+Description: Intel® Cryptography Primitives Library development files
1217+ Intel® Cryptography Primitives Library (Intel® IPP) Cryptography is a
1218 secure, fast and lightweight library of building blocks for cryptography,
1219 highly-optimized for various Intel® CPUs.
1220 This package contains the development libraries and headers.
1221
1222-Package: libcrypto-mb11
1223+Package: libcrypto-mb12
1224 Section: libs
1225 Architecture: amd64
1226 Depends: ${shlibs:Depends}, ${misc:Depends}
1227 Pre-Depends: ${misc:Pre-Depends}
1228-Description: Intel® Integrated Performance Primitives Cryptography Multi-buffer
1229+Description: Intel® Cryptography Primitives Library Multi-buffer
1230 Some of the cryptography algorithms cannot be parallelized due to
1231 their specificity (eg the RSA algorithm).
1232 The way to get high-performance implementations of such cryptographic
1233@@ -70,7 +70,7 @@ Description: Intel® Integrated Performance Primitives Cryptography Multi-buffer
1234 Package: libcrypto-mb-dev
1235 Section: libdevel
1236 Architecture: amd64
1237-Depends: ${misc:Depends}, libcrypto-mb11 (= ${binary:Version})
1238+Depends: ${misc:Depends}, libcrypto-mb12 (= ${binary:Version})
1239 Pre-Depends: ${misc:Pre-Depends}
1240 Description: Intel® IPP Cryptography Multi-buffer development files
1241 This package contains the development libraries and headers.
1242diff --git a/debian/libcrypto-mb11.install b/debian/libcrypto-mb12.install
1243similarity index 100%
1244rename from debian/libcrypto-mb11.install
1245rename to debian/libcrypto-mb12.install
1246diff --git a/debian/libippcp11.install b/debian/libippcp12.install
1247similarity index 100%
1248rename from debian/libippcp11.install
1249rename to debian/libippcp12.install
1250diff --git a/debian/patches/0001-Undefine-FORTIFY_SOURCE-before-define.patch b/debian/patches/0001-Undefine-FORTIFY_SOURCE-before-define.patch
1251index 5784def..6f6bc6d 100644
1252--- a/debian/patches/0001-Undefine-FORTIFY_SOURCE-before-define.patch
1253+++ b/debian/patches/0001-Undefine-FORTIFY_SOURCE-before-define.patch
1254@@ -1,6 +1,6 @@
1255-From bb1d2b75834f9e89457aa4ae08552e6fa870375c Mon Sep 17 00:00:00 2001
1256+From 1018ebdc0543702edbedb81c57d432c46955a9da Mon Sep 17 00:00:00 2001
1257 From: Hector Cao <hector.cao@canonical.com>
1258-Date: Tue, 20 Feb 2024 14:45:02 +0000
1259+Date: Mon, 4 Nov 2024 01:06:29 +0100
1260 Subject: [PATCH] Undefine FORTIFY_SOURCE before define
1261
1262 Some toolchains have FORTIFY_SOURCE defined and wlil raise warning
1263@@ -14,44 +14,44 @@ So, undefine FORTIFY_SOURCE before defining it to get rid of this
1264 3 files changed, 3 insertions(+), 3 deletions(-)
1265
1266 diff --git a/sources/cmake/linux/GNU8.2.0.cmake b/sources/cmake/linux/GNU8.2.0.cmake
1267-index 96658a8..1d08d80 100644
1268+index 55e60ae..5a4e431 100644
1269 --- a/sources/cmake/linux/GNU8.2.0.cmake
1270 +++ b/sources/cmake/linux/GNU8.2.0.cmake
1271-@@ -74,7 +74,7 @@ if ((${ARCH} MATCHES "ia32") OR (NOT NONPIC_LIB))
1272- endif()
1273-
1274+@@ -95,7 +95,7 @@ endif(${ARCH} MATCHES "ia32")
1275+ # Optimization level = 3, no-debug definition (turns off asserts), warnings=errors
1276+ set(CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -Werror")
1277 # Security flag that adds compile-time and run-time checks
1278--set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
1279-+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
1280+-set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2")
1281++set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
1282
1283- if(NOT NONPIC_LIB)
1284- # Position Independent Execution (PIE)
1285+ set(w7_opt "${w7_opt} -march=pentium4 -msse2")
1286+ set(s8_opt "${s8_opt} -march=core2 -mssse3")
1287 diff --git a/sources/ippcp/CMakeLists.txt b/sources/ippcp/CMakeLists.txt
1288-index 516fc1e..e01ab0b 100644
1289+index 1864c1a..18f8358 100644
1290 --- a/sources/ippcp/CMakeLists.txt
1291 +++ b/sources/ippcp/CMakeLists.txt
1292-@@ -538,7 +538,7 @@ if(MERGED_BLD)
1293- if(${ARCH} MATCHES "ia32")
1294- set_source_files_properties(${DISPATCHER_C_SOURCES} PROPERTIES COMPILE_FLAGS "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -O2")
1295- else()
1296-- set_source_files_properties(${DISPATCHER_C_SOURCES} PROPERTIES COMPILE_FLAGS "${CC_FLAGS_INLINE_ASM_UNIX_INTEL64} -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -O2")
1297-+ set_source_files_properties(${DISPATCHER_C_SOURCES} PROPERTIES COMPILE_FLAGS "${CC_FLAGS_INLINE_ASM_UNIX_INTEL64} -D_GNU_SOURCE -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -O2")
1298+@@ -560,7 +560,7 @@ if(MERGED_BLD)
1299+ if(UNIX)
1300+ set(DISPATCHER_C_SOURCES_COMPILE_FLAGS "-D_GNU_SOURCE -O2")
1301+ if(CMAKE_BUILD_TYPE STREQUAL "Release")
1302+- set(DISPATCHER_C_SOURCES_COMPILE_FLAGS "${DISPATCHER_C_SOURCES_COMPILE_FLAGS} -D_FORTIFY_SOURCE=2")
1303++ set(DISPATCHER_C_SOURCES_COMPILE_FLAGS "${DISPATCHER_C_SOURCES_COMPILE_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
1304 endif()
1305- endif()
1306
1307+ if(${ARCH} MATCHES "ia32")
1308 diff --git a/sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake b/sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake
1309-index 327652d..1756da0 100644
1310+index e88ddf5..a4e8d65 100644
1311 --- a/sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake
1312 +++ b/sources/ippcp/crypto_mb/src/cmake/linux/GNU.cmake
1313-@@ -31,7 +31,7 @@ set(CMAKE_C_FLAGS_SECURITY "${CMAKE_C_FLAGS_SECURITY} -Wformat -Wformat-security
1314- if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
1315- if(NOT DEFINED NO_FORTIFY_SOURCE)
1316- # Security flag that adds compile-time and run-time checks.
1317-- set(CMAKE_C_FLAGS_SECURITY "${CMAKE_C_FLAGS_SECURITY} -D_FORTIFY_SOURCE=2")
1318-+ set(CMAKE_C_FLAGS_SECURITY "${CMAKE_C_FLAGS_SECURITY} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
1319- endif()
1320+@@ -70,7 +70,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-to-int-cast")
1321+ set(CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG")
1322+ if(NOT DEFINED NO_FORTIFY_SOURCE)
1323+ # Security flag that adds compile-time and run-time checks
1324+- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2")
1325++ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2")
1326 endif()
1327
1328+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
1329 --
1330-2.40.1
1331+2.43.0
1332
1333diff --git a/debian/watch b/debian/watch
1334index 6083681..1bbe8a6 100644
1335--- a/debian/watch
1336+++ b/debian/watch
1337@@ -1,4 +1,4 @@
1338 version=4
1339-opts="filenamemangle=s%(?:.*?)ippcp_(\d[\d.][\d.]*)\.tar\.gz%@PACKAGE@-$1.tar.gz%" \
1340- https://github.com/intel/ipp-crypto/tags \
1341- (?:.*?/)?ippcp_?(\d[\d.][\d.]*)\.tar\.gz debian uupdate
1342+opts="filenamemangle=s%(?:.*?)v(\d[\d.][\d.]*)\.tar\.gz%@PACKAGE@-$1.tar.gz%" \
1343+ https://github.com/intel/cryptography-primitives/tags \
1344+ (?:.*?/)?v(\d[\d.][\d.]*)\.tar\.gz debian uupdate
1345diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
1346index adeccbc..4e20d35 100644
1347--- a/examples/CMakeLists.txt
1348+++ b/examples/CMakeLists.txt
1349@@ -15,7 +15,7 @@
1350 #=========================================================================
1351
1352 #
1353-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) examples
1354+# Intel® Cryptography Primitives Library examples
1355 #
1356
1357 # List of examples for targets generation
1358@@ -38,6 +38,12 @@ set(IPPCP_EXAMPLES
1359 # SMS4 examples
1360 sms4/sms4-128-cbc-encryption.cpp
1361 sms4/sms4-128-cbc-decryption.cpp
1362+ # Hash examples
1363+ hash/sm3_hash_rmf.cpp
1364+ # Post-quantum algorithms examples
1365+ post-quantum/lms_m32_h5_w8_verification.cpp
1366+ # Elliptic curve algorithms examples
1367+ ecdsa/ecdsa-256r1-sign.cpp
1368 )
1369
1370 cmake_policy(SET CMP0003 NEW)
1371@@ -85,7 +91,7 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_LIST_DIR)
1372 # Build with standalone library
1373 cmake_minimum_required(VERSION 3.1)
1374
1375- project("Intel IPP Cryptography Examples" CXX)
1376+ project("Intel Cryptography Primitives Library Examples" CXX)
1377 set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
1378
1379 option(BUILD_EXAMPLES "Build examples" ON)
1380@@ -94,7 +100,7 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_LIST_DIR)
1381 find_package(IPPCrypto REQUIRED MODULE)
1382
1383 if (NOT IPPCRYPTO_FOUND)
1384- message(FATAL_ERROR "No Intel IPP Cryptography library found on the system. To build examples with pre-built library, please specify -DIPPCRYPTO_ROOT_DIR=<path> option, where <path> is the path to directory that contains include/ and lib/ folders of Intel IPP Cryptography product.")
1385+ message(FATAL_ERROR "No Intel Cryptography Primitives Library found on the system. To build examples with pre-built library, please specify -DIPPCRYPTO_ROOT_DIR=<path> option, where <path> is the path to directory that contains include/ and lib/ folders of Intel Cryptography Primitives Library product.")
1386 endif()
1387
1388 # Define library to link
1389@@ -108,7 +114,7 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_LIST_DIR)
1390 else()
1391 # Build with library sources
1392 if(NOT BUILD_EXAMPLES OR NOT MERGED_BLD)
1393- message(FATAL_ERROR "Only merged library build is currently supported for Intel IPP Cryptography examples. Use -DMERGED_BLD:BOOL=on options.")
1394+ message(FATAL_ERROR "Only merged library build is currently supported for Intel Cryptography Primitives Library examples. Use -DMERGED_BLD:BOOL=on options.")
1395 endif()
1396 endif()
1397
1398diff --git a/examples/FindIPPCrypto.cmake b/examples/FindIPPCrypto.cmake
1399index 454fb47..c8b35f4 100644
1400--- a/examples/FindIPPCrypto.cmake
1401+++ b/examples/FindIPPCrypto.cmake
1402@@ -15,7 +15,7 @@
1403 #=========================================================================
1404
1405 #
1406-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
1407+# Intel® Cryptography Primitives Library
1408 # library detection routine.
1409 #
1410 # If found the following variables will be available:
1411@@ -29,11 +29,11 @@ include(FindPackageHandleStandardArgs)
1412
1413 macro(ippcp_not_found)
1414 set(IPPCRYPTO_FOUND OFF)
1415- set(IPPCRYPTO_ROOT_DIR "${IPPCRYPTO_ROOT_DIR}" CACHE PATH "Path to Intel IPP Cryptography root directory")
1416+ set(IPPCRYPTO_ROOT_DIR "${IPPCRYPTO_ROOT_DIR}" CACHE PATH "Path to Intel Cryptography Primitives Library root directory")
1417 return()
1418 endmacro()
1419
1420-# Try to find Intel IPP Cryptography library on the system if root dir is not defined externally
1421+# Try to find Intel Cryptography Primitives Library on the system if root dir is not defined externally
1422 if (NOT IPPCRYPTO_ROOT_DIR OR NOT EXISTS "${IPPCRYPTO_ROOT_DIR}/include/ippcp.h")
1423 set(ippcp_search_paths
1424 ${CMAKE_CURRENT_SOURCE_DIR}/../.build
1425@@ -56,7 +56,7 @@ if (NOT IPPCRYPTO_ROOT_DIR OR NOT EXISTS "${IPPCRYPTO_ROOT_DIR}/include/ippcp.h"
1426 find_path(IPPCRYPTO_ROOT_DIR include/ippcp.h PATHS ${ippcp_search_paths})
1427 endif()
1428
1429-set(IPPCRYPTO_INCLUDE_DIRS "${IPPCRYPTO_ROOT_DIR}/include" CACHE PATH "Path to Intel IPP Cryptography library include directory" FORCE)
1430+set(IPPCRYPTO_INCLUDE_DIRS "${IPPCRYPTO_ROOT_DIR}/include" CACHE PATH "Path to Intel Cryptography Primitives Library include directory" FORCE)
1431
1432 # Check found directory
1433 if(NOT IPPCRYPTO_ROOT_DIR
1434@@ -107,9 +107,9 @@ endforeach()
1435
1436 list(REMOVE_DUPLICATES IPPCRYPTO_LIBRARIES)
1437
1438-message(STATUS "Found Intel IPP Cryptography at: ${IPPCRYPTO_ROOT_DIR}")
1439+message(STATUS "Found Intel Cryptography Primitives Library at: ${IPPCRYPTO_ROOT_DIR}")
1440
1441 set(IPPCRYPTO_FOUND ON)
1442-set(IPPCRYPTO_ROOT_DIR "${IPPCRYPTO_ROOT_DIR}" CACHE PATH "Path to Intel IPP Cryptography root directory")
1443-set(IPPCRYPTO_INCLUDE_DIRS "${IPPCRYPTO_INCLUDE_DIRS}" CACHE PATH "Path to Intel IPP Cryptography include directory")
1444-set(IPPCRYPTO_LIBRARIES "${IPPCRYPTO_LIBRARIES}" CACHE STRING "Intel IPP Cryptography libraries")
1445+set(IPPCRYPTO_ROOT_DIR "${IPPCRYPTO_ROOT_DIR}" CACHE PATH "Path to Intel Cryptography Primitives Library root directory")
1446+set(IPPCRYPTO_INCLUDE_DIRS "${IPPCRYPTO_INCLUDE_DIRS}" CACHE PATH "Path to Intel Cryptography Primitives Library include directory")
1447+set(IPPCRYPTO_LIBRARIES "${IPPCRYPTO_LIBRARIES}" CACHE STRING "Intel Cryptography Primitives Library libraries")
1448diff --git a/examples/README.md b/examples/README.md
1449index 445eb45..422be2d 100644
1450--- a/examples/README.md
1451+++ b/examples/README.md
1452@@ -1,4 +1,4 @@
1453-# Building usage examples of Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) library
1454+# Building usage examples of Intel® Cryptography Primitives Library
1455
1456 ## System requirements
1457
1458@@ -20,9 +20,9 @@ Only merged library (cmake option `-DMERGED_BLD:BOOL=ON`) builds are supported f
1459 `cmake CMakeLists.txt -B_build -G<vs_generator> [-T"Intel® C++ Compiler <version>"] -DBUILD_EXAMPLES:BOOL=ON`
1460
1461 For the Visual Studio\* generators options, please refer to the CMake help.
1462- The toolchain switch is optional, specify it if you want to build the library and examples using Intel® C++ Compiler.
1463+ The toolchain switch is optional, specify it if you want to build the library and examples using Intel® oneAPI DPC++/C++ Compiler.
1464
1465- For the list of supported compiler versions or other cmake build options, please refer to the library root README.md file.
1466+ For the list of supported compiler versions or other cmake build options, please refer to the library root [BUILD.md](../BUILD.md) file.
1467
1468 2. On Linux\*/macOS\*, build with `make -j8 <target>`. You can use the following targets:
1469
1470@@ -50,17 +50,17 @@ Only merged library (cmake option `-DMERGED_BLD:BOOL=ON`) builds are supported f
1471 `cmake CMakeLists.txt -B_build`
1472
1473 On Windows\* OS it is required to specify a generator (`-G` option) and optionally a toolchain (`-T` option)
1474- to build with Intel® C++ Compiler. Example:
1475+ to build with Intel® oneAPI DPC++/C++ Compiler. Example:
1476
1477 `cmake CMakeLists.txt -B_build -G<vs_generator> [-T"Intel C++ Compiler <version>"]`
1478
1479 For the Visual Studio\* generators options, please refer to the CMake help.
1480
1481-2. The build system will scan the system for the Intel IPP Cryptography library.
1482+2. The build system will scan the system for the Intel® Cryptography Primitives Library.
1483 If it is found, you’ll see the following message:
1484
1485 ```
1486- -- Found Intel IPP Cryptography at: /home/user/intel/ippcp
1487+ -- Found Intel® Cryptography Primitives Library at: /home/user/intel/ippcp
1488 -- Configuring done
1489 ```
1490
1491@@ -70,7 +70,7 @@ Only merged library (cmake option `-DMERGED_BLD:BOOL=ON`) builds are supported f
1492 3. Run the build process as described in the [Build with library sources](#build-with-library-sources).
1493
1494
1495-# How to add a new example into Intel IPP Cryptography library:
1496+# How to add a new example into Intel® Cryptography Primitives Library:
1497
1498 1. Choose a category (a folder), where to put the example, and a filename. Use
1499 existing folders where applicable.
1500@@ -89,7 +89,7 @@ Only merged library (cmake option `-DMERGED_BLD:BOOL=ON`) builds are supported f
1501 4. Add the example to the build: open *examples/CMakeLists.txt* file and add the
1502 new file to the *IPPCP_EXAMPLES* list.
1503
1504-5. Make sure it can be built using Intel IPP Cryptography examples build procedure, and it
1505+5. Make sure it can be built using Intel® Cryptography Primitives Library examples build procedure, and it
1506 works correctly.
1507
1508 You are ready to submit a pull request!
1509diff --git a/examples/ecdsa/categoryOptions.cmake b/examples/ecdsa/categoryOptions.cmake
1510new file mode 100644
1511index 0000000..70c7535
1512--- /dev/null
1513+++ b/examples/ecdsa/categoryOptions.cmake
1514@@ -0,0 +1,20 @@
1515+#=========================================================================
1516+# Copyright (C) 2024 Intel Corporation
1517+#
1518+# Licensed under the Apache License, Version 2.0 (the "License");
1519+# you may not use this file except in compliance with the License.
1520+# You may obtain a copy of the License at
1521+#
1522+# http://www.apache.org/licenses/LICENSE-2.0
1523+#
1524+# Unless required by applicable law or agreed to in writing, software
1525+# distributed under the License is distributed on an "AS IS" BASIS,
1526+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1527+# See the License for the specific language governing permissions and
1528+# limitations under the License.
1529+#=========================================================================
1530+
1531+set(ecdsa_CATEGORY_COMMON_SOURCES
1532+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/bignum.cpp
1533+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/utils.cpp
1534+ )
1535diff --git a/examples/ecdsa/ecdsa-256r1-sign.cpp b/examples/ecdsa/ecdsa-256r1-sign.cpp
1536new file mode 100644
1537index 0000000..ab78686
1538--- /dev/null
1539+++ b/examples/ecdsa/ecdsa-256r1-sign.cpp
1540@@ -0,0 +1,141 @@
1541+/*************************************************************************
1542+* Copyright (C) 2024 Intel Corporation
1543+*
1544+* Licensed under the Apache License, Version 2.0 (the "License");
1545+* you may not use this file except in compliance with the License.
1546+* You may obtain a copy of the License at
1547+*
1548+* http://www.apache.org/licenses/LICENSE-2.0
1549+*
1550+* Unless required by applicable law or agreed to in writing, software
1551+* distributed under the License is distributed on an "AS IS" BASIS,
1552+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1553+* See the License for the specific language governing permissions and
1554+* limitations under the License.
1555+*************************************************************************/
1556+
1557+// /*!
1558+// *
1559+// * \file
1560+// *
1561+// * \brief ECDSA signature example
1562+// *
1563+// * This example showcases the utilization of the elliptic curve
1564+// * digital signature algorithm(ECDSA) over NIST P-256 curve with
1565+// * DSA scheme for signature generation.
1566+// *
1567+// */
1568+
1569+#include <string.h>
1570+#include <memory>
1571+
1572+#include <vector>
1573+
1574+#include "ippcp.h"
1575+#include "bignum.h"
1576+#include "utils.h"
1577+#include "examples_common.h"
1578+
1579+/* Message digest */
1580+static const Ipp8u msg_digest[] = { 0x56,0xec,0x33,0xa1,0xa6,0xe7,0xc4,0xdb,0x77,0x03,0x90,0x1a,0xfb,0x2e,0x1e,0x4e,
1581+ 0x50,0x09,0xfe,0x04,0x72,0x89,0xc5,0xc2,0x42,0x13,0x6c,0xe3,0xb7,0xf6,0xac,0x44 };
1582+
1583+/* Regular and ephemeral private keys */
1584+static const Ipp8u d[] = { 0x64,0xb4,0x72,0xda,0x6d,0xa5,0x54,0xca,0xac,0x3e,0x4e,0x0b,0x13,0xc8,0x44,0x5b,
1585+ 0x1a,0x77,0xf4,0x59,0xee,0xa8,0x4f,0x1f,0x58,0x8b,0x5f,0x71,0x3d,0x42,0x9b,0x51 };
1586+static const Ipp8u k[] = { 0xde,0x68,0x2a,0x64,0x87,0x07,0x67,0xb9,0x33,0x5d,0x4f,0x82,0x47,0x62,0x4a,0x3b,
1587+ 0x7f,0x3c,0xe9,0xf9,0x45,0xf2,0x80,0xa2,0x61,0x6a,0x90,0x4b,0xb1,0xbb,0xa1,0x94 };
1588+
1589+/* signature */
1590+static const Ipp8u r[] = { 0xac,0xc2,0xc8,0x79,0x6f,0x5e,0xbb,0xca,0x7a,0x5a,0x55,0x6a,0x1f,0x6b,0xfd,0x2a,
1591+ 0xed,0x27,0x95,0x62,0xd6,0xe3,0x43,0x88,0x5b,0x79,0x14,0xb5,0x61,0x80,0xac,0xf3 };
1592+static const Ipp8u s[] = { 0x03,0x89,0x05,0xcc,0x2a,0xda,0xcd,0x3c,0x5a,0x17,0x6f,0xe9,0x18,0xb2,0x97,0xef,
1593+ 0x1c,0x37,0xf7,0x2b,0x26,0x76,0x6c,0x78,0xb2,0xa6,0x05,0xca,0x19,0x78,0xf7,0x8b };
1594+
1595+static const unsigned int primeBitSize = 256;
1596+
1597+static const unsigned int ordWordSize = 8;
1598+static const unsigned int msgWordSize = 8;
1599+static const unsigned int primeWordSize = 8;
1600+
1601+/*! Main function */
1602+int main(void)
1603+{
1604+ /* Internal function status */
1605+ IppStatus status = ippStsNoErr;
1606+
1607+ /* Size of the context of a GF field. It will be set up in ippsGFpGetSize() */
1608+ int GFpBuffSize = 0;
1609+
1610+ /* Size of the context of an elliptic curve field. It will be set up in ippsGFpECGetSize() */
1611+ int GFpECBuffSize = 0;
1612+
1613+ /* Size of the scratch buffer */
1614+ int scratchSize = 0;
1615+
1616+ /* Create integers R and S for the digital signature */
1617+ BigNumber bnR(NULL, ordWordSize, ippBigNumPOS);
1618+ BigNumber bnS(NULL, ordWordSize, ippBigNumPOS);
1619+
1620+ /* Initialize message digest to be digitally signed i.e. encrypted with a private key */
1621+ BigNumber bnMsgDigest((const Ipp32u *)msg_digest, msgWordSize, ippBigNumPOS);
1622+
1623+ /* Initialize regular and ephemeral private keys of the signer */
1624+ BigNumber bnRegPrivate((const Ipp32u *)d, primeWordSize, ippBigNumPOS);
1625+ BigNumber bnEphPrivate((const Ipp32u *)k, primeWordSize, ippBigNumPOS);
1626+
1627+ /* Initialize known digital signatures */
1628+ BigNumber bnRref((const Ipp32u *)r, ordWordSize, ippBigNumPOS);
1629+ BigNumber bnSref((const Ipp32u *)s, ordWordSize, ippBigNumPOS);
1630+
1631+ /* 1. Get the size of the context of a GF field */
1632+ status = ippsGFpGetSize(primeBitSize, &GFpBuffSize);
1633+ if (!checkStatus("ippsGFpGetSize", ippStsNoErr, status))
1634+ return status;
1635+
1636+ /* 2. Allocate memory for the GF field context */
1637+ std::vector<Ipp8u> pGFpBuff(GFpBuffSize);
1638+ IppsGFpState *pGF = (IppsGFpState *)(pGFpBuff.data());
1639+
1640+ /* 3. Initialize the context of a prime finite field GF */
1641+ status = ippsGFpInitFixed(primeBitSize, ippsGFpMethod_p256r1(), pGF);
1642+ if (!checkStatus("ippsGFpInitFixed", ippStsNoErr, status))
1643+ return status;
1644+
1645+ /* 4. Get the size of an elliptic curve over the finite field */
1646+ status = ippsGFpECGetSize(pGF, &GFpECBuffSize);
1647+ if (!checkStatus("ippsGFpECGetSize", ippStsNoErr, status))
1648+ return status;
1649+
1650+ /* 5. Allocate memory for elliptic curve cryptosystem */
1651+ std::vector<Ipp8u> pGFpECBuff(GFpECBuffSize);
1652+ IppsGFpECState *pEC = (IppsGFpECState *)(pGFpECBuff.data());
1653+
1654+ /* 6. Initialize the context for the cryptosystem based on a standard elliptic curve */
1655+ status = ippsGFpECInitStd256r1(pGF, pEC);
1656+ if (!checkStatus("ippsGFpECInitStd256r1", ippStsNoErr, status))
1657+ return status;
1658+
1659+ /* 7. Get the size of the scratch buffer */
1660+ status = ippsGFpECScratchBufferSize(2, pEC, &scratchSize);
1661+ if (!checkStatus("ippsGFpECScratchBufferSize", ippStsNoErr, status))
1662+ return status;
1663+
1664+ /* 8. Allocate memory for the scratch buffer */
1665+ std::vector<Ipp8u> pScratchBuffer(scratchSize);
1666+
1667+ /* 9. Compute the digital signature over the message digest */
1668+ status = ippsGFpECSignDSA(bnMsgDigest, bnRegPrivate, bnEphPrivate,
1669+ bnR, bnS, pEC, pScratchBuffer.data());
1670+ if (!checkStatus("ippsGFpECSignDSA", ippStsNoErr, status))
1671+ return status;
1672+
1673+ bool sigFlagErr;
1674+ /* 10. Validate the generated digest by comparing it to the known one */
1675+ sigFlagErr = (bnR == bnRref);
1676+ sigFlagErr &= (bnS == bnSref);
1677+
1678+ PRINT_EXAMPLE_STATUS("ippsGFpECSignDSA", "ECDSA signature", sigFlagErr)
1679+
1680+ return status;
1681+}
1682diff --git a/examples/examplesBuildOptions.cmake b/examples/examplesBuildOptions.cmake
1683index e3d830a..83e6c19 100644
1684--- a/examples/examplesBuildOptions.cmake
1685+++ b/examples/examplesBuildOptions.cmake
1686@@ -39,7 +39,7 @@ if(WIN32)
1687
1688 set(LINK_FLAG_S_ST_WINDOWS "/nologo /NODEFAULTLIB /VERBOSE:SAFESEH /INCREMENTAL:NO /NXCOMPAT /DYNAMICBASE /SUBSYSTEM:CONSOLE")
1689
1690- ippcp_extend_variable(CMAKE_CXX_FLAGS "/TP /nologo /W3 /EHa /Zm512 /GS")
1691+ ippcp_extend_variable(CMAKE_CXX_FLAGS "/nologo /W3 /EHa /Zm512 /GS")
1692 # Intel compiler-specific option
1693 if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "IntelLLVM")
1694 ippcp_extend_variable(CMAKE_CXX_FLAGS "-nologo -Qfp-speculation:safe -Qfreestanding")
1695@@ -65,7 +65,8 @@ if(UNIX)
1696 ippcp_extend_variable(LINK_FLAG_S_ST_LINUX "-no-pie")
1697 endif()
1698
1699- ippcp_extend_variable(CMAKE_CXX_FLAGS "-D_FORTIFY_SOURCE=2 -Wformat -Wformat-security")
1700+ ippcp_extend_variable(CMAKE_CXX_FLAGS "-Wformat -Wformat-security")
1701+ ippcp_extend_variable(CMAKE_CXX_FLAGS_RELEASE "-D_FORTIFY_SOURCE=2")
1702
1703 if(${ARCH} MATCHES "ia32")
1704 ippcp_extend_variable(LINK_FLAG_S_ST_LINUX "-m32")
1705@@ -110,4 +111,4 @@ macro(ippcp_example_set_build_options target link_libraries)
1706 target_link_libraries(${target} ipgo)
1707 endif()
1708 endif()
1709-endmacro()
1710\ No newline at end of file
1711+endmacro()
1712diff --git a/examples/hash/sm3_hash_rmf.cpp b/examples/hash/sm3_hash_rmf.cpp
1713new file mode 100644
1714index 0000000..5dfb7ea
1715--- /dev/null
1716+++ b/examples/hash/sm3_hash_rmf.cpp
1717@@ -0,0 +1,103 @@
1718+/*************************************************************************
1719+* Copyright (C) 2024 Intel Corporation
1720+*
1721+* Licensed under the Apache License, Version 2.0 (the "License");
1722+* you may not use this file except in compliance with the License.
1723+* You may obtain a copy of the License at
1724+*
1725+* http://www.apache.org/licenses/LICENSE-2.0
1726+*
1727+* Unless required by applicable law or agreed to in writing, software
1728+* distributed under the License is distributed on an "AS IS" BASIS,
1729+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1730+* See the License for the specific language governing permissions and
1731+* limitations under the License.
1732+*************************************************************************/
1733+
1734+/*!
1735+ *
1736+ * \file
1737+ *
1738+ * \brief SM3 Hash example
1739+ *
1740+ * This example demonstrates usage of Hash algorithms to digest a message by
1741+ * using SM3 standard.
1742+ * Reduce Memory Footprint (_rmf) APIs are used in this example.
1743+ *
1744+ */
1745+
1746+#include <string.h>
1747+#include <vector>
1748+
1749+#include "ippcp.h"
1750+#include "examples_common.h"
1751+
1752+/*! Message text */
1753+const Ipp8u msg[] = "abc";
1754+
1755+/*! Known digest to check the results */
1756+const
1757+Ipp8u sm3[] = "\x66\xc7\xf0\xf4\x62\xee\xed\xd9\xd1\xf2\xd4\x6b\xdc\x10\xe4\xe2"
1758+ "\x41\x67\xc4\x87\x5c\xf2\xf7\xa2\x29\x7d\xa0\x2b\x8f\x4b\xa8\xe0";
1759+
1760+/*! Message size in bytes */
1761+const int msg_byte_len = sizeof(msg)-1;
1762+
1763+int main(void)
1764+{
1765+ /*! Internal function status */
1766+ IppStatus status = ippStsNoErr;
1767+
1768+ /*! 1. Get the hash methods which is used */
1769+ const IppsHashMethod* hash_method = ippsHashMethod_SM3();
1770+
1771+ /*! The digest size of the SM3 standard */
1772+ Ipp32u hash_size = IPP_SM3_DIGEST_BYTESIZE;
1773+
1774+ /*! The size of the SM3 hash context structure. It will be set up in ippsHashGetSize_rmf(). */
1775+ int context_size = 0;
1776+
1777+ /*! 2. Get the size needed for the SM3 hash context structure */
1778+ status = ippsHashGetSize_rmf(&context_size);
1779+ if (!checkStatus("ippsHashGetSize", ippStsNoErr, status)) {
1780+ return status;
1781+ }
1782+
1783+ /*! 3. Allocate memory for the SM3 hash context structure */
1784+ std::vector<Ipp8u> context_buffer(context_size);
1785+
1786+ /*! 4. Buffers for the digest and the tag */
1787+ Ipp8u output_hash_buffer[IPP_SM3_DIGEST_BYTESIZE];
1788+
1789+ IppsHashState_rmf* hash_state = (IppsHashState_rmf*)(context_buffer.data());
1790+
1791+ /*! 5. Initialize the initial SM3 hash context */
1792+ status = ippsHashInit_rmf(hash_state, hash_method);
1793+ if (!checkStatus("ippsHashInit", ippStsNoErr, status)) {
1794+ return status;
1795+ }
1796+
1797+ /*! 6. Call HashUpdate function to digest the message of the given length */
1798+ /*! This function can be called multiple times for a stream of messages */
1799+ status = ippsHashUpdate_rmf(msg, msg_byte_len, hash_state);
1800+ if (!checkStatus("ippsHashUpdate", ippStsNoErr, status)) {
1801+ return status;
1802+ }
1803+
1804+ /*! 7. Complete the computation of the digest value */
1805+ status = ippsHashFinal_rmf(output_hash_buffer, hash_state);
1806+ if (!checkStatus("ippsHashFinal", ippStsNoErr, status)) {
1807+ return status;
1808+ }
1809+
1810+ /*! 8. Verify the resulted digest with the known one */
1811+ int check = memcmp(output_hash_buffer, sm3, hash_size);
1812+ if(check != 0) {
1813+ printf("ERROR: Hash and the reference do not match\n");
1814+ status = -1;
1815+ }
1816+
1817+ PRINT_EXAMPLE_STATUS("ippsHashUpdate_rmf", "SM3 Hash", !status)
1818+
1819+ return status;
1820+}
1821diff --git a/examples/post-quantum/lms_m32_h5_w8_verification.cpp b/examples/post-quantum/lms_m32_h5_w8_verification.cpp
1822new file mode 100644
1823index 0000000..2261f6b
1824--- /dev/null
1825+++ b/examples/post-quantum/lms_m32_h5_w8_verification.cpp
1826@@ -0,0 +1,213 @@
1827+/*************************************************************************
1828+* Copyright (C) 2024 Intel Corporation
1829+*
1830+* Licensed under the Apache License, Version 2.0 (the "License");
1831+* you may not use this file except in compliance with the License.
1832+* You may obtain a copy of the License at
1833+*
1834+* http://www.apache.org/licenses/LICENSE-2.0
1835+*
1836+* Unless required by applicable law or agreed to in writing, software
1837+* distributed under the License is distributed on an "AS IS" BASIS,
1838+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1839+* See the License for the specific language governing permissions and
1840+* limitations under the License.
1841+*************************************************************************/
1842+
1843+/*!
1844+ *
1845+ * \file
1846+ *
1847+ * \brief Leighton-Micali Hash-Based Signatures (LMS) example
1848+ *
1849+ * This example demonstrates usage of LMS signatures verification.
1850+ *
1851+ * The LMS algorithm is implemented according to the
1852+ * "Leighton-Micali Hash-Based Signatures" document:
1853+ *
1854+ * https://datatracker.ietf.org/doc/html/rfc8554
1855+ *
1856+ */
1857+
1858+/*! Define the macro to enable LMS usage */
1859+#define IPPCP_PREVIEW_LMS
1860+
1861+#include <memory>
1862+
1863+#include "ippcp.h"
1864+#include "examples_common.h"
1865+
1866+
1867+/*! Algorithm ID for LMS */
1868+IppsLMSAlgo lmsAlgo = IppsLMSAlgo::LMS_SHA256_M32_H5; //0x00000005
1869+
1870+/*! Algorithm ID for OTS (one-time signature) */
1871+IppsLMOTSAlgo lmotsAlgo = IppsLMOTSAlgo::LMOTS_SHA256_N32_W8; //0x00000004
1872+
1873+/*! Index of the LMS leaf */
1874+static Ipp32u q = 0x00000009;
1875+
1876+/*! Pointer to the LMS private key identifier */
1877+static Ipp8u pI[] = { 0x05,0xbd,0x3d,0x90,0xcc,0xa2,0x47,0x08,0xe4,0x20,0x55,0x3e,0x5a,0xf7,0xb9,0xc8 };
1878+
1879+/*! Pointer to the LMS public key */
1880+static Ipp8u pK[] = { 0x21,0xf9,0xd9,0x09,0x97,0x11,0xef,0x5b,0x14,0x50,0x0b,0x6a,0x18,0x1e,0x73,0x9e,
1881+ 0xd3,0x12,0x74,0xdb,0x72,0xac,0xe7,0xcf,0x29,0x32,0x9a,0x45,0xe8,0xde,0x11,0xfe };
1882+
1883+/*! Message */
1884+static Ipp8u pMsg[] = { 0x04,0x3d,0x64,0x00,0x10,0x3b,0x16,0x0c,0xf1,0x89,0xb4,0xcf,0xff,0x08,0x06,0xfe,
1885+ 0xe3,0xe1,0x56,0x7f,0x2c,0x31,0x71,0x0f,0x82,0x84,0x52,0x74,0xf6,0xed,0x23,0x8e,
1886+ 0x14,0xde,0x4d,0x53,0x99,0x86,0x88,0x99,0xab,0x6b,0xcf,0x00,0x98,0x08,0xb8,0xca,
1887+ 0x30,0x81,0xed,0x11,0xaa,0x70,0x35,0x52,0x90,0xfd,0x86,0x98,0xd4,0xc1,0x77,0xc1,
1888+ 0x89,0x4c,0xd8,0xb8,0xd3,0x36,0x7f,0xd0,0xf3,0x00,0xef,0x62,0x83,0x02,0x0d,0x09,
1889+ 0x1c,0x27,0x35,0x6d,0xaf,0xad,0xdb,0xed,0x96,0x21,0x8a,0x19,0x56,0x7b,0x99,0x9a,
1890+ 0xcd,0x53,0x02,0xa5,0x11,0xd4,0xf1,0x65,0xef,0x9c,0xbe,0x85,0x5d,0xcc,0x73,0x1b,
1891+ 0x16,0xdd,0x13,0x6e,0x5c,0x44,0x15,0x8b,0xf1,0xe9,0x8c,0xc5,0x9c,0x6f,0x6c,0xb2 };
1892+
1893+/*! Pointer to the C LM-OTS value */
1894+static Ipp8u pC[] = { 0x67,0x79,0x57,0x17,0x51,0x05,0x2c,0xe8,0xfe,0xe9,0x23,0xda,0x26,0xef,0x27,0x1e,
1895+ 0x62,0xbe,0x08,0x43,0xaa,0xdf,0x7c,0x69,0x19,0x68,0x43,0x32,0x8c,0xb0,0x4e,0x3d };
1896+
1897+/*! Pointer to the y LM-OTS value */
1898+static Ipp8u pY[] = { 0x57,0x71,0xa7,0x12,0x2b,0x87,0xf2,0xbd,0x61,0x11,0x9c,0xd4,0x20,0x56,0xec,0x04,
1899+ 0xc0,0x60,0xbe,0x2a,0xe2,0xc2,0xd6,0x72,0xa8,0x1f,0x1a,0x4a,0x6a,0x76,0xc2,0x4c,
1900+ 0x01,0xa0,0x69,0x63,0x7f,0x85,0xdd,0xb4,0x5d,0x8d,0x19,0xd7,0xef,0x7c,0xc8,0x9a,
1901+ 0x47,0xfe,0x1e,0x79,0xfd,0x80,0x65,0x51,0x17,0xed,0xb6,0x3f,0x17,0xd0,0xb6,0xcc,
1902+ 0x0f,0xca,0xa9,0x28,0xc2,0xef,0x1e,0x41,0x4e,0xf7,0x34,0xa8,0xda,0xfe,0xbc,0x82,
1903+ 0xdb,0x33,0x3e,0x03,0xba,0x51,0x40,0x6e,0x07,0x6b,0xfc,0x2d,0x3e,0x81,0x30,0x09,
1904+ 0xd9,0x68,0xa8,0x71,0x00,0xf0,0x33,0xcf,0x0b,0x57,0x04,0xfc,0x4e,0x61,0x8a,0xa5,
1905+ 0x80,0xa1,0xe0,0x48,0xef,0xc3,0xd5,0x6e,0xe7,0xa2,0xea,0x02,0x14,0xa6,0xfe,0x1f,
1906+ 0x39,0xa4,0xf2,0xfb,0x61,0x2f,0x44,0xbe,0xde,0xd3,0x73,0x34,0x0e,0x76,0x48,0x27,
1907+ 0xc5,0xc5,0x8c,0xb9,0x07,0xcd,0x08,0xdd,0xfb,0xde,0x01,0xbb,0x11,0xff,0x3a,0x89,
1908+ 0xff,0xaa,0xd8,0xcd,0x7c,0x17,0x02,0x71,0x08,0x3c,0xe5,0x0f,0x0f,0xb9,0xea,0xbb,
1909+ 0xa8,0x9d,0xb6,0x0b,0x00,0x73,0xe7,0xaf,0xc8,0x1e,0x4c,0x6f,0x82,0x4a,0xef,0x09,
1910+ 0xf8,0xbf,0xc9,0x49,0x67,0x16,0x9b,0xcf,0xa0,0x84,0x76,0x55,0x57,0x41,0x10,0x19,
1911+ 0x37,0x0b,0x29,0xba,0x0d,0x32,0xa8,0x8e,0x84,0x2c,0x19,0xdf,0x14,0x5a,0x69,0x36,
1912+ 0x8d,0xf7,0xe1,0x55,0x7d,0x93,0x7a,0xae,0xdb,0x07,0xf6,0xbc,0xda,0xf9,0x78,0xeb,
1913+ 0x9e,0x50,0xf3,0xc8,0x47,0x38,0x2a,0xd4,0x3b,0xfc,0xc0,0xe0,0xd0,0xbf,0xd8,0x60,
1914+ 0x46,0x63,0xc7,0xfb,0xa8,0x84,0x45,0x4d,0x23,0x98,0x96,0xd8,0xff,0x8a,0x99,0xa3,
1915+ 0x34,0xf0,0xd3,0x32,0x22,0xaa,0x15,0xbd,0x47,0x9f,0xcd,0x49,0x52,0x0b,0x5b,0x2d,
1916+ 0x83,0xd8,0xbf,0x4d,0xbd,0x3d,0x7e,0x9d,0xc8,0x0b,0x62,0x0c,0xc7,0x03,0x45,0x7f,
1917+ 0x55,0x90,0x35,0xdd,0x1f,0x53,0xdc,0xec,0x0b,0x4d,0x89,0xca,0xb1,0xa3,0xb8,0x87,
1918+ 0x7b,0x31,0x1c,0x24,0x90,0x44,0x9d,0xf7,0xa6,0x1c,0xf8,0xed,0xf3,0x29,0xd6,0x96,
1919+ 0x26,0xca,0x42,0x4b,0xdf,0x61,0x00,0x91,0x92,0x08,0x37,0x76,0xbb,0x96,0x9e,0xd5,
1920+ 0x8d,0x76,0xa9,0x52,0x40,0xdb,0x3f,0xd6,0xec,0xa0,0x06,0x89,0x88,0x11,0x18,0x38,
1921+ 0xae,0xcb,0xa0,0x71,0xab,0x3b,0x7b,0xe0,0x94,0x30,0x59,0x38,0xaf,0xb0,0x8c,0xdd,
1922+ 0xf9,0xcd,0xaf,0x82,0x49,0x90,0x29,0xf6,0x24,0x9a,0xa5,0x51,0x1b,0x99,0x45,0x64,
1923+ 0x13,0x94,0x9e,0x3e,0x4e,0x43,0x40,0x73,0x0d,0x68,0x0b,0x68,0xde,0xb5,0xc9,0xd5,
1924+ 0xce,0xef,0x7b,0x8b,0x1e,0xd9,0x7e,0xc8,0xa1,0x69,0xb5,0x2b,0xd0,0x54,0xb0,0x53,
1925+ 0x41,0x9f,0xfa,0x77,0x34,0x55,0xcd,0xf4,0x79,0xa6,0x0d,0x3c,0xc7,0x05,0xd8,0xf2,
1926+ 0x08,0x48,0x32,0xb7,0x96,0x22,0xb6,0xe5,0xac,0x83,0x06,0xa7,0x68,0x3f,0xea,0x03,
1927+ 0xcd,0x79,0xe8,0xff,0x54,0xe2,0xf5,0xa0,0x6b,0x69,0xc1,0xca,0xb3,0xd4,0x2b,0x60,
1928+ 0xa8,0xa8,0xbe,0xcb,0x9e,0x94,0x2e,0xf1,0xfc,0xd7,0x55,0xac,0x08,0xd7,0xc4,0x22,
1929+ 0x4f,0xf3,0xf5,0xbf,0x49,0xb8,0xf7,0x5f,0xae,0x60,0x92,0xe4,0x3a,0x8f,0x30,0x35,
1930+ 0x41,0x8c,0xd4,0x03,0x31,0x6c,0x08,0xa8,0x08,0x37,0xb4,0x6c,0x22,0xca,0xa2,0xf7,
1931+ 0xff,0xc1,0x62,0x49,0xcd,0x5c,0x17,0x25,0xc5,0x4e,0xaa,0x26,0xb9,0xd7,0x72,0xf9,
1932+ 0x61,0x21,0xbf,0x95,0xda,0xcf,0x30,0x1d,0x42,0x8c,0x9d,0xf4,0x57,0x36,0x25,0xb7,
1933+ 0xfb,0xfa,0x64,0xba,0x7f,0x3e,0x0d,0x5a,0x72,0xa7,0x8d,0x13,0xf6,0x2d,0x57,0x76,
1934+ 0xa4,0x61,0x59,0x9d,0x4d,0xd5,0x99,0x0e,0xae,0x73,0x6b,0x6a,0xf1,0x64,0x93,0xf1,
1935+ 0xa7,0xd0,0xe4,0x4f,0x2b,0x71,0xd9,0x6e,0x0e,0x89,0x28,0x5a,0xec,0xc1,0x15,0x50,
1936+ 0x81,0x21,0x6c,0xe0,0xba,0xbb,0xce,0x4f,0x4e,0x0b,0x80,0xa1,0x92,0x6a,0xea,0x6a,
1937+ 0xcb,0x3e,0xa3,0xcb,0x7a,0x23,0x61,0x5d,0x41,0x08,0xba,0xf4,0x51,0x9b,0xf7,0x10,
1938+ 0x27,0x0e,0x89,0x6b,0x42,0xc5,0x5c,0x3c,0x9e,0x60,0x42,0x43,0x29,0xbf,0xbc,0x8a,
1939+ 0xd5,0x9f,0x4c,0xa2,0x0b,0x5e,0xbb,0xa4,0x93,0xe0,0xb3,0x9d,0xb9,0x7e,0xc7,0x9b,
1940+ 0x36,0x2a,0xc7,0x21,0x5e,0x25,0x5d,0xeb,0x74,0x68,0xfd,0xf4,0x0e,0x0f,0x39,0x0c,
1941+ 0x65,0x0c,0x66,0x51,0x0c,0xf4,0xad,0x9c,0x44,0x94,0x34,0xae,0x25,0x8b,0x56,0x1e,
1942+ 0x8e,0xc1,0x57,0x29,0xa6,0x90,0x62,0xb8,0xb2,0x8d,0x6c,0x79,0xf4,0x90,0x64,0xd2,
1943+ 0x4a,0x52,0xe9,0x15,0x95,0xc9,0x3f,0x83,0xc4,0x0f,0xec,0xa2,0x11,0xe2,0x8b,0x50,
1944+ 0x1f,0x13,0xcc,0x80,0x2f,0x0b,0x36,0x35,0x2c,0x85,0x41,0x79,0xd2,0xce,0x46,0x12,
1945+ 0xc7,0xf0,0xd3,0x96,0x04,0x4d,0x1c,0x69,0x4f,0x8f,0xe3,0xa0,0x1c,0xe2,0xa8,0x8c,
1946+ 0xe8,0xd1,0x74,0xca,0x66,0x99,0x1b,0x9d,0x6c,0x50,0x72,0xf2,0xd2,0x01,0x60,0xdf,
1947+ 0x74,0x81,0xaf,0xbd,0x7a,0xc9,0xd2,0xf7,0x5a,0x7d,0xfe,0x36,0x9c,0x61,0xed,0xc9,
1948+ 0xfb,0x27,0xbb,0xa3,0xd8,0x71,0x3c,0x57,0x5d,0xdd,0xab,0xcc,0x27,0xc6,0xb9,0x42,
1949+ 0x9b,0xcb,0x7e,0xec,0xf8,0x53,0x2e,0xf0,0xf4,0xc9,0x46,0x46,0xd8,0x94,0xd6,0xf7,
1950+ 0x8d,0x64,0xd7,0xba,0xb1,0x39,0x8e,0x7f,0xef,0xfd,0xb0,0xb0,0x31,0x4f,0x43,0x0f,
1951+ 0xec,0xa8,0x70,0x57,0x3a,0xe3,0x88,0xbc,0xa7,0xd9,0xf9,0x39,0xa4,0xb9,0x91,0x59,
1952+ 0xc7,0xbf,0xec,0x78,0xa9,0xce,0x33,0x99,0xf3,0x83,0xfa,0xaf,0x59,0xab,0x65,0xc6,
1953+ 0xe2,0xaa,0x30,0x08,0xd7,0x99,0x71,0x65,0xf1,0xb6,0xfc,0x4f,0xf1,0x68,0xa2,0xd8,
1954+ 0x61,0x8a,0xe5,0x0f,0x2b,0x60,0xda,0x8d,0xea,0x7e,0xf6,0x2c,0xae,0xeb,0x26,0xae,
1955+ 0x29,0x5d,0xab,0xc7,0x3f,0x27,0x2c,0x51,0xf1,0x3f,0x22,0x22,0xef,0x52,0x4e,0xcb,
1956+ 0x70,0xd8,0xba,0x41,0x53,0xb4,0xd9,0xdd,0xdc,0xe8,0xcd,0x7f,0xc1,0xb8,0x2b,0x8e,
1957+ 0x3b,0x3b,0x86,0xd7,0x4c,0x36,0x69,0xf6,0x31,0xcf,0x37,0xbd,0x16,0xe9,0x2f,0x4f,
1958+ 0xf9,0x13,0x19,0xf2,0x3b,0x41,0x1c,0x78,0x62,0x9c,0x5f,0x95,0xab,0xdd,0x17,0xe7,
1959+ 0x2e,0x8f,0x92,0x79,0xe0,0xeb,0xe0,0x49,0x58,0x6d,0x3c,0x26,0xb8,0x5c,0x93,0xb9,
1960+ 0xd7,0x6e,0xca,0x28,0x70,0x9c,0xbe,0xef,0x08,0x4e,0xe2,0x20,0x3a,0xdb,0x92,0x0b,
1961+ 0x29,0x2f,0xfd,0xc8,0x3a,0x4a,0x7c,0xa4,0x87,0x6f,0x33,0x8d,0x8e,0x7f,0x51,0x6f,
1962+ 0xab,0x11,0x42,0xc3,0x75,0xed,0x69,0xb1,0xf1,0x32,0xd8,0xd8,0xe2,0xc2,0x0d,0x52,
1963+ 0x21,0xad,0x97,0x05,0x60,0x1d,0x43,0x52,0x4c,0xb1,0x61,0x49,0xef,0x2c,0xc1,0xad,
1964+ 0x4c,0x0c,0xe7,0x1b,0x81,0xc6,0x2f,0x47,0xe2,0xb0,0xe6,0x6c,0xb8,0xd0,0x2d,0xe4,
1965+ 0x46,0xd2,0x0a,0x13,0xab,0xb3,0xb9,0x13,0x9e,0x41,0xba,0x06,0x2d,0x11,0xe4,0xe6 };
1966+
1967+/*! Pointer to the LMS authorization path */
1968+static Ipp8u pAuthPath[] = { 0xc7,0x14,0x06,0x72,0xbf,0x82,0x00,0x91,0xe3,0xd5,0xd6,0x4c,0x2a,0x71,0x21,0x83,
1969+ 0x3b,0xea,0xb1,0x16,0x74,0xd8,0xae,0x4e,0xe3,0x15,0xe7,0x85,0x4d,0xa7,0xa1,0x00,
1970+ 0x4b,0x2b,0x7b,0xc6,0xad,0x89,0xa8,0x6c,0xe8,0xf6,0x60,0x22,0x19,0xb9,0xc3,0x37,
1971+ 0x5b,0xca,0x93,0xf1,0x0e,0xa3,0x2f,0x10,0xfb,0x2f,0x39,0x21,0x1c,0x33,0x78,0xb7,
1972+ 0x89,0x0f,0x77,0x18,0xe8,0x73,0x04,0x54,0x71,0x08,0x0b,0x86,0x94,0x9e,0xc7,0x55,
1973+ 0x25,0xb9,0x4a,0xe1,0xbb,0x45,0x06,0x00,0x66,0xdf,0x75,0x17,0x8b,0x0d,0xc3,0xa6,
1974+ 0x65,0x9a,0x5e,0xc7,0x5d,0xe5,0xc1,0x29,0x1f,0x5f,0xfc,0xcb,0x89,0x84,0x5c,0xfb,
1975+ 0x7a,0x81,0xe2,0x54,0x05,0xd1,0x90,0xe3,0x7d,0xe4,0x3c,0x9f,0xe2,0xdc,0xd3,0xfd,
1976+ 0x7e,0x6e,0x72,0xfa,0xc7,0xbe,0xcb,0xd5,0xd0,0x1e,0xc4,0xae,0x48,0x9a,0x92,0x45,
1977+ 0xc3,0xc2,0xc1,0x06,0x91,0xbe,0x15,0x1f,0xa6,0xa1,0x87,0xbb,0x7c,0x68,0x7b,0xb8 };
1978+
1979+int main(void)
1980+{
1981+ /* Internal function status */
1982+ IppStatus status = ippStsNoErr;
1983+
1984+ /* Deleter to use in unique_ptr to clean the memory during the object's destruction */
1985+ auto toIpp8uDeleter = [] (auto* pData) { delete[] (Ipp8u*)pData; };
1986+
1987+ const Ipp32s msgLen = sizeof(pMsg);
1988+
1989+ /* Create an algorithm ID to put into the ippsLMS functions */
1990+ const IppsLMSAlgoType lmsAlgTypePk = { lmotsAlgo, lmsAlgo };
1991+
1992+ /* 1. Get the scratch buffer size */
1993+ int buffSize;
1994+ status = ippsLMSBufferGetSize(&buffSize, msgLen, lmsAlgTypePk);
1995+ if (!checkStatus("ippsLMSBufferGetSize", ippStsNoErr, status))
1996+ return status;
1997+ /* 2. Allocate memory for the scratch buffer */
1998+ std::unique_ptr<Ipp8u> pScratchBuffer(new Ipp8u[buffSize]);
1999+
2000+ /* 3. Get the LMS public key state size */
2001+ int ippcpPubKeySize;
2002+ status = ippsLMSPublicKeyStateGetSize(&ippcpPubKeySize, lmsAlgTypePk);
2003+ if (!checkStatus("ippsLMSPublicKeyStateGetSize", ippStsNoErr, status))
2004+ return status;
2005+
2006+ /* 4. Allocate memory for the LMS public key state */
2007+ std::unique_ptr<IppsLMSPublicKeyState, decltype(toIpp8uDeleter)>
2008+ pPubKey((IppsLMSPublicKeyState *)(new Ipp8u[ippcpPubKeySize]), toIpp8uDeleter);
2009+
2010+ /* 5. Set the LMS public key */
2011+ status = ippsLMSSetPublicKeyState(lmsAlgTypePk, pI, pK, pPubKey.get());
2012+ if (!checkStatus("ippsLMSSetPublicKeyState", ippStsNoErr, status))
2013+ return status;
2014+
2015+ /* 6. Get the LMS signature state size */
2016+ int sigBuffSize;
2017+ status = ippsLMSSignatureStateGetSize(&sigBuffSize, lmsAlgTypePk);
2018+ if (!checkStatus("ippsLMSSignatureStateGetSize", ippStsNoErr, status))
2019+ return status;
2020+
2021+ /* 7. Allocate memory for the LMS signature buffer */
2022+ std::unique_ptr<IppsLMSSignatureState, decltype(toIpp8uDeleter)>
2023+ pSignature((IppsLMSSignatureState *)(new Ipp8u[sigBuffSize]), toIpp8uDeleter);
2024+
2025+ /* 8. Set the LMS signature */
2026+ status = ippsLMSSetSignatureState(lmsAlgTypePk, q, pC, pY, pAuthPath, pSignature.get());
2027+ if (!checkStatus("ippsLMSSetSignatureState", ippStsNoErr, status))
2028+ return status;
2029+
2030+ int is_valid = 0;
2031+ /* 9. Verify the LMS signature */
2032+ status = ippsLMSVerify(pMsg, msgLen, pSignature.get(), &is_valid, pPubKey.get(), pScratchBuffer.get());
2033+ if (!checkStatus("ippsLMSVerify", ippStsNoErr, status))
2034+ return status;
2035+
2036+ PRINT_EXAMPLE_STATUS("ippsLMSVerify", "LMS Verification", 1 == is_valid);
2037+
2038+ return status;
2039+}
2040diff --git a/examples/utils/examples_common.h b/examples/utils/examples_common.h
2041index adbbff0..c0f230c 100644
2042--- a/examples/utils/examples_common.h
2043+++ b/examples/utils/examples_common.h
2044@@ -14,12 +14,12 @@
2045 * limitations under the License.
2046 *************************************************************************/
2047
2048-/* Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) */
2049+/* Intel® Cryptography Primitives Library */
2050
2051 /*!
2052 *
2053 * \file
2054- * \brief Common header for Intel IPP Cryptography examples
2055+ * \brief Common header for Intel Cryptography Primitives Library examples
2056 *
2057 */
2058
2059diff --git a/include/ippcp.h b/include/ippcp.h
2060index f5cb74e..fc36e87 100644
2061--- a/include/ippcp.h
2062+++ b/include/ippcp.h
2063@@ -16,7 +16,7 @@
2064
2065 /*
2066 //
2067-// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2068+// Intel® Cryptography Primitives Library
2069 //
2070 */
2071
2072@@ -48,16 +48,20 @@ extern "C" {
2073 #endif
2074
2075 /* /////////////////////////////////////////////////////////////////////////////
2076-// Name: ippcpGetLibVersion
2077+// Name: ippcpGetLibVersion / CryptoLibraryVersion
2078 // Purpose: getting of the library version
2079-// Returns: the structure of information about version of ippCP library
2080+// Returns: the structure of information about version of Intel Cryptography Primitives Library
2081 // Parameters:
2082 //
2083 // Notes: not necessary to release the returned structure
2084 */
2085-IPPAPI( const IppLibraryVersion*, ippcpGetLibVersion, (void) )
2086+#define LIB_VERSION_DEPRECATED "ippcpGetLibVersion API is deprecated and will be removed in one of future Intel® Cryptography Primitives Library releases. \
2087+Please use cryptoGetLibVersion instead."
2088
2089+IPP_DEPRECATED(LIB_VERSION_DEPRECATED) \
2090+IPPAPI( const IppLibraryVersion*, ippcpGetLibVersion, (void) )
2091
2092+IPPAPI( const CryptoLibraryVersion*, cryptoGetLibVersion, (void) )
2093 /*
2094 // =========================================================
2095 // Symmetric Ciphers
2096@@ -370,7 +374,7 @@ IPPAPI(IppStatus, ippsAES_CMACGetTag,(Ipp8u* pMD, int mdLen, const IppsAES_CMACS
2097 */
2098
2099 #define RC4_DEPRECATED "is deprecated. This algorithm is considered weak due to known attacks on it. \
2100-It is obsolete and will be removed in one of the future Intel IPP Cryptography releases."
2101+It is obsolete and will be removed in one of the future Intel Cryptography Primitives Library releases."
2102
2103 IPP_DEPRECATED(RC4_DEPRECATED) \
2104 IPPAPI(IppStatus, ippsARCFourCheckKey, (const Ipp8u *pKey, int keyLen, IppBool* pIsWeak))
2105@@ -399,172 +403,14 @@ IPPAPI(IppStatus, ippsARCFourDecrypt, (const Ipp8u *pSrc, Ipp8u *pDst, int lengt
2106 // =========================================================
2107 */
2108
2109-#define OBSOLETE_API "is deprecated. This API is considered obsolete and will be removed in one of future Intel IPP Cryptography releases. \
2110-Use the following link for opening a ticket and providing feedback: https://supporttickets.intel.com/ if you have concerns."
2111-
2112 #define SHA1_DEPRECATED "This algorithm is considered weak due to known attacks on it. \
2113 The functionality remains in the library, but the implementation will no be longer \
2114 optimized and no security patches will be applied. A more secure alternative is available: SHA-2"
2115
2116-/* SHA1 Hash Primitives */
2117-IPP_DEPRECATED(SHA1_DEPRECATED) \
2118-IPPAPI(IppStatus, ippsSHA1GetSize,(int* pSize))
2119-IPP_DEPRECATED(SHA1_DEPRECATED) \
2120-IPPAPI(IppStatus, ippsSHA1Init,(IppsSHA1State* pState))
2121-IPP_DEPRECATED(SHA1_DEPRECATED) \
2122-IPPAPI(IppStatus, ippsSHA1Duplicate,(const IppsSHA1State* pSrcState, IppsSHA1State* pDstState))
2123-
2124-IPP_DEPRECATED(SHA1_DEPRECATED) \
2125-IPPAPI(IppStatus, ippsSHA1Pack,(const IppsSHA1State* pState, Ipp8u* pBuffer))
2126-IPP_DEPRECATED(SHA1_DEPRECATED) \
2127-IPPAPI(IppStatus, ippsSHA1Unpack,(const Ipp8u* pBuffer, IppsSHA1State* pState))
2128-
2129-IPP_DEPRECATED(SHA1_DEPRECATED) \
2130-IPPAPI(IppStatus, ippsSHA1Update,(const Ipp8u* pSrc, int len, IppsSHA1State* pState))
2131-IPP_DEPRECATED(SHA1_DEPRECATED) \
2132-IPPAPI(IppStatus, ippsSHA1GetTag,(Ipp8u* pTag, Ipp32u tagLen, const IppsSHA1State* pState))
2133-IPP_DEPRECATED(SHA1_DEPRECATED) \
2134-IPPAPI(IppStatus, ippsSHA1Final,(Ipp8u* pMD, IppsSHA1State* pState))
2135-IPP_DEPRECATED(SHA1_DEPRECATED) \
2136-IPPAPI(IppStatus, ippsSHA1MessageDigest,(const Ipp8u* pMsg, int len, Ipp8u* pMD))
2137-
2138-/* SHA224 Hash Primitives */
2139-IPP_DEPRECATED(OBSOLETE_API) \
2140-IPPAPI(IppStatus, ippsSHA224GetSize,(int* pSize))
2141-IPP_DEPRECATED(OBSOLETE_API) \
2142-IPPAPI(IppStatus, ippsSHA224Init,(IppsSHA224State* pState))
2143-IPP_DEPRECATED(OBSOLETE_API) \
2144-IPPAPI(IppStatus, ippsSHA224Duplicate,(const IppsSHA224State* pSrcState, IppsSHA224State* pDstState))
2145-
2146-IPP_DEPRECATED(OBSOLETE_API) \
2147-IPPAPI(IppStatus, ippsSHA224Pack,(const IppsSHA224State* pState, Ipp8u* pBuffer))
2148-IPP_DEPRECATED(OBSOLETE_API) \
2149-IPPAPI(IppStatus, ippsSHA224Unpack,(const Ipp8u* pBuffer, IppsSHA224State* pState))
2150-
2151-IPP_DEPRECATED(OBSOLETE_API) \
2152-IPPAPI(IppStatus, ippsSHA224Update,(const Ipp8u* pSrc, int len, IppsSHA224State* pState))
2153-IPP_DEPRECATED(OBSOLETE_API) \
2154-IPPAPI(IppStatus, ippsSHA224GetTag,(Ipp8u* pTag, Ipp32u tagLen, const IppsSHA224State* pState))
2155-IPP_DEPRECATED(OBSOLETE_API) \
2156-IPPAPI(IppStatus, ippsSHA224Final,(Ipp8u* pMD, IppsSHA224State* pState))
2157-IPP_DEPRECATED(OBSOLETE_API) \
2158-IPPAPI(IppStatus, ippsSHA224MessageDigest,(const Ipp8u* pMsg, int len, Ipp8u* pMD))
2159-
2160-/* SHA256 Hash Primitives */
2161-IPP_DEPRECATED(OBSOLETE_API) \
2162-IPPAPI(IppStatus, ippsSHA256GetSize,(int* pSize))
2163-IPP_DEPRECATED(OBSOLETE_API) \
2164-IPPAPI(IppStatus, ippsSHA256Init,(IppsSHA256State* pState))
2165-IPP_DEPRECATED(OBSOLETE_API) \
2166-IPPAPI(IppStatus, ippsSHA256Duplicate,(const IppsSHA256State* pSrcState, IppsSHA256State* pDstState))
2167-
2168-IPP_DEPRECATED(OBSOLETE_API) \
2169-IPPAPI(IppStatus, ippsSHA256Pack,(const IppsSHA256State* pState, Ipp8u* pBuffer))
2170-IPP_DEPRECATED(OBSOLETE_API) \
2171-IPPAPI(IppStatus, ippsSHA256Unpack,(const Ipp8u* pBuffer, IppsSHA256State* pState))
2172-
2173-IPP_DEPRECATED(OBSOLETE_API) \
2174-IPPAPI(IppStatus, ippsSHA256Update,(const Ipp8u* pSrc, int len, IppsSHA256State* pState))
2175-IPP_DEPRECATED(OBSOLETE_API) \
2176-IPPAPI(IppStatus, ippsSHA256GetTag,(Ipp8u* pTag, Ipp32u tagLen, const IppsSHA256State* pState))
2177-IPP_DEPRECATED(OBSOLETE_API) \
2178-IPPAPI(IppStatus, ippsSHA256Final,(Ipp8u* pMD, IppsSHA256State* pState))
2179-IPP_DEPRECATED(OBSOLETE_API) \
2180-IPPAPI(IppStatus, ippsSHA256MessageDigest,(const Ipp8u* pMsg, int len, Ipp8u* pMD))
2181-
2182-/* SHA384 Hash Primitives */
2183-IPP_DEPRECATED(OBSOLETE_API) \
2184-IPPAPI(IppStatus, ippsSHA384GetSize,(int* pSize))
2185-IPP_DEPRECATED(OBSOLETE_API) \
2186-IPPAPI(IppStatus, ippsSHA384Init,(IppsSHA384State* pState))
2187-IPP_DEPRECATED(OBSOLETE_API) \
2188-IPPAPI(IppStatus, ippsSHA384Duplicate,(const IppsSHA384State* pSrcState, IppsSHA384State* pDstState))
2189-
2190-IPP_DEPRECATED(OBSOLETE_API) \
2191-IPPAPI(IppStatus, ippsSHA384Pack,(const IppsSHA384State* pState, Ipp8u* pBuffer))
2192-IPP_DEPRECATED(OBSOLETE_API) \
2193-IPPAPI(IppStatus, ippsSHA384Unpack,(const Ipp8u* pBuffer, IppsSHA384State* pState))
2194-
2195-IPP_DEPRECATED(OBSOLETE_API) \
2196-IPPAPI(IppStatus, ippsSHA384Update,(const Ipp8u* pSrc, int len, IppsSHA384State* pState))
2197-IPP_DEPRECATED(OBSOLETE_API) \
2198-IPPAPI(IppStatus, ippsSHA384GetTag,(Ipp8u* pTag, Ipp32u tagLen, const IppsSHA384State* pState))
2199-IPP_DEPRECATED(OBSOLETE_API) \
2200-IPPAPI(IppStatus, ippsSHA384Final,(Ipp8u* pMD, IppsSHA384State* pState))
2201-IPP_DEPRECATED(OBSOLETE_API) \
2202-IPPAPI(IppStatus, ippsSHA384MessageDigest,(const Ipp8u* pMsg, int len, Ipp8u* pMD))
2203-
2204-/* SHA512 Hash Primitives */
2205-IPP_DEPRECATED(OBSOLETE_API) \
2206-IPPAPI(IppStatus, ippsSHA512GetSize,(int* pSize))
2207-IPP_DEPRECATED(OBSOLETE_API) \
2208-IPPAPI(IppStatus, ippsSHA512Init,(IppsSHA512State* pState))
2209-IPP_DEPRECATED(OBSOLETE_API) \
2210-IPPAPI(IppStatus, ippsSHA512Duplicate,(const IppsSHA512State* pSrcState, IppsSHA512State* pDstState))
2211-
2212-IPP_DEPRECATED(OBSOLETE_API) \
2213-IPPAPI(IppStatus, ippsSHA512Pack,(const IppsSHA512State* pState, Ipp8u* pBuffer))
2214-IPP_DEPRECATED(OBSOLETE_API) \
2215-IPPAPI(IppStatus, ippsSHA512Unpack,(const Ipp8u* pBuffer, IppsSHA512State* pState))
2216-
2217-IPP_DEPRECATED(OBSOLETE_API) \
2218-IPPAPI(IppStatus, ippsSHA512Update,(const Ipp8u* pSrc, int len, IppsSHA512State* pState))
2219-IPP_DEPRECATED(OBSOLETE_API) \
2220-IPPAPI(IppStatus, ippsSHA512GetTag,(Ipp8u* pTag, Ipp32u tagLen, const IppsSHA512State* pState))
2221-IPP_DEPRECATED(OBSOLETE_API) \
2222-IPPAPI(IppStatus, ippsSHA512Final,(Ipp8u* pMD, IppsSHA512State* pState))
2223-IPP_DEPRECATED(OBSOLETE_API) \
2224-IPPAPI(IppStatus, ippsSHA512MessageDigest,(const Ipp8u* pMsg, int len, Ipp8u* pMD))
2225-
2226-/* MD5 Hash Primitives */
2227-
2228 #define MD5_DEPRECATED "This algorithm is considered weak due to known attacks on it. \
2229 The functionality remains in the library, but the implementation will no be longer \
2230 optimized and no security patches will be applied. A more secure alternative is available: SHA-2"
2231
2232-IPP_DEPRECATED(MD5_DEPRECATED) \
2233-IPPAPI(IppStatus, ippsMD5GetSize,(int* pSize))
2234-IPP_DEPRECATED(MD5_DEPRECATED) \
2235-IPPAPI(IppStatus, ippsMD5Init,(IppsMD5State* pState))
2236-IPP_DEPRECATED(MD5_DEPRECATED) \
2237-IPPAPI(IppStatus, ippsMD5Duplicate,(const IppsMD5State* pSrcState, IppsMD5State* pDstState))
2238-
2239-IPP_DEPRECATED(MD5_DEPRECATED) \
2240-IPPAPI(IppStatus, ippsMD5Pack,(const IppsMD5State* pState, Ipp8u* pBuffer))
2241-IPP_DEPRECATED(MD5_DEPRECATED) \
2242-IPPAPI(IppStatus, ippsMD5Unpack,(const Ipp8u* pBuffer, IppsMD5State* pState))
2243-
2244-IPP_DEPRECATED(MD5_DEPRECATED) \
2245-IPPAPI(IppStatus, ippsMD5Update,(const Ipp8u* pSrc, int len, IppsMD5State* pState))
2246-IPP_DEPRECATED(MD5_DEPRECATED) \
2247-IPPAPI(IppStatus, ippsMD5GetTag,(Ipp8u* pTag, Ipp32u tagLen, const IppsMD5State* pState))
2248-IPP_DEPRECATED(MD5_DEPRECATED) \
2249-IPPAPI(IppStatus, ippsMD5Final,(Ipp8u* pMD, IppsMD5State* pState))
2250-IPP_DEPRECATED(MD5_DEPRECATED) \
2251-IPPAPI(IppStatus, ippsMD5MessageDigest,(const Ipp8u* pMsg, int len, Ipp8u* pMD))
2252-
2253-/* SM3 Hash Primitives */
2254-IPP_DEPRECATED(OBSOLETE_API) \
2255-IPPAPI(IppStatus, ippsSM3GetSize,(int* pSize))
2256-IPP_DEPRECATED(OBSOLETE_API) \
2257-IPPAPI(IppStatus, ippsSM3Init,(IppsSM3State* pState))
2258-IPP_DEPRECATED(OBSOLETE_API) \
2259-IPPAPI(IppStatus, ippsSM3Duplicate,(const IppsSM3State* pSrcState, IppsSM3State* pDstState))
2260-
2261-IPP_DEPRECATED(OBSOLETE_API) \
2262-IPPAPI(IppStatus, ippsSM3Pack,(const IppsSM3State* pState, Ipp8u* pBuffer))
2263-IPP_DEPRECATED(OBSOLETE_API) \
2264-IPPAPI(IppStatus, ippsSM3Unpack,(const Ipp8u* pBuffer, IppsSM3State* pState))
2265-
2266-IPP_DEPRECATED(OBSOLETE_API) \
2267-IPPAPI(IppStatus, ippsSM3Update,(const Ipp8u* pSrc, int len, IppsSM3State* pState))
2268-IPP_DEPRECATED(OBSOLETE_API) \
2269-IPPAPI(IppStatus, ippsSM3GetTag,(Ipp8u* pTag, Ipp32u tagLen, const IppsSM3State* pState))
2270-IPP_DEPRECATED(OBSOLETE_API) \
2271-IPPAPI(IppStatus, ippsSM3Final,(Ipp8u* pMD, IppsSM3State* pState))
2272-IPP_DEPRECATED(OBSOLETE_API) \
2273-IPPAPI(IppStatus, ippsSM3MessageDigest,(const Ipp8u* pMsg, int len, Ipp8u* pMD))
2274-
2275 /* generalized Hash Primitives */
2276 IPP_DEPRECATED(OBSOLETE_API) \
2277 IPPAPI(IppStatus, ippsHashGetSize,(int* pSize))
2278@@ -774,6 +620,10 @@ IPPAPI(IppStatus, ippsMontMul, (const IppsBigNumState* pA, const IppsBigNumState
2279 IPPAPI(IppStatus, ippsMontExp, (const IppsBigNumState* pA, const IppsBigNumState* pE, IppsMontState* m, IppsBigNumState* pR))
2280
2281 /* Pseudo-Random Number Generation */
2282+#define PRNG_DEPRECATED "This algorithm is considered weak since it's based on the outdated FIPS standard(FIPS 186-2). \
2283+The functionality remains in the library, but its implementation is not recommended for use. \
2284+A more secure alternative is available: ippsPRNGenRDRAND and ippsTRNGenRDSEED."
2285+
2286 IPPAPI(IppStatus, ippsPRNGGetSize,(int* pSize))
2287 IPPAPI(IppStatus, ippsPRNGInit, (int seedBits, IppsPRNGState* pCtx))
2288
2289@@ -783,7 +633,9 @@ IPPAPI(IppStatus, ippsPRNGSetAugment,(const IppsBigNumState* pAug, IppsPRNGState
2290 IPPAPI(IppStatus, ippsPRNGSetSeed, (const IppsBigNumState* pSeed,IppsPRNGState* pCtx))
2291 IPPAPI(IppStatus, ippsPRNGGetSeed, (const IppsPRNGState* pCtx,IppsBigNumState* pSeed))
2292
2293+IPP_DEPRECATED(PRNG_DEPRECATED) \
2294 IPPAPI(IppStatus, ippsPRNGen, (Ipp32u* pRand, int nBits, void* pCtx))
2295+IPP_DEPRECATED(PRNG_DEPRECATED) \
2296 IPPAPI(IppStatus, ippsPRNGen_BN, (IppsBigNumState* pRand, int nBits, void* pCtx))
2297 IPPAPI(IppStatus, ippsPRNGenRDRAND, (Ipp32u* pRand, int nBits, void* pCtx))
2298 IPPAPI(IppStatus, ippsPRNGenRDRAND_BN,(IppsBigNumState* pRand, int nBits, void* pCtx))
2299@@ -1079,201 +931,6 @@ IPPAPI(IppStatus, ippsDLPValidateDH,(int nTrials, IppDLResult* pResult, IppsDLPS
2300 IPPAPI( const char*, ippsECCGetResultString, (IppECResult code))
2301
2302 /*
2303-// EC over Prime Fields
2304-*/
2305-/* general EC initialization */
2306-IPP_DEPRECATED(OBSOLETE_API) \
2307-IPPAPI(IppStatus, ippsECCPGetSize,(int feBitSize, int* pSize))
2308-IPP_DEPRECATED(OBSOLETE_API) \
2309-IPPAPI(IppStatus, ippsECCPGetSizeStd128r1,(int* pSize))
2310-IPP_DEPRECATED(OBSOLETE_API) \
2311-IPPAPI(IppStatus, ippsECCPGetSizeStd128r2,(int* pSize))
2312-IPP_DEPRECATED(OBSOLETE_API) \
2313-IPPAPI(IppStatus, ippsECCPGetSizeStd192r1,(int* pSize))
2314-IPP_DEPRECATED(OBSOLETE_API) \
2315-IPPAPI(IppStatus, ippsECCPGetSizeStd224r1,(int* pSize))
2316-IPP_DEPRECATED(OBSOLETE_API) \
2317-IPPAPI(IppStatus, ippsECCPGetSizeStd256r1,(int* pSize))
2318-IPP_DEPRECATED(OBSOLETE_API) \
2319-IPPAPI(IppStatus, ippsECCPGetSizeStd384r1,(int* pSize))
2320-IPP_DEPRECATED(OBSOLETE_API) \
2321-IPPAPI(IppStatus, ippsECCPGetSizeStd521r1,(int* pSize))
2322-IPP_DEPRECATED(OBSOLETE_API) \
2323-IPPAPI(IppStatus, ippsECCPGetSizeStdSM2, (int* pSize))
2324-
2325-IPP_DEPRECATED(OBSOLETE_API) \
2326-IPPAPI(IppStatus, ippsECCPInit,(int feBitSize, IppsECCPState* pEC))
2327-IPP_DEPRECATED(OBSOLETE_API) \
2328-IPPAPI(IppStatus, ippsECCPInitStd128r1,(IppsECCPState* pEC))
2329-IPP_DEPRECATED(OBSOLETE_API) \
2330-IPPAPI(IppStatus, ippsECCPInitStd128r2,(IppsECCPState* pEC))
2331-IPP_DEPRECATED(OBSOLETE_API) \
2332-IPPAPI(IppStatus, ippsECCPInitStd192r1,(IppsECCPState* pEC))
2333-IPP_DEPRECATED(OBSOLETE_API) \
2334-IPPAPI(IppStatus, ippsECCPInitStd224r1,(IppsECCPState* pEC))
2335-IPP_DEPRECATED(OBSOLETE_API) \
2336-IPPAPI(IppStatus, ippsECCPInitStd256r1,(IppsECCPState* pEC))
2337-IPP_DEPRECATED(OBSOLETE_API) \
2338-IPPAPI(IppStatus, ippsECCPInitStd384r1,(IppsECCPState* pEC))
2339-IPP_DEPRECATED(OBSOLETE_API) \
2340-IPPAPI(IppStatus, ippsECCPInitStd521r1,(IppsECCPState* pEC))
2341-IPP_DEPRECATED(OBSOLETE_API) \
2342-IPPAPI(IppStatus, ippsECCPInitStdSM2, (IppsECCPState* pEC))
2343-
2344-IPP_DEPRECATED(OBSOLETE_API) \
2345-IPPAPI(IppStatus, ippsECCPSet,(const IppsBigNumState* pPrime,
2346- const IppsBigNumState* pA, const IppsBigNumState* pB,
2347- const IppsBigNumState* pGX,const IppsBigNumState* pGY,const IppsBigNumState* pOrder,
2348- int cofactor,
2349- IppsECCPState* pEC))
2350-IPP_DEPRECATED(OBSOLETE_API) \
2351-IPPAPI(IppStatus, ippsECCPSetStd,(IppECCType flag, IppsECCPState* pEC))
2352-IPP_DEPRECATED(OBSOLETE_API) \
2353-IPPAPI(IppStatus, ippsECCPSetStd128r1,(IppsECCPState* pEC))
2354-IPP_DEPRECATED(OBSOLETE_API) \
2355-IPPAPI(IppStatus, ippsECCPSetStd128r2,(IppsECCPState* pEC))
2356-IPP_DEPRECATED(OBSOLETE_API) \
2357-IPPAPI(IppStatus, ippsECCPSetStd192r1,(IppsECCPState* pEC))
2358-IPP_DEPRECATED(OBSOLETE_API) \
2359-IPPAPI(IppStatus, ippsECCPSetStd224r1,(IppsECCPState* pEC))
2360-IPP_DEPRECATED(OBSOLETE_API) \
2361-IPPAPI(IppStatus, ippsECCPSetStd256r1,(IppsECCPState* pEC))
2362-IPP_DEPRECATED(OBSOLETE_API) \
2363-IPPAPI(IppStatus, ippsECCPSetStd384r1,(IppsECCPState* pEC))
2364-IPP_DEPRECATED(OBSOLETE_API) \
2365-IPPAPI(IppStatus, ippsECCPSetStd521r1,(IppsECCPState* pEC))
2366-IPP_DEPRECATED(OBSOLETE_API) \
2367-IPPAPI(IppStatus, ippsECCPSetStdSM2, (IppsECCPState* pEC))
2368-
2369-IPP_DEPRECATED(OBSOLETE_API) \
2370-IPPAPI(IppStatus, ippsECCPBindGxyTblStd192r1,(IppsECCPState* pEC))
2371-IPP_DEPRECATED(OBSOLETE_API) \
2372-IPPAPI(IppStatus, ippsECCPBindGxyTblStd224r1,(IppsECCPState* pEC))
2373-IPP_DEPRECATED(OBSOLETE_API) \
2374-IPPAPI(IppStatus, ippsECCPBindGxyTblStd256r1,(IppsECCPState* pEC))
2375-IPP_DEPRECATED(OBSOLETE_API) \
2376-IPPAPI(IppStatus, ippsECCPBindGxyTblStd384r1,(IppsECCPState* pEC))
2377-IPP_DEPRECATED(OBSOLETE_API) \
2378-IPPAPI(IppStatus, ippsECCPBindGxyTblStd521r1,(IppsECCPState* pEC))
2379-IPP_DEPRECATED(OBSOLETE_API) \
2380-IPPAPI(IppStatus, ippsECCPBindGxyTblStdSM2, (IppsECCPState* pEC))
2381-
2382-IPP_DEPRECATED(OBSOLETE_API) \
2383-IPPAPI(IppStatus, ippsECCPGet,(IppsBigNumState* pPrime,
2384- IppsBigNumState* pA, IppsBigNumState* pB,
2385- IppsBigNumState* pGX,IppsBigNumState* pGY,IppsBigNumState* pOrder,
2386- int* cofactor,
2387- IppsECCPState* pEC))
2388-IPP_DEPRECATED(OBSOLETE_API) \
2389-IPPAPI(IppStatus, ippsECCPGetOrderBitSize,(int* pBitSize, IppsECCPState* pEC))
2390-
2391-IPP_DEPRECATED(OBSOLETE_API) \
2392-IPPAPI(IppStatus, ippsECCPValidate,(int nTrials, IppECResult* pResult, IppsECCPState* pEC,
2393- IppBitSupplier rndFunc, void* pRndParam))
2394-
2395-/* EC Point */
2396-IPP_DEPRECATED(OBSOLETE_API) \
2397-IPPAPI(IppStatus, ippsECCPPointGetSize,(int feBitSize, int* pSize))
2398-
2399-IPP_DEPRECATED(OBSOLETE_API) \
2400-IPPAPI(IppStatus, ippsECCPPointInit,(int feBitSize, IppsECCPPointState* pPoint))
2401-
2402-/* Setup/retrieve point's coordinates */
2403-IPP_DEPRECATED(OBSOLETE_API) \
2404-IPPAPI(IppStatus, ippsECCPSetPoint,(const IppsBigNumState* pX, const IppsBigNumState* pY,
2405- IppsECCPPointState* pPoint, IppsECCPState* pEC))
2406-
2407-IPP_DEPRECATED(OBSOLETE_API) \
2408-IPPAPI(IppStatus, ippsECCPSetPointAtInfinity,(IppsECCPPointState* pPoint, IppsECCPState* pEC))
2409-
2410-IPP_DEPRECATED(OBSOLETE_API) \
2411-IPPAPI(IppStatus, ippsECCPGetPoint,(IppsBigNumState* pX, IppsBigNumState* pY,
2412- const IppsECCPPointState* pPoint, IppsECCPState* pEC))
2413-
2414-/* EC Point Operations */
2415-IPP_DEPRECATED(OBSOLETE_API) \
2416-IPPAPI(IppStatus, ippsECCPCheckPoint,(const IppsECCPPointState* pP,
2417- IppECResult* pResult, IppsECCPState* pEC))
2418-IPP_DEPRECATED(OBSOLETE_API) \
2419-IPPAPI(IppStatus, ippsECCPComparePoint,(const IppsECCPPointState* pP, const IppsECCPPointState* pQ,
2420- IppECResult* pResult, IppsECCPState* pEC))
2421-IPP_DEPRECATED(OBSOLETE_API) \
2422-IPPAPI(IppStatus, ippsECCPNegativePoint,(const IppsECCPPointState* pP,
2423- IppsECCPPointState* pR, IppsECCPState* pEC))
2424-IPP_DEPRECATED(OBSOLETE_API) \
2425-IPPAPI(IppStatus, ippsECCPAddPoint,(const IppsECCPPointState* pP, const IppsECCPPointState* pQ,
2426- IppsECCPPointState* pR, IppsECCPState* pEC))
2427-IPP_DEPRECATED(OBSOLETE_API) \
2428-IPPAPI(IppStatus, ippsECCPMulPointScalar,(const IppsECCPPointState* pP, const IppsBigNumState* pK,
2429- IppsECCPPointState* pR, IppsECCPState* pEC))
2430-
2431-/* Key Generation, Setup and Validation */
2432-IPP_DEPRECATED(OBSOLETE_API) \
2433-IPPAPI(IppStatus, ippsECCPGenKeyPair,(IppsBigNumState* pPrivate, IppsECCPPointState* pPublic,
2434- IppsECCPState* pEC,
2435- IppBitSupplier rndFunc, void* pRndParam))
2436-IPP_DEPRECATED(OBSOLETE_API) \
2437-IPPAPI(IppStatus, ippsECCPPublicKey,(const IppsBigNumState* pPrivate,
2438- IppsECCPPointState* pPublic,
2439- IppsECCPState* pEC))
2440-IPP_DEPRECATED(OBSOLETE_API) \
2441-IPPAPI(IppStatus, ippsECCPValidateKeyPair,(const IppsBigNumState* pPrivate, const IppsECCPPointState* pPublic,
2442- IppECResult* pResult,
2443- IppsECCPState* pEC))
2444-IPP_DEPRECATED(OBSOLETE_API) \
2445-IPPAPI(IppStatus, ippsECCPSetKeyPair,(const IppsBigNumState* pPrivate, const IppsECCPPointState* pPublic,
2446- IppBool regular,
2447- IppsECCPState* pEC))
2448-
2449-/* Shared Secret (DH scheme ) */
2450-IPP_DEPRECATED(OBSOLETE_API) \
2451-IPPAPI(IppStatus, ippsECCPSharedSecretDH,(const IppsBigNumState* pPrivateA,
2452- const IppsECCPPointState* pPublicB,
2453- IppsBigNumState* pShare,
2454- IppsECCPState* pEC))
2455-IPP_DEPRECATED(OBSOLETE_API) \
2456-IPPAPI(IppStatus, ippsECCPSharedSecretDHC,(const IppsBigNumState* pPrivateA,
2457- const IppsECCPPointState* pPublicB,
2458- IppsBigNumState* pShare,
2459- IppsECCPState* pEC))
2460-
2461-/* Sign/Verify */
2462-IPP_DEPRECATED(OBSOLETE_API) \
2463-IPPAPI(IppStatus, ippsECCPSignDSA,(const IppsBigNumState* pMsgDigest,
2464- const IppsBigNumState* pPrivate,
2465- IppsBigNumState* pSignX, IppsBigNumState* pSignY,
2466- IppsECCPState* pEC))
2467-IPP_DEPRECATED(OBSOLETE_API) \
2468-IPPAPI(IppStatus, ippsECCPVerifyDSA,(const IppsBigNumState* pMsgDigest,
2469- const IppsBigNumState* pSignX, const IppsBigNumState* pSignY,
2470- IppECResult* pResult,
2471- IppsECCPState* pEC))
2472-
2473-IPP_DEPRECATED(OBSOLETE_API) \
2474-IPPAPI(IppStatus, ippsECCPSignNR,(const IppsBigNumState* pMsgDigest,
2475- const IppsBigNumState* pPrivate,
2476- IppsBigNumState* pSignX, IppsBigNumState* pSignY,
2477- IppsECCPState* pEC))
2478-IPP_DEPRECATED(OBSOLETE_API) \
2479-IPPAPI(IppStatus, ippsECCPVerifyNR,(const IppsBigNumState* pMsgDigest,
2480- const IppsBigNumState* pSignX, const IppsBigNumState* pSignY,
2481- IppECResult* pResult,
2482- IppsECCPState* pEC))
2483-
2484-IPP_DEPRECATED(OBSOLETE_API) \
2485-IPPAPI(IppStatus, ippsECCPSignSM2,(const IppsBigNumState* pMsgDigest,
2486- const IppsBigNumState* pRegPrivate,
2487- IppsBigNumState* pEphPrivate,
2488- IppsBigNumState* pSignR, IppsBigNumState* pSignS,
2489- IppsECCPState* pEC))
2490-IPP_DEPRECATED(OBSOLETE_API) \
2491-IPPAPI(IppStatus, ippsECCPVerifySM2,(const IppsBigNumState* pMsgDigest,
2492- const IppsECCPPointState* pRegPublic,
2493- const IppsBigNumState* pSignR, const IppsBigNumState* pSignS,
2494- IppECResult* pResult,
2495- IppsECCPState* pEC))
2496-
2497-/*
2498 // GF over prime and its extension
2499 */
2500 IPPAPI(IppStatus, ippsGFpGetSize, (int feBitSize, int* pSize))
2501diff --git a/include/ippcp/fips_cert.h b/include/ippcp/fips_cert.h
2502index 4feef86..92d3544 100644
2503--- a/include/ippcp/fips_cert.h
2504+++ b/include/ippcp/fips_cert.h
2505@@ -105,6 +105,10 @@ IPPAPI(fips_test_status, fips_selftest_ippsGFpECPublicKey, (Ipp8u *pGFpBuff, Ipp
2506 IPPAPI(fips_test_status, fips_selftest_ippsGFpECPrivateKey, (Ipp8u *pGFpBuff, Ipp8u *pGFpECBuff, Ipp8u *pDataBuff))
2507 IPPAPI(fips_test_status, fips_selftest_ippsGFpECSharedSecretDH, (Ipp8u *pGFpBuff, Ipp8u *pGFpECBuff, Ipp8u *pDataBuff))
2508
2509+/* LMS */
2510+IPPAPI(fips_test_status, fips_selftest_ippsLMSVerify_get_size, (int *pBufferSize))
2511+IPPAPI(fips_test_status, fips_selftest_ippsLMSVerify, (Ipp8u *pDataBuff))
2512+
2513 /*
2514 // Enumerator that contains information about FIPS-approved
2515 // functions inside the ippcp cryptographic boundary
2516@@ -158,6 +162,7 @@ enum FIPS_IPPCP_FUNC {
2517 HMACMessage_rmf,
2518 RSAEncrypt_OAEP_rmf,
2519 RSADecrypt_OAEP_rmf,
2520+ LMSVerify,
2521
2522 /* Not approved functions or
2523 * FIPS-mode is not yet implemented, < 0
2524@@ -222,8 +227,7 @@ enum FIPS_IPPCP_FUNC {
2525 GFpECESEncrypt_SM2,
2526 GFpECESDecrypt_SM2,
2527 GFpECESFinal_SM2,
2528- XMSSVerify,
2529- LMSVerify
2530+ XMSSVerify
2531 };
2532
2533 /**
2534diff --git a/include/ippcpdefs.h b/include/ippcpdefs.h
2535index a1c4155..baee0ca 100644
2536--- a/include/ippcpdefs.h
2537+++ b/include/ippcpdefs.h
2538@@ -16,7 +16,7 @@
2539
2540 /*
2541 //
2542-// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2543+// Intel® Cryptography Primitives Library
2544 //
2545 // Purpose: Basic Types and Macro Definitions
2546 //
2547@@ -68,6 +68,9 @@ extern "C" {
2548 # define COMPILER_SUPPORT_SHORT_FLOAT _NO_FLOAT_16
2549 #endif
2550
2551+#define OBSOLETE_API "is deprecated. This API is considered obsolete and will be removed in one of future Intel® Cryptography Primitives Library releases. \
2552+Use the following link for opening a ticket and providing feedback: https://supporttickets.intel.com/ if you have concerns."
2553+
2554 #if !defined(_NO_IPP_DEPRECATED)
2555 #if (defined( __ICL ) || defined( __ECL ) || defined(_MSC_VER)) && !defined( _PCS ) && !defined( _PCS_GENSTUBS )
2556 #if( __INTEL_COMPILER >= 1100 ) /* icl 11.0 supports additional comment */
2557@@ -194,6 +197,7 @@ extern "C" {
2558
2559 #define IPP_ABS( a ) ( ((a) < 0) ? (-(a)) : (a) )
2560
2561+/* IppLibraryVersion is deprecated, please use CryptoLibraryVersion instead */
2562 typedef struct {
2563 int major; /* e.g. 1 */
2564 int minor; /* e.g. 2 */
2565@@ -205,6 +209,16 @@ typedef struct {
2566 const char* BuildDate; /* e.g. "Jul 20 99" */
2567 } IppLibraryVersion;
2568
2569+typedef struct {
2570+ int major; /* e.g. 1 */
2571+ int minor; /* e.g. 2 */
2572+ int patch; /* e.g. 3 */
2573+ char targetCpu[4]; /* corresponding to Intel® processor */
2574+ const char* name; /* e.g. "ippsw7" */
2575+ const char* buildDate; /* e.g. "Jul 20 99" */
2576+ const char* strVersion; /* e.g. "v1.2 Beta" */
2577+} CryptoLibraryVersion;
2578+
2579 typedef unsigned char Ipp8u;
2580 typedef unsigned short Ipp16u;
2581 typedef unsigned int Ipp32u;
2582@@ -354,12 +368,14 @@ typedef enum {
2583 #define ippCPUID_AVX512VBMI2 INT64_SUFFIX(0x2000000000) /* Intel® Advanced Vector Extensions 512 Bit Manipulation instructions 2 */
2584 #define ippCPUID_AVX512_FP16 INT64_SUFFIX(0x1000000000) /* Intel(R) Advanced Vector Extensions 512 16-bit floating point (FP16) instruction set */
2585
2586- #define ippCPUID_AVX2VAES INT64_SUFFIX(0x4000000000) /* Intel® Advanced Vector Extensions 256 Bit Vector AES instructions */
2587+ #define ippCPUID_AVX2VAES INT64_SUFFIX(0x4000000000) /* Intel® Advanced Vector Extensions 256 Bit Vector AES instructions */
2588 #define ippCPUID_AVX2VCLMUL INT64_SUFFIX(0x8000000000) /* Intel® instruction VPCLMULQDQ */
2589-
2590+ #define ippCPUID_AVX2SM3 INT64_SUFFIX(0x10000000000) /* Intel® Advanced Vector Extensions 256 Bit SM3_NI instructions */
2591+ #define ippCPUID_AVX2SM4 INT64_SUFFIX(0x20000000000) /* Intel® Advanced Vector Extensions 256 Bit SM4_NI instructions */
2592+ #define ippCPUID_AVX2SHA512 INT64_SUFFIX(0x40000000000) /* Intel® Advanced Vector Extensions 256 Bit SHA512_NI instructions */
2593 #endif /* IPP_CPU_FEATURES__ */
2594
2595-/* Macros are necessary to build custom Intel® IPP Cryptography static 1cpu library (enable specific features at compile-time) */
2596+/* Macros are necessary to build custom Intel® Cryptography Primitives Library static 1cpu library (enable specific features at compile-time) */
2597 #if (!defined(_MERGED_BLD) && defined(IPPCP_CUSTOM_BUILD))
2598
2599 #ifndef IPP_CUSTOM_CPU_FEATURES__
2600@@ -391,7 +407,6 @@ extern "C" {
2601 #endif
2602 typedef signed int IppStatus;
2603
2604- /* start of common with ippCrypto part - any changes MUST be done in both repositories - IPP & ippCrypto */
2605 #define ippStsCpuNotSupportedErr -9999 /* The target CPU is not supported. */
2606 #define ippStsUnknownStatusCodeErr -216 /* Unknown status code. */
2607 #define ippStsLoadDynErr -221 /* Error when loading the dynamic library. */
2608@@ -415,7 +430,6 @@ typedef signed int IppStatus;
2609 #define ippStsDivByZero 2 /* Zero value(s) for the divisor in the Div function. */
2610 #define ippStsWaterfall 43 /* Cannot load required library, waterfall is used. */
2611 #define ippStsFeaturesCombination 51 /* Wrong combination of features. */
2612- /* end of common with ippCrypto part */
2613
2614 #ifdef __cplusplus
2615 }
2616@@ -423,13 +437,12 @@ typedef signed int IppStatus;
2617
2618 #endif /* IPPSTATUS_H__ */
2619
2620- /* ippCrypto specific statuses - any changes MUST be done in both repositories - IPP & ippCrypto */
2621 #define ippStsInvalidPoint -1017 /* ippStsInvalidPoint ECC: Invalid point (out of EC).*/
2622 #define ippStsQuadraticNonResidueErr -1016 /* SQRT operation on quadratic non-residue value. */
2623 #define ippStsPointAtInfinity -1015 /* Point at infinity is detected. */
2624-#define ippStsOFBSizeErr -1014 /* Incorrect value for crypto OFB block size. */
2625-#define ippStsIncompleteContextErr -1013 /* Crypto: set up of context is not complete. */
2626-#define ippStsCTRSizeErr -1012 /* Incorrect value for crypto CTR block size. */
2627+#define ippStsOFBSizeErr -1014 /* Incorrect value for cryptography OFB block size. */
2628+#define ippStsIncompleteContextErr -1013 /* Set up of context is not complete. */
2629+#define ippStsCTRSizeErr -1012 /* Incorrect value for cryptography CTR block size. */
2630 #define ippStsEphemeralKeyErr -1011 /* ECC: Invalid ephemeral key. */
2631 #define ippStsMessageErr -1010 /* ECC: Invalid message digest. */
2632 #define ippStsShareKeyErr -1009 /* ECC: Invalid share key. */
2633@@ -438,13 +451,12 @@ typedef signed int IppStatus;
2634 #define ippStsECCInvalidFlagErr -1006 /* ECC: Invalid Flag. */
2635 #define ippStsUnderRunErr -1005 /* Error in data under run. */
2636 #define ippStsPaddingErr -1004 /* Detected padding error indicates the possible data corruption. */
2637-#define ippStsCFBSizeErr -1003 /* Incorrect value for crypto CFB block size. */
2638+#define ippStsCFBSizeErr -1003 /* Incorrect value for cryptography CFB block size. */
2639 #define ippStsPaddingSchemeErr -1002 /* Invalid padding scheme. */
2640 #define ippStsBadModulusErr -1001 /* Bad modulus caused a failure in module inversion. */
2641 #define ippStsInsufficientEntropy 25 /* Generation of the prime/key failed due to insufficient entropy in the random seed and stimulus bit string. */
2642 #define ippStsNotSupportedCpu 36 /* The CPU is not supported. */
2643 #define ippStsMbWarning 53 /* Error(s) in statuses array. */
2644- /* end of ippCrypto specific statuses - any changes MUST be done in both repositories - IPP & ippCrypto */
2645
2646 #if (!defined IPPCPDEFS_H__) || defined( _OWN_BLDPCS )
2647 #define IPPCPDEFS_H__
2648@@ -846,13 +858,19 @@ typedef struct _GFpECKeyExchangeSM2 IppsGFpECKeyExchangeSM2State;
2649 IPPAPI( IppStatus, ippcpGetCpuFeatures, ( Ipp64u* pFeaturesMask ))
2650 IPPAPI( IppStatus, ippcpSetCpuFeatures, ( Ipp64u features ))
2651 IPPAPI( Ipp64u, ippcpGetEnabledCpuFeatures, ( void ) )
2652-IPPAPI( IppStatus, ippcpSetNumThreads, ( int numThr ))
2653+
2654 IPPAPI( IppStatus, ippcpInit,( void ))
2655-IPPAPI( IppStatus, ippcpGetNumThreads, (int* pNumThr) )
2656 IPPAPI( const char*, ippcpGetStatusString, ( IppStatus StsCode ))
2657-IPPAPI( int, ippcpGetEnabledNumThreads, ( void ) )
2658 IPPAPI( Ipp64u, ippcpGetCpuClocks, (void) )
2659
2660+/* Threading functions are deprecated in the library */
2661+IPP_DEPRECATED(OBSOLETE_API) \
2662+IPPAPI( IppStatus, ippcpSetNumThreads, ( int numThr ))
2663+IPP_DEPRECATED(OBSOLETE_API) \
2664+IPPAPI( IppStatus, ippcpGetNumThreads, (int* pNumThr) )
2665+IPP_DEPRECATED(OBSOLETE_API) \
2666+IPPAPI( int, ippcpGetEnabledNumThreads, ( void ) )
2667+
2668 /* Defines related to experimental features enabling */
2669 #ifdef IPPCP_PREVIEW_ALL
2670 #ifndef IPPCP_PREVIEW_XMSS
2671diff --git a/include/ippcpversion.h b/include/ippcpversion.h
2672new file mode 100755
2673index 0000000..3e98d16
2674--- /dev/null
2675+++ b/include/ippcpversion.h
2676@@ -0,0 +1,41 @@
2677+/*************************************************************************
2678+* Copyright (C) 2024 Intel Corporation
2679+*
2680+* Licensed under the Apache License, Version 2.0 (the "License");
2681+* you may not use this file except in compliance with the License.
2682+* You may obtain a copy of the License at
2683+*
2684+* http://www.apache.org/licenses/LICENSE-2.0
2685+*
2686+* Unless required by applicable law or agreed to in writing, software
2687+* distributed under the License is distributed on an "AS IS" BASIS,
2688+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2689+* See the License for the specific language governing permissions and
2690+* limitations under the License.
2691+*************************************************************************/
2692+
2693+/*
2694+//
2695+// Intel® Cryptography Primitives Library
2696+//
2697+// Purpose: Describes the Intel® Cryptography Primitives Library version
2698+//
2699+*/
2700+
2701+
2702+#if !defined( CRYPTOLIBVERSION_H__ )
2703+#define CRYPTOLIBVERSION_H__
2704+
2705+#define CRYPTO_LIB_VERSION_MAJOR 1
2706+#define CRYPTO_LIB_VERSION_MINOR 0
2707+#define CRYPTO_LIB_VERSION_PATCH 0
2708+
2709+// Major interface version
2710+#define CRYPTO_LIB_INTERFACE_VERSION_MAJOR 12
2711+// Minor interface version
2712+#define CRYPTO_LIB_INTERFACE_VERSION_MINOR 0
2713+
2714+#define CRYPTO_LIB_VERSION_STR STR(CRYPTO_LIB_VERSION_MAJOR) "." STR(CRYPTO_LIB_VERSION_MINOR) "." STR(CRYPTO_LIB_VERSION_PATCH) \
2715+ " (" STR(CRYPTO_LIB_INTERFACE_VERSION_MAJOR) "." STR(CRYPTO_LIB_INTERFACE_VERSION_MINOR) ")"
2716+
2717+#endif /* CRYPTOLIBVERSION_H__ */
2718diff --git a/include/ippversion.h b/include/ippversion.h
2719index a6459e8..7aa393f 100644
2720--- a/include/ippversion.h
2721+++ b/include/ippversion.h
2722@@ -15,25 +15,30 @@
2723 *************************************************************************/
2724
2725 /*
2726-//
2727-// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2728 //
2729-// Purpose: Describes the Intel IPP Cryptography version
2730+// Intel® Cryptography Primitives Library
2731+//
2732+// Purpose: Describes the Intel® Cryptography Primitives Library version
2733 //
2734 */
2735
2736
2737 #if !defined( IPPVERSION_H__ )
2738+
2739+#if !defined(_NO_IPP_DEPRECATED)
2740+#pragma message("Header `ippversion.h` is deprecated and will be removed in one of future Intel® Cryptography Primitives Library releases. Please use `ippcpversion.h` instead.")
2741+#endif /* !defined(_NO_IPP_DEPRECATED) */
2742+
2743 #define IPPVERSION_H__
2744
2745-#define IPP_VERSION_MAJOR 2021
2746-#define IPP_VERSION_MINOR 12
2747-#define IPP_VERSION_UPDATE 1
2748+#define IPP_VERSION_MAJOR 1
2749+#define IPP_VERSION_MINOR 0
2750+#define IPP_VERSION_UPDATE 0
2751
2752 // Major interface version
2753-#define IPP_INTERFACE_VERSION_MAJOR 11
2754+#define IPP_INTERFACE_VERSION_MAJOR 12
2755 // Minor interface version
2756-#define IPP_INTERFACE_VERSION_MINOR 15
2757+#define IPP_INTERFACE_VERSION_MINOR 0
2758
2759 #define IPP_VERSION_STR STR(IPP_VERSION_MAJOR) "." STR(IPP_VERSION_MINOR) "." STR(IPP_VERSION_UPDATE) " (" STR(IPP_INTERFACE_VERSION_MAJOR) "." STR(IPP_INTERFACE_VERSION_MINOR) " )"
2760
2761diff --git a/sources/cmake/CMakeASM_NASMOptions.txt b/sources/cmake/CMakeASM_NASMOptions.txt
2762index f33025e..ab001c4 100644
2763--- a/sources/cmake/CMakeASM_NASMOptions.txt
2764+++ b/sources/cmake/CMakeASM_NASMOptions.txt
2765@@ -15,7 +15,7 @@
2766 #=========================================================================
2767
2768 #
2769-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2770+# Intel® Cryptography Primitives Library
2771 #
2772
2773 if (UNIX)
2774diff --git a/sources/cmake/ippcp-config-version.cmake.in b/sources/cmake/ippcp-config-version.cmake.in
2775index 1065a9d..0b12305 100644
2776--- a/sources/cmake/ippcp-config-version.cmake.in
2777+++ b/sources/cmake/ippcp-config-version.cmake.in
2778@@ -15,7 +15,7 @@
2779 #=========================================================================
2780
2781 #
2782-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2783+# Intel® Cryptography Primitives Library
2784 # library detection routine (version compatibility rules).
2785 #
2786
2787diff --git a/sources/cmake/ippcp-config.cmake.in b/sources/cmake/ippcp-config.cmake.in
2788index 520d9b9..1a4a3cc 100644
2789--- a/sources/cmake/ippcp-config.cmake.in
2790+++ b/sources/cmake/ippcp-config.cmake.in
2791@@ -15,8 +15,7 @@
2792 #=========================================================================
2793
2794 #
2795-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2796-# library detection routine.
2797+# Intel® Cryptography Primitives Library detection routine.
2798 #
2799 # To use it, add the lines below to your CMakeLists.txt:
2800 # find_package(IPPCP REQUIRED)
2801@@ -50,7 +49,7 @@ endif()
2802
2803 if (NOT IPPCP_FIND_COMPONENTS)
2804 set(IPPCP_FIND_COMPONENTS "ippcp")
2805-
2806+
2807 # crypto_mb library is only for intel64
2808 if(${IPPCP_ARCH} MATCHES "intel64")
2809 set(IPPCP_BIN_REL_PATH @IPPCP_BIN64_REL_PATH@)
2810@@ -99,14 +98,14 @@ macro(add_imported_library_target PATH_TO_LIBRARY PATH_TO_IMPORT_LIB LINKAGE_TYP
2811 set_target_properties(IPPCP::${_component} PROPERTIES IMPORTED_IMPLIB "${PATH_TO_IMPORT_LIB}")
2812 endif()
2813 else()
2814- message(WARNING "IPPCP: Include directory does not exist: '${_include_dir}'. Intel IPP Cryptography installation might be broken.")
2815+ message(WARNING "Include directory does not exist: '${_include_dir}'. Intel Cryptography Primitives Library installation might be broken.")
2816 endif()
2817 unset(_include_dir)
2818 endif()
2819 list(APPEND IPPCP_LIBRARIES IPPCP::${_component})
2820 set(IPPCP_${_component}_FOUND 1)
2821 elseif (IPPCP_FIND_REQUIRED AND IPPCP_FIND_REQUIRED_${_component})
2822- message(STATUS "Missed required Intel IPP Cryptography component: ${_component}")
2823+ message(STATUS "Missed required Intel Cryptography Primitives Library component: ${_component}")
2824 message(STATUS " library not found:\n ${PATH_TO_LIBRARY}")
2825 if (${LINKAGE_TYPE} MATCHES "SHARED")
2826 message(STATUS "You may try to search for static library by unsetting IPPCP_SHARED variable.")
2827diff --git a/sources/cmake/ippcp-utils.cmake b/sources/cmake/ippcp-utils.cmake
2828index 1af45bb..b2eb2df 100644
2829--- a/sources/cmake/ippcp-utils.cmake
2830+++ b/sources/cmake/ippcp-utils.cmake
2831@@ -23,20 +23,20 @@ macro(ippcp_getlibversion VERSION_FILE)
2832 unset(IPPCP_INTERFACE_VERSION_MINOR)
2833 file(STRINGS "${VERSION_FILE}" FILE_CONTENTS)
2834 foreach(LINE ${FILE_CONTENTS})
2835- if ("${LINE}" MATCHES "#define IPP_VERSION_MAJOR")
2836- string(REGEX REPLACE "^#define +IPP_VERSION_MAJOR +\([0-9]+\).*$" "\\1" IPPCP_VERSION_MAJOR ${LINE})
2837+ if ("${LINE}" MATCHES "#define CRYPTO_LIB_VERSION_MAJOR")
2838+ string(REGEX REPLACE "^#define +CRYPTO_LIB_VERSION_MAJOR +\([0-9]+\).*$" "\\1" IPPCP_VERSION_MAJOR ${LINE})
2839 endif()
2840- if ("${LINE}" MATCHES "#define IPP_VERSION_MINOR")
2841- string(REGEX REPLACE "^#define +IPP_VERSION_MINOR +\([0-9]+\).*$" "\\1" IPPCP_VERSION_MINOR ${LINE})
2842+ if ("${LINE}" MATCHES "#define CRYPTO_LIB_VERSION_MINOR")
2843+ string(REGEX REPLACE "^#define +CRYPTO_LIB_VERSION_MINOR +\([0-9]+\).*$" "\\1" IPPCP_VERSION_MINOR ${LINE})
2844 endif()
2845- if ("${LINE}" MATCHES "#define IPP_VERSION_UPDATE")
2846- string(REGEX REPLACE "^#define +IPP_VERSION_UPDATE +\([0-9]+\).*$" "\\1" IPPCP_VERSION_UPDATE ${LINE})
2847+ if ("${LINE}" MATCHES "#define CRYPTO_LIB_VERSION_PATCH")
2848+ string(REGEX REPLACE "^#define +CRYPTO_LIB_VERSION_PATCH +\([0-9]+\).*$" "\\1" IPPCP_VERSION_UPDATE ${LINE})
2849 endif()
2850- if ("${LINE}" MATCHES "#define IPP_INTERFACE_VERSION_MAJOR")
2851- string(REGEX REPLACE "^#define +IPP_INTERFACE_VERSION_MAJOR +\([0-9]+\).*$" "\\1" IPPCP_INTERFACE_VERSION_MAJOR ${LINE})
2852+ if ("${LINE}" MATCHES "#define CRYPTO_LIB_INTERFACE_VERSION_MAJOR")
2853+ string(REGEX REPLACE "^#define +CRYPTO_LIB_INTERFACE_VERSION_MAJOR +\([0-9]+\).*$" "\\1" IPPCP_INTERFACE_VERSION_MAJOR ${LINE})
2854 endif()
2855- if ("${LINE}" MATCHES "#define IPP_INTERFACE_VERSION_MINOR")
2856- string(REGEX REPLACE "^#define +IPP_INTERFACE_VERSION_MINOR +\([0-9]+\).*$" "\\1" IPPCP_INTERFACE_VERSION_MINOR ${LINE})
2857+ if ("${LINE}" MATCHES "#define CRYPTO_LIB_INTERFACE_VERSION_MINOR")
2858+ string(REGEX REPLACE "^#define +CRYPTO_LIB_INTERFACE_VERSION_MINOR +\([0-9]+\).*$" "\\1" IPPCP_INTERFACE_VERSION_MINOR ${LINE})
2859 endif()
2860 endforeach()
2861 set(IPPCP_VERSION "${IPPCP_VERSION_MAJOR}.${IPPCP_VERSION_MINOR}.${IPPCP_VERSION_UPDATE}")
2862diff --git a/sources/cmake/linux/Clang9.0.0.cmake b/sources/cmake/linux/Clang9.0.0.cmake
2863index 18e5182..4bb0746 100644
2864--- a/sources/cmake/linux/Clang9.0.0.cmake
2865+++ b/sources/cmake/linux/Clang9.0.0.cmake
2866@@ -15,7 +15,7 @@
2867 #=========================================================================
2868
2869 #
2870-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2871+# Intel® Cryptography Primitives Library
2872 #
2873
2874 # Security Linker flags
2875@@ -77,9 +77,6 @@ endif()
2876 # Enable Intel® Control-Flow Enforcement Technology (Intel® CET) protection
2877 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcf-protection=full")
2878
2879-# Security flag that adds compile-time and run-time checks
2880-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
2881-
2882 if(NOT NONPIC_LIB)
2883 # Position Independent Execution (PIE)
2884 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic -fPIC")
2885@@ -106,7 +103,9 @@ if(SANITIZERS)
2886 endif(SANITIZERS)
2887
2888 # Optimization level = 3, no-debug definition (turns off asserts), warnings=errors
2889-set (CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -Werror")
2890+set(CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -Werror")
2891+# Security flag that adds compile-time and run-time checks
2892+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2")
2893
2894 # DEBUG flags - optimization level = 0, generation GDB information (-g)
2895 set (CMAKE_C_FLAGS_DEBUG " -O0 -g")
2896diff --git a/sources/cmake/linux/GNU8.2.0.cmake b/sources/cmake/linux/GNU8.2.0.cmake
2897index 96658a8..55e60ae 100644
2898--- a/sources/cmake/linux/GNU8.2.0.cmake
2899+++ b/sources/cmake/linux/GNU8.2.0.cmake
2900@@ -15,7 +15,7 @@
2901 #=========================================================================
2902
2903 #
2904-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2905+# Intel® Cryptography Primitives Library
2906 #
2907
2908 # Security Linker flags
2909@@ -51,7 +51,7 @@ set(CC_FLAGS_INLINE_ASM_UNIX_IA32 "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -m32")
2910 # EBP is used as a general-purpose register in optimizations
2911 set(CC_FLAGS_INLINE_ASM_UNIX_IA32 "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -fomit-frame-pointer")
2912
2913-# Do not use the specified registres in dispatcher compilation
2914+# Do not use the specified registers in dispatcher compilation
2915 set(CC_FLAGS_INLINE_ASM_UNIX_INTEL64 "${CC_FLAGS_INLINE_ASM_UNIX} -ffixed-rdi -ffixed-rsi -ffixed-rbx -ffixed-rcx -ffixed-rdx -ffixed-rbp -ffixed-r8 -ffixed-r9 -ffixed-r12 -ffixed-r13 -ffixed-r14 -ffixed-r15")
2916
2917 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBRARY_DEFINES}")
2918@@ -73,9 +73,6 @@ if ((${ARCH} MATCHES "ia32") OR (NOT NONPIC_LIB))
2919 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
2920 endif()
2921
2922-# Security flag that adds compile-time and run-time checks
2923-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
2924-
2925 if(NOT NONPIC_LIB)
2926 # Position Independent Execution (PIE)
2927 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic -fPIC")
2928@@ -96,7 +93,9 @@ if(${ARCH} MATCHES "ia32")
2929 endif(${ARCH} MATCHES "ia32")
2930
2931 # Optimization level = 3, no-debug definition (turns off asserts), warnings=errors
2932-set (CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -Werror")
2933+set(CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -Werror")
2934+# Security flag that adds compile-time and run-time checks
2935+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2")
2936
2937 set(w7_opt "${w7_opt} -march=pentium4 -msse2")
2938 set(s8_opt "${s8_opt} -march=core2 -mssse3")
2939diff --git a/sources/cmake/linux/Intel19.0.0.cmake b/sources/cmake/linux/Intel19.0.0.cmake
2940index c1d4850..8f0c3ae 100644
2941--- a/sources/cmake/linux/Intel19.0.0.cmake
2942+++ b/sources/cmake/linux/Intel19.0.0.cmake
2943@@ -15,13 +15,13 @@
2944 #=========================================================================
2945
2946 #
2947-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2948+# Intel® Cryptography Primitives Library
2949 #
2950
2951 # Linker flags
2952
2953 # Security Linker flags
2954-set(LINK_FLAG_SECURITY "")
2955+set(LINK_FLAG_SECURITY "")
2956 # Disallows undefined symbols in object files. Undefined symbols in shared libraries are still allowed
2957 set(LINK_FLAG_SECURITY "${LINK_FLAG_SECURITY} -Wl,-z,defs")
2958 # Stack execution protection
2959@@ -54,7 +54,7 @@ set(CC_FLAGS_INLINE_ASM_UNIX_IA32 "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -m32")
2960 # EBP is used as a general-purpose register in optimizations
2961 set(CC_FLAGS_INLINE_ASM_UNIX_IA32 "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -fomit-frame-pointer")
2962
2963-# Do not use the specified registres in dispatcher compilation
2964+# Do not use the specified registers in dispatcher compilation
2965 set(CC_FLAGS_INLINE_ASM_UNIX_INTEL64 "${CC_FLAGS_INLINE_ASM_UNIX} -ffixed-rdi -ffixed-rsi -ffixed-rbx -ffixed-rcx -ffixed-rdx -ffixed-rbp -ffixed-r8 -ffixed-r9 -ffixed-r12 -ffixed-r13 -ffixed-r14 -ffixed-r15")
2966
2967 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBRARY_DEFINES}")
2968@@ -77,9 +77,6 @@ if ((${ARCH} MATCHES "ia32") OR (NOT NONPIC_LIB))
2969 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
2970 endif()
2971
2972-# Security flag that adds compile-time and run-time checks
2973-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
2974-
2975 # Format string vulnerabilities
2976 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat -Wformat-security")
2977
2978@@ -99,7 +96,10 @@ if(CODE_COVERAGE)
2979 endif()
2980
2981 # Optimization level = 3, no-debug definition (turns off asserts), warning level = 3, treat warnings as errors
2982-set (CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -w3 -Werror")
2983+set(CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -w3 -Werror")
2984+# Security flag that adds compile-time and run-time checks
2985+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2")
2986+
2987 # DEBUG flags Optimization level = 0, generation maximum GDB information (-g3)
2988 set (CMAKE_C_FLAGS_DEBUG " -O0 -g3")
2989
2990diff --git a/sources/cmake/linux/IntelLLVM2023.1.0.cmake b/sources/cmake/linux/IntelLLVM2023.1.0.cmake
2991index babc289..2b26334 100644
2992--- a/sources/cmake/linux/IntelLLVM2023.1.0.cmake
2993+++ b/sources/cmake/linux/IntelLLVM2023.1.0.cmake
2994@@ -15,13 +15,13 @@
2995 #=========================================================================
2996
2997 #
2998-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
2999+# Intel® Cryptography Primitives Library
3000 #
3001
3002 # Linker flags
3003
3004 # Security Linker flags
3005-set(LINK_FLAG_SECURITY "")
3006+set(LINK_FLAG_SECURITY "")
3007 # Disallows undefined symbols in object files. Undefined symbols in shared libraries are still allowed
3008 set(LINK_FLAG_SECURITY "${LINK_FLAG_SECURITY} -Wl,-z,defs")
3009 # Stack execution protection
3010@@ -54,7 +54,7 @@ set(CC_FLAGS_INLINE_ASM_UNIX_IA32 "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -m32")
3011 # EBP is used as a general-purpose register in optimizations
3012 set(CC_FLAGS_INLINE_ASM_UNIX_IA32 "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -fomit-frame-pointer")
3013
3014-# Do not use the specified registres in dispatcher compilation
3015+# Do not use the specified registers in dispatcher compilation
3016 set(CC_FLAGS_INLINE_ASM_UNIX_INTEL64 "${CC_FLAGS_INLINE_ASM_UNIX} -ffixed-rdi -ffixed-rsi -ffixed-rbx -ffixed-rcx -ffixed-rdx -ffixed-rbp -ffixed-r8 -ffixed-r9 -ffixed-r12 -ffixed-r13 -ffixed-r14 -ffixed-r15")
3017
3018 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBRARY_DEFINES}")
3019@@ -73,9 +73,6 @@ if ((${ARCH} MATCHES "ia32") OR (NOT NONPIC_LIB))
3020 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
3021 endif()
3022
3023-# Security flag that adds compile-time and run-time checks
3024-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
3025-
3026 # Format string vulnerabilities
3027 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat -Wformat-security -Wunknown-pragmas")
3028
3029@@ -95,7 +92,9 @@ if(CODE_COVERAGE)
3030 endif()
3031
3032 # Optimization level = 3, no-debug definition (turns off asserts), warning level = 3, treat warnings as errors
3033-set (CMAKE_C_FLAGS_RELEASE " -Ofast -DNDEBUG -Wall -Wno-unused-function -Wno-missing-braces -Werror")
3034+set(CMAKE_C_FLAGS_RELEASE " -Ofast -DNDEBUG -Wall -Wno-unused-function -Werror")
3035+# Security flag that adds compile-time and run-time checks
3036+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2")
3037
3038 # Alignment for structures on byte boundaries (= 16)
3039 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Zp16")
3040@@ -104,13 +103,13 @@ if(${ARCH} MATCHES "ia32")
3041 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
3042 endif(${ARCH} MATCHES "ia32")
3043
3044-set(px_opt "${px_opt} -mia32")
3045-set(w7_opt "${w7_opt} -march=pentium4 -msse2")
3046+set(px_opt "${px_opt} ") # note: no flags for the default version
3047+set(w7_opt "${w7_opt} -msse2")
3048 set(s8_opt "${s8_opt} -march=core2 -mssse3")
3049 set(p8_opt "${p8_opt} -march=nehalem -msse4.2 -maes -mpclmul -msha")
3050 set(g9_opt "${g9_opt} -march=sandybridge -mavx -maes -mpclmul -msha -mrdrnd -mrdseed")
3051 set(h9_opt "${h9_opt} -march=haswell -mavx2 -maes -mvaes -mpclmul -mvpclmulqdq -msha -mrdrnd -mrdseed")
3052-set(mx_opt "${mx_opt} -march=pentium")
3053+set(mx_opt "${mx_opt} ") # note: no flags for the default version
3054 set(m7_opt "${m7_opt} -march=nocona -msse3")
3055 set(n8_opt "${n8_opt} -march=core2 -mssse3")
3056 set(y8_opt "${y8_opt} -march=nehalem -msse4.2 -maes -mpclmul -msha")
3057diff --git a/sources/cmake/linux/common.cmake b/sources/cmake/linux/common.cmake
3058index c0c5fd8..4b47261 100644
3059--- a/sources/cmake/linux/common.cmake
3060+++ b/sources/cmake/linux/common.cmake
3061@@ -15,7 +15,7 @@
3062 #=========================================================================
3063
3064 #
3065-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3066+# Intel® Cryptography Primitives Library
3067 #
3068
3069 set(OS_DEFAULT_COMPILER Intel19.0.0)
3070diff --git a/sources/cmake/macosx/AppleClang11.0.0.cmake b/sources/cmake/macosx/AppleClang11.0.0.cmake
3071index 5f2ad63..2d5ec67 100644
3072--- a/sources/cmake/macosx/AppleClang11.0.0.cmake
3073+++ b/sources/cmake/macosx/AppleClang11.0.0.cmake
3074@@ -15,7 +15,7 @@
3075 #=========================================================================
3076
3077 #
3078-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3079+# Intel® Cryptography Primitives Library
3080 #
3081
3082 # Security Linker flags
3083@@ -78,9 +78,6 @@ if ((${ARCH} MATCHES "ia32") OR (NOT NONPIC_LIB))
3084 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
3085 endif()
3086
3087-# Security flag that adds compile-time and run-time checks
3088-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
3089-
3090 if(NOT NONPIC_LIB)
3091 # Position Independent Execution (PIE)
3092 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic -fPIC")
3093@@ -99,7 +96,9 @@ if(${ARCH} MATCHES "ia32")
3094 endif(${ARCH} MATCHES "ia32")
3095
3096 # Optimization level = 3, no-debug definition (turns off asserts), warnings=errors
3097-set (CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -Werror")
3098+set(CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -Werror")
3099+# Security flag that adds compile-time and run-time checks
3100+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2")
3101
3102 set(w7_opt "${w7_opt} -march=pentium4 -msse2")
3103 set(s8_opt "${s8_opt} -march=core2 -mssse3")
3104diff --git a/sources/cmake/macosx/Intel19.0.0.cmake b/sources/cmake/macosx/Intel19.0.0.cmake
3105index b5456a1..bf1ea47 100644
3106--- a/sources/cmake/macosx/Intel19.0.0.cmake
3107+++ b/sources/cmake/macosx/Intel19.0.0.cmake
3108@@ -15,7 +15,7 @@
3109 #=========================================================================
3110
3111 #
3112-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3113+# Intel® Cryptography Primitives Library
3114 #
3115
3116 # linker
3117@@ -47,7 +47,7 @@ set(CC_FLAGS_INLINE_ASM_UNIX_IA32 "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -m32")
3118 # EBP is used as a general-purpose register in optimizations
3119 set(CC_FLAGS_INLINE_ASM_UNIX_IA32 "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -fomit-frame-pointer")
3120
3121-# Do not use the specified registres in dispatcher compilation
3122+# Do not use the specified registers in dispatcher compilation
3123 set(CC_FLAGS_INLINE_ASM_UNIX_INTEL64 "${CC_FLAGS_INLINE_ASM_UNIX} -ffixed-rdi -ffixed-rsi -ffixed-rbx -ffixed-rcx -ffixed-rdx -ffixed-rbp -ffixed-r8 -ffixed-r9 -ffixed-r12 -ffixed-r13 -ffixed-r14 -ffixed-r15")
3124
3125 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBRARY_DEFINES}")
3126@@ -68,9 +68,6 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -diag-error 266 -diag-disable 13366
3127 # Stack-based Buffer Overrun Detection
3128 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
3129
3130-# Security flag that adds compile-time and run-time checks
3131-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
3132-
3133 # Format string vulnerabilities
3134 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat -Wformat-security")
3135
3136@@ -86,7 +83,9 @@ if(CODE_COVERAGE)
3137 endif()
3138
3139 # Optimization level = 3, no-debug definition (turns off asserts), warning level = 3, treat warnings as errors
3140-set (CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -w3 -Werror")
3141+set(CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -w3 -Werror")
3142+# Security flag that adds compile-time and run-time checks
3143+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_FORTIFY_SOURCE=2")
3144
3145 # Compile for x64
3146 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch_only x86_64")
3147diff --git a/sources/cmake/macosx/common.cmake b/sources/cmake/macosx/common.cmake
3148index 874b01b..74e8b4b 100644
3149--- a/sources/cmake/macosx/common.cmake
3150+++ b/sources/cmake/macosx/common.cmake
3151@@ -15,7 +15,7 @@
3152 #=========================================================================
3153
3154 #
3155-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3156+# Intel® Cryptography Primitives Library
3157 #
3158
3159 set(OS_DEFAULT_COMPILER Intel19.0.0)
3160diff --git a/sources/cmake/os_common.cmake b/sources/cmake/os_common.cmake
3161index 65f95ac..6379c94 100644
3162--- a/sources/cmake/os_common.cmake
3163+++ b/sources/cmake/os_common.cmake
3164@@ -15,10 +15,10 @@
3165 #=========================================================================
3166
3167 #
3168-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3169+# Intel® Cryptography Primitives Library
3170 #
3171
3172-# The ability to build custom Intel® IPP Cryptography library - enable specific CPU features at compile time
3173+# The ability to build custom Intel® Cryptography Primitives Library - enable specific CPU features at compile time
3174 if((NOT MERGED_BLD) AND (NOT "${IPPCP_CUSTOM_BUILD}" STREQUAL ""))
3175 set(LIBRARY_DEFINES "${LIBRARY_DEFINES} -DIPPCP_CUSTOM_BUILD")
3176 foreach(feature ${IPPCP_CUSTOM_BUILD})
3177diff --git a/sources/cmake/pkg-config/crypto_mb-dynamic.pc.in b/sources/cmake/pkg-config/crypto_mb-dynamic.pc.in
3178index 7b7b3d6..5ba9464 100644
3179--- a/sources/cmake/pkg-config/crypto_mb-dynamic.pc.in
3180+++ b/sources/cmake/pkg-config/crypto_mb-dynamic.pc.in
3181@@ -18,7 +18,7 @@ prefix=@PREFIX_FOR_PC_FILE@
3182 libdir=@LIBDIR_FOR_PC_FILE@
3183 includedir=@INCDIR_FOR_PC_FILE@
3184
3185-Name: Intel® Integrated Performance Primitives (Intel® IPP) Cryptography Crypto Multi-Buffer Library
3186+Name: Intel® Cryptography Primitives Library Crypto Multi-Buffer Library
3187 Description: This library consists of highly-optimized kernels taking advantage of Intel’s multi-buffer processing and Intel® AVX-512 instruction set.
3188 URL: https://github.com/intel/ipp-crypto
3189 Version: @IPPCP_VERSION@
3190diff --git a/sources/cmake/pkg-config/crypto_mb-static.pc.in b/sources/cmake/pkg-config/crypto_mb-static.pc.in
3191index 3101b2f..2a99e34 100644
3192--- a/sources/cmake/pkg-config/crypto_mb-static.pc.in
3193+++ b/sources/cmake/pkg-config/crypto_mb-static.pc.in
3194@@ -18,7 +18,7 @@ prefix=@PREFIX_FOR_PC_FILE@
3195 libdir=@LIBDIR_FOR_PC_FILE@
3196 includedir=@INCDIR_FOR_PC_FILE@
3197
3198-Name: Intel® Integrated Performance Primitives (Intel® IPP) Cryptography Crypto Multi-Buffer Library
3199+Name: Intel® Cryptography Primitives Library Crypto Multi-Buffer Library
3200 Description: This library consists of highly-optimized kernels taking advantage of Intel’s multi-buffer processing and Intel® AVX-512 instruction set.
3201 URL: https://github.com/intel/ipp-crypto
3202 Version: @IPPCP_VERSION@
3203diff --git a/sources/cmake/pkg-config/ippcp-dynamic.pc.in b/sources/cmake/pkg-config/ippcp-dynamic.pc.in
3204index 0067324..c154fdb 100644
3205--- a/sources/cmake/pkg-config/ippcp-dynamic.pc.in
3206+++ b/sources/cmake/pkg-config/ippcp-dynamic.pc.in
3207@@ -18,7 +18,7 @@ prefix=@PREFIX_FOR_PC_FILE@
3208 libdir=@LIBDIR_FOR_PC_FILE@
3209 includedir=@INCDIR_FOR_PC_FILE@
3210
3211-Name: Intel® Integrated Performance Primitives (Intel® IPP) Cryptography Library
3212+Name: Intel® Cryptography Primitives Library
3213 Description: Secure, fast and lightweight library of building blocks for cryptography, highly-optimized for various Intel® CPUs.
3214 URL: https://github.com/intel/ipp-crypto
3215 Version: @IPPCP_VERSION@
3216diff --git a/sources/cmake/pkg-config/ippcp-static.pc.in b/sources/cmake/pkg-config/ippcp-static.pc.in
3217index 3cc69f4..b66e0e1 100644
3218--- a/sources/cmake/pkg-config/ippcp-static.pc.in
3219+++ b/sources/cmake/pkg-config/ippcp-static.pc.in
3220@@ -18,7 +18,7 @@ prefix=@PREFIX_FOR_PC_FILE@
3221 libdir=@LIBDIR_FOR_PC_FILE@
3222 includedir=@INCDIR_FOR_PC_FILE@
3223
3224-Name: Intel® Integrated Performance Primitives (Intel® IPP) Cryptography Library
3225+Name: Intel® Cryptography Primitives Library
3226 Description: Secure, fast and lightweight library of building blocks for cryptography, highly-optimized for various Intel® CPUs.
3227 URL: https://github.com/intel/ipp-crypto
3228 Version: @IPPCP_VERSION@
3229diff --git a/sources/cmake/windows/Intel19.0.0.cmake b/sources/cmake/windows/Intel19.0.0.cmake
3230index cdfdbeb..87b03db 100644
3231--- a/sources/cmake/windows/Intel19.0.0.cmake
3232+++ b/sources/cmake/windows/Intel19.0.0.cmake
3233@@ -15,7 +15,7 @@
3234 #=========================================================================
3235
3236 #
3237-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3238+# Intel® Cryptography Primitives Library
3239 #
3240
3241 # linker
3242@@ -36,11 +36,13 @@ if(${ARCH} MATCHES "ia32")
3243 # When /SAFESEH is specified, the linker will only produce an image if it can also produce a table of the image's safe exception handlers.
3244 set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /SAFESEH")
3245 else()
3246- # The /LARGEADDRESSAWARE option tells the linker that the application can handle addresses larger than 2 gigabytes.
3247+ # The /LARGEADDRESSAWARE option tells the linker that the application can handle addresses larger than 2 gigabytes.
3248 set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /LARGEADDRESSAWARE")
3249 # This option modifies the header of an executable image, a .dll file or .exe file, to indicate whether ASLR with 64-bit addresses is supported.
3250 set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /HIGHENTROPYVA")
3251 endif(${ARCH} MATCHES "ia32")
3252+# Linker option to mitigate DLL hijacking vulnerability - removes CWD from the DLL search order
3253+set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /DEPENDENTLOADFLAG:0x2000")
3254
3255 # suppress warning LNK4221:
3256 # "This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library"
3257@@ -93,8 +95,6 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Qsox-")
3258 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Gy")
3259 # C std
3260 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Qstd=c99")
3261-# Security flag that adds compile-time and run-time checks
3262-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D_FORTIFY_SOURCE=2")
3263 # Enable Intel® Control-Flow Enforcement Technology (Intel® CET) protection
3264 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Qcf-protection:full")
3265
3266@@ -113,6 +113,8 @@ set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /DDEBUG")
3267
3268 # Causes the application to use the multithread, static version of the run-time library.
3269 set(CMAKE_C_FLAGS_RELEASE "/MT")
3270+# Security flag that adds compile-time and run-time checks
3271+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /D_FORTIFY_SOURCE=2")
3272 # Omits the default C runtime library name from the .obj file.
3273 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zl")
3274 # "Maximize Speed". Selects a predefined set of options that affect the size and speed of generated code.
3275@@ -120,7 +122,7 @@ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /O3") # /Ob2 is included in
3276 # No-debug macro
3277 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /DNDEBUG")
3278
3279-# suppress warning #10120: overriding '/O2' with '/O3'
3280+# suppress warning #10120: overriding '/O2' with '/O3'
3281 # CMake bug: cmake cannot change the property "Optimization" to /O3 in MSVC project
3282 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -wd10120")
3283
3284diff --git a/sources/cmake/windows/IntelLLVM2023.1.0.cmake b/sources/cmake/windows/IntelLLVM2023.1.0.cmake
3285index dd570ed..e8210d6 100644
3286--- a/sources/cmake/windows/IntelLLVM2023.1.0.cmake
3287+++ b/sources/cmake/windows/IntelLLVM2023.1.0.cmake
3288@@ -15,7 +15,7 @@
3289 #===============================================================================
3290
3291 #
3292-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3293+# Intel® Cryptography Primitives Library
3294 #
3295
3296 # linker
3297@@ -34,6 +34,8 @@ set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /NXCOMPAT")
3298 set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /DYNAMICBASE")
3299 # Enable Intel® Control-Flow Enforcement Technology (Intel® CET) protection
3300 set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /CETCOMPAT")
3301+# Linker option to mitigate DLL hijacking vulnerability - removes CWD from the DLL search order
3302+set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /DEPENDENTLOADFLAG:0x2000")
3303
3304 if(${ARCH} MATCHES "ia32")
3305 # When /SAFESEH is specified, the linker will only produce an image if it can also produce a table of the image's safe exception handlers.
3306@@ -45,9 +47,6 @@ else()
3307 set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /HIGHENTROPYVA")
3308 endif(${ARCH} MATCHES "ia32")
3309
3310-# Disables linking to Intel® libraries
3311-set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /Qno-intel-lib")
3312-
3313 # Link to universal C runtime and MSVC runtime. Used in dlls.
3314 set(LINK_LIB_STATIC_RELEASE libcmt libucrt libvcruntime)
3315 set(LINK_LIB_STATIC_DEBUG libcmtd libucrtd libvcruntime)
3316@@ -58,10 +57,10 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBRARY_DEFINES}")
3317 # Suppresses the display of the copyright banner when the compiler starts up and display of informational messages during compiling.
3318 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo")
3319 # Warning level = 4
3320-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
3321+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 -Wall -Wformat -Wformat-security -Werror=format-security")
3322 # Changes all warnings to errors.
3323 #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
3324-# Detects some buffer overruns that overwrite a function's return address, exception handler address, or certain types of parameters.
3325+# Detects some buffer overruns that overwrite a function's return address, exception handler address, or certain types of parameters.
3326 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /GS")
3327 # Controls how the members of a structure are packed into memory and specifies the same packing for all structures in a module.
3328 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Zp16")
3329@@ -72,7 +71,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Qstd=c99")
3330 # Enable Intel® Control-Flow Enforcement Technology (Intel® CET) protection
3331 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcf-protection:full")
3332 # Suppress some warnings
3333-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Wno-missing-braces /Wno-null-pointer-arithmetic /Wno-unused-function /Wno-static-in-inline /Qno-intel-lib")
3334+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Wno-null-pointer-arithmetic /Wno-unused-function /Wno-static-in-inline /Qno-intel-lib")
3335
3336 # Causes the application to use the multithread, static version of the run-time library (debug version).
3337 set(CMAKE_C_FLAGS_DEBUG "/MTd")
3338diff --git a/sources/cmake/windows/MSVC19.14.cmake b/sources/cmake/windows/MSVC19.14.cmake
3339index cee806f..fe19a9c 100644
3340--- a/sources/cmake/windows/MSVC19.14.cmake
3341+++ b/sources/cmake/windows/MSVC19.14.cmake
3342@@ -15,7 +15,7 @@
3343 #=========================================================================
3344
3345 #
3346-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3347+# Intel® Cryptography Primitives Library
3348 #
3349
3350 # linker
3351@@ -43,6 +43,8 @@ else()
3352 # This option modifies the header of an executable image, a .dll file or .exe file, to indicate whether ASLR with 64-bit addresses is supported.
3353 set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /HIGHENTROPYVA")
3354 endif(${ARCH} MATCHES "ia32")
3355+# Linker option to mitigate DLL hijacking vulnerability - removes CWD from the DLL search order
3356+set(LINK_FLAG_DYNAMIC_WINDOWS "${LINK_FLAG_DYNAMIC_WINDOWS} /DEPENDENTLOADFLAG:0x2000")
3357
3358 if (MSVC_VERSION LESS_EQUAL 1800) # VS2013
3359 # Link to C runtime, used in dlls
3360@@ -65,7 +67,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /X")
3361 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
3362 # Changes all warnings to errors.
3363 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
3364-# Detects some buffer overruns that overwrite a function's return address, exception handler address, or certain types of parameters.
3365+# Detects some buffer overruns that overwrite a function's return address, exception handler address, or certain types of parameters.
3366 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /GS")
3367 # Controls how the members of a structure are packed into memory and specifies the same packing for all structures in a module.
3368 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Zp16")
3369diff --git a/sources/cmake/windows/common.cmake b/sources/cmake/windows/common.cmake
3370index baac529..ea8e282 100644
3371--- a/sources/cmake/windows/common.cmake
3372+++ b/sources/cmake/windows/common.cmake
3373@@ -15,7 +15,7 @@
3374 #=========================================================================
3375
3376 #
3377-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3378+# Intel® Cryptography Primitives Library
3379 #
3380
3381 set(OS_DEFAULT_COMPILER Intel19.0.0)
3382diff --git a/sources/dispatcher/gen_disp_common.py b/sources/dispatcher/gen_disp_common.py
3383index 7950045..b99408a 100644
3384--- a/sources/dispatcher/gen_disp_common.py
3385+++ b/sources/dispatcher/gen_disp_common.py
3386@@ -15,7 +15,7 @@
3387 #=========================================================================
3388
3389 #
3390-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
3391+# Intel(R) Cryptography Primitives Library
3392 #
3393
3394 import re
3395@@ -34,28 +34,28 @@ def readNextFunction(header, curLine, headerID): ## read next function with a
3396 headerID= re.sub( '.*__IPP', '__IPP', header[curLine] )
3397 headerID= re.sub( "\)", '', headerID)
3398 headerID= re.sub( '[\n\s]', '', headerID )
3399-
3400+
3401 if re.match( '^\s*IPPAPI\s*\(.*', header[curLine] ) :
3402 FunStr= header[curLine];
3403 FunStr= re.sub('\n','',FunStr) ## remove EOL symbols
3404-
3405+
3406 while not re.match('.*\)\s*\)\s*$', FunStr): ## concatenate string if string is not completed
3407 curLine= curLine+1
3408 FunStr= FunStr+header[curLine]
3409 FunStr= re.sub('\n','',FunStr) ## remove EOL symbols
3410-
3411+
3412 FunStr= re.sub('\s+', ' ', FunStr)
3413-
3414+
3415 s= FunStr.split(',')
3416-
3417+
3418 ## Extract function name
3419 FunName= s[1]
3420 FunName= re.sub('\s', '', FunName)
3421-
3422+
3423 ## Extract function type
3424 FunType= re.sub( '.*\(', '', s[0] )
3425 #FunType= re.sub(' ', '', FunType )
3426-
3427+
3428 ## Extract function arguments
3429 FunArg= re.sub('.*\(.*,.+,\s*\(', '(', FunStr)
3430 FunArg= re.sub('\)\s*\)', ')', FunArg)
3431diff --git a/sources/dispatcher/gen_disp_lin32.nonpic.py b/sources/dispatcher/gen_disp_lin32.nonpic.py
3432index 457dceb..5e14c2c 100644
3433--- a/sources/dispatcher/gen_disp_lin32.nonpic.py
3434+++ b/sources/dispatcher/gen_disp_lin32.nonpic.py
3435@@ -15,7 +15,7 @@
3436 #=========================================================================
3437
3438 #
3439-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
3440+# Intel(R) Cryptography Primitives Library
3441 #
3442
3443 import re
3444@@ -25,7 +25,7 @@ import hashlib
3445 import argparse
3446
3447 parser = argparse.ArgumentParser()
3448-parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for functions in Header')
3449+parser.add_argument('-i', '--header', action='store', required=True, help='Intel Cryptography Primitives Library dispatcher will be generated for functions in Header')
3450 parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
3451 parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
3452 parser.add_argument('-c', '--compiler', action='store', required=True, help='Compiler')
3453@@ -107,7 +107,7 @@ in_{FunName}:
3454 {FunName}:
3455 {endbr32}
3456 mov eax, dword [ippcpJumpIndexForMergedLibs]
3457- jmp dword [rel arraddr_{FunName} + eax*4]
3458+ jmp dword [arraddr_{FunName} + eax*4]
3459 .LEnd{FunName}:
3460 """.format(FunName=FunName, size=size, endbr32='db 0xf3, 0x0f, 0x1e, 0xfb'))
3461 ASMDISP.close()
3462diff --git a/sources/dispatcher/gen_disp_lin32.py b/sources/dispatcher/gen_disp_lin32.py
3463index ca0e34a..d75a32d 100644
3464--- a/sources/dispatcher/gen_disp_lin32.py
3465+++ b/sources/dispatcher/gen_disp_lin32.py
3466@@ -15,7 +15,7 @@
3467 #=========================================================================
3468
3469 #
3470-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
3471+# Intel(R) Cryptography Primitives Library
3472 #
3473
3474 import re
3475@@ -25,7 +25,7 @@ import hashlib
3476 import argparse
3477
3478 parser = argparse.ArgumentParser()
3479-parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for functions in Header')
3480+parser.add_argument('-i', '--header', action='store', required=True, help='Intel Cryptography Primitives Library dispatcher will be generated for functions in Header')
3481 parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
3482 parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
3483 parser.add_argument('-c', '--compiler', action='store', required=True, help='Compiler')
3484diff --git a/sources/dispatcher/gen_disp_lin64.nonpic.py b/sources/dispatcher/gen_disp_lin64.nonpic.py
3485index 151390c..adfc3f1 100644
3486--- a/sources/dispatcher/gen_disp_lin64.nonpic.py
3487+++ b/sources/dispatcher/gen_disp_lin64.nonpic.py
3488@@ -15,7 +15,7 @@
3489 #=========================================================================
3490
3491 #
3492-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
3493+# Intel(R) Cryptography Primitives Library
3494 #
3495
3496 import re
3497@@ -25,7 +25,7 @@ import hashlib
3498 import argparse
3499
3500 parser = argparse.ArgumentParser()
3501-parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for functions in Header')
3502+parser.add_argument('-i', '--header', action='store', required=True, help='Intel Cryptography Primitives Library dispatcher will be generated for functions in Header')
3503 parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
3504 parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
3505 parser.add_argument('-c', '--compiler', action='store', required=True, help='Compiler')
3506diff --git a/sources/dispatcher/gen_disp_lin64.py b/sources/dispatcher/gen_disp_lin64.py
3507index 787a604..0e6fa66 100644
3508--- a/sources/dispatcher/gen_disp_lin64.py
3509+++ b/sources/dispatcher/gen_disp_lin64.py
3510@@ -15,7 +15,7 @@
3511 #=========================================================================
3512
3513 #
3514-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
3515+# Intel(R) Cryptography Primitives Library
3516 #
3517
3518 import re
3519@@ -25,7 +25,7 @@ import hashlib
3520 import argparse
3521
3522 parser = argparse.ArgumentParser()
3523-parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for functions in Header')
3524+parser.add_argument('-i', '--header', action='store', required=True, help='Intel Cryptography Primitives Library dispatcher will be generated for functions in Header')
3525 parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
3526 parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
3527 parser.add_argument('-c', '--compiler', action='store', required=True, help='Compiler')
3528@@ -75,6 +75,8 @@ if(compiler == "GNU" or compiler == "Clang" or compiler == "IntelLLVM"):
3529 ##################################################
3530 ASMDISP= open( os.sep.join([OutDir, "jmp_" + FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] +".asm"]), 'w' )
3531
3532+ ASMDISP.write('%include "noexec_stack.inc"\n\n');
3533+
3534 # Symbol type setting for extern functions initially appeared in version 2.15
3535 ASMDISP.write("%if ((__NASM_MAJOR__ > 2) || ((__NASM_MAJOR__ == 2) && (__NASM_MINOR__ > 14)))\n");
3536 ASMDISP.write(" %xdefine elf_symbol_type :function\n");
3537diff --git a/sources/dispatcher/gen_disp_mac64.py b/sources/dispatcher/gen_disp_mac64.py
3538index f3851a7..72441b3 100644
3539--- a/sources/dispatcher/gen_disp_mac64.py
3540+++ b/sources/dispatcher/gen_disp_mac64.py
3541@@ -15,7 +15,7 @@
3542 #=========================================================================
3543
3544 #
3545-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
3546+# Intel(R) Cryptography Primitives Library
3547 #
3548
3549 import re
3550@@ -25,7 +25,7 @@ import hashlib
3551 import argparse
3552
3553 parser = argparse.ArgumentParser()
3554-parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for functions in Header')
3555+parser.add_argument('-i', '--header', action='store', required=True, help='Intel Cryptography Primitives Library dispatcher will be generated for functions in Header')
3556 parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
3557 parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
3558 parser.add_argument('-c', '--compiler', action='store', help='Compiler') # is not used
3559@@ -111,13 +111,13 @@ else:
3560 while (isFunctionFound == True):
3561
3562 result = readNextFunction(h, curLine, headerID)
3563-
3564+
3565 curLine = result['curLine']
3566 FunType = result['FunType']
3567 FunName = result['FunName']
3568 FunArg = result['FunArg']
3569 isFunctionFound = result['success']
3570-
3571+
3572 if (isFunctionFound == True):
3573
3574 ##################################################
3575diff --git a/sources/dispatcher/gen_disp_win32.py b/sources/dispatcher/gen_disp_win32.py
3576index 1b615fc..9c3628b 100644
3577--- a/sources/dispatcher/gen_disp_win32.py
3578+++ b/sources/dispatcher/gen_disp_win32.py
3579@@ -15,7 +15,7 @@
3580 #=========================================================================
3581
3582 #
3583-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
3584+# Intel(R) Cryptography Primitives Library
3585 #
3586
3587 import re
3588@@ -25,7 +25,7 @@ import hashlib
3589 import argparse
3590
3591 parser = argparse.ArgumentParser()
3592-parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for functions in Header')
3593+parser.add_argument('-i', '--header', action='store', required=True, help='Intel Cryptography Primitives Library dispatcher will be generated for functions in Header')
3594 parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
3595 parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
3596 parser.add_argument('-c', '--compiler', action='store', help='Compiler') # is not used
3597@@ -64,7 +64,7 @@ while (isFunctionFound == True):
3598 FunName = result['FunName']
3599 FunArg = result['FunArg']
3600 isFunctionFound = result['success']
3601-
3602+
3603 if (isFunctionFound == True):
3604
3605 ##################################################
3606@@ -82,7 +82,7 @@ while (isFunctionFound == True):
3607
3608 for cpu in cpulist:
3609 DISP.write("extern " + FunType + " IPP_CALL "+cpu+"_"+FunName+FunArg+";\n")
3610-
3611+
3612 DISP.write("static IPP_PROC arraddr[] =\n{{\n (IPP_PROC)in_{}".format(FunName))
3613
3614 for cpu in cpulist:
3615diff --git a/sources/dispatcher/gen_disp_win64.py b/sources/dispatcher/gen_disp_win64.py
3616index 1500460..681ca7e 100644
3617--- a/sources/dispatcher/gen_disp_win64.py
3618+++ b/sources/dispatcher/gen_disp_win64.py
3619@@ -15,7 +15,7 @@
3620 #=========================================================================
3621
3622 #
3623-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3624+# Intel® Cryptography Primitives Library
3625 #
3626
3627 import re
3628@@ -25,7 +25,7 @@ import hashlib
3629 import argparse
3630
3631 parser = argparse.ArgumentParser()
3632-parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for functions in Header')
3633+parser.add_argument('-i', '--header', action='store', required=True, help='Intel Cryptography Primitives Library dispatcher will be generated for functions in Header')
3634 parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
3635 parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
3636 parser.add_argument('-c', '--compiler', action='store', help='Compiler') # is not used
3637@@ -56,34 +56,34 @@ FunArg = ""
3638 while (isFunctionFound == True):
3639
3640 result = readNextFunction(h, curLine, headerID)
3641-
3642+
3643 curLine = result['curLine']
3644 FunName = result['FunName']
3645 FunArg = result['FunArg']
3646 isFunctionFound = result['success']
3647-
3648+
3649 if (isFunctionFound == True):
3650 ##################################################
3651 ## create dispatcher files: C file with inline asm
3652 ##################################################
3653 filename = "jmp_{}_{}".format(FunName, hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8])
3654-
3655+
3656 DISP= open( os.sep.join([OutDir, filename + ".asm"]), 'w' )
3657-
3658+
3659 for cpu in cpulist:
3660 DISP.write("extern "+cpu+"_"+FunName+"\n")
3661-
3662+
3663 DISP.write("extern ippcpJumpIndexForMergedLibs\n")
3664 DISP.write("extern ippcpSafeInit\n\n")
3665-
3666+
3667 DISP.write("segment data\n\n")
3668-
3669+
3670 DISP.write(" DQ in_"+FunName+"\n")
3671 DISP.write(FunName+"_arraddr:\n")
3672-
3673+
3674 for cpu in cpulist:
3675 DISP.write(" DQ "+cpu+"_"+FunName+"\n")
3676-
3677+
3678 DISP.write("""
3679
3680 segment text
3681diff --git a/sources/gen_cpu_spc_header/gen_cpu_spc_1cpu_header.py b/sources/gen_cpu_spc_header/gen_cpu_spc_1cpu_header.py
3682index 3ac46ec..8a55cec 100644
3683--- a/sources/gen_cpu_spc_header/gen_cpu_spc_1cpu_header.py
3684+++ b/sources/gen_cpu_spc_header/gen_cpu_spc_1cpu_header.py
3685@@ -15,7 +15,7 @@
3686 #=========================================================================
3687
3688 #
3689-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
3690+# Intel(R) Cryptography Primitives Library
3691 #
3692
3693 import sys
3694@@ -47,9 +47,16 @@ if not os.path.exists(OutDir):
3695 Filename="ippcp"
3696 Filenames=["h9", "p8", "s8", "w7", "e9", "k0", "k1", "l9", "m7", "n8", "y8", "g9"]
3697
3698+DeprecatedCodePaths= {
3699+ "n8" : "m7", # SSSE3 -> SSE3 64-bit
3700+ "e9" : "y8", # AVX -> SSE4.2 64-bit
3701+ "s8" : "w7", # SSSE3 -> SSE2 32-bit
3702+ "g9" : "p8" # AVX -> SSE4.2 32-bit
3703+}
3704+
3705 for name in Filenames:
3706 OutFile = os.sep.join([OutDir, Filename + "_"+ name + ".h"])
3707-
3708+
3709 OUT= open( OutFile, 'w' )
3710 OUT.write("""/*******************************************************************************
3711 * Copyright {year} Intel Corporation
3712@@ -69,6 +76,15 @@ for name in Filenames:
3713
3714 """.format(year=datetime.datetime.today().year))
3715
3716+ if name in DeprecatedCodePaths:
3717+ OUT.write(f"""
3718+#if !defined(_NO_IPP_DEPRECATED)
3719+#pragma message (\"code path {name} is deprecated, lower optimizations level {DeprecatedCodePaths[name]} is used\")
3720+#endif
3721+""")
3722+ name = DeprecatedCodePaths[name]
3723+
3724+
3725 curLine = 0
3726 isFunctionFound = True
3727
3728@@ -81,5 +97,5 @@ for name in Filenames:
3729 isFunctionFound = result['success']
3730
3731 if (isFunctionFound):
3732- OUT.write("#define " + FunName + " " + name +"_" + FunName + "\n")
3733+ OUT.write(f"#define {FunName} {name}_{FunName}\n")
3734 OUT.close()
3735diff --git a/sources/gen_cpu_spc_header/gen_cpu_spc_header.py b/sources/gen_cpu_spc_header/gen_cpu_spc_header.py
3736index 576deac..5e53f01 100644
3737--- a/sources/gen_cpu_spc_header/gen_cpu_spc_header.py
3738+++ b/sources/gen_cpu_spc_header/gen_cpu_spc_header.py
3739@@ -15,7 +15,7 @@
3740 #=========================================================================
3741
3742 #
3743-# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
3744+# Intel(R) Cryptography Primitives Library
3745 #
3746
3747 import sys
3748diff --git a/sources/include/asmdefs.inc b/sources/include/asmdefs.inc
3749index a469ffd..e35ad80 100644
3750--- a/sources/include/asmdefs.inc
3751+++ b/sources/include/asmdefs.inc
3752@@ -17,6 +17,8 @@
3753 %ifndef __ASMDEFS_INC__
3754 %define __ASMDEFS_INC__ 1
3755
3756+%include "noexec_stack.inc"
3757+
3758 %assign _IPP_PX 0 ; pure C-code ia32
3759 %assign _IPP_M5 1 ; Intel(R) Quark(TM) processor - ia32
3760 %assign _IPP_W7 8 ; Intel(R) Streaming SIMD Extensions 2 - ia32
3761@@ -103,22 +105,6 @@
3762 %assign IPP_ALIGN_FACTOR 16
3763 %endif
3764
3765-; noexec stack
3766-%ifdef LINUX32
3767- %ifndef OSX32
3768-section .note.GNU-stack noalloc noexec nowrite progbits
3769- %endif
3770-%endif
3771-
3772-; noexec stack
3773-%ifdef LINUX32E
3774- %ifndef OSXEM64T
3775- %ifndef _ARCH_KNC
3776-section .note.GNU-stack noalloc noexec nowrite progbits
3777- %endif
3778- %endif
3779-%endif
3780-
3781
3782 %ifidn __OUTPUT_FORMAT__, elf32
3783 %assign IPP_BINARY_FORMAT 0
3784@@ -143,7 +129,7 @@ section .note.GNU-stack noalloc noexec nowrite progbits
3785 %ifndef _MERGED_BLD
3786 %assign _IPP_DATA 1
3787 %else
3788- %if (_IPP == _IPP_G9) || (_IPP32E == _IPP32E_E9)
3789+ %if (_IPP == _IPP_P8) || (_IPP32E == _IPP32E_Y8)
3790 %assign _IPP_DATA 1
3791 %endif
3792 %endif ; _MERGED_BLD
3793diff --git a/sources/include/dispatcher.h b/sources/include/dispatcher.h
3794index fb6b190..40c7475 100644
3795--- a/sources/include/dispatcher.h
3796+++ b/sources/include/dispatcher.h
3797@@ -15,7 +15,7 @@
3798 *************************************************************************/
3799
3800 //
3801-// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
3802+// Intel® Cryptography Primitives Library
3803 //
3804
3805 #ifndef __DISPATCHER_H__
3806@@ -26,7 +26,7 @@ extern "C" {
3807 #endif
3808
3809 /*
3810- Intel IPP Cryptography libraries and CPU features mask fitness. Implemented only for IA32 and Intel64 (emt)
3811+ Intel® Cryptography Primitives Library and CPU features mask fitness. Implemented only for IA32 and Intel64 (emt)
3812 */
3813
3814 #if defined( _ARCH_IA32 )
3815@@ -79,23 +79,23 @@ extern "C" {
3816
3817 #if defined( _ARCH_IA32 ) && !defined( OSX32 )
3818 enum lib_enum {
3819- LIB_W7=0, LIB_S8=1, LIB_P8=2, LIB_G9=3, LIB_H9=4, LIB_NOMORE
3820+ LIB_W7=0, LIB_P8=1, LIB_H9=2, LIB_NOMORE
3821 };
3822 #define LIB_PX LIB_W7
3823 #elif defined( OSX32 )
3824 enum lib_enum {
3825- LIB_S8=0, LIB_P8=1, LIB_G9=2, LIB_H9=3, LIB_NOMORE
3826+ LIB_P8=0, LIB_H9=1, LIB_NOMORE
3827 };
3828 #define LIB_PX LIB_S8
3829 #define LIB_W7 LIB_S8
3830 #elif defined( _ARCH_EM64T ) && !defined( OSXEM64T )
3831 enum lib_enum {
3832- LIB_M7=0, LIB_N8=1, LIB_Y8=2, LIB_E9=3, LIB_L9=4, LIB_K0=5, LIB_K1=6, LIB_NOMORE
3833+ LIB_M7=0, LIB_Y8=1, LIB_L9=2, LIB_K0=3, LIB_K1=4, LIB_NOMORE
3834 };
3835 #define LIB_PX LIB_M7
3836 #elif defined( OSXEM64T )
3837 enum lib_enum {
3838- LIB_Y8=0, LIB_E9=1, LIB_L9=2, LIB_K0=3, LIB_K1=4, LIB_NOMORE
3839+ LIB_Y8=0, LIB_L9=1, LIB_K0=2, LIB_K1=3, LIB_NOMORE
3840 };
3841 #define LIB_PX LIB_Y8
3842 #define LIB_M7 LIB_Y8
3843@@ -178,34 +178,30 @@ extern "C" {
3844 #if defined( _ARCH_IA32 )
3845
3846 /* Describe Intel CPUs and libraries */
3847-typedef enum{CPU_W7=0, CPU_S8, CPU_P8, CPU_G9, CPU_H9, CPU_NOMORE} cpu_enum;
3848-typedef enum{DLL_W7=0, DLL_S8, DLL_P8, DLL_G9, DLL_H9, DLL_NOMORE} dll_enum;
3849+typedef enum{CPU_W7=0, CPU_P8, CPU_H9, CPU_NOMORE} cpu_enum;
3850+typedef enum{DLL_W7=0, DLL_P8, DLL_H9, DLL_NOMORE} dll_enum;
3851
3852 /* New cpu can use some libraries for old cpu */
3853 static const dll_enum dllUsage[][DLL_NOMORE+1] = {
3854- /* DLL_H9, DLL_G9, DLL_P8, DLL_S8, DLL_W7, DLL_NOMORE */
3855-/*CPU_W7*/ { DLL_W7, DLL_NOMORE },
3856-/*CPU_S8*/ { DLL_S8, DLL_W7, DLL_NOMORE },
3857-/*CPU_P8*/ { DLL_P8, DLL_S8, DLL_W7, DLL_NOMORE },
3858-/*CPU_G9*/ { DLL_G9, DLL_P8, DLL_S8, DLL_W7, DLL_NOMORE },
3859-/*CPU_H9*/ { DLL_H9, DLL_G9, DLL_P8, DLL_S8, DLL_W7, DLL_NOMORE }
3860+ /* DLL_H9, DLL_P8, DLL_W7, DLL_NOMORE */
3861+/*CPU_W7*/ { DLL_W7, DLL_NOMORE },
3862+/*CPU_P8*/ { DLL_P8, DLL_W7, DLL_NOMORE },
3863+/*CPU_H9*/ { DLL_H9, DLL_P8, DLL_W7, DLL_NOMORE }
3864 };
3865
3866 #elif defined (_ARCH_EM64T)
3867 /* Describe Intel CPUs and libraries */
3868-typedef enum{CPU_M7=0, CPU_N8, CPU_Y8, CPU_E9, CPU_L9, CPU_K0, CPU_K1, CPU_NOMORE} cpu_enum;
3869-typedef enum{DLL_M7=0, DLL_N8, DLL_Y8, DLL_E9, DLL_L9, DLL_K0, DLL_K1, DLL_NOMORE} dll_enum;
3870+typedef enum{CPU_M7=0, CPU_Y8, CPU_L9, CPU_K0, CPU_K1, CPU_NOMORE} cpu_enum;
3871+typedef enum{DLL_M7=0, DLL_Y8, DLL_L9, DLL_K0, DLL_K1, DLL_NOMORE} dll_enum;
3872
3873 /* New cpu can use some libraries for old cpu */
3874 static const dll_enum dllUsage[][DLL_NOMORE+1] = {
3875- /* DLL_K1, DLL_K0, DLL_L9, DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE */
3876-/*CPU_M7*/ { DLL_M7, DLL_NOMORE },
3877-/*CPU_N8*/ { DLL_N8, DLL_M7, DLL_NOMORE },
3878-/*CPU_Y8*/ { DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE },
3879-/*CPU_E9*/ { DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE },
3880-/*CPU_L9*/ { DLL_L9, DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE },
3881-/*CPU_K0*/ { DLL_K0, DLL_L9, DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE },
3882-/*CPU_K1*/ { DLL_K1, DLL_K0, DLL_L9, DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE }
3883+/* DLL_K1, DLL_K0, DLL_L9, DLL_Y8, DLL_M7, DLL_NOMORE */
3884+/*CPU_M7*/ { DLL_M7, DLL_NOMORE },
3885+/*CPU_Y8*/ { DLL_Y8, DLL_M7, DLL_NOMORE },
3886+/*CPU_L9*/ { DLL_L9, DLL_Y8, DLL_M7, DLL_NOMORE },
3887+/*CPU_K0*/ { DLL_K0, DLL_L9, DLL_Y8, DLL_M7, DLL_NOMORE },
3888+/*CPU_K1*/ { DLL_K1, DLL_K0, DLL_L9, DLL_Y8, DLL_M7, DLL_NOMORE }
3889 };
3890
3891 #endif
3892@@ -216,41 +212,31 @@ static const dll_enum dllUsage[][DLL_NOMORE+1] = {
3893 #if defined ( WIN32 )
3894 static const _TCHAR* dllNames[DLL_NOMORE] = {
3895 _T(IPP_LIB_PREFIX()) _T("w7") _T(".dll"),
3896- _T(IPP_LIB_PREFIX()) _T("s8") _T(".dll"),
3897 _T(IPP_LIB_PREFIX()) _T("p8") _T(".dll"),
3898- _T(IPP_LIB_PREFIX()) _T("g9") _T(".dll"),
3899 _T(IPP_LIB_PREFIX()) _T("h9") _T(".dll")
3900 };
3901 #elif defined(LINUX32)
3902 static const _TCHAR* dllNames[DLL_NOMORE] = {
3903 _T("lib") _T(IPP_LIB_PREFIX()) _T("w7.so"),
3904- _T("lib") _T(IPP_LIB_PREFIX()) _T("s8.so"),
3905 _T("lib") _T(IPP_LIB_PREFIX()) _T("p8.so"),
3906- _T("lib") _T(IPP_LIB_PREFIX()) _T("g9.so"),
3907 _T("lib") _T(IPP_LIB_PREFIX()) _T("h9.so")
3908 };
3909 #elif defined( OSX32 )
3910 static const _TCHAR* dllNames[DLL_NOMORE] = {
3911- _T("lib") _T(IPP_LIB_PREFIX()) _T("s8") _T(".dylib"),
3912 _T("lib") _T(IPP_LIB_PREFIX()) _T("p8") _T(".dylib"),
3913- _T("lib") _T(IPP_LIB_PREFIX()) _T("g9") _T(".dylib"),
3914 _T("lib") _T(IPP_LIB_PREFIX()) _T("h9") _T(".dylib")
3915 };
3916 #elif defined( WIN32E )
3917 static const _TCHAR* dllNames[DLL_NOMORE] = {
3918 _T(IPP_LIB_PREFIX()) _T("m7") _T(".dll"),
3919- _T(IPP_LIB_PREFIX()) _T("n8") _T(".dll"),
3920 _T(IPP_LIB_PREFIX()) _T("y8") _T(".dll"),
3921- _T(IPP_LIB_PREFIX()) _T("e9") _T(".dll"),
3922 _T(IPP_LIB_PREFIX()) _T("l9") _T(".dll"),
3923 _T(IPP_LIB_PREFIX()) _T("k0") _T(".dll"),
3924 _T(IPP_LIB_PREFIX()) _T("k1") _T(".dll")
3925 };
3926 #elif defined( OSXEM64T )
3927 static const _TCHAR* dllNames[DLL_NOMORE] = {
3928- _T("lib") _T(IPP_LIB_PREFIX()) _T("n8") _T(".dylib"),
3929 _T("lib") _T(IPP_LIB_PREFIX()) _T("y8") _T(".dylib"),
3930- _T("lib") _T(IPP_LIB_PREFIX()) _T("e9") _T(".dylib"),
3931 _T("lib") _T(IPP_LIB_PREFIX()) _T("l9") _T(".dylib"),
3932 _T("lib") _T(IPP_LIB_PREFIX()) _T("k0") _T(".dylib"),
3933 _T("lib") _T(IPP_LIB_PREFIX()) _T("k1") _T(".dylib")
3934@@ -258,9 +244,7 @@ static const _TCHAR* dllNames[DLL_NOMORE] = {
3935 #elif defined( LINUX32E )
3936 static const _TCHAR* dllNames[DLL_NOMORE] = {
3937 _T("lib") _T(IPP_LIB_PREFIX()) _T("m7.so"),
3938- _T("lib") _T(IPP_LIB_PREFIX()) _T("n8.so"),
3939 _T("lib") _T(IPP_LIB_PREFIX()) _T("y8.so"),
3940- _T("lib") _T(IPP_LIB_PREFIX()) _T("e9.so"),
3941 _T("lib") _T(IPP_LIB_PREFIX()) _T("l9.so"),
3942 _T("lib") _T(IPP_LIB_PREFIX()) _T("k0.so"),
3943 _T("lib") _T(IPP_LIB_PREFIX()) _T("k1.so")
3944diff --git a/sources/include/fips_cert_internal/bn_common.h b/sources/include/fips_cert_internal/bn_common.h
3945index 6a36dfa..a2e8dc6 100644
3946--- a/sources/include/fips_cert_internal/bn_common.h
3947+++ b/sources/include/fips_cert_internal/bn_common.h
3948@@ -31,9 +31,9 @@
3949 * \param[in] sgn sign of big number
3950 * \param[in] pdata pointer to integer big number
3951 * \param[in] data_word_len length of integer big number in 32bit size
3952- *
3953+ *
3954 */
3955-__INLINE IppStatus ippcp_init_set_bn(IppsBigNumState *pbn, int max_word_len,
3956+__IPPCP_INLINE IppStatus ippcp_init_set_bn(IppsBigNumState *pbn, int max_word_len,
3957 IppsBigNumSGN sgn, const Ipp32u *pdata, int data_word_len)
3958 {
3959 IppStatus sts;
3960diff --git a/sources/include/ippres.gen b/sources/include/ippres.gen
3961index 3ba4092..2da801b 100644
3962--- a/sources/include/ippres.gen
3963+++ b/sources/include/ippres.gen
3964@@ -43,101 +43,101 @@ BEGIN
3965 BEGIN
3966 VALUE "CompanyName", "Intel Corporation.\0"
3967 VALUE "FileVersion", STR_FILE_VERSION() "\0"
3968- VALUE "ProductName", IPP_LIB_SHORTNAME() ". Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ".\0"
3969+ VALUE "ProductName", CRYPTO_LIB_NAME() ".\0"
3970 VALUE "ProductVersion", STR_VERSION() "\0"
3971 VALUE "LegalCopyright", "Copyright (C) 1999-2021, Intel Corporation. All rights reserved.\0"
3972-
3973+
3974 #if defined(_MERGED_BLD)
3975 #if defined (WIN32) && !defined (_WIN64) && !defined (WIN32E)
3976- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ".\0"
3977- VALUE "FileDescription", IPP_LIB_PREFIX() _IPP_VERSION ".dll is the ia32 " IPP_LIB_SHORTNAME() " dynamic library\0"
3978+ VALUE "Comments", "Intel(R) Cryptography Primitives Library. " ".\0"
3979+ VALUE "FileDescription", IPP_LIB_PREFIX() _IPP_VERSION ".dll is the ia32 " CRYPTO_LIB_NAME() " dynamic library\0"
3980 VALUE "InternalName", IPP_LIB_PREFIX() _IPP_VERSION ".dll\0"
3981 VALUE "OriginalFilename", IPP_LIB_PREFIX() _IPP_VERSION ".dll\0"
3982 #endif
3983
3984 #if defined(WIN32E)
3985- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ".\0"
3986- VALUE "FileDescription", IPP_LIB_PREFIX() _IPP_VERSION ".dll is the intel64 " IPP_LIB_SHORTNAME() " dynamic library\0"
3987+ VALUE "Comments", CRYPTO_LIB_NAME() ".\0"
3988+ VALUE "FileDescription", IPP_LIB_PREFIX() _IPP_VERSION ".dll is the intel64 " CRYPTO_LIB_NAME() " dynamic library\0"
3989 VALUE "InternalName", IPP_LIB_PREFIX() _IPP_VERSION ".dll\0"
3990 VALUE "OriginalFilename", IPP_LIB_PREFIX() _IPP_VERSION ".dll\0"
3991 #endif
3992-
3993+
3994 #else
3995 #if defined (_PX) && defined (WIN32) && !defined (_WIN64) && !defined (WIN32E)
3996- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". For Intel(R) Pentium(R) processors\0"
3997- VALUE "FileDescription", IPP_LIB_PREFIX() "px" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
3998+ VALUE "Comments", CRYPTO_LIB_NAME() ". For Intel(R) Pentium(R) processors\0"
3999+ VALUE "FileDescription", IPP_LIB_PREFIX() "px" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4000 VALUE "InternalName", IPP_LIB_PREFIX() "px" _IPP_VERSION ".dll\0"
4001 VALUE "OriginalFilename", IPP_LIB_PREFIX() "px" _IPP_VERSION ".dll\0"
4002 #endif
4003 #if defined(_PX) && defined(WIN32E)
4004- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". For Intel(R) 64 Instruction Set Architecture (ISA) processors\0"
4005- VALUE "FileDescription", IPP_LIB_PREFIX() "mx" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4006+ VALUE "Comments", CRYPTO_LIB_NAME() ". For Intel(R) 64 Instruction Set Architecture (ISA) processors\0"
4007+ VALUE "FileDescription", IPP_LIB_PREFIX() "mx" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4008 VALUE "InternalName", IPP_LIB_PREFIX() "mx" _IPP_VERSION ".dll\0"
4009 VALUE "OriginalFilename", IPP_LIB_PREFIX() "mx" _IPP_VERSION ".dll\0"
4010 #endif
4011 #if defined(_W7)
4012- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for processors with Streaming SIMD Extensions 2 (SSE2)\0"
4013- VALUE "FileDescription", IPP_LIB_PREFIX() "w7" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4014+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for processors with Streaming SIMD Extensions 2 (SSE2)\0"
4015+ VALUE "FileDescription", IPP_LIB_PREFIX() "w7" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4016 VALUE "InternalName", IPP_LIB_PREFIX() "w7" _IPP_VERSION ".dll\0"
4017 VALUE "OriginalFilename", IPP_LIB_PREFIX() "w7" _IPP_VERSION ".dll\0"
4018 #endif
4019 #if defined(_P8)
4020- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for processors with Streaming SIMD Extensions 4.2 (SSE4.2)\0"
4021- VALUE "FileDescription", IPP_LIB_PREFIX() "p8" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4022+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for processors with Streaming SIMD Extensions 4.2 (SSE4.2)\0"
4023+ VALUE "FileDescription", IPP_LIB_PREFIX() "p8" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4024 VALUE "InternalName", IPP_LIB_PREFIX() "p8" _IPP_VERSION ".dll\0"
4025 VALUE "OriginalFilename", IPP_LIB_PREFIX() "p8" _IPP_VERSION ".dll\0"
4026 #endif
4027 #if defined(_G9)
4028- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for processors with Advanced Vector Extensions (AVX)\0"
4029- VALUE "FileDescription", IPP_LIB_PREFIX() "g9" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4030+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for processors with Advanced Vector Extensions (AVX)\0"
4031+ VALUE "FileDescription", IPP_LIB_PREFIX() "g9" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4032 VALUE "InternalName", IPP_LIB_PREFIX() "g9" _IPP_VERSION ".dll\0"
4033 VALUE "OriginalFilename", IPP_LIB_PREFIX() "g9" _IPP_VERSION ".dll\0"
4034 #endif
4035 #if defined(_H9)
4036- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for processors with Advanced Vector Extensions 2 (AVX2)\0"
4037- VALUE "FileDescription", IPP_LIB_PREFIX() "h9" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4038+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for processors with Advanced Vector Extensions 2 (AVX2)\0"
4039+ VALUE "FileDescription", IPP_LIB_PREFIX() "h9" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4040 VALUE "InternalName", IPP_LIB_PREFIX() "h9" _IPP_VERSION ".dll\0"
4041 VALUE "OriginalFilename", IPP_LIB_PREFIX() "h9" _IPP_VERSION ".dll\0"
4042 #endif
4043 #if defined(_M7)
4044- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for Intel(R) 64 Instruction Set Architecture (ISA)\0"
4045- VALUE "FileDescription", IPP_LIB_PREFIX() "m7" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4046+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for Intel(R) 64 Instruction Set Architecture (ISA)\0"
4047+ VALUE "FileDescription", IPP_LIB_PREFIX() "m7" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4048 VALUE "InternalName", IPP_LIB_PREFIX() "m7" _IPP_VERSION ".dll\0"
4049 VALUE "OriginalFilename", IPP_LIB_PREFIX() "m7" _IPP_VERSION ".dll\0"
4050 #endif
4051 #if defined(_Y8)
4052- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for processors with Streaming SIMD Extensions 4.2 (SSE4.2)\0"
4053- VALUE "FileDescription", IPP_LIB_PREFIX() "y8" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4054+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for processors with Streaming SIMD Extensions 4.2 (SSE4.2)\0"
4055+ VALUE "FileDescription", IPP_LIB_PREFIX() "y8" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4056 VALUE "InternalName", IPP_LIB_PREFIX() "y8" _IPP_VERSION ".dll\0"
4057 VALUE "OriginalFilename", IPP_LIB_PREFIX() "y8" _IPP_VERSION ".dll\0"
4058 #endif
4059 #if defined(_E9)
4060- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for processors with Advanced Vector Extensions (AVX)\0"
4061- VALUE "FileDescription", IPP_LIB_PREFIX() "e9" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4062+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for processors with Advanced Vector Extensions (AVX)\0"
4063+ VALUE "FileDescription", IPP_LIB_PREFIX() "e9" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4064 VALUE "InternalName", IPP_LIB_PREFIX() "e9" _IPP_VERSION ".dll\0"
4065 VALUE "OriginalFilename", IPP_LIB_PREFIX() "e9" _IPP_VERSION ".dll\0"
4066 #endif
4067 #if defined(_L9)
4068- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for processors with Advanced Vector Extensions 2 (AVX2)\0"
4069- VALUE "FileDescription", IPP_LIB_PREFIX() "l9" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4070+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for processors with Advanced Vector Extensions 2 (AVX2)\0"
4071+ VALUE "FileDescription", IPP_LIB_PREFIX() "l9" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4072 VALUE "InternalName", IPP_LIB_PREFIX() "l9" _IPP_VERSION ".dll\0"
4073 VALUE "OriginalFilename", IPP_LIB_PREFIX() "l9" _IPP_VERSION ".dll\0"
4074 #endif
4075 #if defined(_K0)
4076- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for processors with AVX512F/CD/BW/DQ/VL support\0"
4077- VALUE "FileDescription", IPP_LIB_PREFIX() "k0" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4078+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for processors with AVX512F/CD/BW/DQ/VL support\0"
4079+ VALUE "FileDescription", IPP_LIB_PREFIX() "k0" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4080 VALUE "InternalName", IPP_LIB_PREFIX() "k0" _IPP_VERSION ".dll\0"
4081 VALUE "OriginalFilename", IPP_LIB_PREFIX() "k0" _IPP_VERSION ".dll\0"
4082 #endif
4083 #if defined(_S8)
4084- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for Intel(R) Atom(TM) processor\0"
4085- VALUE "FileDescription", IPP_LIB_PREFIX() "s8" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4086+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for Intel(R) Atom(TM) processor\0"
4087+ VALUE "FileDescription", IPP_LIB_PREFIX() "s8" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4088 VALUE "InternalName", IPP_LIB_PREFIX() "s8" _IPP_VERSION ".dll\0"
4089 VALUE "OriginalFilename", IPP_LIB_PREFIX() "s8" _IPP_VERSION ".dll\0"
4090 #endif
4091 #if defined(_N8)
4092- VALUE "Comments", "Intel(R) Integrated Performance Primitives. " IPP_LIB_LONGNAME() ". Optimized for Intel(R) Atom(TM) processor\0"
4093- VALUE "FileDescription", IPP_LIB_PREFIX() "n8" _IPP_VERSION ".dll is an " IPP_LIB_SHORTNAME() " dynamic library\0"
4094+ VALUE "Comments", CRYPTO_LIB_NAME() ". Optimized for Intel(R) Atom(TM) processor\0"
4095+ VALUE "FileDescription", IPP_LIB_PREFIX() "n8" _IPP_VERSION ".dll is an " CRYPTO_LIB_NAME() " dynamic library\0"
4096 VALUE "InternalName", IPP_LIB_PREFIX() "n8" _IPP_VERSION ".dll\0"
4097 VALUE "OriginalFilename", IPP_LIB_PREFIX() "n8" _IPP_VERSION ".dll\0"
4098 #endif
4099diff --git a/sources/include/ippver.h b/sources/include/ippver.h
4100index 52d1a27..ee04705 100644
4101--- a/sources/include/ippver.h
4102+++ b/sources/include/ippver.h
4103@@ -15,30 +15,30 @@
4104 *************************************************************************/
4105
4106 /*
4107-// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
4108+// Intel® Cryptography Primitives Library
4109 //
4110-// Purpose: Describes the base Intel IPP Cryptography version
4111+// Purpose: Describes the base Intel® Cryptography Primitives Library version
4112 //
4113 */
4114
4115
4116-#include "ippversion.h"
4117+#include "ippcpversion.h"
4118 #ifndef BASE_VERSION
4119-#define BASE_VERSION() IPP_VERSION_MAJOR,IPP_VERSION_MINOR,IPP_VERSION_UPDATE
4120+#define BASE_VERSION() CRYPTO_LIB_VERSION_MAJOR,CRYPTO_LIB_VERSION_MINOR,CRYPTO_LIB_VERSION_PATCH
4121 #endif
4122
4123 #define STR2(x) #x
4124 #define STR(x) STR2(x)
4125
4126 #ifndef STR_BASE_VERSION
4127-#define STR_BASE_VERSION() STR(IPP_VERSION_MAJOR) "," STR(IPP_VERSION_MINOR) ", " STR(IPP_VERSION_UPDATE)
4128+#define STR_BASE_VERSION() STR(CRYPTO_LIB_VERSION_MAJOR) "," STR(CRYPTO_LIB_VERSION_MINOR) ", " STR(CRYPTO_LIB_VERSION_PATCH)
4129 #endif
4130
4131 #ifndef STR_VERSION
4132 #ifdef IPP_REVISION
4133- #define STR_VERSION() IPP_VERSION_STR " (r" STR( IPP_REVISION ) ")"
4134+ #define STR_VERSION() CRYPTO_LIB_VERSION_STR " (r" STR( IPP_REVISION ) ")"
4135 #else
4136- #define STR_VERSION() IPP_VERSION_STR " (-)"
4137+ #define STR_VERSION() CRYPTO_LIB_VERSION_STR
4138 #endif
4139 #endif
4140
4141diff --git a/sources/include/lms_internal/lmots.h b/sources/include/lms_internal/lmots.h
4142index b9ae5a4..bb3f480 100644
4143--- a/sources/include/lms_internal/lmots.h
4144+++ b/sources/include/lms_internal/lmots.h
4145@@ -58,7 +58,7 @@ typedef struct {
4146 * Output parameters:
4147 * params LMOTS parameters (w, p, ls, n, hash_method)
4148 */
4149-__INLINE IppStatus setLMOTSParams(IppsLMOTSAlgo lmotsOIDAlgo, cpLMOTSParams* params) {
4150+__IPPCP_INLINE IppStatus setLMOTSParams(IppsLMOTSAlgo lmotsOIDAlgo, cpLMOTSParams* params) {
4151 switch (lmotsOIDAlgo) {
4152 case LMOTS_SHA256_N32_W1: {
4153 params->w = 1;
4154@@ -134,11 +134,11 @@ __INLINE IppStatus setLMOTSParams(IppsLMOTSAlgo lmotsOIDAlgo, cpLMOTSParams* par
4155 * Target element of a specified length
4156 *
4157 */
4158-__INLINE Ipp32u cpCoef(Ipp8u* S, Ipp32u i, Ipp32u w) {
4159+__IPPCP_INLINE Ipp32u cpCoef(Ipp8u* S, Ipp32u i, Ipp32u w) {
4160 return ((1 << w) - 1) & ( S[(i * w) / 8] >> (8 - (w * (i % (8 / w)) + w)));
4161 }
4162
4163-__INLINE Ipp32u cpCksm(Ipp8u* S, cpLMOTSParams lmotsParams) {
4164+__IPPCP_INLINE Ipp32u cpCksm(Ipp8u* S, cpLMOTSParams lmotsParams) {
4165 Ipp32u w = lmotsParams.w;
4166 Ipp32u n = lmotsParams.n;
4167 Ipp32u ls = lmotsParams.ls;
4168diff --git a/sources/include/lms_internal/lms.h b/sources/include/lms_internal/lms.h
4169index ab345ff..94a341d 100644
4170--- a/sources/include/lms_internal/lms.h
4171+++ b/sources/include/lms_internal/lms.h
4172@@ -86,7 +86,7 @@ struct _cpLMSSignatureState {
4173 * Output parameters:
4174 * params LMS parameters (h, m, hash_method)
4175 */
4176-__INLINE IppStatus setLMSParams(IppsLMSAlgo lmsOIDAlgo, cpLMSParams* params) {
4177+__IPPCP_INLINE IppStatus setLMSParams(IppsLMSAlgo lmsOIDAlgo, cpLMSParams* params) {
4178 /* Set h */
4179 switch (lmsOIDAlgo % 5) {
4180 case 0: { params->h = 5; break; } // LMS_SHA256_M32_H5 and LMS_SHA256_M24_H5
4181diff --git a/sources/include/noexec_stack.inc b/sources/include/noexec_stack.inc
4182new file mode 100644
4183index 0000000..fdeee61
4184--- /dev/null
4185+++ b/sources/include/noexec_stack.inc
4186@@ -0,0 +1,47 @@
4187+;=========================================================================
4188+; Copyright (C) 2024 Intel Corporation
4189+;
4190+; Licensed under the Apache License, Version 2.0 (the "License");
4191+; you may not use this file except in compliance with the License.
4192+; You may obtain a copy of the License at
4193+;
4194+; http://www.apache.org/licenses/LICENSE-2.0
4195+;
4196+; Unless required by applicable law or agreed to in writing, software
4197+; distributed under the License is distributed on an "AS IS" BASIS,
4198+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4199+; See the License for the specific language governing permissions and
4200+; limitations under the License.
4201+;=========================================================================
4202+
4203+
4204+; Non-executable stacks are desirable for security reasons.
4205+; Recent Linux linkers will mark the stack as non-executable
4206+; if and only if all the object files participating in the link
4207+; step declare a properly configured empty "marker" section
4208+; called `.note.GNU-stack`.
4209+
4210+; Consider including this file into all the `*.asm` files.
4211+
4212+
4213+%ifndef __NOEXEC_STACK_INC__
4214+%define __NOEXEC_STACK_INC__ 1
4215+
4216+; noexec stack
4217+%ifdef LINUX32
4218+ %ifndef OSX32
4219+section .note.GNU-stack noalloc noexec nowrite progbits
4220+ %endif
4221+%endif
4222+
4223+; noexec stack
4224+%ifdef LINUX32E
4225+ %ifndef OSXEM64T
4226+ %ifndef _ARCH_KNC
4227+section .note.GNU-stack noalloc noexec nowrite progbits
4228+ %endif
4229+ %endif
4230+%endif
4231+
4232+%endif ; __NOEXEC_STACK_INC__
4233+;;;;;;;;;;;;;;;;;;;;;;;;;; End of file "noexec_stack.inc" ;;;;;;;;;;;;;;;;;;;;;;;;;;
4234diff --git a/sources/include/owndefs.h b/sources/include/owndefs.h
4235index b14b24d..0b78bdc 100644
4236--- a/sources/include/owndefs.h
4237+++ b/sources/include/owndefs.h
4238@@ -15,7 +15,7 @@
4239 *************************************************************************/
4240
4241 //
4242-// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
4243+// Intel® Cryptography Primitives Library
4244 //
4245 // Purpose:
4246 // Internal definitions
4247@@ -34,15 +34,15 @@
4248 #include "ippcpdefs.h"
4249 #endif
4250
4251-#if !defined(__INLINE)
4252+#if !defined(__IPPCP_INLINE)
4253 #if defined(__INTEL_COMPILER) || defined(__INTEL_LLVM_COMPILER) || defined(_MSC_VER)
4254- #define __INLINE static __inline
4255+ #define __IPPCP_INLINE static __inline
4256 #elif defined( __GNUC__ )
4257- #define __INLINE static __inline__
4258+ #define __IPPCP_INLINE static __inline__
4259 #else
4260- #define __INLINE static
4261+ #define __IPPCP_INLINE static
4262 #endif
4263-#endif /*__INLINE*/
4264+#endif /*__IPPCP_INLINE*/
4265
4266 /* TODO: to check ICX compiler */
4267 #if !defined(__NOINLINE)
4268@@ -59,7 +59,7 @@
4269 #if defined(_MSC_VER)
4270 #define __FORCEINLINE __forceinline
4271 #elif defined(__INTEL_COMPILER) || defined(__INTEL_LLVM_COMPILER) || defined( __GNUC__ )
4272- #define __FORCEINLINE __INLINE __attribute__((always_inline))
4273+ #define __FORCEINLINE __IPPCP_INLINE __attribute__((always_inline))
4274 #else
4275 #define __FORCEINLINE
4276 #endif
4277@@ -267,7 +267,7 @@
4278 #endif
4279
4280 #if ((_IPP_ARCH == _IPP_ARCH_IA32))
4281-__INLINE Ipp32s IPP_INT_PTR ( const void* ptr )
4282+__IPPCP_INLINE Ipp32s IPP_INT_PTR ( const void* ptr )
4283 {
4284 union {
4285 void* Ptr;
4286@@ -277,7 +277,7 @@ __INLINE Ipp32s IPP_INT_PTR ( const void* ptr )
4287 return dd.Int;
4288 }
4289
4290-__INLINE Ipp32u IPP_UINT_PTR( const void* ptr )
4291+__IPPCP_INLINE Ipp32u IPP_UINT_PTR( const void* ptr )
4292 {
4293 union {
4294 void* Ptr;
4295@@ -287,7 +287,7 @@ __INLINE Ipp32u IPP_UINT_PTR( const void* ptr )
4296 return dd.Int;
4297 }
4298 #elif ((_IPP_ARCH == _IPP_ARCH_EM64T) || (_IPP_ARCH == _IPP_ARCH_LRB2))
4299-__INLINE Ipp64s IPP_INT_PTR( const void* ptr )
4300+__IPPCP_INLINE Ipp64s IPP_INT_PTR( const void* ptr )
4301 {
4302 union {
4303 void* Ptr;
4304@@ -297,7 +297,7 @@ __INLINE Ipp64s IPP_INT_PTR( const void* ptr )
4305 return dd.Int;
4306 }
4307
4308-__INLINE Ipp64u IPP_UINT_PTR( const void* ptr )
4309+__IPPCP_INLINE Ipp64u IPP_UINT_PTR( const void* ptr )
4310 {
4311 union {
4312 void* Ptr;
4313@@ -332,7 +332,7 @@ extern "C" {
4314
4315 /* /////////////////////////////////////////////////////////////////////////////
4316
4317- Intel IPP Cryptography Context Identification
4318+ Intel® Cryptography Primitives Library Context Identification
4319
4320 /////////////////////////////////////////////////////////////////////////// */
4321
4322diff --git a/sources/include/stateful_sig_common/common.h b/sources/include/stateful_sig_common/common.h
4323index 51ad5dc..7f4bf15 100644
4324--- a/sources/include/stateful_sig_common/common.h
4325+++ b/sources/include/stateful_sig_common/common.h
4326@@ -25,7 +25,7 @@
4327 * out resulted array of bytes
4328 */
4329
4330-__INLINE void toByte(Ipp8u *out, Ipp32s outlen, Ipp32u in) {
4331+__IPPCP_INLINE void toByte(Ipp8u *out, Ipp32s outlen, Ipp32u in) {
4332 /* Iterate over out in decreasing order, for big-endianness. */
4333 for (Ipp32s i = outlen - 1; i >= 0; i--) {
4334 out[i] = (Ipp8u)(in & 0xff);
4335diff --git a/sources/include/xmss_internal/wots.h b/sources/include/xmss_internal/wots.h
4336index 0741070..89cc883 100644
4337--- a/sources/include/xmss_internal/wots.h
4338+++ b/sources/include/xmss_internal/wots.h
4339@@ -62,7 +62,7 @@ IPP_OWN_DECL(IppStatus, WOTS_pkFromSig, (const Ipp8u* M, Ipp8u* sig, Ipp8u* pSee
4340 * adrs changed array of bytes
4341 */
4342
4343-__INLINE void set_adrs_idx(Ipp8u* adrs, Ipp32u idx, int word_id){
4344+__IPPCP_INLINE void set_adrs_idx(Ipp8u* adrs, Ipp32u idx, int word_id){
4345 adrs[4 * word_id + 3] = (Ipp8u) idx & 0xff;
4346 adrs[4 * word_id + 2] = (Ipp8u)(idx >> 8) & 0xff;
4347 adrs[4 * word_id + 1] = (Ipp8u)(idx >> 16) & 0xff;
4348@@ -79,7 +79,7 @@ __INLINE void set_adrs_idx(Ipp8u* adrs, Ipp32u idx, int word_id){
4349 * word_id int32 idx in the adrs array
4350 */
4351
4352-__INLINE Ipp8u set_adrs_1_byte(int word_id){
4353+__IPPCP_INLINE Ipp8u set_adrs_1_byte(int word_id){
4354 return (Ipp8u)(4 * word_id + 3);
4355 }
4356
4357@@ -90,7 +90,7 @@ __INLINE Ipp8u set_adrs_1_byte(int word_id){
4358 * x double precision floating point value
4359 */
4360
4361-__INLINE Ipp32s cpCeil(double x) {
4362+__IPPCP_INLINE Ipp32s cpCeil(double x) {
4363 Ipp32s int_val = (Ipp32s) x;
4364 if(int_val == x || x <= 0.0){
4365 return int_val;
4366diff --git a/sources/include/xmss_internal/xmss.h b/sources/include/xmss_internal/xmss.h
4367index 6145cda..b765bd7 100644
4368--- a/sources/include/xmss_internal/xmss.h
4369+++ b/sources/include/xmss_internal/xmss.h
4370@@ -98,7 +98,7 @@ IPP_OWN_DECL(IppStatus, rand_hash, (Ipp8u* left, Ipp8u* right, Ipp8u* seed,
4371 * params WOTS parameters (w, log2_w, n, len, len_1, hash_method)
4372 */
4373
4374-__INLINE IppStatus setXMSSParams(IppsXMSSAlgo OIDAlgo, Ipp32s* h, cpWOTSParams* params) {
4375+__IPPCP_INLINE IppStatus setXMSSParams(IppsXMSSAlgo OIDAlgo, Ipp32s* h, cpWOTSParams* params) {
4376
4377 // Digits below are from the XMSS algo spec
4378 // don't depend on the algo
4379diff --git a/sources/ippcp/CMakeLists.txt b/sources/ippcp/CMakeLists.txt
4380index 34acf9b..1864c1a 100644
4381--- a/sources/ippcp/CMakeLists.txt
4382+++ b/sources/ippcp/CMakeLists.txt
4383@@ -15,7 +15,7 @@
4384 #=========================================================================
4385
4386 #
4387-# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
4388+# Intel® Cryptography Primitives Library
4389 #
4390
4391 include (GenerateExportHeader)
4392@@ -32,19 +32,24 @@ if (NOT MERGED_BLD)
4393 endif()
4394 if(WIN32)
4395 if(${ARCH} MATCHES "ia32")
4396- set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} w7 s8 p8 g9 h9)
4397+ set(BASE_PLATFORM_LIST_1CPU ${BASE_PLATFORM_LIST} w7 s8 p8 g9 h9)
4398+ set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} w7 p8 h9)
4399 else()
4400- set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} m7 n8 y8 e9 l9 k0 k1)
4401+ set(BASE_PLATFORM_LIST_1CPU ${BASE_PLATFORM_LIST} m7 n8 y8 e9 l9 k0 k1)
4402+ set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} m7 y8 l9 k0 k1)
4403 endif()
4404 endif(WIN32)
4405 if(UNIX)
4406 if(APPLE)
4407- set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} y8 e9 l9 k0 k1)
4408+ set(BASE_PLATFORM_LIST_1CPU ${BASE_PLATFORM_LIST} y8 e9 l9 k0 k1)
4409+ set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} y8 l9 k0 k1)
4410 else()
4411 if (${ARCH} MATCHES "ia32")
4412- set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} w7 s8 p8 g9 h9)
4413+ set(BASE_PLATFORM_LIST_1CPU ${BASE_PLATFORM_LIST} w7 s8 p8 g9 h9)
4414+ set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} w7 p8 h9)
4415 else()
4416- set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} m7 n8 y8 e9 l9 k0 k1)
4417+ set(BASE_PLATFORM_LIST_1CPU ${BASE_PLATFORM_LIST} m7 n8 y8 e9 l9 k0 k1)
4418+ set(BASE_PLATFORM_LIST ${BASE_PLATFORM_LIST} m7 y8 l9 k0 k1)
4419 endif(${ARCH} MATCHES "ia32")
4420 endif(APPLE)
4421 endif(UNIX)
4422@@ -53,12 +58,12 @@ if(PLATFORM_LIST)
4423 if (NOT MERGED_BLD)
4424 foreach(opt ${PLATFORM_LIST})
4425 set(FOUND_PLATFORM false)
4426- foreach(base_opt ${BASE_PLATFORM_LIST})
4427+ foreach(base_opt ${BASE_PLATFORM_LIST_1CPU})
4428 string(STRIP "${opt}" opt_strip)
4429 if(opt_strip STREQUAL base_opt)
4430 set(FOUND_PLATFORM true)
4431 endif()
4432- endforeach(base_opt ${BASE_PLATFORM_LIST})
4433+ endforeach(base_opt ${BASE_PLATFORM_LIST_1CPU})
4434 if(NOT FOUND_PLATFORM)
4435 message (FATAL_ERROR "Incorrect platform: " ${opt})
4436 endif()
4437@@ -177,7 +182,7 @@ endif()
4438 message(STATUS "ASM compiler version .................. " ${CMAKE_ASM_NASM_COMPILER})
4439 message(STATUS "ASM object format ..................... " ${CMAKE_ASM_NASM_OBJECT_FORMAT})
4440
4441-# set Intel IPP Cryptography revision, if required
4442+# set Intel Cryptography Primitives Library revision, if required
4443 if(IPP_REVISION)
4444 # IPP_REVISION - release revision id, added into LibraryVersion
4445 set(LIBRARY_DEFINES "${LIBRARY_DEFINES} -DIPP_REVISION=${IPP_REVISION}")
4446@@ -187,7 +192,7 @@ endif()
4447 set(LIBRARY_DEFINES "${LIBRARY_DEFINES} -DIPPCP_PREVIEW_XMSS -DIPPCP_PREVIEW_LMS")
4448
4449 set(LIBRARY_DEFINES "${LIBRARY_DEFINES} -D_NO_IPP_DEPRECATED") # do not warn about ippcp deprecated functions
4450-# set BN_OPENSSL_DISABLE for Intel IPP Cryptography
4451+# set BN_OPENSSL_DISABLE for Intel Cryptography Primitives Library
4452 # set(LIBRARY_DEFINES "${LIBRARY_DEFINES} -DBN_OPENSSL_DISABLE")
4453
4454 if(IPPCP_FIPS_MODE)
4455@@ -219,8 +224,6 @@ file(GLOB IPPCP_PUBLIC_HEADERS
4456
4457 file(GLOB LIBRARY_HEADERS
4458 ${IPP_CRYPTO_SOURCES_DIR}/*.h
4459- ${IPP_CRYPTO_SOURCES_DIR}/ecnist/*.h
4460- ${IPP_CRYPTO_SOURCES_DIR}/sm2/*.h
4461 ${IPP_CRYPTO_SOURCES_INCLUDE_DIR}/*.h
4462 ${IPP_CRYPTO_INCLUDE_DIR}/ippcp*.h
4463 # RSA_SB (ifma) uses crypto_mb headers
4464@@ -229,8 +232,10 @@ file(GLOB LIBRARY_HEADERS
4465
4466 file(GLOB LIBRARY_C_SOURCES_ORIGINAL
4467 ${IPP_CRYPTO_SOURCES_DIR}/*.c
4468- ${IPP_CRYPTO_SOURCES_DIR}/ecnist/*.c
4469- ${IPP_CRYPTO_SOURCES_DIR}/sm2/*.c
4470+ ${IPP_CRYPTO_SOURCES_DIR}/hash/*.c
4471+ ${IPP_CRYPTO_SOURCES_DIR}/hash/*/*.c
4472+ ${IPP_CRYPTO_SOURCES_DIR}/gfpec/*.c
4473+ ${IPP_CRYPTO_SOURCES_DIR}/gfpec/*/*.c
4474 ${IPP_CRYPTO_SOURCES_DIR}/xmss/*.c
4475 ${IPP_CRYPTO_SOURCES_DIR}/lms/*.c
4476 )
4477@@ -239,12 +244,10 @@ file(GLOB LIBRARY_ASM_SOURCES_ORIGINAL
4478 ${IPP_CRYPTO_SOURCES_DIR}/asm_${ARCH}/*.asm
4479 )
4480
4481-set(INTERNAL_INCLUDE_DIR ${CMAKE_BINARY_DIR}/include/autogen)
4482+set(INTERNAL_INCLUDE_DIR ${CMAKE_BINARY_DIR}/include/autogen_1cpu)
4483
4484 set (C_INCLUDE_DIRECTORIES
4485 ${IPP_CRYPTO_SOURCES_DIR}
4486- ${IPP_CRYPTO_SOURCES_DIR}/ecnist
4487- ${IPP_CRYPTO_SOURCES_DIR}/sm2
4488 ${IPP_CRYPTO_SOURCES_INCLUDE_DIR}
4489 ${IPP_CRYPTO_INCLUDE_DIR}
4490 ${INTERNAL_INCLUDE_DIR}
4491@@ -353,6 +356,7 @@ foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
4492 string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
4493 file(COPY ${IPP_CRYPTO_INCLUDE_DIR}/ippcp.h
4494 ${IPP_CRYPTO_INCLUDE_DIR}/ippcpdefs.h
4495+ ${IPP_CRYPTO_INCLUDE_DIR}/ippcpversion.h
4496 ${IPP_CRYPTO_INCLUDE_DIR}/ippversion.h
4497 ${ONE_CPU_FOLDER}
4498 DESTINATION "${CMAKE_OUTPUT_DIR}/${OUTPUTCONFIG}/include")
4499@@ -547,14 +551,24 @@ if(MERGED_BLD)
4500 PUBLIC_HEADER DESTINATION "include"
4501 PRIVATE_HEADER DESTINATION "tools/${ARCH}/staticlib")
4502
4503+ set_source_files_properties(${DISPATCHER_ASM_SOURCES} PROPERTIES INCLUDE_DIRECTORIES "${ASM_INCLUDE_DIRECTORIES}")
4504+
4505+ # Intel® C++ Compiler specific - the dispatcher also contains C source code
4506+ # that doesn't use build settings from CMAKE_C/CXX_FLAGS_DEBUG/RELEASE
4507 set_source_files_properties(${DISPATCHER_C_SOURCES} pcpver.rc PROPERTIES INCLUDE_DIRECTORIES "${C_INCLUDE_DIRECTORIES}")
4508 # protection (_FORTIFY_SOURCE) and optimization flags for dispatcher
4509 if(UNIX)
4510+ set(DISPATCHER_C_SOURCES_COMPILE_FLAGS "-D_GNU_SOURCE -O2")
4511+ if(CMAKE_BUILD_TYPE STREQUAL "Release")
4512+ set(DISPATCHER_C_SOURCES_COMPILE_FLAGS "${DISPATCHER_C_SOURCES_COMPILE_FLAGS} -D_FORTIFY_SOURCE=2")
4513+ endif()
4514+
4515 if(${ARCH} MATCHES "ia32")
4516- set_source_files_properties(${DISPATCHER_C_SOURCES} PROPERTIES COMPILE_FLAGS "${CC_FLAGS_INLINE_ASM_UNIX_IA32} -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -O2")
4517+ set(DISPATCHER_C_SOURCES_COMPILE_FLAGS " ${CC_FLAGS_INLINE_ASM_UNIX_IA32} ${DISPATCHER_C_SOURCES_COMPILE_FLAGS}")
4518 else()
4519- set_source_files_properties(${DISPATCHER_C_SOURCES} PROPERTIES COMPILE_FLAGS "${CC_FLAGS_INLINE_ASM_UNIX_INTEL64} -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -O2")
4520+ set(DISPATCHER_C_SOURCES_COMPILE_FLAGS "${CC_FLAGS_INLINE_ASM_UNIX_INTEL64} ${DISPATCHER_C_SOURCES_COMPILE_FLAGS}")
4521 endif()
4522+ set_source_files_properties(${DISPATCHER_C_SOURCES} PROPERTIES COMPILE_FLAGS "${DISPATCHER_C_SOURCES_COMPILE_FLAGS}")
4523 endif()
4524
4525 # Single merged dynamic lib
4526diff --git a/sources/ippcp/asm_ia32/pcpbnumulschoolv8as.asm b/sources/ippcp/asm_ia32/pcpbnumulschoolv8as.asm
4527index c7dd861..2d2523a 100644
4528--- a/sources/ippcp/asm_ia32/pcpbnumulschoolv8as.asm
4529+++ b/sources/ippcp/asm_ia32/pcpbnumulschoolv8as.asm
4530@@ -733,19 +733,19 @@ segment .text align=IPP_ALIGN_FACTOR
4531 ;; Caller = ippsMontExp
4532 ;; Caller = ippsModInv_BN
4533 ;;
4534-;; Caller = ippsECCPGetPoint
4535-;; Caller = ippsECCPCheckPoint
4536-;; Caller = ippsECCPAddPoint
4537-;; Caller = ippsECCPMulPointScalar
4538-;; Caller = ippsECCPGenKeyPair
4539-;; Caller = ippsECCPPublicKey
4540-;; Caller = ippsECCPValidateKey
4541-;; Caller = ippsECCPShareSecretKeyDH
4542-;; Caller = ippsECCPShareSecretKeyDHC
4543-;; Caller = ippsECCPSignDSA
4544-;; Caller = ippsECCPSignNR
4545-;; Caller = ippsECCPVerifyDSA
4546-;; Caller = ippsECCPVerifyNR
4547+;; Caller = ippsGFpECGetPointRegular
4548+;; Caller = ippsGFpECTstPoint
4549+;; Caller = ippsGFpECAddPoint
4550+;; Caller = ippsGFpECMulPoint
4551+;; Caller = ippsGFpECPrivateKey
4552+;; Caller = ippsGFpECPublicKey
4553+;; Caller = ippsGFpECTstKeyPair
4554+;; Caller = ippsGFpECSharedSecretDH
4555+;; Caller = ippsGFpECSharedSecretDHC
4556+;; Caller = ippsGFpECSignDSA
4557+;; Caller = ippsGFpECSignNR
4558+;; Caller = ippsGFpECVerifyDSA
4559+;; Caller = ippsGFpECVerifyNR
4560 ;;
4561 IPPASM cpMulAdc_BNU_school,PUBLIC
4562 USES_GPR esi,edi,ebx
4563diff --git a/sources/ippcp/asm_ia32/pcpbnusqrw7as.asm b/sources/ippcp/asm_ia32/pcpbnusqrw7as.asm
4564index 1684c3c..341d370 100644
4565--- a/sources/ippcp/asm_ia32/pcpbnusqrw7as.asm
4566+++ b/sources/ippcp/asm_ia32/pcpbnusqrw7as.asm
4567@@ -408,19 +408,19 @@ segment .text align=IPP_ALIGN_FACTOR
4568 ;; Caller = ippsMontMul
4569 ;; Caller = ippsMontExp
4570 ;;
4571-;; Caller = ippsECCPGetPoint
4572-;; Caller = ippsECCPCheckPoint
4573-;; Caller = ippsECCPAddPoint
4574-;; Caller = ippsECCPMulPointScalar
4575-;; Caller = ippsECCPGenKeyPair
4576-;; Caller = ippsECCPPublicKey
4577-;; Caller = ippsECCPValidateKey
4578-;; Caller = ippsECCPShareSecretKeyDH
4579-;; Caller = ippsECCPShareSecretKeyDHC
4580-;; Caller = ippsECCPSignDSA
4581-;; Caller = ippsECCPSignNR
4582-;; Caller = ippsECCPVerifyDSA
4583-;; Caller = ippsECCPVerifyNR
4584+;; Caller = ippsGFpECGetPointRegular
4585+;; Caller = ippsGFpECTstPoint
4586+;; Caller = ippsGFpECAddPoint
4587+;; Caller = ippsGFpECMulPoint
4588+;; Caller = ippsGFpECPrivateKey
4589+;; Caller = ippsGFpECPublicKey
4590+;; Caller = ippsGFpECTstKeyPair
4591+;; Caller = ippsGFpECSharedSecretDH
4592+;; Caller = ippsGFpECSharedSecretDHC
4593+;; Caller = ippsGFpECSignDSA
4594+;; Caller = ippsGFpECSignNR
4595+;; Caller = ippsGFpECVerifyDSA
4596+;; Caller = ippsGFpECVerifyNR
4597 ;;
4598 IPPASM cpSqrAdc_BNU_school,PUBLIC
4599 USES_GPR esi,edi,ebx
4600diff --git a/sources/ippcp/asm_ia32/pcpmd5w7as.asm b/sources/ippcp/asm_ia32/pcpmd5w7as.asm
4601index 7f018d5..4f95a04 100644
4602--- a/sources/ippcp/asm_ia32/pcpmd5w7as.asm
4603+++ b/sources/ippcp/asm_ia32/pcpmd5w7as.asm
4604@@ -170,13 +170,9 @@ segment .text align=IPP_ALIGN_FACTOR
4605 ;;
4606 ;; Lib = W7
4607 ;;
4608-;; Caller = ippsSHA1Update
4609-;; Caller = ippsSHA1Final
4610-;; Caller = ippsSHA1MessageDigest
4611-;;
4612-;; Caller = ippsHMACSHA1Update
4613-;; Caller = ippsHMACSHA1Final
4614-;; Caller = ippsHMACSHA1MessageDigest
4615+;; Caller = ippsHashUpdate_rmf
4616+;; Caller = ippsHashFinal_rmf
4617+;; Caller = ippsHashMessage_rmf
4618 ;;
4619
4620 align IPP_ALIGN_FACTOR
4621diff --git a/sources/ippcp/asm_ia32/pcpsha1w7as.asm b/sources/ippcp/asm_ia32/pcpsha1w7as.asm
4622index 01bbdae..e44b958 100644
4623--- a/sources/ippcp/asm_ia32/pcpsha1w7as.asm
4624+++ b/sources/ippcp/asm_ia32/pcpsha1w7as.asm
4625@@ -280,13 +280,9 @@ segment .text align=IPP_ALIGN_FACTOR
4626 ;;
4627 ;; Lib = W7,V8
4628 ;;
4629-;; Caller = ippsSHA1Update
4630-;; Caller = ippsSHA1Final
4631-;; Caller = ippsSHA1MessageDigest
4632-;;
4633-;; Caller = ippsHMACSHA1Update
4634-;; Caller = ippsHMACSHA1Final
4635-;; Caller = ippsHMACSHA1MessageDigest
4636+;; Caller = ippsHashUpdate_rmf
4637+;; Caller = ippsHashFinal_rmf
4638+;; Caller = ippsHashMessage_rmf
4639 ;;
4640 align IPP_ALIGN_FACTOR
4641 IPPASM UpdateSHA1,PUBLIC
4642diff --git a/sources/ippcp/asm_ia32/pcpsha256g9as.asm b/sources/ippcp/asm_ia32/pcpsha256g9as.asm
4643index 4d090ba..35b5ce0 100644
4644--- a/sources/ippcp/asm_ia32/pcpsha256g9as.asm
4645+++ b/sources/ippcp/asm_ia32/pcpsha256g9as.asm
4646@@ -280,6 +280,11 @@ pByteSwp DB 3,2,1,0, 7,6,5,4, 11,10,9,8, 15,14,13,12
4647 ;; UpdateSHA256(Ipp32u digest[], Ipp8u dataBlock[], int datalen, Ipp32u K_256[])
4648 ;;
4649 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4650+;;
4651+;; Caller = ippsHashUpdate_rmf
4652+;; Caller = ippsHashFinal_rmf
4653+;; Caller = ippsHashMessage_rmf
4654+;;
4655 align IPP_ALIGN_FACTOR
4656 IPPASM UpdateSHA256,PUBLIC
4657 USES_GPR esi,edi,ebx,ebp
4658diff --git a/sources/ippcp/asm_ia32/pcpsha256w7as.asm b/sources/ippcp/asm_ia32/pcpsha256w7as.asm
4659index faba430..9cb235c 100644
4660--- a/sources/ippcp/asm_ia32/pcpsha256w7as.asm
4661+++ b/sources/ippcp/asm_ia32/pcpsha256w7as.asm
4662@@ -153,21 +153,9 @@ segment .text align=IPP_ALIGN_FACTOR
4663 ;;
4664 ;; Lib = W7
4665 ;;
4666-;; Caller = ippsSHA256Update
4667-;; Caller = ippsSHA256Final
4668-;; Caller = ippsSHA256MessageDigest
4669-;;
4670-;; Caller = ippsSHA224Update
4671-;; Caller = ippsSHA224Final
4672-;; Caller = ippsSHA224MessageDigest
4673-;;
4674-;; Caller = ippsHMACSHA256Update
4675-;; Caller = ippsHMACSHA256Final
4676-;; Caller = ippsHMACSHA256MessageDigest
4677-;;
4678-;; Caller = ippsHMACSHA224Update
4679-;; Caller = ippsHMACSHA224Final
4680-;; Caller = ippsHMACSHA224MessageDigest
4681+;; Caller = ippsHashUpdate_rmf
4682+;; Caller = ippsHashFinal_rmf
4683+;; Caller = ippsHashMessage_rmf
4684 ;;
4685
4686 align IPP_ALIGN_FACTOR
4687diff --git a/sources/ippcp/asm_ia32/pcpsha512g9as.asm b/sources/ippcp/asm_ia32/pcpsha512g9as.asm
4688index b7d4594..7997bc7 100644
4689--- a/sources/ippcp/asm_ia32/pcpsha512g9as.asm
4690+++ b/sources/ippcp/asm_ia32/pcpsha512g9as.asm
4691@@ -250,21 +250,12 @@ pByteSwp DB 7,6,5,4,3,2,1,0, 15,14,13,12,11,10,9,8
4692 ;;
4693 ;; Lib = W7, V8, P8
4694 ;;
4695-;; Caller = ippsSHA512Update
4696-;; Caller = ippsSHA512Final
4697-;; Caller = ippsSHA512MessageDigest
4698 ;;
4699-;; Caller = ippsSHA384Update
4700-;; Caller = ippsSHA384Final
4701-;; Caller = ippsSHA384MessageDigest
4702 ;;
4703-;; Caller = ippsHMACSHA512Update
4704-;; Caller = ippsHMACSHA512Final
4705-;; Caller = ippsHMACSHA512MessageDigest
4706+;; Caller = ippsHashUpdate_rmf
4707+;; Caller = ippsHashFinal_rmf
4708+;; Caller = ippsHashMessage_rmf
4709 ;;
4710-;; Caller = ippsHMACSHA384Update
4711-;; Caller = ippsHMACSHA384Final
4712-;; Caller = ippsHMACSHA384MessageDigest
4713 ;;
4714 align IPP_ALIGN_FACTOR
4715 IPPASM UpdateSHA512,PUBLIC
4716diff --git a/sources/ippcp/asm_ia32/pcpsha512w7as.asm b/sources/ippcp/asm_ia32/pcpsha512w7as.asm
4717index a243154..2fec92a 100644
4718--- a/sources/ippcp/asm_ia32/pcpsha512w7as.asm
4719+++ b/sources/ippcp/asm_ia32/pcpsha512w7as.asm
4720@@ -272,21 +272,12 @@ pByteSwp DB 7,6,5,4,3,2,1,0, 15,14,13,12,11,10,9,8
4721 ;;
4722 ;; Lib = W7, V8, P8
4723 ;;
4724-;; Caller = ippsSHA512Update
4725-;; Caller = ippsSHA512Final
4726-;; Caller = ippsSHA512MessageDigest
4727 ;;
4728-;; Caller = ippsSHA384Update
4729-;; Caller = ippsSHA384Final
4730-;; Caller = ippsSHA384MessageDigest
4731 ;;
4732-;; Caller = ippsHMACSHA512Update
4733-;; Caller = ippsHMACSHA512Final
4734-;; Caller = ippsHMACSHA512MessageDigest
4735+;; Caller = ippsHashUpdate_rmf
4736+;; Caller = ippsHashFinal_rmf
4737+;; Caller = ippsHashMessage_rmf
4738 ;;
4739-;; Caller = ippsHMACSHA384Update
4740-;; Caller = ippsHMACSHA384Final
4741-;; Caller = ippsHMACSHA384MessageDigest
4742 ;;
4743 align IPP_ALIGN_FACTOR
4744 IPPASM UpdateSHA512,PUBLIC
4745diff --git a/sources/ippcp/asm_ia32/pcpvariant.inc b/sources/ippcp/asm_ia32/pcpvariant.inc
4746index 64b5c32..2264901 100644
4747--- a/sources/ippcp/asm_ia32/pcpvariant.inc
4748+++ b/sources/ippcp/asm_ia32/pcpvariant.inc
4749@@ -15,8 +15,7 @@
4750 ;=========================================================================
4751
4752 ;
4753-; Intel(R) Integrated Performance Primitives
4754-; Cryptographic Primitives (ippcp)
4755+; Intel(R) Cryptography Primitives Library
4756 ;
4757 ; Purpose:
4758 ; Define ippCP variant
4759diff --git a/sources/ippcp/asm_ia32/pcpvariant_txt_acm.inc b/sources/ippcp/asm_ia32/pcpvariant_txt_acm.inc
4760index ee9b7d3..a7a8e46 100644
4761--- a/sources/ippcp/asm_ia32/pcpvariant_txt_acm.inc
4762+++ b/sources/ippcp/asm_ia32/pcpvariant_txt_acm.inc
4763@@ -14,8 +14,7 @@
4764 ; limitations under the License.
4765 ;=========================================================================
4766
4767-; Intel(R) Integrated Performance Primitives
4768-; Cryptographic Primitives (ippcp)
4769+; Intel(R) Cryptography Primitives Library
4770 ;
4771 ; Purpose:
4772 ; Update standard ippCP variant
4773diff --git a/sources/ippcp/asm_ia32/pcpvariant_xmm7560.inc b/sources/ippcp/asm_ia32/pcpvariant_xmm7560.inc
4774index 9d2e593..456f19d 100644
4775--- a/sources/ippcp/asm_ia32/pcpvariant_xmm7560.inc
4776+++ b/sources/ippcp/asm_ia32/pcpvariant_xmm7560.inc
4777@@ -14,8 +14,7 @@
4778 ; limitations under the License.
4779 ;=========================================================================
4780
4781-; Intel(R) Integrated Performance Primitives
4782-; Cryptographic Primitives (ippcp)
4783+; Intel(R) Cryptography Primitives Library
4784 ;
4785 ; Purpose:
4786 ; Update standard ippCP variant
4787diff --git a/sources/ippcp/asm_intel64/gcm_vaes_avx512.inc b/sources/ippcp/asm_intel64/gcm_vaes_avx512.inc
4788index 1092bf3..53631d2 100644
4789--- a/sources/ippcp/asm_intel64/gcm_vaes_avx512.inc
4790+++ b/sources/ippcp/asm_intel64/gcm_vaes_avx512.inc
4791@@ -1272,7 +1272,7 @@
4792 %define %%ZT7 %21 ; [clobbered] ZMM temporary
4793 %define %%ZT8 %22 ; [clobbered] ZMM temporary
4794 %define %%GH %23 ; [in] ZMM with hi product part
4795-%define %%GM %24 ; [in] ZMM with mid prodcut part
4796+%define %%GM %24 ; [in] ZMM with mid product part
4797 %define %%GL %25 ; [in] ZMM with lo product part
4798
4799
4800diff --git a/sources/ippcp/asm_intel64/pcpaesgcme9as.asm b/sources/ippcp/asm_intel64/pcpaesgcme9as.asm
4801index a9dd108..62384c3 100644
4802--- a/sources/ippcp/asm_intel64/pcpaesgcme9as.asm
4803+++ b/sources/ippcp/asm_intel64/pcpaesgcme9as.asm
4804@@ -248,7 +248,7 @@ IPPASM AesGcmPrecompute_avx,PUBLIC
4805 %xdefine pPrecomData rdi ; (rdi) pointer to the reflected multipliers reflect(hkey),(hkey<<1), (hkey^2)<<1, (hkey^4)<<1,
4806 %xdefine pHKey rsi ; (rsi) pointer to the Hkey value
4807
4808- movdqu xmm0, oword [rel pHKey] ; xmm0 holds HashKey
4809+ movdqu xmm0, oword [pHKey] ; xmm0 holds HashKey
4810 pshufb xmm0, [rel SHUF_CONST]
4811 ;movdqu oword [pPrecomData+sizeof_oword_*0], xmm0
4812
4813@@ -296,7 +296,7 @@ IPPASM AesGcmPrecompute_avx2_vaes,PUBLIC
4814 %xdefine pPrecomputedData rdi ; (rdi) pointer to the reflected multipliers reflect(hkey),(hkey<<1), (hkey^2)<<1, (hkey^4)<<1,
4815 %xdefine pHKey rsi ; (rsi) pointer to the Hkey value
4816
4817- movdqu xmm0, oword [rel pHKey] ; xmm0 holds HashKey
4818+ movdqu xmm0, oword [pHKey] ; xmm0 holds HashKey
4819 pshufb xmm0, [rel SHUF_CONST]
4820
4821 ; precompute HashKey<<1 mod poly from the HashKey
4822@@ -381,14 +381,14 @@ IPPASM AesGcmMulGcm_avx,PUBLIC
4823 %xdefine pHash rdi ; (rdi) pointer to the Hash value
4824 %xdefine pHKey rsi ; (rsi) pointer to the (hkey<<1) value
4825
4826- movdqa xmm0, oword [rel pHash]
4827+ movdqa xmm0, oword [pHash]
4828 pshufb xmm0, [rel SHUF_CONST]
4829- movdqa xmm1, oword [rel pHKey]
4830+ movdqa xmm1, oword [pHKey]
4831
4832 sse_clmul_gcm xmm0, xmm1, xmm2, xmm3, xmm4 ; xmm0 holds Hash*HKey mod poly
4833
4834 pshufb xmm0, [rel SHUF_CONST]
4835- movdqa oword [rel pHash], xmm0
4836+ movdqa oword [pHash], xmm0
4837
4838 REST_XMM
4839 REST_GPR
4840@@ -413,15 +413,15 @@ IPPASM AesGcmAuth_avx,PUBLIC
4841
4842 %assign BYTES_PER_BLK (16)
4843
4844- movdqa xmm0, oword [rel pHash]
4845+ movdqa xmm0, oword [pHash]
4846 pshufb xmm0, [rel SHUF_CONST]
4847- movdqa xmm1, oword [rel pHKey]
4848+ movdqa xmm1, oword [pHKey]
4849
4850 movsxd rdx, edx
4851
4852 align IPP_ALIGN_FACTOR
4853 .auth_loop:
4854- movdqu xmm2, oword [rel pSrc] ; src[]
4855+ movdqu xmm2, oword [pSrc] ; src[]
4856 pshufb xmm2, [rel SHUF_CONST]
4857 add pSrc, BYTES_PER_BLK
4858 pxor xmm0, xmm2 ; hash ^= src[]
4859diff --git a/sources/ippcp/asm_intel64/pcpbnudivm7as.asm b/sources/ippcp/asm_intel64/pcpbnudivm7as.asm
4860index fc12582..7c53cb5 100644
4861--- a/sources/ippcp/asm_intel64/pcpbnudivm7as.asm
4862+++ b/sources/ippcp/asm_intel64/pcpbnudivm7as.asm
4863@@ -158,7 +158,7 @@
4864
4865
4866 ;;
4867-;; Multuply BNU by 32-bit digit and Subtract
4868+;; Multiply BNU by 32-bit digit and Subtract
4869 ;;
4870 ;; input
4871 ;; rSrc points source BNU
4872diff --git a/sources/ippcp/asm_intel64/pcpsha1e9as.asm b/sources/ippcp/asm_intel64/pcpsha1e9as.asm
4873index badb442..36561c2 100644
4874--- a/sources/ippcp/asm_intel64/pcpsha1e9as.asm
4875+++ b/sources/ippcp/asm_intel64/pcpsha1e9as.asm
4876@@ -316,13 +316,11 @@ segment .text align=IPP_ALIGN_FACTOR
4877 ;;
4878 ;; Lib = Y8
4879 ;;
4880-;; Caller = ippsSHA1Update
4881-;; Caller = ippsSHA1Final
4882-;; Caller = ippsSHA1MessageDigest
4883 ;;
4884-;; Caller = ippsHMACSHA1Update
4885-;; Caller = ippsHMACSHA1Final
4886-;; Caller = ippsHMACSHA1MessageDigest
4887+;; Caller = ippsHashUpdate_rmf
4888+;; Caller = ippsHashFinal_rmf
4889+;; Caller = ippsHashMessage_rmf
4890+;;
4891 ;;
4892
4893 ;; assign hash values to GPU registers
4894diff --git a/sources/ippcp/asm_intel64/pcpsha1m7as.asm b/sources/ippcp/asm_intel64/pcpsha1m7as.asm
4895index d3e4cea..a82d828 100644
4896--- a/sources/ippcp/asm_intel64/pcpsha1m7as.asm
4897+++ b/sources/ippcp/asm_intel64/pcpsha1m7as.asm
4898@@ -271,13 +271,9 @@ segment .text align=IPP_ALIGN_FACTOR
4899 ;;
4900 ;; Lib = M7
4901 ;;
4902-;; Caller = ippsSHA1Update
4903-;; Caller = ippsSHA1Final
4904-;; Caller = ippsSHA1MessageDigest
4905-;;
4906-;; Caller = ippsHMACSHA1Update
4907-;; Caller = ippsHMACSHA1Final
4908-;; Caller = ippsHMACSHA1MessageDigest
4909+;; Caller = ippsHashUpdate_rmf
4910+;; Caller = ippsHashFinal_rmf
4911+;; Caller = ippsHashMessage_rmf
4912 ;;
4913
4914 align IPP_ALIGN_FACTOR
4915diff --git a/sources/ippcp/asm_intel64/pcpsha1u8as.asm b/sources/ippcp/asm_intel64/pcpsha1u8as.asm
4916index 08355ca..265393e 100644
4917--- a/sources/ippcp/asm_intel64/pcpsha1u8as.asm
4918+++ b/sources/ippcp/asm_intel64/pcpsha1u8as.asm
4919@@ -330,13 +330,9 @@ segment .text align=IPP_ALIGN_FACTOR
4920 ;;
4921 ;; Lib = U8, N8
4922 ;;
4923-;; Caller = ippsSHA1Update
4924-;; Caller = ippsSHA1Final
4925-;; Caller = ippsSHA1MessageDigest
4926-;;
4927-;; Caller = ippsHMACSHA1Update
4928-;; Caller = ippsHMACSHA1Final
4929-;; Caller = ippsHMACSHA1MessageDigest
4930+;; Caller = ippsHashUpdate_rmf
4931+;; Caller = ippsHashFinal_rmf
4932+;; Caller = ippsHashMessage_rmf
4933 ;;
4934
4935 ;; assign hash values to GPU registers
4936diff --git a/sources/ippcp/asm_intel64/pcpsha256m7as.asm b/sources/ippcp/asm_intel64/pcpsha256m7as.asm
4937index b60fe3e..612419b 100644
4938--- a/sources/ippcp/asm_intel64/pcpsha256m7as.asm
4939+++ b/sources/ippcp/asm_intel64/pcpsha256m7as.asm
4940@@ -173,21 +173,9 @@
4941 ;;
4942 ;; Lib = M7
4943 ;;
4944-;; Caller = ippsSHA256Update
4945-;; Caller = ippsSHA256Final
4946-;; Caller = ippsSHA256MessageDigest
4947-;;
4948-;; Caller = ippsSHA224Update
4949-;; Caller = ippsSHA224Final
4950-;; Caller = ippsSHA224MessageDigest
4951-;;
4952-;; Caller = ippsHMACSHA256Update
4953-;; Caller = ippsHMACSHA256Final
4954-;; Caller = ippsHMACSHA256MessageDigest
4955-;;
4956-;; Caller = ippsHMACSHA224Update
4957-;; Caller = ippsHMACSHA224Final
4958-;; Caller = ippsHMACSHA224MessageDigest
4959+;; Caller = ippsHashUpdate_rmf
4960+;; Caller = ippsHashFinal_rmf
4961+;; Caller = ippsHashMessage_rmf
4962 ;;
4963
4964 segment .data align=IPP_ALIGN_FACTOR
4965diff --git a/sources/ippcp/asm_intel64/pcpsha512m7as.asm b/sources/ippcp/asm_intel64/pcpsha512m7as.asm
4966index f17bbcb..baaa5c2 100644
4967--- a/sources/ippcp/asm_intel64/pcpsha512m7as.asm
4968+++ b/sources/ippcp/asm_intel64/pcpsha512m7as.asm
4969@@ -188,21 +188,10 @@ segment .text align=IPP_ALIGN_FACTOR
4970 ;;
4971 ;; Lib = M7
4972 ;;
4973-;; Caller = ippsSHA512Update
4974-;; Caller = ippsSHA512Final
4975-;; Caller = ippsSHA512MessageDigest
4976 ;;
4977-;; Caller = ippsSHA384Update
4978-;; Caller = ippsSHA384Final
4979-;; Caller = ippsSHA384MessageDigest
4980-;;
4981-;; Caller = ippsHMACSHA512Update
4982-;; Caller = ippsHMACSHA512Final
4983-;; Caller = ippsHMACSHA512MessageDigest
4984-;;
4985-;; Caller = ippsHMACSHA384Update
4986-;; Caller = ippsHMACSHA384Final
4987-;; Caller = ippsHMACSHA384MessageDigest
4988+;; Caller = ippsHashUpdate_rmf
4989+;; Caller = ippsHashFinal_rmf
4990+;; Caller = ippsHashMessage_rmf
4991 ;;
4992
4993 %xdefine KK_SHA512 rbp
4994diff --git a/sources/ippcp/asm_intel64/pcpsm3l9_ni_as.asm b/sources/ippcp/asm_intel64/pcpsm3l9_ni_as.asm
4995new file mode 100644
4996index 0000000..1e6b097
4997--- /dev/null
4998+++ b/sources/ippcp/asm_intel64/pcpsm3l9_ni_as.asm
4999@@ -0,0 +1,231 @@
5000+;=========================================================================
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: