intel IPPCP library source and binaries included in plugin

oxigraph-main
Niko PLP 1 year ago
parent 293fe1abf8
commit 3d515daf29
  1. 4
      plugin/ippcp/examples/Makefile
  2. 4
      plugin/ippcp/examples2/Makefile
  3. BIN
      plugin/ippcp/examples2/ippcp_example
  4. 2
      plugin/ippcp/ippcp.mk
  5. 113
      plugin/ippcp/library/include/crypto_mb/cpu_features.h
  6. 68
      plugin/ippcp/library/include/crypto_mb/defs.h
  7. 187
      plugin/ippcp/library/include/crypto_mb/ec_nistp256.h
  8. 186
      plugin/ippcp/library/include/crypto_mb/ec_nistp384.h
  9. 187
      plugin/ippcp/library/include/crypto_mb/ec_nistp521.h
  10. 154
      plugin/ippcp/library/include/crypto_mb/ec_sm2.h
  11. 66
      plugin/ippcp/library/include/crypto_mb/ed25519.h
  12. 59
      plugin/ippcp/library/include/crypto_mb/exp.h
  13. 104
      plugin/ippcp/library/include/crypto_mb/rsa.h
  14. 60
      plugin/ippcp/library/include/crypto_mb/sm3.h
  15. 59
      plugin/ippcp/library/include/crypto_mb/sm4.h
  16. 143
      plugin/ippcp/library/include/crypto_mb/sm4_ccm.h
  17. 113
      plugin/ippcp/library/include/crypto_mb/sm4_gcm.h
  18. 117
      plugin/ippcp/library/include/crypto_mb/status.h
  19. 45
      plugin/ippcp/library/include/crypto_mb/version.h
  20. 31
      plugin/ippcp/library/include/crypto_mb/x25519.h
  21. 1541
      plugin/ippcp/library/include/ippcp.h
  22. 860
      plugin/ippcp/library/include/ippcpdefs.h
  23. 41
      plugin/ippcp/library/include/ippversion.h
  24. 557
      plugin/ippcp/library/include/single_cpu/ippcp_e9.h
  25. 557
      plugin/ippcp/library/include/single_cpu/ippcp_g9.h
  26. 557
      plugin/ippcp/library/include/single_cpu/ippcp_h9.h
  27. 557
      plugin/ippcp/library/include/single_cpu/ippcp_k0.h
  28. 557
      plugin/ippcp/library/include/single_cpu/ippcp_k1.h
  29. 557
      plugin/ippcp/library/include/single_cpu/ippcp_l9.h
  30. 557
      plugin/ippcp/library/include/single_cpu/ippcp_m7.h
  31. 557
      plugin/ippcp/library/include/single_cpu/ippcp_n0.h
  32. 557
      plugin/ippcp/library/include/single_cpu/ippcp_n8.h
  33. 557
      plugin/ippcp/library/include/single_cpu/ippcp_p8.h
  34. 557
      plugin/ippcp/library/include/single_cpu/ippcp_s8.h
  35. 557
      plugin/ippcp/library/include/single_cpu/ippcp_w7.h
  36. 557
      plugin/ippcp/library/include/single_cpu/ippcp_y8.h
  37. 35
      plugin/ippcp/library/src/.clang-format
  38. 33
      plugin/ippcp/library/src/.gitattributes
  39. 304
      plugin/ippcp/library/src/BUILD.md
  40. 128
      plugin/ippcp/library/src/CHANGELOG.md
  41. 238
      plugin/ippcp/library/src/CMakeLists.txt
  42. 162
      plugin/ippcp/library/src/CONST_TIME_EXECUTION_TESTING.md
  43. 86
      plugin/ippcp/library/src/DEPRECATION_NOTES.md
  44. 234
      plugin/ippcp/library/src/LICENSE
  45. 23
      plugin/ippcp/library/src/MAC.md
  46. 208
      plugin/ippcp/library/src/OVERVIEW.md
  47. 72
      plugin/ippcp/library/src/README.md
  48. 15
      plugin/ippcp/library/src/SECURITY.md
  49. 37
      plugin/ippcp/library/src/THIRD-PARTY-PROGRAMS.txt
  50. BIN
      plugin/ippcp/library/src/data/images/README-pictures-0-dispatcher.png
  51. BIN
      plugin/ippcp/library/src/data/images/README-pictures-1-library-configurations.png
  52. BIN
      plugin/ippcp/library/src/data/images/README-pictures-1a-build-targets.png
  53. BIN
      plugin/ippcp/library/src/data/images/README-pictures-2-merged-library.png
  54. BIN
      plugin/ippcp/library/src/data/images/README-pictures-3-cpu-specific-libraries.png
  55. BIN
      plugin/ippcp/library/src/data/images/README-pictures-4a-1CPU.png
  56. BIN
      plugin/ippcp/library/src/data/images/README-pictures-4b-1CPU.png
  57. 123
      plugin/ippcp/library/src/examples/CMakeLists.txt
  58. 95
      plugin/ippcp/library/src/examples/README.md
  59. 137
      plugin/ippcp/library/src/examples/aes/aes-256-ctr-decryption.cpp
  60. 137
      plugin/ippcp/library/src/examples/aes/aes-256-ctr-encryption.cpp
  61. 183
      plugin/ippcp/library/src/examples/dsa/dsa-dlp-sha-1-verification.cpp
  62. 207
      plugin/ippcp/library/src/examples/dsa/dsa-dlp-sha-256-verification.cpp
  63. 131
      plugin/ippcp/library/src/examples/rsa/rsa-1k-oaep-sha1-encryption.cpp
  64. 146
      plugin/ippcp/library/src/examples/rsa/rsa-1k-oaep-sha1-type2-decryption.cpp
  65. 124
      plugin/ippcp/library/src/examples/rsa/rsa-1k-pss-sha1-verification.cpp
  66. 166
      plugin/ippcp/library/src/examples/rsa/rsa-3k-pss-sha384-type1-signature.cpp
  67. 126
      plugin/ippcp/library/src/examples/sms4/sms4-128-cbc-decryption.cpp
  68. 126
      plugin/ippcp/library/src/examples/sms4/sms4-128-cbc-encryption.cpp
  69. 438
      plugin/ippcp/library/src/examples/utils/bignum.cpp
  70. 107
      plugin/ippcp/library/src/examples/utils/bignum.h
  71. 90
      plugin/ippcp/library/src/examples/utils/examples_common.h
  72. 39
      plugin/ippcp/library/src/examples/utils/requests.cpp
  73. 98
      plugin/ippcp/library/src/examples/utils/requests.h
  74. 47
      plugin/ippcp/library/src/examples/utils/utils.cpp
  75. 35
      plugin/ippcp/library/src/examples/utils/utils.h
  76. 1541
      plugin/ippcp/library/src/include/ippcp.h
  77. 860
      plugin/ippcp/library/src/include/ippcpdefs.h
  78. 41
      plugin/ippcp/library/src/include/ippversion.h
  79. 43
      plugin/ippcp/library/src/sources/cmake/CMakeASM_NASMOptions.txt
  80. 36
      plugin/ippcp/library/src/sources/cmake/ippcp-config-version.cmake.in
  81. 149
      plugin/ippcp/library/src/sources/cmake/ippcp-config.cmake.in
  82. 22
      plugin/ippcp/library/src/sources/cmake/linux/sanitizers_ignorelist.txt
  83. 27
      plugin/ippcp/library/src/sources/cmake/pkg-config/crypto_mb-dynamic.pc.in
  84. 27
      plugin/ippcp/library/src/sources/cmake/pkg-config/crypto_mb-static.pc.in
  85. 27
      plugin/ippcp/library/src/sources/cmake/pkg-config/ippcp-dynamic.pc.in
  86. 27
      plugin/ippcp/library/src/sources/cmake/pkg-config/ippcp-static.pc.in
  87. BIN
      plugin/ippcp/library/src/sources/dispatcher/__pycache__/gen_disp_common.cpython-39.pyc
  88. 67
      plugin/ippcp/library/src/sources/dispatcher/gen_disp_common.py
  89. 175
      plugin/ippcp/library/src/sources/dispatcher/gen_disp_lin32.nonpic.py
  90. 191
      plugin/ippcp/library/src/sources/dispatcher/gen_disp_lin32.py
  91. 175
      plugin/ippcp/library/src/sources/dispatcher/gen_disp_lin64.nonpic.py
  92. 174
      plugin/ippcp/library/src/sources/dispatcher/gen_disp_lin64.py
  93. 168
      plugin/ippcp/library/src/sources/dispatcher/gen_disp_mac64.py
  94. 117
      plugin/ippcp/library/src/sources/dispatcher/gen_disp_win32.py
  95. 107
      plugin/ippcp/library/src/sources/dispatcher/gen_disp_win64.py
  96. 86
      plugin/ippcp/library/src/sources/gen_cpu_spc_header/gen_cpu_spc_1cpu_header.py
  97. 81
      plugin/ippcp/library/src/sources/gen_cpu_spc_header/gen_cpu_spc_header.py
  98. 175
      plugin/ippcp/library/src/sources/include/asmdefs.inc
  99. 293
      plugin/ippcp/library/src/sources/include/dispatcher.h
  100. 532
      plugin/ippcp/library/src/sources/include/ia_32e.inc
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,12 +1,12 @@
include ../../../make_config.mk
PLATFORM_LDFLAGS += -lrocksdb -lippcp -L../../.. -L../../../../ipp-crypto/_build/.build/RELEASE/lib
PLATFORM_LDFLAGS += -lrocksdb -lippcp -L../../.. -L../library/lib
.PHONY: clean
all: ippcp_example
ippcp_example: ippcp_example.cc
$(CXX) $(CXXFLAGS) $@.cc -o$@ -I../../../include -O2 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) -I../../../../ipp-crypto/_build/.build/RELEASE/include
$(CXX) $(CXXFLAGS) $@.cc -o$@ -I../../../include -O2 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) -I../library/include
clean:
rm -rf ./ippcp_example

@ -1,12 +1,12 @@
include ../../../make_config.mk
PLATFORM_LDFLAGS += -lrocksdb -lippcp -L../../.. -L../../../../ipp-crypto/_build/.build/RELEASE/lib
PLATFORM_LDFLAGS += -lrocksdb -lippcp -L../../.. -L../library/lib
.PHONY: clean
all: ippcp_example
ippcp_example: ippcp_example.cc
$(CXX) $(CXXFLAGS) $@.cc -o$@ -I../../../include -O2 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) -I../../../../ipp-crypto/_build/.build/RELEASE/include
$(CXX) $(CXXFLAGS) $@.cc -o$@ -I../../../include -O2 $(PLATFORM_LDFLAGS) $(PLATFORM_CXXFLAGS) -I../library/include
clean:
rm -rf ./ippcp_example

@ -1,4 +1,4 @@
ippcp_SOURCES = ippcp_provider.cc
ippcp_HEADERS = ippcp_provider.h
ippcp_LDFLAGS = -lippcp
ippcp_CXXFLAGS = -I../ipp-crypto/_build/.build/RELEASE/include
ippcp_CXXFLAGS = -Iplugin/ippcp/library/include

@ -0,0 +1,113 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef CPU_FEATURES_H
#define CPU_FEATURES_H
#include <crypto_mb/defs.h>
/* definition of cpu features */
#define mbcpCPUID_MMX 0x00000001LL /* Intel® architecture with MMX(TM) technology supported */
#define mbcpCPUID_SSE 0x00000002LL /* Intel® Streaming SIMD Extensions (Intel® SSE) instruction set */
#define mbcpCPUID_SSE2 0x00000004LL /* Intel® Streaming SIMD Extensions 2 (Intel® SSE2) instruction set */
#define mbcpCPUID_SSE3 0x00000008LL /* Intel® Streaming SIMD Extensions 3 (Intel® SSE3) instruction set */
#define mbcpCPUID_SSSE3 0x00000010LL /* Supplemental Streaming SIMD Extensions 3 (SSSE3) instruction set */
#define mbcpCPUID_MOVBE 0x00000020LL /* Intel® instruction MOVBE */
#define mbcpCPUID_SSE41 0x00000040LL /* Intel® Streaming SIMD Extensions 4.1 (Intel® SSE4.1) instruction set */
#define mbcpCPUID_SSE42 0x00000080LL /* Intel® Streaming SIMD Extensions 4.2 (Intel® SSE4.2) instruction set */
#define mbcpCPUID_AVX 0x00000100LL /* Intel® Advanced Vector Extensions (Intel® AVX) instruction set */
#define mbcpAVX_ENABLEDBYOS 0x00000200LL /* Intel® Advanced Vector Extensions (Intel® AVX) instruction set is supported by OS */
#define mbcpCPUID_AES 0x00000400LL /* AES */
#define mbcpCPUID_CLMUL 0x00000800LL /* Intel® instruction PCLMULQDQ */
#define mbcpCPUID_ABR 0x00001000LL /* Reserved */
#define mbcpCPUID_RDRAND 0x00002000LL /* Intel® instruction RDRAND */
#define mbcpCPUID_F16C 0x00004000LL /* Intel® instruction F16C */
#define mbcpCPUID_AVX2 0x00008000LL /* Intel® Advanced Vector Extensions 2 (Intel® AVX2) */
#define mbcpCPUID_ADX 0x00010000LL /* Intel® instructions ADOX/ADCX */
#define mbcpCPUID_RDSEED 0x00020000LL /* Intel® instruction RDSEED */
#define mbcpCPUID_PREFETCHW 0x00040000LL /* Intel® instruction PREFETCHW */
#define mbcpCPUID_SHA 0x00080000LL /* Intel® Secure Hash Algorithm Extensions (Intel® SHA Extensions) */
#define mbcpCPUID_AVX512F 0x00100000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) Foundation instruction set */
#define mbcpCPUID_AVX512CD 0x00200000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) CD instruction set */
#define mbcpCPUID_AVX512ER 0x00400000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) ER instruction set */
#define mbcpCPUID_AVX512PF 0x00800000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) PF instruction set */
#define mbcpCPUID_AVX512BW 0x01000000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) BW instruction set */
#define mbcpCPUID_AVX512DQ 0x02000000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) DQ instruction set */
#define mbcpCPUID_AVX512VL 0x04000000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) VL instruction set */
#define mbcpCPUID_AVX512VBMI 0x08000000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) Bit Manipulation instructions */
#define mbcpCPUID_MPX 0x10000000LL /* Intel® Memory Protection Extensions (Intel® MPX) */
#define mbcpCPUID_AVX512_4FMADDPS 0x20000000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) DL floating-point single precision */
#define mbcpCPUID_AVX512_4VNNIW 0x40000000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) DL enhanced word variable precision */
#define mbcpCPUID_KNC 0x80000000LL /* Intel® Xeon® Phi(TM) Coprocessor */
#define mbcpCPUID_AVX512IFMA 0x100000000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) IFMA (PMADD52) instruction set */
#define mbcpAVX512_ENABLEDBYOS 0x200000000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) is supported by OS */
#define mbcpCPUID_AVX512GFNI 0x400000000LL /* GFNI */
#define mbcpCPUID_AVX512VAES 0x800000000LL /* VAES */
#define mbcpCPUID_AVX512VCLMUL 0x1000000000LL /* VCLMUL */
#define mbcpCPUID_AVX512VBMI2 0x2000000000LL /* Intel® Advanced Vector Extensions 512 (Intel® AVX-512) Bit Manipulation instructions 2 */
#define mbcpCPUID_BMI1 0x4000000000LL /* BMI1 */
#define mbcpCPUID_BMI2 0x8000000000LL /* BMI2 */
/* map cpu features */
EXTERN_C int64u mbx_get_cpu_features(void);
/* check if crypto_mb is applicable */
EXTERN_C int mbx_is_crypto_mb_applicable(int64u cpu_features);
/* supported algorithm */
enum MBX_ALGO {
MBX_ALGO_RSA_1K,
MBX_ALGO_RSA_2K,
MBX_ALGO_RSA_3K,
MBX_ALGO_RSA_4K,
MBX_ALGO_X25519,
MBX_ALGO_EC_NIST_P256,
MBX_ALGO_ECDHE_NIST_P256 = MBX_ALGO_EC_NIST_P256,
MBX_ALGO_ECDSA_NIST_P256 = MBX_ALGO_EC_NIST_P256,
MBX_ALGO_EC_NIST_P384,
MBX_ALGO_ECDHE_NIST_P384 = MBX_ALGO_EC_NIST_P384,
MBX_ALGO_ECDSA_NIST_P384 = MBX_ALGO_EC_NIST_P384,
MBX_ALGO_EC_NIST_P521,
MBX_ALGO_ECDHE_NIST_P521 = MBX_ALGO_EC_NIST_P521,
MBX_ALGO_ECDSA_NIST_P521 = MBX_ALGO_EC_NIST_P521,
MBX_ALGO_EC_SM2,
MBX_ALGO_ECDHE_SM2 = MBX_ALGO_EC_SM2,
MBX_ALGO_ECDSA_SM2 = MBX_ALGO_EC_SM2,
MBX_ALGO_SM3,
MBX_ALGO_SM4,
MBX_ALGO_ECB_SM4 = MBX_ALGO_SM4,
MBX_ALGO_CBC_SM4 = MBX_ALGO_SM4,
MBX_ALGO_CTR_SM4 = MBX_ALGO_SM4,
MBX_ALGO_OFB_SM4 = MBX_ALGO_SM4,
MBX_ALGO_OFB128_SM4 = MBX_ALGO_SM4,
};
/* multi-buffer width implemented by library */
enum MBX_WIDTH {
MBX_WIDTH_MB8 = 8,
MBX_WIDTH_MB16 = 16,
MBX_WIDTH_ANY = (1 << 16) - 1
};
typedef int64u MBX_ALGO_INFO;
/* check if algorithm is supported on current platform
* returns: multi-buffer width mask or 0 if algorithm not supported
*/
EXTERN_C MBX_ALGO_INFO mbx_get_algo_info(enum MBX_ALGO algo);
#endif /* CPU_FEATURES_H */

@ -0,0 +1,68 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef DEFS_H
#define DEFS_H
/* data types */
typedef unsigned char int8u;
typedef unsigned short int16u;
typedef unsigned int int32u;
typedef unsigned long long int64u;
#ifndef NULL
#define NULL ((void *)0)
#endif
/* alignment & inline */
#if defined(__GNUC__)
#if !defined(__ALIGN64)
#define __ALIGN64 __attribute__((aligned(64)))
#endif
#if !defined(__INLINE)
#define __INLINE static __inline__
#endif
#if !defined(__NOINLINE)
#define __NOINLINE __attribute__((noinline))
#endif
#else
#if !defined(__ALIGN64)
#define __ALIGN64 __declspec(align(64))
#endif
#if !defined(__INLINE)
#define __INLINE static __forceinline
#endif
#if !defined(__NOINLINE)
#define __NOINLINE __declspec(noinline)
#endif
#endif
/* externals */
#undef EXTERN_C
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C
#endif
#endif /* DEFS_H */

@ -0,0 +1,187 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef EC_NISTP256_H
#define EC_NISTP256_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
#ifndef BN_OPENSSL_DISABLE
#include <openssl/bn.h>
#include <openssl/ec.h>
#endif // BN_OPENSSL_DISABLE
/*
// ECDHE
*/
/*
// Computes public key
// pa_pubx[] array of pointers to the public keys X-coordinates
// pa_puby[] array of pointers to the public keys Y-coordinates
// pa_pubz[] array of pointers to the public keys Z-coordinates
// pa_skey[] array of pointers to the private keys
// pBuffer pointer to the scratch buffer
//
// Note:
// output public key is represented by (X:Y:Z) projective Jacobian coordinates
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp256_ecpublic_key_ssl_mb8(BIGNUM* pa_pubx[8],
BIGNUM* pa_puby[8],
BIGNUM* pa_pubz[8],
const BIGNUM* const pa_skey[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp256_ecpublic_key_mb8(int64u* pa_pubx[8],
int64u* pa_puby[8],
int64u* pa_pubz[8],
const int64u* const pa_skey[8],
int8u* pBuffer);
/*
// Computes shared key
// pa_shared_key[] array of pointers to the shared keys
// pa_skey[] array of pointers to the own (ephemeral) private keys
// pa_pubx[] array of pointers to the party's public keys X-coordinates
// pa_puby[] array of pointers to the party's public keys Y-coordinates
// pa_pubz[] array of pointers to the party's public keys Z-coordinates
// pBuffer pointer to the scratch buffer
//
// Note:
// input party's public key is represented by (X:Y:Z) projective Jacobian coordinates
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp256_ecdh_ssl_mb8(int8u* pa_shared_key[8],
const BIGNUM* const pa_skey[8],
const BIGNUM* const pa_pubx[8],
const BIGNUM* const pa_puby[8],
const BIGNUM* const pa_pubz[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp256_ecdh_mb8(int8u* pa_shared_key[8],
const int64u* const pa_skey[8],
const int64u* const pa_pubx[8],
const int64u* const pa_puby[8],
const int64u* const pa_pubz[8],
int8u* pBuffer);
/*
// ECDSA signature generation
*/
/*
// Pre-computes ECDSA signature
// pa_inv_eph_skey[] array of pointers to the inversion of signer's ephemeral private keys
// pa_sign_rp[] array of pointers to the pre-computed r-components of the signatures
// pa_eph_skey[] array of pointers to the signer's ephemeral private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp256_ecdsa_sign_setup_mb8(int64u* pa_inv_eph_skey[8],
int64u* pa_sign_rp[8],
const int64u* const pa_eph_skey[8],
int8u* pBuffer);
/*
// computes ECDSA signature
//
// pa_sign_pr[] array of pointers to the r-components of the signatures
// pa_sign_ps[] array of pointers to the s-components of the signatures
// pa_msg[] array of pointers to the messages are being signed
// pa_sign_rp[] array of pointers to the pre-computed r-components of the signatures
// pa_inv_eph_skey[] array of pointers to the inversion of signer's ephemeral private keys
// pa_reg_skey[] array of pointers to the regular signer's ephemeral private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp256_ecdsa_sign_complete_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const int64u* const pa_sgn_rp[8],
const int64u* const pa_inv_eph_skey[8],
const int64u* const pa_reg_skey[8],
int8u* pBuffer);
/*
// Computes ECDSA signature
// pa_sign_r[] array of pointers to the computed r-components of the signatures
// pa_sign_s[] array of pointers to the computed s-components of the signatures
// pa_msg[] array of pointers to the messages are being signed
// pa_eph_skey[] array of pointers to the signer's ephemeral private keys
// pa_reg_skey[] array of pointers to the signer's regular private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp256_ecdsa_sign_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const int64u* const pa_eph_skey[8],
const int64u* const pa_reg_skey[8],
int8u* pBuffer);
/*
// Verifies ECDSA signature
// pa_sign_r[] array of pointers to the computed r-components of the signatures
// pa_sign_s[] array of pointers to the computed s-components of the signatures
// pa_msg[] array of pointers to the messages that have been signed
// pa_pubx[] array of pointers to the signer's public keys X-coordinates
// pa_puby[] array of pointers to the signer's public keys Y-coordinates
// pa_pubz[] array of pointers to the signer's public keys Z-coordinates (or NULL, if affine coordinate requested)
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp256_ecdsa_verify_mb8(const int8u* const pa_sign_r[8],
const int8u* const pa_sign_s[8],
const int8u* const pa_msg[8],
const int64u* const pa_pubx[8],
const int64u* const pa_puby[8],
const int64u* const pa_pubz[8],
int8u* pBuffer);
/*
// OpenSSL's specific similar APIs
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp256_ecdsa_sign_setup_ssl_mb8(BIGNUM* pa_inv_eph_skey[8],
BIGNUM* pa_sign_pr[8],
const BIGNUM* const pa_eph_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_nistp256_ecdsa_sign_complete_ssl_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const BIGNUM* const pa_sgn_rp[8],
const BIGNUM* const pa_inv_eph_skey[8],
const BIGNUM* const pa_reg_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_nistp256_ecdsa_sign_ssl_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const BIGNUM* const pa_eph_skey[8],
const BIGNUM* const pa_reg_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_nistp256_ecdsa_verify_ssl_mb8(const ECDSA_SIG* const pa_sig[8],
const int8u* const pa_msg[8],
const BIGNUM* const pa_pubx[8],
const BIGNUM* const pa_puby[8],
const BIGNUM* const pa_pubz[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
#endif /* EC_NISTP256_H */

@ -0,0 +1,186 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef EC_NISTP384_H
#define EC_NISTP384_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
#ifndef BN_OPENSSL_DISABLE
#include <openssl/bn.h>
#include <openssl/ec.h>
#endif // BN_OPENSSL_DISABLE
/*
// ECDHE
*/
/*
// Computes public key
// pa_pubx[] array of pointers to the public keys X-coordinates
// pa_puby[] array of pointers to the public keys Y-coordinates
// pa_pubz[] array of pointers to the public keys Z-coordinates
// pa_skey[] array of pointers to the private keys
// pBuffer pointer to the scratch buffer
//
// Note:
// output public key is represented by (X:Y:Z) projective Jacobian coordinates
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp384_ecpublic_key_ssl_mb8(BIGNUM* pa_pubx[8],
BIGNUM* pa_puby[8],
BIGNUM* pa_pubz[8],
const BIGNUM* const pa_skey[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp384_ecpublic_key_mb8(int64u* pa_pubx[8],
int64u* pa_puby[8],
int64u* pa_pubz[8],
const int64u* const pa_skey[8],
int8u* pBuffer);
/*
// Computes shared key
// pa_shared_key[] array of pointers to the shared keys
// pa_skey[] array of pointers to the own (ephemeral) private keys
// pa_pubx[] array of pointers to the party's public keys X-coordinates
// pa_puby[] array of pointers to the party's public keys Y-coordinates
// pa_pubz[] array of pointers to the party's public keys Z-coordinates
// pBuffer pointer to the scratch buffer
//
// Note:
// input party's public key is represented by (X:Y:Z) projective Jacobian coordinates
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp384_ecdh_ssl_mb8(int8u* pa_shared_key[8],
const BIGNUM* const pa_skey[8],
const BIGNUM* const pa_pubx[8],
const BIGNUM* const pa_puby[8],
const BIGNUM* const pa_pubz[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp384_ecdh_mb8(int8u* pa_shared_key[8],
const int64u* const pa_skey[8],
const int64u* const pa_pubx[8],
const int64u* const pa_puby[8],
const int64u* const pa_pubz[8],
int8u* pBuffer);
/*
// ECDSA signature generation
*/
/*
// Pre-computes ECDSA signature
// pa_inv_eph_skey[] array of pointers to the inversion of signer's ephemeral private keys
// pa_sign_rp[] array of pointers to the pre-computed r-components of the signatures
// pa_eph_skey[] array of pointers to the signer's ephemeral private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp384_ecdsa_sign_setup_mb8(int64u* pa_inv_eph_skey[8],
int64u* pa_sign_rp[8],
const int64u* const pa_eph_skey[8],
int8u* pBuffer);
/*
// computes ECDSA signature
//
// pa_sign_pr[] array of pointers to the r-components of the signatures
// pa_sign_ps[] array of pointers to the s-components of the signatures
// pa_msg[] array of pointers to the messages are being signed
// pa_sign_rp[] array of pointers to the pre-computed r-components of the signatures
// pa_inv_eph_skey[] array of pointers to the inversion of signer's ephemeral private keys
// pa_reg_skey[] array of pointers to the regular signer's ephemeral private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp384_ecdsa_sign_complete_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const int64u* const pa_sgn_rp[8],
const int64u* const pa_inv_eph_skey[8],
const int64u* const pa_reg_skey[8],
int8u* pBuffer);
/*
// Computes ECDSA signature
// pa_sign_r[] array of pointers to the computed r-components of the signatures
// pa_sign_s[] array of pointers to the computed s-components of the signatures
// pa_msg[] array of pointers to the messages are being signed
// pa_eph_skey[] array of pointers to the signer's ephemeral private keys
// pa_reg_skey[] array of pointers to the signer's regular private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp384_ecdsa_sign_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const int64u* const pa_eph_skey[8],
const int64u* const pa_reg_skey[8],
int8u* pBuffer);
/*
// Verifies ECDSA signature
// pa_sign_r[] array of pointers to the computed r-components of the signatures
// pa_sign_s[] array of pointers to the computed s-components of the signatures
// pa_msg[] array of pointers to the messages that have been signed
// pa_pubx[] array of pointers to the signer's public keys X-coordinates
// pa_puby[] array of pointers to the signer's public keys Y-coordinates
// pa_pubz[] array of pointers to the signer's public keys Z-coordinates (or NULL, if affine coordinate requested)
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp384_ecdsa_verify_mb8(const int8u* const pa_sign_r[8],
const int8u* const pa_sign_s[8],
const int8u* const pa_msg[8],
const int64u* const pa_pubx[8],
const int64u* const pa_puby[8],
const int64u* const pa_pubz[8],
int8u* pBuffer);
/*
// OpenSSL's specific similar APIs
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp384_ecdsa_sign_setup_ssl_mb8(BIGNUM* pa_inv_eph_skey[8],
BIGNUM* pa_sign_pr[8],
const BIGNUM* const pa_eph_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_nistp384_ecdsa_sign_complete_ssl_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const BIGNUM* const pa_sgn_rp[8],
const BIGNUM* const pa_inv_eph_skey[8],
const BIGNUM* const pa_reg_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_nistp384_ecdsa_sign_ssl_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const BIGNUM* const pa_eph_skey[8],
const BIGNUM* const pa_reg_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_nistp384_ecdsa_verify_ssl_mb8(const ECDSA_SIG* const pa_sign[8],
const int8u* const pa_msg[8],
const BIGNUM* const pa_pubx[8],
const BIGNUM* const pa_puby[8],
const BIGNUM* const pa_pubz[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
#endif /* EC_NISTP384_H */

@ -0,0 +1,187 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef EC_NISTP521_H
#define EC_NISTP521_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
#ifndef BN_OPENSSL_DISABLE
#include <openssl/bn.h>
#include <openssl/ec.h>
#endif // BN_OPENSSL_DISABLE
/*
// ECDHE
*/
/*
// Computes public key
// pa_pubx[] array of pointers to the public keys X-coordinates
// pa_puby[] array of pointers to the public keys Y-coordinates
// pa_pubz[] array of pointers to the public keys Z-coordinates
// pa_skey[] array of pointers to the private keys
// pBuffer pointer to the scratch buffer
//
// Note:
// output public key is represented by (X:Y:Z) projective Jacobian coordinates
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp521_ecpublic_key_ssl_mb8(BIGNUM* pa_pubx[8],
BIGNUM* pa_puby[8],
BIGNUM* pa_pubz[8],
const BIGNUM* const pa_skey[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp521_ecpublic_key_mb8(int64u* pa_pubx[8],
int64u* pa_puby[8],
int64u* pa_pubz[8],
const int64u* const pa_skey[8],
int8u* pBuffer);
/*
// Computes shared key
// pa_shared_key[] array of pointers to the shared keys
// pa_skey[] array of pointers to the own (ephemeral) private keys
// pa_pubx[] array of pointers to the party's public keys X-coordinates
// pa_puby[] array of pointers to the party's public keys Y-coordinates
// pa_pubz[] array of pointers to the party's public keys Z-coordinates
// pBuffer pointer to the scratch buffer
//
// Note:
// input party's public key is represented by (X:Y:Z) projective Jacobian coordinates
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp521_ecdh_ssl_mb8(int8u* pa_shared_key[8],
const BIGNUM* const pa_skey[8],
const BIGNUM* const pa_pubx[8],
const BIGNUM* const pa_puby[8],
const BIGNUM* const pa_pubz[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp521_ecdh_mb8(int8u* pa_shared_key[8],
const int64u* const pa_skey[8],
const int64u* const pa_pubx[8],
const int64u* const pa_puby[8],
const int64u* const pa_pubz[8],
int8u* pBuffer);
/*
// ECDSA signature generation
*/
/*
// Pre-computes ECDSA signature
// pa_inv_eph_skey[] array of pointers to the inversion of signer's ephemeral private keys
// pa_sign_rp[] array of pointers to the pre-computed r-components of the signatures
// pa_eph_skey[] array of pointers to the signer's ephemeral private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp521_ecdsa_sign_setup_mb8(int64u* pa_inv_eph_skey[8],
int64u* pa_sign_rp[8],
const int64u* const pa_eph_skey[8],
int8u* pBuffer);
/*
// computes ECDSA signature
//
// pa_sign_pr[] array of pointers to the r-components of the signatures
// pa_sign_ps[] array of pointers to the s-components of the signatures
// pa_msg[] array of pointers to the messages are being signed
// pa_sign_rp[] array of pointers to the pre-computed r-components of the signatures
// pa_inv_eph_skey[] array of pointers to the inversion of signer's ephemeral private keys
// pa_reg_skey[] array of pointers to the regular signer's ephemeral private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp521_ecdsa_sign_complete_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const int64u* const pa_sgn_rp[8],
const int64u* const pa_inv_eph_skey[8],
const int64u* const pa_reg_skey[8],
int8u* pBuffer);
/*
// Computes ECDSA signature
// pa_sign_r[] array of pointers to the computed r-components of the signatures
// pa_sign_s[] array of pointers to the computed s-components of the signatures
// pa_msg[] array of pointers to the messages are being signed
// pa_eph_skey[] array of pointers to the signer's ephemeral private keys
// pa_reg_skey[] array of pointers to the signer's regular private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp521_ecdsa_sign_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const int64u* const pa_eph_skey[8],
const int64u* const pa_reg_skey[8],
int8u* pBuffer);
/*
// Verifies ECDSA signature
// pa_sign_r[] array of pointers to the computed r-components of the signatures
// pa_sign_s[] array of pointers to the computed s-components of the signatures
// pa_msg[] array of pointers to the messages are being signed
// pa_pubx[] array of pointers to the public keys X-coordinates
// pa_puby[] array of pointers to the public keys Y-coordinates
// pa_pubz[] array of pointers to the public keys Z-coordinates
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_nistp521_ecdsa_verify_mb8(const int8u* const pa_sign_r[8],
const int8u* const pa_sign_s[8],
const int8u* const pa_msg[8],
const int64u* const pa_pubx[8],
const int64u* const pa_puby[8],
const int64u* const pa_pubz[8],
int8u* pBuffer);
/*
// OpenSSL's specific similar APIs
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_nistp521_ecdsa_sign_setup_ssl_mb8(BIGNUM* pa_inv_eph_skey[8],
BIGNUM* pa_sign_pr[8],
const BIGNUM* const pa_eph_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_nistp521_ecdsa_sign_complete_ssl_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const BIGNUM* const pa_sgn_rp[8],
const BIGNUM* const pa_inv_eph_skey[8],
const BIGNUM* const pa_reg_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_nistp521_ecdsa_sign_ssl_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_msg[8],
const BIGNUM* const pa_eph_skey[8],
const BIGNUM* const pa_reg_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_nistp521_ecdsa_verify_ssl_mb8(const ECDSA_SIG* const pa_sig[8],
const int8u* const pa_msg[8],
const BIGNUM* const pa_pubx[8],
const BIGNUM* const pa_puby[8],
const BIGNUM* const pa_pubz[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
#endif /* EC_NISTP521_H */

@ -0,0 +1,154 @@
/*******************************************************************************
* Copyright (C) 2021 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef EC_SM2_H
#define EC_SM2_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
#ifndef BN_OPENSSL_DISABLE
#include <openssl/bn.h>
#include <openssl/ec.h>
#endif // BN_OPENSSL_DISABLE
/*
// Computes public key
// pa_pubx[] array of pointers to the public keys X-coordinates
// pa_puby[] array of pointers to the public keys Y-coordinates
// pa_pubz[] array of pointers to the public keys Z-coordinates (or NULL, if affine coordinate requested)
// pa_skey[] array of pointers to the private keys
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_sm2_ecpublic_key_mb8(int64u* pa_pubx[8],
int64u* pa_puby[8],
int64u* pa_pubz[8],
const int64u* const pa_skey[8],
int8u* pBuffer);
/*
// Computes shared key
// pa_shared_key[] array of pointers to the shared keys
// pa_skey[] array of pointers to the own (ephemeral) private keys
// pa_pubx[] array of pointers to the party's public keys X-coordinates
// pa_puby[] array of pointers to the party's public keys Y-coordinates
// pa_pubz[] array of pointers to the party's public keys Z-coordinates (or NULL, if affine coordinate requested)
// pBuffer pointer to the scratch buffer
//
// Note:
// This function implements ECDHE over SM2 curve according to IEEE 1363-2000 standard.
*/
EXTERN_C mbx_status mbx_sm2_ecdh_mb8(int8u* pa_shared_key[8],
const int64u* const pa_skey[8],
const int64u* const pa_pubx[8],
const int64u* const pa_puby[8],
const int64u* const pa_pubz[8],
int8u* pBuffer);
/*
// Computes SM2 ECDSA signature
// pa_sign_r[] array of pointers to the computed r-components of the signatures
// pa_sign_s[] array of pointers to the computed s-components of the signatures
// pa_user_id[] array of pointers to the users ID
// user_id_len[] array of users ID length
// pa_msg[] array of pointers to the messages are being signed
// msg_len[] array of messages length
// pa_eph_skey[] array of pointers to the signer's ephemeral private keys
// pa_reg_skey[] array of pointers to the signer's regular private keys
// pa_pubx[] array of pointers to the party's public keys X-coordinates
// pa_puby[] array of pointers to the party's public keys Y-coordinates
// pa_pubz[] array of pointers to the party's public keys Z-coordinates (or NULL, if affine coordinate requested)
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_sm2_ecdsa_sign_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_user_id[8],
const int user_id_len[8],
const int8u* const pa_msg[8],
const int msg_len[8],
const int64u* const pa_eph_skey[8],
const int64u* const pa_reg_skey[8],
const int64u* const pa_pubx[8],
const int64u* const pa_puby[8],
const int64u* const pa_pubz[8],
int8u* pBuffer);
/*
// Verifies SM2 ECDSA signature
// pa_sign_r[] array of pointers to the computed r-components of the signatures
// pa_sign_s[] array of pointers to the computed s-components of the signatures
// pa_user_id[] array of pointers to the users ID
// user_id_len[] array of users ID length
// pa_msg[] array of pointers to the messages are being signed
// msg_len[] array of messages length
// pa_pubx[] array of pointers to the signer's public keys X-coordinates
// pa_puby[] array of pointers to the signer's public keys Y-coordinates
// pa_pubz[] array of pointers to the signer's public keys Z-coordinates (or NULL, if affine coordinate requested)
// pBuffer pointer to the scratch buffer
*/
EXTERN_C mbx_status mbx_sm2_ecdsa_verify_mb8(const int8u* const pa_sign_r[8],
const int8u* const pa_sign_s[8],
const int8u* const pa_user_id[8],
const int user_id_len[8],
const int8u* const pa_msg[8],
const int msg_len[8],
const int64u* const pa_pubx[8],
const int64u* const pa_puby[8],
const int64u* const pa_pubz[8],
int8u* pBuffer);
/*
// OpenSSL's specific similar APIs
*/
#ifndef BN_OPENSSL_DISABLE
EXTERN_C mbx_status mbx_sm2_ecpublic_key_ssl_mb8(BIGNUM* pa_pubx[8],
BIGNUM* pa_puby[8],
BIGNUM* pa_pubz[8],
const BIGNUM* const pa_skey[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_sm2_ecdh_ssl_mb8(int8u* pa_shared_key[8],
const BIGNUM* const pa_skey[8],
const BIGNUM* const pa_pubx[8],
const BIGNUM* const pa_puby[8],
const BIGNUM* const pa_pubz[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_sm2_ecdsa_sign_ssl_mb8(int8u* pa_sign_r[8],
int8u* pa_sign_s[8],
const int8u* const pa_user_id[8],
const int user_id_len[8],
const int8u* const pa_msg[8],
const int msg_len[8],
const BIGNUM* const pa_eph_skey[8],
const BIGNUM* const pa_reg_skey[8],
const BIGNUM* const pa_pubx[8],
const BIGNUM* const pa_puby[8],
const BIGNUM* const pa_pubz[8],
int8u* pBuffer);
EXTERN_C mbx_status mbx_sm2_ecdsa_verify_ssl_mb8(const ECDSA_SIG* const pa_sig[8],
const int8u* const pa_user_id[8],
const int user_id_len[8],
const int8u* const pa_msg[8],
const int msg_len[8],
const BIGNUM* const pa_pubx[8],
const BIGNUM* const pa_puby[8],
const BIGNUM* const pa_pubz[8],
int8u* pBuffer);
#endif // BN_OPENSSL_DISABLE
#endif /* EC_SM2_H */

@ -0,0 +1,66 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef ED25519_H
#define ED25519_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
typedef int8u ed25519_sign_component[32];
typedef ed25519_sign_component ed25519_sign[2];
typedef int8u ed25519_public_key[32];
typedef int8u ed25519_private_key[32];
/*
// Computes ed25519 public key
// pa_public_key[] array of pointers to the public keys
// pa_private_key[] array of pointers to the public keys Y-coordinates
*/
EXTERN_C mbx_status mbx_ed25519_public_key_mb8(ed25519_public_key* pa_public_key[8],
const ed25519_private_key* const pa_private_key[8]);
/*
// Computes ed25519 signature
// pa_sign_r[] array of pointers to the computed r-components of the signatures
// pa_sign_s[] array of pointers to the computed s-components of the signatures
// pa_msg[] array of pointers to the messages are being signed
// msgLen[] lengths of the messages are being signed
// pa_private_key[] array of pointers to the signer's private keys
// pa_public_key[] array of pointers to the signer's public keys
*/
EXTERN_C mbx_status mbx_ed25519_sign_mb8(ed25519_sign_component* pa_sign_r[8],
ed25519_sign_component* pa_sign_s[8],
const int8u* const pa_msg[8], const int32u msgLen[8],
const ed25519_private_key* const pa_private_key[8],
const ed25519_public_key* const pa_public_key[8]);
/*
// Verifies ed25519 signature
// pa_sign_r[] array of pointers to the r-components of the verified signatures
// pa_sign_s[] array of pointers to the s-components of the verified signatures
// pa_msg[] array of pointers to the signed messages
// msgLen[] array of signed messages lengths
// pa_public_key[] array of pointers to the signer's public keys
*/
EXTERN_C mbx_status mbx_ed25519_verify_mb8(const ed25519_sign_component* const pa_sign_r[8],
const ed25519_sign_component* const pa_sign_s[8],
const int8u* const pa_msg[8], const int32u msgLen[8],
const ed25519_public_key* const pa_public_key[8]);
#endif /* ED25519_H */

@ -0,0 +1,59 @@
/*******************************************************************************
* Copyright (C) 2021 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef EXP_H
#define EXP_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
/* size of scratch buffer */
EXTERN_C int mbx_exp_BufferSize(int modulusBits);
/* exp operation */
EXTERN_C mbx_status mbx_exp1024_mb8(int64u* const out_pa[8],
const int64u* const base_pa[8],
const int64u* const exp_pa[8], int exp_bits,
const int64u* const mod_pa[8], int mod_bits,
int8u* pBuffer, int bufferLen);
EXTERN_C mbx_status mbx_exp2048_mb8(int64u* const out_pa[8],
const int64u* const base_pa[8],
const int64u* const exp_pa[8], int exp_bits,
const int64u* const mod_pa[8], int mod_bits,
int8u* pBuffer, int bufferLen);
EXTERN_C mbx_status mbx_exp3072_mb8(int64u* const out_pa[8],
const int64u* const base_pa[8],
const int64u* const exp_pa[8], int exp_bits,
const int64u* const mod_pa[8], int mod_bits,
int8u* pBuffer, int bufferLen);
EXTERN_C mbx_status mbx_exp4096_mb8(int64u* const out_pa[8],
const int64u* const base_pa[8],
const int64u* const exp_pa[8], int exp_bits,
const int64u* const mod_pa[8], int mod_bits,
int8u* pBuffer, int bufferLen);
EXTERN_C mbx_status mbx_exp_mb8(int64u* const out_pa[8],
const int64u* const base_pa[8],
const int64u* const exp_pa[8], int exp_bits,
const int64u* const mod_pa[8], int mod_bits,
int8u* pBuffer, int bufferLen);
#endif /* EXP_H */

@ -0,0 +1,104 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef RSA_H
#define RSA_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
#ifndef BN_OPENSSL_DISABLE
#include <openssl/bn.h>
EXTERN_C mbx_status mbx_rsa_public_ssl_mb8(const int8u* const from_pa[8],
int8u* const to_pa[8],
const BIGNUM* const e_pa[8],
const BIGNUM* const n_pa[8],
int expected_rsa_bitsize);
EXTERN_C mbx_status mbx_rsa_private_ssl_mb8(const int8u* const from_pa[8],
int8u* const to_pa[8],
const BIGNUM* const d_pa[8],
const BIGNUM* const n_pa[8],
int expected_rsa_bitsize);
EXTERN_C mbx_status mbx_rsa_private_crt_ssl_mb8(const int8u* const from_pa[8],
int8u* const to_pa[8],
const BIGNUM* const p_pa[8],
const BIGNUM* const q_pa[8],
const BIGNUM* const dp_pa[8],
const BIGNUM* const dq_pa[8],
const BIGNUM* const iq_pa[8],
int expected_rsa_bitsize);
#endif /* BN_OPENSSL_DISABLE */
/*
// rsa cp methods
*/
typedef struct _ifma_rsa_method mbx_RSA_Method;
/* rsa public key opertaion */
EXTERN_C const mbx_RSA_Method* mbx_RSA1K_pub65537_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA2K_pub65537_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA3K_pub65537_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA4K_pub65537_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA_pub65537_Method(int rsaBitsize);
/* rsa private key opertaion */
EXTERN_C const mbx_RSA_Method* mbx_RSA1K_private_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA2K_private_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA3K_private_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA4K_private_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA_private_Method(int rsaBitsize);
/* rsa private key opertaion (ctr) */
EXTERN_C const mbx_RSA_Method* mbx_RSA1K_private_crt_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA2K_private_crt_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA3K_private_crt_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA4K_private_crt_Method(void);
EXTERN_C const mbx_RSA_Method* mbx_RSA_private_crt_Method(int rsaBitsize);
EXTERN_C int mbx_RSA_Method_BufSize(const mbx_RSA_Method* m);
EXTERN_C mbx_status mbx_rsa_public_mb8(const int8u* const from_pa[8],
int8u* const to_pa[8],
const int64u* const n_pa[8],
int rsaBitlen,
const mbx_RSA_Method* m,
int8u* pBuffer);
EXTERN_C mbx_status mbx_rsa_private_mb8(const int8u* const from_pa[8],
int8u* const to_pa[8],
const int64u* const d_pa[8],
const int64u* const n_pa[8],
int rsaBitlen,
const mbx_RSA_Method* m,
int8u* pBuffer);
EXTERN_C mbx_status mbx_rsa_private_crt_mb8(const int8u* const from_pa[8],
int8u* const to_pa[8],
const int64u* const p_pa[8],
const int64u* const q_pa[8],
const int64u* const dp_pa[8],
const int64u* const dq_pa[8],
const int64u* const iq_pa[8],
int rsaBitlen,
const mbx_RSA_Method* m,
int8u* pBuffer);
#endif /* RSA_H */

@ -0,0 +1,60 @@
/*******************************************************************************
* Copyright (C) 2020 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef SM3_H
#define SM3_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
#define SM3_SIZE_IN_BITS (256) /* sm3 size in bits */
#define SM3_SIZE_IN_WORDS (SM3_SIZE_IN_BITS/(sizeof(int32u)*8)) /* sm3 hash size in words */
#define SM3_MSG_BLOCK_SIZE (64) /* messge block size */
#define SM3_NUM_BUFFERS (16) /* max number of buffers in sm3 multi-buffer */
/*
// sm3 context for mb16
*/
typedef int32u sm3_hash_mb[SM3_SIZE_IN_WORDS][SM3_NUM_BUFFERS]; /* sm3 hash value in multi-buffer format */
struct _sm3_context_mb16 {
int msg_buff_idx[SM3_NUM_BUFFERS]; /* buffer entry */
int64u msg_len[SM3_NUM_BUFFERS]; /* message length */
int8u msg_buffer[SM3_NUM_BUFFERS][SM3_MSG_BLOCK_SIZE]; /* buffer */
__ALIGN64
sm3_hash_mb msg_hash; /* intermediate hash */
};
typedef struct _sm3_context_mb16 SM3_CTX_mb16;
EXTERN_C mbx_status16 mbx_sm3_init_mb16(SM3_CTX_mb16* p_state);
EXTERN_C mbx_status16 mbx_sm3_update_mb16(const int8u* const msg_pa[16],
int len[16],
SM3_CTX_mb16* p_state);
EXTERN_C mbx_status16 mbx_sm3_final_mb16(int8u* hash_pa[16],
SM3_CTX_mb16* p_state);
EXTERN_C mbx_status16 mbx_sm3_msg_digest_mb16(const int8u* const msg_pa[16],
int len[16],
int8u* hash_pa[16]);
#endif /* SM3_H */

@ -0,0 +1,59 @@
/*******************************************************************************
* Copyright (C) 2021 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef SM4_H
#define SM4_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
#define SM4_LINES (16) /* Max number of buffers */
#define SM4_BLOCK_SIZE (16) /* SM4 data block size (bytes) */
#define SM4_KEY_SIZE (16) /* SM4 key size (bytes) */
#define SM4_ROUNDS (32) /* SM4 number of rounds */
#define SM4_XTS_MAX_SIZE ((1 << 20) * SM4_BLOCK_SIZE) /* SM4 max buffer size (bytes) */
typedef int8u sm4_key[SM4_KEY_SIZE];
typedef int8u sm4_xts_key[SM4_KEY_SIZE*2];
typedef int32u mbx_sm4_key_schedule[SM4_ROUNDS][SM4_LINES];
EXTERN_C mbx_status16 mbx_sm4_set_key_mb16(mbx_sm4_key_schedule* key_sched, const sm4_key* pa_key[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_xts_set_keys_mb16(mbx_sm4_key_schedule* key_sched1, mbx_sm4_key_schedule* key_sched2, const sm4_xts_key* pa_key[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_encrypt_ecb_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched);
EXTERN_C mbx_status16 mbx_sm4_decrypt_ecb_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched);
EXTERN_C mbx_status16 mbx_sm4_encrypt_cbc_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched, const int8u* pa_iv[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_decrypt_cbc_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched, const int8u* pa_iv[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_encrypt_ctr128_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched, int8u* pa_ctr[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_decrypt_ctr128_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched, int8u* pa_ctr[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_encrypt_ofb_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched, int8u* pa_iv[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_decrypt_ofb_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched, int8u* pa_iv[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_encrypt_cfb128_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched, const int8u* pa_iv[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_decrypt_cfb128_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES], const mbx_sm4_key_schedule* key_sched, const int8u* pa_iv[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_xts_encrypt_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES],
const mbx_sm4_key_schedule* key_sched1, const mbx_sm4_key_schedule* key_sched2,
const int8u* pa_tweak[SM4_LINES]);
EXTERN_C mbx_status16 mbx_sm4_xts_decrypt_mb16(int8u* pa_out[SM4_LINES], const int8u* pa_inp[SM4_LINES], const int len[SM4_LINES],
const mbx_sm4_key_schedule* key_sched1, const mbx_sm4_key_schedule* key_sched2,
const int8u* pa_tweak[SM4_LINES]);
#endif /* SM4_H */

@ -0,0 +1,143 @@
/*******************************************************************************
* Copyright (C) 2022 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef SM4_CCM_H
#define SM4_CCM_H
#include <crypto_mb/sm4.h>
#include <immintrin.h>
#define MIN_CCM_IV_LENGTH 7
#define MAX_CCM_IV_LENGTH 13
#define MIN_CCM_TAG_LENGTH 4
#define MAX_CCM_TAG_LENGTH 16
#define MAX_CCM_AAD_LENGTH 65280 /* 2^16 - 2^8 */
#define SM4_CCM_CONTEXT_BUFFER_SLOT_TYPE int64u
#define SM4_CCM_CONTEXT_BUFFER_SLOT_SIZE_BYTES (sizeof(SM4_CCM_CONTEXT_BUFFER_SLOT_TYPE))
#define SM4_CCM_CONTEXT_BUFFER_SIZE_BYTES ((SM4_LINES * SM4_BLOCK_SIZE) / SM4_CCM_CONTEXT_BUFFER_SLOT_SIZE_BYTES)
/*
// Enum to control call sequence
//
// Valid call sequence:
//
// 1) mbx_sm4_ccm_init_mb16
// 2) mbx_sm4_ccm_update_aad_mb16 – optional
// 3) mbx_sm4_ccm_encrypt_mb16/mbx_sm4_ccm_decrypt_mb16 – optional, can be called as many times as necessary
// 4) mbx_sm4_ccm_get_tag_mb16
//
// Call sequence restrictions:
//
// * mbx_sm4_ccm_get_tag_mb16 can be called after mbx_sm4_ccm_init_mb16 has been called.
// * functions at steps 2-3 can be called as many times as needed to process payload while this functions processes buffers
// with full blocks (Blocks of 16 bytes size) or empty buffers and length of processed payload is not overflowed.
// * if functions at steps 2-3 called to process a partial block, it can’t be called again.
// * if mbx_sm4_ccm_encrypt_mb16 or mbx_sm4_ccm_decrypt_mb16 was called, mbx_sm4_ccm_update_aad_mb16 can’t be called.
// * if mbx_sm4_ccm_encrypt_mb16 was called, mbx_sm4_ccm_decrypt_mb16 can’t be called.
// * if mbx_sm4_ccm_decrypt_mb16 was called, mbx_sm4_ccm_encrypt_mb16 can’t be called.
*/
typedef enum { sm4_ccm_update_aad = 0xF0A1, sm4_ccm_start_encdec, sm4_ccm_enc, sm4_ccm_dec, sm4_ccm_get_tag } sm4_ccm_state;
struct _sm4_ccm_context_mb16 {
int64u msg_len[SM4_LINES]; /* Message length (in bytes) of all lines */
int64u total_processed_len[SM4_LINES]; /* Total processed plaintext/ciphertext length (in bytes) of all lines */
int tag_len[SM4_LINES]; /* Tag length (in bytes) of all lines */
int iv_len[SM4_LINES]; /* Total IV length (in bytes) of all lines */
__m128i ctr0[SM4_LINES]; /* CTR0 content */
__m128i ctr[SM4_LINES]; /* CTR content */
__m128i hash[SM4_LINES]; /* hash value accumulator for AAD and TXT processing */
mbx_sm4_key_schedule key_sched; /* SM4 key schedule */
sm4_ccm_state state; /* call sequence state */
};
typedef struct _sm4_ccm_context_mb16 SM4_CCM_CTX_mb16;
/*
* Initializes SM4-CCM context.
*
* @param[in] pa_key Array of key pointers
* @param[in] pa_iv Array of IV pointers
* @param[in] iv_len Array of IV lengths
* @param[in] tag_len Array of authentication tag lengths
* @param[in] msg_len Array of total message lengths
* @param[in/out] p_context SM4-CCM context
*
* @return Bitmask of operation status
*/
EXTERN_C mbx_status16 mbx_sm4_ccm_init_mb16(const sm4_key *const pa_key[SM4_LINES],
const int8u *const pa_iv[SM4_LINES],
const int iv_len[SM4_LINES],
const int tag_len[SM4_LINES],
const int64u msg_len[SM4_LINES],
SM4_CCM_CTX_mb16 *p_context);
/*
* Digests additional authenticated data (AAD) for 16 buffers
*
* @param[in] pa_aad Array of AAD pointers
* @param[in] aad_len Array of AAD lengths
* @param[in/out] p_context SM4-CCM context
*
* @return Bitmask of operation status
*/
EXTERN_C mbx_status16 mbx_sm4_ccm_update_aad_mb16(const int8u *const pa_aad[SM4_LINES],
const int aad_len[SM4_LINES],
SM4_CCM_CTX_mb16 *p_context);
/*
* Retrieves authentication tag for 16 buffers
*
* @param[out] pa_tag Array of authentication tag pointers
* @param[in] tag_len Array of tag lengths
* @param[in/out] p_context SM4-CCM context
*
* @return Bitmask of operation status
*/
EXTERN_C mbx_status16 mbx_sm4_ccm_get_tag_mb16(int8u *pa_tag[SM4_LINES],
const int tag_len[SM4_LINES],
SM4_CCM_CTX_mb16 *p_context);
/*
* Encrypts 16 buffers with SM4-CCM.
*
* @param[out] pa_out Array of ciphertext pointers
* @param[in] pa_in Array of plaintext pointers
* @param[in] in_len Array of plaintext lengths
* @param[in/out] p_context SM4-CCM context
*
* @return Bitmask of operation status
*/
EXTERN_C mbx_status16 mbx_sm4_ccm_encrypt_mb16(int8u *pa_out[SM4_LINES],
const int8u *const pa_in[SM4_LINES],
const int in_len[SM4_LINES],
SM4_CCM_CTX_mb16 *p_context);
/*
* Decrypts 16 buffers with SM4-CCM.
*
* @param[out] pa_out Array of plaintext pointers
* @param[in] pa_in Array of ciphertext pointers
* @param[in] in_len Array of ciphertext lengths
* @param[in/out] p_context SM4-CCM context
*
* @return Bitmask of operation status
*/
EXTERN_C mbx_status16 mbx_sm4_ccm_decrypt_mb16(int8u *pa_out[SM4_LINES],
const int8u *const pa_in[SM4_LINES],
const int in_len[SM4_LINES],
SM4_CCM_CTX_mb16 *p_context);
#endif /* SM4_CCM_H */

@ -0,0 +1,113 @@
/*******************************************************************************
* Copyright (C) 2022 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef SM4_GCM_H
#define SM4_GCM_H
#include <crypto_mb/sm4.h>
#include <immintrin.h>
#define SM4_GCM_CONTEXT_BUFFER_SLOT_TYPE int64u
#define SM4_GCM_CONTEXT_BUFFER_SLOT_SIZE_BYTES (sizeof(SM4_GCM_CONTEXT_BUFFER_SLOT_TYPE))
#define SM4_GCM_CONTEXT_BUFFER_SIZE_BYTES ((SM4_LINES * SM4_BLOCK_SIZE) / SM4_GCM_CONTEXT_BUFFER_SLOT_SIZE_BYTES)
#define SM4_GCM_HASHKEY_PWR_NUM 8
/*
// Enum to control call sequence
//
// Valid call sequence:
//
// 1) mbx_sm4_gcm_init_mb16
// 2) mbx_sm4_gcm_update_iv_mb16 – optional, can be called as many times as necessary
// 3) mbx_sm4_gcm_update_aad_mb16 – optional, can be called as many times as necessary
// 4) mbx_sm4_gcm_encrypt_mb16/mbx_sm4_gcm_decrypt_mb16 – optional, can be called as many times as necessary
// 5) mbx_sm4_gcm_get_tag_mb16
//
// Call sequence restrictions:
//
// * mbx_sm4_gcm_get_tag_mb16 can be called after IV is fully processed.
// IV is fully processed if buffer with partial block (Block of less than 16 bytes size) was processed or if mbx_sm4_gcm_update_aad_mb16 was called
// * functions at steps 2-4 can be called as many times as needed to process payload while this functions processes buffers
// with full blocks (Blocks of 16 bytes size) or empty buffers and length of processed payload is not overflowed.
// * if functions at steps 2-4 called to process a partial block, it can’t be called again.
// * if mbx_sm4_gcm_update_aad_mb16 was called, mbx_sm4_gcm_update_iv_mb16 can’t be called.
// * if mbx_sm4_gcm_encrypt_mb16 or mbx_sm4_gcm_decrypt_mb16 was called, mbx_sm4_gcm_update_aad_mb16 and mbx_sm4_gcm_update_iv_mb16 can’t be called.
// * if mbx_sm4_gcm_encrypt_mb16 was called, mbx_sm4_gcm_decrypt_mb16 can’t be called.
// * if mbx_sm4_gcm_decrypt_mb16 was called, mbx_sm4_gcm_encrypt_mb16 can’t be called.
*/
typedef enum { sm4_gcm_update_iv = 0xF0A1, sm4_gcm_update_aad, sm4_gcm_start_encdec, sm4_gcm_enc, sm4_gcm_dec, sm4_gcm_get_tag } sm4_gcm_state;
struct _sm4_gcm_context_mb16 {
__m128i hashkey[SM4_GCM_HASHKEY_PWR_NUM][SM4_LINES]; /* Set of hashkeys for ghash computation */
__m128i j0[SM4_LINES]; /* J0 value accumulator for IV processing */
__m128i ghash[SM4_LINES]; /* ghash value accumulator for AAD and TXT processing */
__m128i ctr[SM4_LINES]; /* counter for gctr encryption */
/*
// buffer to store IV, AAD and TXT length in bytes
//
// this buffer is used to store IV length to compute J0 block
// and reused to store AAD and TXT length to compute ghash
//
// length is stored as follow:
//
// J0 computation:
// [64 bits with IV len (buffer 0)]
// [64 bits with IV len (buffer 1)]
// ..
// [64 bits with IV len (buffer SM4_LINES-1)]
//
// Only half of buffer is used for J0 computation
//
// ghash computation:
// [64 bits with AAD len (buffer 0)][64 bits with TXT len (buffer 0)]
// [64 bits with AAD len (buffer 1)][64 bits with TXT len (buffer 1)]
// ..
// [64 bits with AAD len (buffer SM4_LINES-1)][64 bits with TXT len (buffer SM4_LINES-1)]
//
*/
int64u len[SM4_LINES * 2];
mbx_sm4_key_schedule key_sched; /* SM4 key schedule */
sm4_gcm_state state; /* call sequence state */
};
typedef struct _sm4_gcm_context_mb16 SM4_GCM_CTX_mb16;
EXTERN_C mbx_status16 mbx_sm4_gcm_init_mb16(const sm4_key *const pa_key[SM4_LINES],
const int8u *const pa_iv[SM4_LINES],
const int iv_len[SM4_LINES],
SM4_GCM_CTX_mb16 *p_context);
EXTERN_C mbx_status16 mbx_sm4_gcm_update_iv_mb16(const int8u *const pa_iv[SM4_LINES], const int iv_len[SM4_LINES], SM4_GCM_CTX_mb16 *p_state);
EXTERN_C mbx_status16 mbx_sm4_gcm_update_aad_mb16(const int8u *const pa_aad[SM4_LINES], const int aad_len[SM4_LINES], SM4_GCM_CTX_mb16 *p_state);
EXTERN_C mbx_status16 mbx_sm4_gcm_encrypt_mb16(int8u *pa_out[SM4_LINES],
const int8u *const pa_in[SM4_LINES],
const int in_len[SM4_LINES],
SM4_GCM_CTX_mb16 *p_context);
EXTERN_C mbx_status16 mbx_sm4_gcm_decrypt_mb16(int8u *pa_out[SM4_LINES],
const int8u *const pa_in[SM4_LINES],
const int in_len[SM4_LINES],
SM4_GCM_CTX_mb16 *p_context);
EXTERN_C mbx_status16 mbx_sm4_gcm_get_tag_mb16(int8u *pa_tag[SM4_LINES], const int tag_len[SM4_LINES], SM4_GCM_CTX_mb16 *p_context);
#endif /* SM4_GCM_H */

@ -0,0 +1,117 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef STATUS_H
#define STATUS_H
#include <crypto_mb/defs.h>
typedef int32u mbx_status;
typedef int64u mbx_status16;
// error statuses and manipulators
#define MBX_STATUS_OK (0)
#define MBX_STATUS_MISMATCH_PARAM_ERR (1)
#define MBX_STATUS_NULL_PARAM_ERR (2)
#define MBX_STATUS_LOW_ORDER_ERR (4)
#define MBX_STATUS_SIGNATURE_ERR (8)
__INLINE mbx_status MBX_SET_STS(mbx_status status, int numb, mbx_status sttVal)
{
numb &= 7; /* 0 <= numb < 8 */
status &= (mbx_status)(~(0xF << (numb*4)));
return status |= (sttVal & 0xF) << (numb*4);
}
__INLINE mbx_status MBX_GET_STS(mbx_status status, int numb)
{
return (status >>(numb*4)) & 0xF;
}
__INLINE mbx_status MBX_SET_STS_ALL(mbx_status stsVal)
{
return (stsVal<<4*7) | (stsVal<<4*6) | (stsVal<<4*5) | (stsVal<<4*4) | (stsVal<<4*3) | (stsVal<<4*2) | (stsVal<<4*1) | stsVal;
}
__INLINE mbx_status MBX_SET_STS_BY_MASK(mbx_status status, int8u mask, mbx_status sttVal)
{
int numb;
for(numb=0; numb<8; numb++) {
mbx_status buf_stt = (0 - ((mask>>numb) &1)) & sttVal;
status = MBX_SET_STS(status, numb, buf_stt);
}
return status;
}
__INLINE int MBX_IS_ANY_OK_STS(mbx_status status)
{
int ret = MBX_STATUS_OK==MBX_GET_STS(status, 0)
|| MBX_STATUS_OK==MBX_GET_STS(status, 1)
|| MBX_STATUS_OK==MBX_GET_STS(status, 2)
|| MBX_STATUS_OK==MBX_GET_STS(status, 3)
|| MBX_STATUS_OK==MBX_GET_STS(status, 4)
|| MBX_STATUS_OK==MBX_GET_STS(status, 5)
|| MBX_STATUS_OK==MBX_GET_STS(status, 6)
|| MBX_STATUS_OK==MBX_GET_STS(status, 7);
return ret;
}
/*
// Helpers for 64-bit status mbx_status16
*/
/* Accessors for the low and high part of 64-bit status */
__INLINE mbx_status MBX_GET_HIGH_PART_STS16(mbx_status16 status16)
{
return ((mbx_status)(((mbx_status16)(status16) >> 32) & 0xFFFFFFFF));
}
__INLINE mbx_status MBX_GET_LOW_PART_STS16(mbx_status16 status16)
{
return ((mbx_status)(status16));
}
__INLINE mbx_status16 MBX_SET_STS16_ALL(mbx_status16 stsVal)
{
return (stsVal<<4*15) | (stsVal<<4*14) | (stsVal<<4*13) | (stsVal<<4*12) | (stsVal<<4*11) | (stsVal<<4*10) | (stsVal<<4*9) | (stsVal<<4*8) | \
(stsVal<<4*7) | (stsVal<<4*6) | (stsVal<<4*5) | (stsVal<<4*4) | (stsVal<<4*3) | (stsVal<<4*2) | (stsVal<<4*1) | stsVal;
}
__INLINE mbx_status16 MBX_SET_STS16(mbx_status16 status, int numb, mbx_status16 sttVal)
{
numb &= 15; /* 0 <= numb < 16 */
status &= (mbx_status16)(~((int64u)0xF << (numb*4)));
return status |= (sttVal & 0xF) << (numb*4);
}
__INLINE mbx_status16 MBX_SET_STS16_BY_MASK(mbx_status16 status, int16u mask, mbx_status16 sttVal)
{
int numb;
for (numb = 0; numb < 16; numb++) {
mbx_status16 buf_stt = (0 - ((mask >> numb) & 1)) & sttVal;
status = MBX_SET_STS16(status, numb, buf_stt);
}
return status;
}
__INLINE int MBX_IS_ANY_OK_STS16(mbx_status16 status)
{
return MBX_IS_ANY_OK_STS(MBX_GET_HIGH_PART_STS16(status)) || \
MBX_IS_ANY_OK_STS(MBX_GET_LOW_PART_STS16(status));
}
#endif /* STATUS_H */

@ -0,0 +1,45 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef VERSION_H
#define VERSION_H
#include <crypto_mb/defs.h>
/* crypto_mb name & version */
#define MBX_LIB_NAME() "crypto_mb"
#define MBX_VER_MAJOR 1
#define MBX_VER_MINOR 0
#define MBX_VER_REV 9
/* major interface version */
#define MBX_INTERFACE_VERSION_MAJOR 11
/* minor interface version */
#define MBX_INTERFACE_VERSION_MINOR 9
typedef struct {
int major; /* e.g. 1 */
int minor; /* e.g. 2 */
int revision; /* e.g. 3 */
const char* name; /* e,g. "crypto_mb" */
const char* buildDate; /* e.g. "Oct 28 2019" */
const char* strVersion;/* e.g. "crypto_mb (ver 1.2.3 Oct 28 2019)" */
} mbxVersion;
EXTERN_C const mbxVersion* mbx_getversion(void);
#endif /* VERSION_H */

@ -0,0 +1,31 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef X25519_H
#define X25519_H
#include <crypto_mb/defs.h>
#include <crypto_mb/status.h>
EXTERN_C mbx_status mbx_x25519_public_key_mb8(int8u* const pa_public_key[8],
const int8u* const pa_private_key[8]);
EXTERN_C mbx_status mbx_x25519_mb8(int8u* const pa_shared_key[8],
const int8u* const pa_private_key[8],
const int8u* const pa_public_key[8]);
#endif /* X25519_H */

File diff suppressed because it is too large Load Diff

@ -0,0 +1,860 @@
/*******************************************************************************
* Copyright (C) 2012 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*
//
// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
//
// Purpose: Basic Types and Macro Definitions
//
*/
#ifndef IPPBASE_H__
#define IPPBASE_H__
#ifdef __cplusplus
extern "C" {
#endif
#if defined (_WIN64)
#define INTEL_PLATFORM "intel64/"
#elif defined (_WIN32)
#define INTEL_PLATFORM "ia32/"
#endif
#if !defined( IPPAPI )
/* Specify explicit calling convention for public functions */
#if defined( IPP_W32DLL ) && (defined( _WIN32 ) || defined( _WIN64 ))
#if defined( _MSC_VER ) || defined( __ICL )
#define IPPAPI( type,name,arg ) \
__declspec(dllimport) type IPP_CALL name arg;
#else
#define IPPAPI( type,name,arg ) type IPP_CALL name arg;
#endif
#else
#define IPPAPI( type,name,arg ) type IPP_CALL name arg;
#endif
#endif
/* icc 2021 supports short float data type, icx supports _Float16 data type */
#define _FLOAT_16 2
#define _SHORT_FLOAT 1
#define _NO_FLOAT_16 0
#if defined(__INTEL_LLVM_COMPILER) && defined(__AVX512FP16__)
# define COMPILER_SUPPORT_SHORT_FLOAT _FLOAT_16
#else
# if defined(__INTEL_COMPILER)
# if(__INTEL_COMPILER >= 2021)
# define COMPILER_SUPPORT_SHORT_FLOAT _SHORT_FLOAT
# endif
# endif
#endif
#if !(defined(COMPILER_SUPPORT_SHORT_FLOAT))
# define COMPILER_SUPPORT_SHORT_FLOAT _NO_FLOAT_16
#endif
#if !defined(_NO_IPP_DEPRECATED)
#if (defined( __ICL ) || defined( __ECL ) || defined(_MSC_VER)) && !defined( _PCS ) && !defined( _PCS_GENSTUBS )
#if( __INTEL_COMPILER >= 1100 ) /* icl 11.0 supports additional comment */
#if( _MSC_VER >= 1400 )
#define IPP_DEPRECATED( comment ) __declspec( deprecated ( comment ))
#else
#pragma message ("your icl version supports additional comment for deprecated functions but it can't be displayed")
#pragma message ("because internal _MSC_VER macro variable setting requires compatibility with MSVC7.1")
#pragma message ("use -Qvc8 switch for icl command line to see these additional comments")
#define IPP_DEPRECATED( comment ) __declspec( deprecated )
#endif
#elif( _MSC_FULL_VER >= 140050727 )&&( !defined( __INTEL_COMPILER ))&&( !defined(__INTEL_LLVM_COMPILER)) /* VS2005 supports additional comment */
#define IPP_DEPRECATED( comment ) __declspec( deprecated ( comment ))
#elif( _MSC_VER <= 1200 )&&( !defined( __INTEL_COMPILER ))&&( !defined(__INTEL_LLVM_COMPILER)) /* VS 6 doesn't support deprecation */
#define IPP_DEPRECATED( comment )
#else
#define IPP_DEPRECATED( comment ) __declspec( deprecated )
#endif
#elif (defined(__ICC) || defined(__ECC) || defined( __GNUC__ )) && !defined( _PCS ) && !defined( _PCS_GENSTUBS )
#if defined( __GNUC__ )
#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405
#define IPP_DEPRECATED( message ) __attribute__(( deprecated( message )))
#else
#define IPP_DEPRECATED( message ) __attribute__(( deprecated ))
#endif
#else
#define IPP_DEPRECATED( comment ) __attribute__(( deprecated ))
#endif
#else
#define IPP_DEPRECATED( comment )
#endif
#else
#define IPP_DEPRECATED( comment )
#endif
#if (defined( __ICL ) || defined( __ECL ) || defined(_MSC_VER))
#if !defined( IPP_NO_DEFAULT_LIB )
#if ((defined( _IPP_SEQUENTIAL_DYNAMIC ) && !defined( _IPP_SEQUENTIAL_STATIC )) || \
(!defined( _IPP_SEQUENTIAL_DYNAMIC ) && defined( _IPP_SEQUENTIAL_STATIC )))
#elif (!defined( _IPP_SEQUENTIAL_DYNAMIC ) && !defined( _IPP_SEQUENTIAL_STATIC ))
#define IPP_NO_DEFAULT_LIB
#else
#error Illegal combination of _IPP_SEQUENTIAL_DYNAMIC/_IPP_SEQUENTIAL_STATIC, only one definition can be defined
#endif
#endif
#else
#define IPP_NO_DEFAULT_LIB
#if (defined(_IPP_SEQUENTIAL_DYNAMIC) || defined(_IPP_SEQUENTIAL_STATIC))
#pragma message ("defines _IPP_SEQUENTIAL_DYNAMIC/_IPP_SEQUENTIAL_STATIC do not have any effect in current configuration")
#endif
#endif
#if defined (_MSC_VER)
#define IPP_CDECL __cdecl
#elif (defined (__INTEL_COMPILER) || defined (__INTEL_LLVM_COMPILER) || defined (__GNUC__ ) || defined (__clang__)) && defined (_ARCH_IA32)
#define IPP_CDECL __attribute((cdecl))
#else
#define IPP_CDECL
#endif
#if defined( _WIN32 ) || defined( _WIN64 )
#define IPP_STDCALL __stdcall
#define IPP_CALL IPP_STDCALL
#define IPP_INT64 __int64
#define IPP_UINT64 unsigned __int64
#else
#define IPP_STDCALL
#define IPP_CALL IPP_CDECL
#define IPP_INT64 long long
#define IPP_UINT64 unsigned long long
#endif
#define IPP_COUNT_OF( obj ) (sizeof(obj)/sizeof(obj[0]))
#define IPP_PI ( 3.14159265358979323846 ) /* ANSI C does not support M_PI */
#define IPP_2PI ( 6.28318530717958647692 ) /* 2*pi */
#define IPP_PI2 ( 1.57079632679489661923 ) /* pi/2 */
#define IPP_PI4 ( 0.78539816339744830961 ) /* pi/4 */
#define IPP_PI180 ( 0.01745329251994329577 ) /* pi/180 */
#define IPP_RPI ( 0.31830988618379067154 ) /* 1/pi */
#define IPP_SQRT2 ( 1.41421356237309504880 ) /* sqrt(2) */
#define IPP_SQRT3 ( 1.73205080756887729353 ) /* sqrt(3) */
#define IPP_LN2 ( 0.69314718055994530942 ) /* ln(2) */
#define IPP_LN3 ( 1.09861228866810969139 ) /* ln(3) */
#define IPP_E ( 2.71828182845904523536 ) /* e */
#define IPP_RE ( 0.36787944117144232159 ) /* 1/e */
#define IPP_EPS23 ( 1.19209289e-07f )
#define IPP_EPS52 ( 2.2204460492503131e-016 )
#define IPP_MAX_8U ( 0xFF )
#define IPP_MAX_16U ( 0xFFFF )
#define IPP_MAX_32U ( 0xFFFFFFFF )
#define IPP_MIN_8U ( 0 )
#define IPP_MIN_16U ( 0 )
#define IPP_MIN_32U ( 0 )
#define IPP_MIN_8S (-128 )
#define IPP_MAX_8S ( 127 )
#define IPP_MIN_16S (-32768 )
#define IPP_MAX_16S ( 32767 )
#define IPP_MIN_32S (-2147483647 - 1 )
#define IPP_MAX_32S ( 2147483647 )
#define IPP_MIN_64U ( 0 )
#if defined( _WIN32 ) || defined ( _WIN64 )
#define IPP_MAX_64S ( 9223372036854775807i64 )
#define IPP_MIN_64S (-9223372036854775807i64 - 1 )
#define IPP_MAX_64U ( 0xffffffffffffffffL ) /* 18446744073709551615 */
#else
#define IPP_MAX_64S ( 9223372036854775807LL )
#define IPP_MIN_64S (-9223372036854775807LL - 1 )
#define IPP_MAX_64U ( 0xffffffffffffffffLL ) /* 18446744073709551615 */
#endif
#define IPP_MINABS_32F ( 1.175494351e-38f )
#define IPP_MAXABS_32F ( 3.402823466e+38f )
#define IPP_EPS_32F ( 1.192092890e-07f )
#define IPP_MINABS_64F ( 2.2250738585072014e-308 )
#define IPP_MAXABS_64F ( 1.7976931348623158e+308 )
#define IPP_EPS_64F ( 2.2204460492503131e-016 )
#define IPP_MAX( a, b ) ( ((a) > (b)) ? (a) : (b) )
#define IPP_MIN( a, b ) ( ((a) < (b)) ? (a) : (b) )
#define IPP_ABS( a ) ( ((a) < 0) ? (-(a)) : (a) )
typedef struct {
int major; /* e.g. 1 */
int minor; /* e.g. 2 */
int majorBuild; /* e.g. 3 */
unsigned int revision; /* e.g. 0xf6f5e5bc */
char targetCpu[4]; /* corresponding to Intel® processor */
const char* Name; /* e.g. "ippsw7" */
const char* Version; /* e.g. "v1.2 Beta" */
const char* BuildDate; /* e.g. "Jul 20 99" */
} IppLibraryVersion;
typedef unsigned char Ipp8u;
typedef unsigned short Ipp16u;
typedef unsigned int Ipp32u;
typedef signed char Ipp8s;
typedef signed short Ipp16s;
typedef signed int Ipp32s;
typedef float Ipp32f;
typedef IPP_INT64 Ipp64s;
typedef IPP_UINT64 Ipp64u;
typedef double Ipp64f;
#if (COMPILER_SUPPORT_SHORT_FLOAT == _FLOAT_16)
typedef _Float16 Ipp16f;
#endif
#if (COMPILER_SUPPORT_SHORT_FLOAT == _SHORT_FLOAT)
typedef short float Ipp16f;
#endif
#if (COMPILER_SUPPORT_SHORT_FLOAT == _NO_FLOAT_16)
typedef Ipp16s Ipp16f;
#endif
typedef struct {
Ipp8s re;
Ipp8s im;
} Ipp8sc;
typedef struct {
Ipp16s re;
Ipp16s im;
} Ipp16sc;
typedef struct {
Ipp16u re;
Ipp16u im;
} Ipp16uc;
typedef struct {
Ipp32s re;
Ipp32s im;
} Ipp32sc;
typedef struct {
Ipp32f re;
Ipp32f im;
} Ipp32fc;
typedef struct {
Ipp64s re;
Ipp64s im;
} Ipp64sc;
typedef struct {
Ipp64f re;
Ipp64f im;
} Ipp64fc;
typedef struct {
Ipp16f re;
Ipp16f im;
} Ipp16fc;
typedef enum {
ippUndef = -1,
ipp1u = 0,
ipp8u = 1,
ipp8uc = 2,
ipp8s = 3,
ipp8sc = 4,
ipp16u = 5,
ipp16uc = 6,
ipp16s = 7,
ipp16sc = 8,
ipp32u = 9,
ipp32uc = 10,
ipp32s = 11,
ipp32sc = 12,
ipp32f = 13,
ipp32fc = 14,
ipp64u = 15,
ipp64uc = 16,
ipp64s = 17,
ipp64sc = 18,
ipp64f = 19,
ipp64fc = 20,
ipp16fc = 21 /* This is necessary for TS */
} IppDataType;
typedef enum {
ippFalse = 0,
ippTrue = 1
} IppBool;
#ifdef __cplusplus
}
#endif
#endif /* IPPBASE_H__ */
#ifndef IPP_CPU_FEATURES__
#define IPP_CPU_FEATURES__
#define ippCPUID_MMX 0x00000001 /* Intel® architecture with MMX(TM) technology supported */
#define ippCPUID_SSE 0x00000002 /* Intel® Streaming SIMD Extensions (Intel® SSE) instruction set */
#define ippCPUID_SSE2 0x00000004 /* Intel® Streaming SIMD Extensions 2 (Intel® SSE2) instruction set */
#define ippCPUID_SSE3 0x00000008 /* Intel® Streaming SIMD Extensions 3 (Intel® SSE3) instruction set */
#define ippCPUID_SSSE3 0x00000010 /* Supplemental Streaming SIMD Extensions 3 (SSSE3) instruction set */
#define ippCPUID_MOVBE 0x00000020 /* Intel® instruction MOVBE */
#define ippCPUID_SSE41 0x00000040 /* Intel® Streaming SIMD Extensions 4.1 (Intel® SSE4.1) instruction set */
#define ippCPUID_SSE42 0x00000080 /* Intel® Streaming SIMD Extensions 4.2 (Intel® SSE4.2) instruction set */
#define ippCPUID_AVX 0x00000100 /* Intel® Advanced Vector Extensions instruction set */
#define ippAVX_ENABLEDBYOS 0x00000200 /* Intel® Advanced Vector Extensions instruction set is supported by OS */
#define ippCPUID_AES 0x00000400 /* */
#define ippCPUID_CLMUL 0x00000800 /* Intel® instruction PCLMULQDQ */
#define ippCPUID_ABR 0x00001000 /* Reserved */
#define ippCPUID_RDRAND 0x00002000 /* Intel® instruction RDRAND */
#define ippCPUID_F16C 0x00004000 /* Intel® instruction F16C */
#define ippCPUID_AVX2 0x00008000 /* Intel® Advanced Vector Extensions 2 */
#define ippCPUID_ADCOX 0x00010000 /* Intel® instructions ADOX/ADCX */
#define ippCPUID_RDSEED 0x00020000 /* Intel® instruction RDSEED */
#define ippCPUID_PREFETCHW 0x00040000 /* Intel® instruction PREFETCHW */
#define ippCPUID_SHA 0x00080000 /* Intel® Secure Hash Algorithm Extensions */
#define ippCPUID_AVX512F 0x00100000 /* Intel® Advanced Vector Extensions 512 Foundation instruction set */
#define ippCPUID_AVX512CD 0x00200000 /* Intel® Advanced Vector Extensions 512 CD instruction set */
#define ippCPUID_AVX512ER 0x00400000 /* Intel® Advanced Vector Extensions 512 ER instruction set */
#define ippCPUID_AVX512PF 0x00800000 /* Intel® Advanced Vector Extensions 512 PF instruction set */
#define ippCPUID_AVX512BW 0x01000000 /* Intel® Advanced Vector Extensions 512 BW instruction set */
#define ippCPUID_AVX512DQ 0x02000000 /* Intel® Advanced Vector Extensions 512 DQ instruction set */
#define ippCPUID_AVX512VL 0x04000000 /* Intel® Advanced Vector Extensions 512 VL instruction set */
#define ippCPUID_AVX512VBMI 0x08000000 /* Intel® Advanced Vector Extensions 512 Bit Manipulation instructions */
#define ippCPUID_MPX 0x10000000 /* Intel® Memory Protection Extensions */
#define ippCPUID_AVX512_4FMADDPS 0x20000000 /* Intel® Advanced Vector Extensions 512 DL floating-point single precision */
#define ippCPUID_AVX512_4VNNIW 0x40000000 /* Intel® Advanced Vector Extensions 512 DL enhanced word variable precision */
#define ippCPUID_KNC 0x80000000 /* Intel® Xeon® Phi(TM) Coprocessor */
#if defined( _WIN32 ) || defined ( _WIN64 )
#define INT64_SUFFIX(name) name##L
#else
#define INT64_SUFFIX(name) name##LL
#endif
#define ippCPUID_AVX512IFMA INT64_SUFFIX(0x100000000) /* Intel® Advanced Vector Extensions 512 IFMA (PMADD52) instruction set */
#define ippCPUID_NOCHECK INT64_SUFFIX(0x8000000000000000) /* Force ippSetCpuFeatures to set CPU features without check */
#define ippCPUID_GETINFO_A INT64_SUFFIX(0x616f666e69746567) /* Force ippGetCpuFeatures to work as cpuid instruction */
#define ippAVX512_ENABLEDBYOS INT64_SUFFIX(0x200000000) /* Intel® Advanced Vector Extensions 512 is supported by OS */
#define ippCPUID_AVX512GFNI INT64_SUFFIX(0x400000000) /* */
#define ippCPUID_AVX512VAES INT64_SUFFIX(0x800000000) /* */
#define ippCPUID_AVX512VCLMUL INT64_SUFFIX(0x1000000000) /* */
#define ippCPUID_AVX512VBMI2 INT64_SUFFIX(0x2000000000) /* Intel® Advanced Vector Extensions 512 Bit Manipulation instructions 2 */
#define ippCPUID_AVX512_FP16 INT64_SUFFIX(0x1000000000) /* Intel(R) Advanced Vector Extensions 512 16-bit floating point (FP16) instruction set */
#define ippCPUID_AVX2VAES INT64_SUFFIX(0x4000000000) /* Intel® Advanced Vector Extensions 256 Bit Vector AES instructions */
#define ippCPUID_AVX2VCLMUL INT64_SUFFIX(0x8000000000) /* Intel® instruction VPCLMULQDQ */
#endif /* IPP_CPU_FEATURES__ */
/* Macros are necessary to build custom Intel® IPP Cryptography static 1cpu library (enable specific features at compile-time) */
#if (!defined(_MERGED_BLD) && defined(IPPCP_CUSTOM_BUILD))
#ifndef IPP_CUSTOM_CPU_FEATURES__
#define IPP_CUSTOM_CPU_FEATURES__
#ifndef IPPCP_AES_ON
#define IPPCP_AES_ON (0)
#endif
#ifndef IPPCP_CLMUL_ON
#define IPPCP_CLMUL_ON (0)
#endif
#ifndef IPPCP_VAES_ON
#define IPPCP_VAES_ON (0)
#endif
#ifndef IPPCP_VCLMUL_ON
#define IPPCP_VCLMUL_ON (0)
#endif
#define IPP_CUSTOM_ENABLED_FEATURES (ippCPUID_AES*IPPCP_AES_ON | ippCPUID_CLMUL*IPPCP_CLMUL_ON | ippCPUID_AVX512VAES*IPPCP_VAES_ON | ippCPUID_AVX512VCLMUL*IPPCP_VCLMUL_ON)
#endif /* IPP_CUSTOM_CPU_FEATURES__ */
#endif /* !defined(_MERGED_BLD) && defined(IPPCP_CUSTOM_BUILD) */
#ifndef IPPSTATUS_H__
#define IPPSTATUS_H__
#ifdef __cplusplus
extern "C" {
#endif
typedef signed int IppStatus;
/* start of common with ippCrypto part - any changes MUST be done in both repositories - IPP & ippCrypto */
#define ippStsCpuNotSupportedErr -9999 /* The target CPU is not supported. */
#define ippStsUnknownStatusCodeErr -216 /* Unknown status code. */
#define ippStsLoadDynErr -221 /* Error when loading the dynamic library. */
#define ippStsLengthErr -15 /* Incorrect value for string length. */
#define ippStsNotSupportedModeErr -14 /* The requested mode is currently not supported. */
#define ippStsContextMatchErr -13 /* Context parameter does not match the operation. */
#define ippStsScaleRangeErr -12 /* Scale bounds are out of range. */
#define ippStsOutOfRangeErr -11 /* Argument is out of range, or point is outside the image. */
#define ippStsDivByZeroErr -10 /* An attempt to divide by zero. */
#define ippStsMemAllocErr -9 /* Memory allocated for the operation is not enough. */
#define ippStsNullPtrErr -8 /* Null pointer error. */
#define ippStsRangeErr -7 /* Incorrect values for bounds: the lower bound is greater than the upper bound. */
#define ippStsSizeErr -6 /* Incorrect value for data size. */
#define ippStsBadArgErr -5 /* Incorrect arg/param of the function. */
#define ippStsNoMemErr -4 /* Not enough memory for the operation. */
#define ippStsErr -2 /* Unknown/unspecified error */
/* no errors */
#define ippStsNoErr 0 /* No errors. */
/* warnings */
#define ippStsNoOperation 1 /* No operation has been executed. */
#define ippStsDivByZero 2 /* Zero value(s) for the divisor in the Div function. */
#define ippStsWaterfall 43 /* Cannot load required library, waterfall is used. */
#define ippStsFeaturesCombination 51 /* Wrong combination of features. */
/* end of common with ippCrypto part */
#ifdef __cplusplus
}
#endif
#endif /* IPPSTATUS_H__ */
/* ippCrypto specific statuses - any changes MUST be done in both repositories - IPP & ippCrypto */
#define ippStsInvalidPoint -1017 /* ippStsInvalidPoint ECC: Invalid point (out of EC).*/
#define ippStsQuadraticNonResidueErr -1016 /* SQRT operation on quadratic non-residue value. */
#define ippStsPointAtInfinity -1015 /* Point at infinity is detected. */
#define ippStsOFBSizeErr -1014 /* Incorrect value for crypto OFB block size. */
#define ippStsIncompleteContextErr -1013 /* Crypto: set up of context is not complete. */
#define ippStsCTRSizeErr -1012 /* Incorrect value for crypto CTR block size. */
#define ippStsEphemeralKeyErr -1011 /* ECC: Invalid ephemeral key. */
#define ippStsMessageErr -1010 /* ECC: Invalid message digest. */
#define ippStsShareKeyErr -1009 /* ECC: Invalid share key. */
#define ippStsInvalidPrivateKey -1008 /* ECC: Invalid private key. */
#define ippStsOutOfECErr -1007 /* ECC: Point out of EC. */
#define ippStsECCInvalidFlagErr -1006 /* ECC: Invalid Flag. */
#define ippStsUnderRunErr -1005 /* Error in data under run. */
#define ippStsPaddingErr -1004 /* Detected padding error indicates the possible data corruption. */
#define ippStsCFBSizeErr -1003 /* Incorrect value for crypto CFB block size. */
#define ippStsPaddingSchemeErr -1002 /* Invalid padding scheme. */
#define ippStsBadModulusErr -1001 /* Bad modulus caused a failure in module inversion. */
#define ippStsInsufficientEntropy 25 /* Generation of the prime/key failed due to insufficient entropy in the random seed and stimulus bit string. */
#define ippStsNotSupportedCpu 36 /* The CPU is not supported. */
#define ippStsMbWarning 53 /* Error(s) in statuses array. */
/* end of ippCrypto specific statuses - any changes MUST be done in both repositories - IPP & ippCrypto */
#if (!defined IPPCPDEFS_H__) || defined( _OWN_BLDPCS )
#define IPPCPDEFS_H__
#ifdef __cplusplus
extern "C" {
#endif
#if !defined( _OWN_BLDPCS )
typedef Ipp32u IppAlgId;
/*
// =========================================================
// Symmetric Ciphers
// =========================================================
*/
typedef enum {
ippPaddingNONE = 0, /*NONE = 0,*/ IppsCPPaddingNONE = 0,
ippPaddingPKCS7 = 1, /*PKCS7 = 1,*/ IppsCPPaddingPKCS7 = 1,
ippPaddingZEROS = 2, /*ZEROS = 2,*/ IppsCPPaddingZEROS = 2
} IppsPadding, IppsCPPadding;
typedef struct _cpDES IppsDESSpec;
typedef struct _cpRijndael128 IppsAESSpec;
typedef struct _cpRijndael128 IppsRijndael128Spec;
typedef struct _cpSMS4 IppsSMS4Spec;
/* TDES */
#define DES_BLOCKSIZE (64) /* cipher blocksize (bits) */
#define TDES_BLOCKSIZE DES_BLOCKSIZE
#define DES_KEYSIZE (64) /* cipher keysize (bits) */
#define TDES_KEYSIZE DES_KEYSIZE
/* AES */
#define IPP_AES_BLOCK_BITSIZE (128) /* cipher blocksizes (bits) */
/* Rijndael */
typedef enum {
ippRijndaelKey128 = 128, IppsRijndaelKey128 = 128, /* 128-bit key */
ippRijndaelKey192 = 192, IppsRijndaelKey192 = 192, /* 192-bit key */
ippRijndaelKey256 = 256, IppsRijndaelKey256 = 256 /* 256-bit key */
} IppsRijndaelKeyLength;
/* AES-CCM (authentication & confidence) */
typedef struct _cpAES_CCM IppsAES_CCMState;
/* AES-GCM (authentication & confidence) */
typedef struct _cpAES_GCM IppsAES_GCMState;
/* AES-XTS (confidence) */
typedef struct _cpAES_XTS IppsAES_XTSSpec;
/* SMS4-CCM (authentication & confidence) */
typedef struct _cpSMS4_CCM IppsSMS4_CCMState;
/*
// =========================================================
// ARCFOUR Stream Cipher
// =========================================================
*/
typedef struct _cpARCfour IppsARCFourState;
#define IPP_ARCFOUR_KEYMAX_SIZE (256) /* max key length (bytes) */
#define MAX_ARCFOUR_KEY_LEN IPP_ARCFOUR_KEYMAX_SIZE /* obsolete */
/*
// =========================================================
// One-Way Hash Functions
// =========================================================
*/
typedef enum {
ippHashAlg_Unknown,
ippHashAlg_SHA1,
ippHashAlg_SHA256,
ippHashAlg_SHA224,
ippHashAlg_SHA512,
ippHashAlg_SHA384,
ippHashAlg_MD5,
ippHashAlg_SM3,
ippHashAlg_SHA512_224,
ippHashAlg_SHA512_256,
ippHashAlg_MaxNo
} IppHashAlgId;
#define IPP_ALG_HASH_UNKNOWN (ippHashAlg_Unknown) /* unknown */
#define IPP_ALG_HASH_SHA1 (ippHashAlg_SHA1) /* SHA1 */
#define IPP_ALG_HASH_SHA256 (ippHashAlg_SHA256) /* SHA256 */
#define IPP_ALG_HASH_SHA224 (ippHashAlg_SHA224) /* SHA224 or SHA256/224 */
#define IPP_ALG_HASH_SHA512 (ippHashAlg_SHA512) /* SHA512 */
#define IPP_ALG_HASH_SHA384 (ippHashAlg_SHA384) /* SHA384 or SHA512/384 */
#define IPP_ALG_HASH_MD5 (ippHashAlg_MD5) /* MD5 */
#define IPP_ALG_HASH_SM3 (ippHashAlg_SM3) /* SM3 */
#define IPP_ALG_HASH_SHA512_224 (ippHashAlg_SHA512_224) /* SHA512/224 */
#define IPP_ALG_HASH_SHA512_256 (ippHashAlg_SHA512_256) /* SHA512/256 */
#define IPP_ALG_HASH_LIMIT (ippHashAlg_MaxNo) /* hash alg limiter*/
typedef struct _cpSHA1 IppsSHA1State;
typedef struct _cpSHA256 IppsSHA256State;
typedef struct _cpSHA256 IppsSHA224State;
typedef struct _cpSHA512 IppsSHA512State;
typedef struct _cpSHA512 IppsSHA384State;
typedef struct _cpMD5 IppsMD5State;
typedef struct _cpSM3 IppsSM3State;
typedef struct _cpHashCtx IppsHashState;
typedef struct _cpHashMethod_rmf IppsHashMethod;
typedef struct _cpHashCtx_rmf IppsHashState_rmf;
#define IPP_SHA1_DIGEST_BITSIZE 160 /* digest size (bits) */
#define IPP_SHA256_DIGEST_BITSIZE 256
#define IPP_SHA224_DIGEST_BITSIZE 224
#define IPP_SHA384_DIGEST_BITSIZE 384
#define IPP_SHA512_DIGEST_BITSIZE 512
#define IPP_MD5_DIGEST_BITSIZE 128
#define IPP_SM3_DIGEST_BITSIZE 256
#define IPP_SHA512_224_DIGEST_BITSIZE 224
#define IPP_SHA512_256_DIGEST_BITSIZE 256
/*
// =========================================================
// Keyed-Hash Message Authentication Codes
// =========================================================
*/
typedef struct _cpHMAC IppsHMACState;
typedef struct _cpHMAC IppsHMACSHA1State;
typedef struct _cpHMAC IppsHMACSHA256State;
typedef struct _cpHMAC IppsHMACSHA224State;
typedef struct _cpHMAC IppsHMACSHA384State;
typedef struct _cpHMAC IppsHMACSHA512State;
typedef struct _cpHMAC IppsHMACMD5State;
typedef struct _cpHMAC_rmf IppsHMACState_rmf;
/*
// =========================================================
// Data Authentication Codes
// =========================================================
*/
typedef struct _cpAES_CMAC IppsAES_CMACState;
/*
// =========================================================
// Big Number Integer Arithmetic
// =========================================================
*/
#define BN_MAXBITSIZE (16*1024) /* bn max size (bits) */
typedef enum {
ippBigNumNEG = 0, IppsBigNumNEG = 0,
ippBigNumPOS = 1, IppsBigNumPOS = 1
} IppsBigNumSGN;
typedef enum {
ippBinaryMethod = 0, IppsBinaryMethod = 0,
ippSlidingWindows = 1, IppsSlidingWindows = 1
} IppsExpMethod;
typedef struct _cpBigNum IppsBigNumState;
typedef struct _cpMontgomery IppsMontState;
typedef struct _cpPRNG IppsPRNGState;
typedef struct _cpPrime IppsPrimeState;
/* External Bit Supplier */
typedef IppStatus (IPP_CALL *IppBitSupplier)(Ipp32u* pRand, int nBits, void* pEbsParams);
#define IPP_IS_EQ (0)
#define IPP_IS_GT (1)
#define IPP_IS_LT (2)
#define IPP_IS_NE (3)
#define IPP_IS_NA (4)
#define IPP_IS_PRIME (5)
#define IPP_IS_COMPOSITE (6)
#define IPP_IS_VALID (7)
#define IPP_IS_INVALID (8)
#define IPP_IS_INCOMPLETE (9)
#define IPP_IS_ATINFINITY (10)
#define IS_ZERO IPP_IS_EQ
#define GREATER_THAN_ZERO IPP_IS_GT
#define LESS_THAN_ZERO IPP_IS_LT
#define IS_PRIME IPP_IS_PRIME
#define IS_COMPOSITE IPP_IS_COMPOSITE
#define IS_VALID_KEY IPP_IS_VALID
#define IS_INVALID_KEY IPP_IS_INVALID
#define IS_INCOMPLETED_KEY IPP_IS_INCOMPLETE
/*
// =========================================================
// RSA Cryptography
// =========================================================
*/
#define MIN_RSA_SIZE (8)
#define MAX_RSA_SIZE (16*1024)
typedef struct _cpRSA IppsRSAState;
/* key types */
typedef enum {
ippRSApublic = 0x20000000, IppRSApublic = 0x20000000,
ippRSAprivate = 0x40000000, IppRSAprivate = 0x40000000
} IppRSAKeyType;
/* key component's tag */
typedef enum {
ippRSAkeyN = 0x01, IppRSAkeyN = 0x01,
ippRSAkeyE = 0x02, IppRSAkeyE = 0x02,
ippRSAkeyD = 0x04, IppRSAkeyD = 0x04,
ippRSAkeyP = 0x08, IppRSAkeyP = 0x08,
ippRSAkeyQ = 0x10, IppRSAkeyQ = 0x10,
ippRSAkeyDp = 0x20, IppRSAkeyDp = 0x20,
ippRSAkeyDq = 0x40, IppRSAkeyDq = 0x40,
ippRSAkeyQinv = 0x80, IppRSAkeyQinv = 0x80
} IppRSAKeyTag;
typedef struct _cpRSA_public_key IppsRSAPublicKeyState;
typedef struct _cpRSA_private_key IppsRSAPrivateKeyState;
/*
// =========================================================
// DL Cryptography
// =========================================================
*/
#define MIN_DLP_BITSIZE (512)
#define MIN_DLP_BITSIZER (160)
#define MIN_DLPDH_BITSIZE (512)
#define MIN_DLPDH_BITSIZER (160)
#define DEF_DLPDH_BITSIZER (160)
#define MIN_DLPDSA_BITSIZE (512)
#define MAX_DLPDSA_BITSIZE (1024)
#define MIN_DLPDSA_BITSIZER (160)
#define DEF_DLPDSA_BITSIZER (160)
#define MAX_DLPDSA_BITSIZER (160)
#define MIN_DLPDSA_SEEDSIZE (160)
typedef struct _cpDLP IppsDLPState;
/* domain parameter tags */
typedef enum {
ippDLPkeyP = 0x01, IppDLPkeyP = 0x01,
ippDLPkeyR = 0x02, IppDLPkeyR = 0x02,
ippDLPkeyG = 0x04, IppDLPkeyG = 0x04
} IppDLPKeyTag;
typedef enum {
ippDLValid, /* validation pass successfully */
ippDLBaseIsEven, /* !(P is odd) */
ippDLOrderIsEven, /* !(R is odd) */
ippDLInvalidBaseRange, /* !(2^(L-1) < P < 2^L) */
ippDLInvalidOrderRange, /* !(2^(M-1) < R < 2^M) */
ippDLCompositeBase,
ippDLCompositeOrder,
ippDLInvalidCofactor, /* !( R|(P-1) ) */
ippDLInvalidGenerator, /* !( G^R == 1 (mod P) ) */
/* !(1 < G < (P-1)) */
ippDLInvalidPrivateKey, /* !(1 < private < (R-1)) */
ippDLInvalidPublicKey, /* !(1 < public <=(P-1)) */
ippDLInvalidKeyPair, /* !(G^private == public */
ippDLInvalidSignature /* invalid signature */
} IppDLResult;
/*
// =========================================================
// EC Cryptography
// =========================================================
*/
#define EC_GFP_MAXBITSIZE (1024)
/* operation result */
typedef enum {
ippECValid, /* validation pass successfully */
ippECCompositeBase, /* field based on composite */
ippECComplicatedBase, /* number of non-zero terms in the polynomial (> PRIME_ARR_MAX) */
ippECIsZeroDiscriminant,/* zero discriminant */
ippECCompositeOrder, /* composite order of base point */
ippECInvalidOrder, /* invalid base point order */
ippECIsWeakMOV, /* weak Meneze-Okamoto-Vanstone reduction attack */
ippECIsWeakSSSA, /* weak Semaev-Smart,Satoh-Araki reduction attack */
ippECIsSupersingular, /* supersingular curve */
ippECInvalidPrivateKey, /* !(0 < Private < order) */
ippECInvalidPublicKey, /* (order*PublicKey != Infinity) */
ippECInvalidKeyPair, /* (Private*BasePoint != PublicKey) */
ippECPointOutOfGroup, /* out of group (order*P != Infinity) */
ippECPointIsAtInfinite, /* point (P=(Px,Py)) at Infinity */
ippECPointIsNotValid, /* point (P=(Px,Py)) out-of EC */
ippECPointIsEqual, /* compared points are equal */
ippECPointIsNotEqual, /* compared points are different */
ippECInvalidSignature /* invalid signature */
} IppECResult;
/* domain parameter set/get flags */
typedef enum {
ippECarbitrary =0x00000, IppECCArbitrary = 0x00000, /* arbitrary ECC */
ippECPstd = 0x10000, IppECCPStd = 0x10000, /* random (recommended) EC over FG(p): */
ippECPstd112r1 = ippECPstd, IppECCPStd112r1 = IppECCPStd, /* secp112r1 curve */
ippECPstd112r2 = ippECPstd+1, IppECCPStd112r2 = IppECCPStd+1, /* secp112r2 curve */
ippECPstd128r1 = ippECPstd+2, IppECCPStd128r1 = IppECCPStd+2, /* secp128r1 curve */
ippECPstd128r2 = ippECPstd+3, IppECCPStd128r2 = IppECCPStd+3, /* secp128r2 curve */
ippECPstd160r1 = ippECPstd+4, IppECCPStd160r1 = IppECCPStd+4, /* secp160r1 curve */
ippECPstd160r2 = ippECPstd+5, IppECCPStd160r2 = IppECCPStd+5, /* secp160r2 curve */
ippECPstd192r1 = ippECPstd+6, IppECCPStd192r1 = IppECCPStd+6, /* secp192r1 curve */
ippECPstd224r1 = ippECPstd+7, IppECCPStd224r1 = IppECCPStd+7, /* secp224r1 curve */
ippECPstd256r1 = ippECPstd+8, IppECCPStd256r1 = IppECCPStd+8, /* secp256r1 curve */
ippECPstd384r1 = ippECPstd+9, IppECCPStd384r1 = IppECCPStd+9, /* secp384r1 curve */
ippECPstd521r1 = ippECPstd+10, IppECCPStd521r1 = IppECCPStd+10, /* secp521r1 curve */
ippECPstdSM2 = ippECPstd+11, IppECCPStdSM2 = IppECCPStd+11, /* TMP SM2 curve */
ippEC_TPM_SM2_P256= ippECPstd+11,
ippEC_TPM_BN_P256 = ippECPstd+12, /* TPM BN_P256 curve */
/* curves over binary finit fields are not supported in Intel® IPP 9.0 */
IppECCBStd = 0x20000, /* random (recommended) EC over FG(2^m): */
IppECCBStd113r1 = IppECCBStd, /* sect113r1 curve */
IppECCBStd113r2 = IppECCBStd+1, /* sect113r2 curve */
IppECCBStd131r1 = IppECCBStd+2, /* sect131r1 curve */
IppECCBStd131r2 = IppECCBStd+3, /* sect131r2 curve */
IppECCBStd163r1 = IppECCBStd+4, /* sect163r1 curve */
IppECCBStd163r2 = IppECCBStd+5, /* sect163r2 curve */
IppECCBStd193r1 = IppECCBStd+6, /* sect193r1 curve */
IppECCBStd193r2 = IppECCBStd+7, /* sect193r2 curve */
IppECCBStd233r1 = IppECCBStd+8, /* sect233r1 curve */
IppECCBStd283r1 = IppECCBStd+9, /* sect283r1 curve */
IppECCBStd409r1 = IppECCBStd+10, /* sect409r1 curve */
IppECCBStd571r1 = IppECCBStd+11, /* sect571r1 curve */
IppECCKStd = 0x40000, /* Koblitz (recommended) EC over FG(2^m): */
IppECCBStd163k1 = IppECCKStd, /* Koblitz 163 curve */
IppECCBStd233k1 = IppECCKStd+1, /* Koblitz 233 curve */
IppECCBStd239k1 = IppECCKStd+2, /* Koblitz 239 curve */
IppECCBStd283k1 = IppECCKStd+3, /* Koblitz 283 curve */
IppECCBStd409k1 = IppECCKStd+4, /* Koblitz 409 curve */
IppECCBStd571k1 = IppECCKStd+5 /* Koblitz 571 curve */
} IppsECType, IppECCType;
/*
// GF over prime and its extension
*/
#define IPP_MIN_GF_CHAR (3) /* min characteristic of GF */
#define IPP_MIN_GF_BITSIZE (2) /* min bitsize of element over prime GF */
#define IPP_MAX_GF_BITSIZE (1024) /* max bitsize of element over prime GF */
#define IPP_MIN_GF_EXTDEG (2) /* min GF extension degree */
#define IPP_MAX_GF_EXTDEG (8) /* max GF extension degree */
#define IPP_MAX_EXPONENT_NUM (6) /* max number of exponents, equals to LOG_CACHE_LINE_SIZE */
typedef struct _cpGFpMethod IppsGFpMethod;
typedef struct _cpGFp IppsGFpState;
typedef struct _cpGFpElement IppsGFpElement;
typedef struct _cpGFpEC IppsGFpECState;
typedef struct _cpGFpECPoint IppsGFpECPoint;
typedef struct _cpGFpEC IppsECCPState;
typedef struct _cpGFpECPoint IppsECCPPointState;
typedef struct {
int hashSize;
int msgBlockSize;
} IppsHashInfo;
typedef struct {
//const IppsGFpState* pBasicGF;
//const IppsGFpState* pGroundGF;
int parentGFdegree;
int basicGFdegree;
int basicElmBitSize;
} IppsGFpInfo;
/* SM3 Digest Bytes Size */
#define IPP_SM3_DIGEST_BYTESIZE ((IPP_SM3_DIGEST_BITSIZE + 7) / 8)
typedef struct _cpStateECES_SM2 IppsECESState_SM2;
typedef enum {
ippKESM2Requester = 0xF, /* corresponds to A user/participant */
ippKESM2Responder /* corresponds to B user/participant */
} IppsKeyExchangeRoleSM2;
typedef struct _GFpECKeyExchangeSM2 IppsGFpECKeyExchangeSM2State;
#endif /* !defined( _OWN_BLDPCS ) */
IPPAPI( IppStatus, ippcpGetCpuFeatures, ( Ipp64u* pFeaturesMask ))
IPPAPI( IppStatus, ippcpSetCpuFeatures, ( Ipp64u features ))
IPPAPI( Ipp64u, ippcpGetEnabledCpuFeatures, ( void ) )
IPPAPI( IppStatus, ippcpSetNumThreads, ( int numThr ))
IPPAPI( IppStatus, ippcpInit,( void ))
IPPAPI( IppStatus, ippcpGetNumThreads, (int* pNumThr) )
IPPAPI( const char*, ippcpGetStatusString, ( IppStatus StsCode ))
IPPAPI( int, ippcpGetEnabledNumThreads, ( void ) )
IPPAPI( Ipp64u, ippcpGetCpuClocks, (void) )
#ifdef __cplusplus
}
#endif
#endif /* !defined IPPCPDEFS_H__ || defined( _OWN_BLDPCS ) */

@ -0,0 +1,41 @@
/*******************************************************************************
* Copyright (C) 2001 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*
//
// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
//
// Purpose: Describes the Intel IPP Cryptography version
//
*/
#if !defined( IPPVERSION_H__ )
#define IPPVERSION_H__
#define IPP_VERSION_MAJOR 2021
#define IPP_VERSION_MINOR 9
#define IPP_VERSION_UPDATE 0
// Major interface version
#define IPP_INTERFACE_VERSION_MAJOR 11
// Minor interface version
#define IPP_INTERFACE_VERSION_MINOR 9
#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) " )"
#endif /* IPPVERSION_H__ */

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion e9_ippcpGetLibVersion
#define ippsDESGetSize e9_ippsDESGetSize
#define ippsDESInit e9_ippsDESInit
#define ippsDESPack e9_ippsDESPack
#define ippsDESUnpack e9_ippsDESUnpack
#define ippsTDESEncryptECB e9_ippsTDESEncryptECB
#define ippsTDESDecryptECB e9_ippsTDESDecryptECB
#define ippsTDESEncryptCBC e9_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC e9_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB e9_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB e9_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB e9_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB e9_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR e9_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR e9_ippsTDESDecryptCTR
#define ippsAESGetSize e9_ippsAESGetSize
#define ippsAESInit e9_ippsAESInit
#define ippsAESSetKey e9_ippsAESSetKey
#define ippsAESPack e9_ippsAESPack
#define ippsAESUnpack e9_ippsAESUnpack
#define ippsAESEncryptECB e9_ippsAESEncryptECB
#define ippsAESDecryptECB e9_ippsAESDecryptECB
#define ippsAESEncryptCBC e9_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 e9_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 e9_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 e9_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC e9_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 e9_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 e9_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 e9_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB e9_ippsAESEncryptCFB
#define ippsAESDecryptCFB e9_ippsAESDecryptCFB
#define ippsAESEncryptOFB e9_ippsAESEncryptOFB
#define ippsAESDecryptOFB e9_ippsAESDecryptOFB
#define ippsAESEncryptCTR e9_ippsAESEncryptCTR
#define ippsAESDecryptCTR e9_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct e9_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct e9_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise e9_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise e9_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise e9_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB e9_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize e9_ippsSMS4GetSize
#define ippsSMS4Init e9_ippsSMS4Init
#define ippsSMS4SetKey e9_ippsSMS4SetKey
#define ippsSMS4EncryptECB e9_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB e9_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC e9_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 e9_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 e9_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 e9_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC e9_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 e9_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 e9_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 e9_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB e9_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB e9_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB e9_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB e9_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR e9_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR e9_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize e9_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit e9_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen e9_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen e9_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart e9_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt e9_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt e9_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag e9_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize e9_ippsAES_CCMGetSize
#define ippsAES_CCMInit e9_ippsAES_CCMInit
#define ippsAES_CCMMessageLen e9_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen e9_ippsAES_CCMTagLen
#define ippsAES_CCMStart e9_ippsAES_CCMStart
#define ippsAES_CCMEncrypt e9_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt e9_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag e9_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize e9_ippsAES_GCMGetSize
#define ippsAES_GCMInit e9_ippsAES_GCMInit
#define ippsAES_GCMReinit e9_ippsAES_GCMReinit
#define ippsAES_GCMReset e9_ippsAES_GCMReset
#define ippsAES_GCMProcessIV e9_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD e9_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart e9_ippsAES_GCMStart
#define ippsAES_GCMEncrypt e9_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt e9_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag e9_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize e9_ippsAES_XTSGetSize
#define ippsAES_XTSInit e9_ippsAES_XTSInit
#define ippsAES_XTSEncrypt e9_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt e9_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC e9_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt e9_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt e9_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize e9_ippsAES_CMACGetSize
#define ippsAES_CMACInit e9_ippsAES_CMACInit
#define ippsAES_CMACUpdate e9_ippsAES_CMACUpdate
#define ippsAES_CMACFinal e9_ippsAES_CMACFinal
#define ippsAES_CMACGetTag e9_ippsAES_CMACGetTag
#define ippsARCFourCheckKey e9_ippsARCFourCheckKey
#define ippsARCFourGetSize e9_ippsARCFourGetSize
#define ippsARCFourInit e9_ippsARCFourInit
#define ippsARCFourReset e9_ippsARCFourReset
#define ippsARCFourPack e9_ippsARCFourPack
#define ippsARCFourUnpack e9_ippsARCFourUnpack
#define ippsARCFourEncrypt e9_ippsARCFourEncrypt
#define ippsARCFourDecrypt e9_ippsARCFourDecrypt
#define ippsSHA1GetSize e9_ippsSHA1GetSize
#define ippsSHA1Init e9_ippsSHA1Init
#define ippsSHA1Duplicate e9_ippsSHA1Duplicate
#define ippsSHA1Pack e9_ippsSHA1Pack
#define ippsSHA1Unpack e9_ippsSHA1Unpack
#define ippsSHA1Update e9_ippsSHA1Update
#define ippsSHA1GetTag e9_ippsSHA1GetTag
#define ippsSHA1Final e9_ippsSHA1Final
#define ippsSHA1MessageDigest e9_ippsSHA1MessageDigest
#define ippsSHA224GetSize e9_ippsSHA224GetSize
#define ippsSHA224Init e9_ippsSHA224Init
#define ippsSHA224Duplicate e9_ippsSHA224Duplicate
#define ippsSHA224Pack e9_ippsSHA224Pack
#define ippsSHA224Unpack e9_ippsSHA224Unpack
#define ippsSHA224Update e9_ippsSHA224Update
#define ippsSHA224GetTag e9_ippsSHA224GetTag
#define ippsSHA224Final e9_ippsSHA224Final
#define ippsSHA224MessageDigest e9_ippsSHA224MessageDigest
#define ippsSHA256GetSize e9_ippsSHA256GetSize
#define ippsSHA256Init e9_ippsSHA256Init
#define ippsSHA256Duplicate e9_ippsSHA256Duplicate
#define ippsSHA256Pack e9_ippsSHA256Pack
#define ippsSHA256Unpack e9_ippsSHA256Unpack
#define ippsSHA256Update e9_ippsSHA256Update
#define ippsSHA256GetTag e9_ippsSHA256GetTag
#define ippsSHA256Final e9_ippsSHA256Final
#define ippsSHA256MessageDigest e9_ippsSHA256MessageDigest
#define ippsSHA384GetSize e9_ippsSHA384GetSize
#define ippsSHA384Init e9_ippsSHA384Init
#define ippsSHA384Duplicate e9_ippsSHA384Duplicate
#define ippsSHA384Pack e9_ippsSHA384Pack
#define ippsSHA384Unpack e9_ippsSHA384Unpack
#define ippsSHA384Update e9_ippsSHA384Update
#define ippsSHA384GetTag e9_ippsSHA384GetTag
#define ippsSHA384Final e9_ippsSHA384Final
#define ippsSHA384MessageDigest e9_ippsSHA384MessageDigest
#define ippsSHA512GetSize e9_ippsSHA512GetSize
#define ippsSHA512Init e9_ippsSHA512Init
#define ippsSHA512Duplicate e9_ippsSHA512Duplicate
#define ippsSHA512Pack e9_ippsSHA512Pack
#define ippsSHA512Unpack e9_ippsSHA512Unpack
#define ippsSHA512Update e9_ippsSHA512Update
#define ippsSHA512GetTag e9_ippsSHA512GetTag
#define ippsSHA512Final e9_ippsSHA512Final
#define ippsSHA512MessageDigest e9_ippsSHA512MessageDigest
#define ippsMD5GetSize e9_ippsMD5GetSize
#define ippsMD5Init e9_ippsMD5Init
#define ippsMD5Duplicate e9_ippsMD5Duplicate
#define ippsMD5Pack e9_ippsMD5Pack
#define ippsMD5Unpack e9_ippsMD5Unpack
#define ippsMD5Update e9_ippsMD5Update
#define ippsMD5GetTag e9_ippsMD5GetTag
#define ippsMD5Final e9_ippsMD5Final
#define ippsMD5MessageDigest e9_ippsMD5MessageDigest
#define ippsSM3GetSize e9_ippsSM3GetSize
#define ippsSM3Init e9_ippsSM3Init
#define ippsSM3Duplicate e9_ippsSM3Duplicate
#define ippsSM3Pack e9_ippsSM3Pack
#define ippsSM3Unpack e9_ippsSM3Unpack
#define ippsSM3Update e9_ippsSM3Update
#define ippsSM3GetTag e9_ippsSM3GetTag
#define ippsSM3Final e9_ippsSM3Final
#define ippsSM3MessageDigest e9_ippsSM3MessageDigest
#define ippsHashGetSize e9_ippsHashGetSize
#define ippsHashInit e9_ippsHashInit
#define ippsHashPack e9_ippsHashPack
#define ippsHashUnpack e9_ippsHashUnpack
#define ippsHashDuplicate e9_ippsHashDuplicate
#define ippsHashUpdate e9_ippsHashUpdate
#define ippsHashGetTag e9_ippsHashGetTag
#define ippsHashFinal e9_ippsHashFinal
#define ippsHashMessage e9_ippsHashMessage
#define ippsHashMethod_MD5 e9_ippsHashMethod_MD5
#define ippsHashMethod_SM3 e9_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 e9_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI e9_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT e9_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 e9_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI e9_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT e9_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 e9_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI e9_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT e9_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 e9_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 e9_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 e9_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 e9_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize e9_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 e9_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 e9_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 e9_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 e9_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI e9_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT e9_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 e9_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI e9_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT e9_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 e9_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI e9_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT e9_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 e9_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI e9_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT e9_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 e9_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI e9_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT e9_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 e9_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 e9_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 e9_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 e9_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 e9_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 e9_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 e9_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 e9_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf e9_ippsHashGetSize_rmf
#define ippsHashInit_rmf e9_ippsHashInit_rmf
#define ippsHashPack_rmf e9_ippsHashPack_rmf
#define ippsHashUnpack_rmf e9_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf e9_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf e9_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf e9_ippsHashGetTag_rmf
#define ippsHashFinal_rmf e9_ippsHashFinal_rmf
#define ippsHashMessage_rmf e9_ippsHashMessage_rmf
#define ippsHashMethodGetInfo e9_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf e9_ippsHashGetInfo_rmf
#define ippsMGF e9_ippsMGF
#define ippsMGF1_rmf e9_ippsMGF1_rmf
#define ippsMGF2_rmf e9_ippsMGF2_rmf
#define ippsHMAC_GetSize e9_ippsHMAC_GetSize
#define ippsHMAC_Init e9_ippsHMAC_Init
#define ippsHMAC_Pack e9_ippsHMAC_Pack
#define ippsHMAC_Unpack e9_ippsHMAC_Unpack
#define ippsHMAC_Duplicate e9_ippsHMAC_Duplicate
#define ippsHMAC_Update e9_ippsHMAC_Update
#define ippsHMAC_Final e9_ippsHMAC_Final
#define ippsHMAC_GetTag e9_ippsHMAC_GetTag
#define ippsHMAC_Message e9_ippsHMAC_Message
#define ippsHMACGetSize_rmf e9_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf e9_ippsHMACInit_rmf
#define ippsHMACPack_rmf e9_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf e9_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf e9_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf e9_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf e9_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf e9_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf e9_ippsHMACMessage_rmf
#define ippsBigNumGetSize e9_ippsBigNumGetSize
#define ippsBigNumInit e9_ippsBigNumInit
#define ippsCmpZero_BN e9_ippsCmpZero_BN
#define ippsCmp_BN e9_ippsCmp_BN
#define ippsGetSize_BN e9_ippsGetSize_BN
#define ippsSet_BN e9_ippsSet_BN
#define ippsGet_BN e9_ippsGet_BN
#define ippsRef_BN e9_ippsRef_BN
#define ippsExtGet_BN e9_ippsExtGet_BN
#define ippsAdd_BN e9_ippsAdd_BN
#define ippsSub_BN e9_ippsSub_BN
#define ippsMul_BN e9_ippsMul_BN
#define ippsMAC_BN_I e9_ippsMAC_BN_I
#define ippsDiv_BN e9_ippsDiv_BN
#define ippsMod_BN e9_ippsMod_BN
#define ippsGcd_BN e9_ippsGcd_BN
#define ippsModInv_BN e9_ippsModInv_BN
#define ippsSetOctString_BN e9_ippsSetOctString_BN
#define ippsGetOctString_BN e9_ippsGetOctString_BN
#define ippsMontGetSize e9_ippsMontGetSize
#define ippsMontInit e9_ippsMontInit
#define ippsMontSet e9_ippsMontSet
#define ippsMontGet e9_ippsMontGet
#define ippsMontForm e9_ippsMontForm
#define ippsMontMul e9_ippsMontMul
#define ippsMontExp e9_ippsMontExp
#define ippsPRNGGetSize e9_ippsPRNGGetSize
#define ippsPRNGInit e9_ippsPRNGInit
#define ippsPRNGSetModulus e9_ippsPRNGSetModulus
#define ippsPRNGSetH0 e9_ippsPRNGSetH0
#define ippsPRNGSetAugment e9_ippsPRNGSetAugment
#define ippsPRNGSetSeed e9_ippsPRNGSetSeed
#define ippsPRNGGetSeed e9_ippsPRNGGetSeed
#define ippsPRNGen e9_ippsPRNGen
#define ippsPRNGen_BN e9_ippsPRNGen_BN
#define ippsPRNGenRDRAND e9_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN e9_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED e9_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN e9_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize e9_ippsPrimeGetSize
#define ippsPrimeInit e9_ippsPrimeInit
#define ippsPrimeGen e9_ippsPrimeGen
#define ippsPrimeTest e9_ippsPrimeTest
#define ippsPrimeGen_BN e9_ippsPrimeGen_BN
#define ippsPrimeTest_BN e9_ippsPrimeTest_BN
#define ippsPrimeGet e9_ippsPrimeGet
#define ippsPrimeGet_BN e9_ippsPrimeGet_BN
#define ippsPrimeSet e9_ippsPrimeSet
#define ippsPrimeSet_BN e9_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey e9_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey e9_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey e9_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey e9_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 e9_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 e9_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 e9_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 e9_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 e9_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 e9_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 e9_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 e9_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey e9_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey e9_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt e9_ippsRSA_Encrypt
#define ippsRSA_Decrypt e9_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys e9_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys e9_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP e9_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP e9_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf e9_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf e9_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 e9_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 e9_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS e9_ippsRSASign_PSS
#define ippsRSAVerify_PSS e9_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf e9_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf e9_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 e9_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 e9_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf e9_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf e9_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString e9_ippsDLGetResultString
#define ippsDLPGetSize e9_ippsDLPGetSize
#define ippsDLPInit e9_ippsDLPInit
#define ippsDLPPack e9_ippsDLPPack
#define ippsDLPUnpack e9_ippsDLPUnpack
#define ippsDLPSet e9_ippsDLPSet
#define ippsDLPGet e9_ippsDLPGet
#define ippsDLPSetDP e9_ippsDLPSetDP
#define ippsDLPGetDP e9_ippsDLPGetDP
#define ippsDLPGenKeyPair e9_ippsDLPGenKeyPair
#define ippsDLPPublicKey e9_ippsDLPPublicKey
#define ippsDLPValidateKeyPair e9_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair e9_ippsDLPSetKeyPair
#define ippsDLPSignDSA e9_ippsDLPSignDSA
#define ippsDLPVerifyDSA e9_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH e9_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA e9_ippsDLPGenerateDSA
#define ippsDLPValidateDSA e9_ippsDLPValidateDSA
#define ippsDLPGenerateDH e9_ippsDLPGenerateDH
#define ippsDLPValidateDH e9_ippsDLPValidateDH
#define ippsECCGetResultString e9_ippsECCGetResultString
#define ippsECCPGetSize e9_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 e9_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 e9_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 e9_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 e9_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 e9_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 e9_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 e9_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 e9_ippsECCPGetSizeStdSM2
#define ippsECCPInit e9_ippsECCPInit
#define ippsECCPInitStd128r1 e9_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 e9_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 e9_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 e9_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 e9_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 e9_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 e9_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 e9_ippsECCPInitStdSM2
#define ippsECCPSet e9_ippsECCPSet
#define ippsECCPSetStd e9_ippsECCPSetStd
#define ippsECCPSetStd128r1 e9_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 e9_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 e9_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 e9_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 e9_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 e9_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 e9_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 e9_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 e9_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 e9_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 e9_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 e9_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 e9_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 e9_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet e9_ippsECCPGet
#define ippsECCPGetOrderBitSize e9_ippsECCPGetOrderBitSize
#define ippsECCPValidate e9_ippsECCPValidate
#define ippsECCPPointGetSize e9_ippsECCPPointGetSize
#define ippsECCPPointInit e9_ippsECCPPointInit
#define ippsECCPSetPoint e9_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity e9_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint e9_ippsECCPGetPoint
#define ippsECCPCheckPoint e9_ippsECCPCheckPoint
#define ippsECCPComparePoint e9_ippsECCPComparePoint
#define ippsECCPNegativePoint e9_ippsECCPNegativePoint
#define ippsECCPAddPoint e9_ippsECCPAddPoint
#define ippsECCPMulPointScalar e9_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair e9_ippsECCPGenKeyPair
#define ippsECCPPublicKey e9_ippsECCPPublicKey
#define ippsECCPValidateKeyPair e9_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair e9_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH e9_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC e9_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA e9_ippsECCPSignDSA
#define ippsECCPVerifyDSA e9_ippsECCPVerifyDSA
#define ippsECCPSignNR e9_ippsECCPSignNR
#define ippsECCPVerifyNR e9_ippsECCPVerifyNR
#define ippsECCPSignSM2 e9_ippsECCPSignSM2
#define ippsECCPVerifySM2 e9_ippsECCPVerifySM2
#define ippsGFpGetSize e9_ippsGFpGetSize
#define ippsGFpInitArbitrary e9_ippsGFpInitArbitrary
#define ippsGFpInitFixed e9_ippsGFpInitFixed
#define ippsGFpInit e9_ippsGFpInit
#define ippsGFpMethod_p192r1 e9_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 e9_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 e9_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 e9_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 e9_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 e9_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn e9_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 e9_ippsGFpMethod_p256
#define ippsGFpMethod_pArb e9_ippsGFpMethod_pArb
#define ippsGFpxGetSize e9_ippsGFpxGetSize
#define ippsGFpxInit e9_ippsGFpxInit
#define ippsGFpxInitBinomial e9_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 e9_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 e9_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 e9_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 e9_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom e9_ippsGFpxMethod_binom
#define ippsGFpxMethod_com e9_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize e9_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize e9_ippsGFpElementGetSize
#define ippsGFpElementInit e9_ippsGFpElementInit
#define ippsGFpSetElement e9_ippsGFpSetElement
#define ippsGFpSetElementRegular e9_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString e9_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom e9_ippsGFpSetElementRandom
#define ippsGFpSetElementHash e9_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf e9_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement e9_ippsGFpCpyElement
#define ippsGFpGetElement e9_ippsGFpGetElement
#define ippsGFpGetElementOctString e9_ippsGFpGetElementOctString
#define ippsGFpCmpElement e9_ippsGFpCmpElement
#define ippsGFpIsZeroElement e9_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement e9_ippsGFpIsUnityElement
#define ippsGFpConj e9_ippsGFpConj
#define ippsGFpNeg e9_ippsGFpNeg
#define ippsGFpInv e9_ippsGFpInv
#define ippsGFpSqrt e9_ippsGFpSqrt
#define ippsGFpSqr e9_ippsGFpSqr
#define ippsGFpAdd e9_ippsGFpAdd
#define ippsGFpSub e9_ippsGFpSub
#define ippsGFpMul e9_ippsGFpMul
#define ippsGFpExp e9_ippsGFpExp
#define ippsGFpMultiExp e9_ippsGFpMultiExp
#define ippsGFpAdd_PE e9_ippsGFpAdd_PE
#define ippsGFpSub_PE e9_ippsGFpSub_PE
#define ippsGFpMul_PE e9_ippsGFpMul_PE
#define ippsGFpGetInfo e9_ippsGFpGetInfo
#define ippsGFpECGetSize e9_ippsGFpECGetSize
#define ippsGFpECInit e9_ippsGFpECInit
#define ippsGFpECSet e9_ippsGFpECSet
#define ippsGFpECSetSubgroup e9_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 e9_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 e9_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 e9_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 e9_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 e9_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 e9_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 e9_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 e9_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 e9_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 e9_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 e9_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 e9_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 e9_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 e9_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 e9_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet e9_ippsGFpECGet
#define ippsGFpECGetSubgroup e9_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize e9_ippsGFpECScratchBufferSize
#define ippsGFpECVerify e9_ippsGFpECVerify
#define ippsGFpECPointGetSize e9_ippsGFpECPointGetSize
#define ippsGFpECPointInit e9_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity e9_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint e9_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular e9_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom e9_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint e9_ippsGFpECMakePoint
#define ippsGFpECSetPointHash e9_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible e9_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf e9_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf e9_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint e9_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular e9_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString e9_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString e9_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint e9_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup e9_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint e9_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint e9_ippsGFpECCmpPoint
#define ippsGFpECNegPoint e9_ippsGFpECNegPoint
#define ippsGFpECAddPoint e9_ippsGFpECAddPoint
#define ippsGFpECMulPoint e9_ippsGFpECMulPoint
#define ippsGFpECPrivateKey e9_ippsGFpECPrivateKey
#define ippsGFpECPublicKey e9_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair e9_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH e9_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC e9_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 e9_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA e9_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA e9_ippsGFpECVerifyDSA
#define ippsGFpECSignNR e9_ippsGFpECSignNR
#define ippsGFpECVerifyNR e9_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 e9_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 e9_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 e9_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize e9_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init e9_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup e9_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey e9_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm e9_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF e9_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 e9_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 e9_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 e9_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 e9_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 e9_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 e9_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 e9_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 e9_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize e9_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext e9_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize e9_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext e9_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion g9_ippcpGetLibVersion
#define ippsDESGetSize g9_ippsDESGetSize
#define ippsDESInit g9_ippsDESInit
#define ippsDESPack g9_ippsDESPack
#define ippsDESUnpack g9_ippsDESUnpack
#define ippsTDESEncryptECB g9_ippsTDESEncryptECB
#define ippsTDESDecryptECB g9_ippsTDESDecryptECB
#define ippsTDESEncryptCBC g9_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC g9_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB g9_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB g9_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB g9_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB g9_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR g9_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR g9_ippsTDESDecryptCTR
#define ippsAESGetSize g9_ippsAESGetSize
#define ippsAESInit g9_ippsAESInit
#define ippsAESSetKey g9_ippsAESSetKey
#define ippsAESPack g9_ippsAESPack
#define ippsAESUnpack g9_ippsAESUnpack
#define ippsAESEncryptECB g9_ippsAESEncryptECB
#define ippsAESDecryptECB g9_ippsAESDecryptECB
#define ippsAESEncryptCBC g9_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 g9_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 g9_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 g9_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC g9_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 g9_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 g9_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 g9_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB g9_ippsAESEncryptCFB
#define ippsAESDecryptCFB g9_ippsAESDecryptCFB
#define ippsAESEncryptOFB g9_ippsAESEncryptOFB
#define ippsAESDecryptOFB g9_ippsAESDecryptOFB
#define ippsAESEncryptCTR g9_ippsAESEncryptCTR
#define ippsAESDecryptCTR g9_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct g9_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct g9_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise g9_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise g9_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise g9_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB g9_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize g9_ippsSMS4GetSize
#define ippsSMS4Init g9_ippsSMS4Init
#define ippsSMS4SetKey g9_ippsSMS4SetKey
#define ippsSMS4EncryptECB g9_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB g9_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC g9_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 g9_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 g9_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 g9_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC g9_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 g9_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 g9_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 g9_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB g9_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB g9_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB g9_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB g9_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR g9_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR g9_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize g9_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit g9_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen g9_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen g9_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart g9_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt g9_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt g9_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag g9_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize g9_ippsAES_CCMGetSize
#define ippsAES_CCMInit g9_ippsAES_CCMInit
#define ippsAES_CCMMessageLen g9_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen g9_ippsAES_CCMTagLen
#define ippsAES_CCMStart g9_ippsAES_CCMStart
#define ippsAES_CCMEncrypt g9_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt g9_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag g9_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize g9_ippsAES_GCMGetSize
#define ippsAES_GCMInit g9_ippsAES_GCMInit
#define ippsAES_GCMReinit g9_ippsAES_GCMReinit
#define ippsAES_GCMReset g9_ippsAES_GCMReset
#define ippsAES_GCMProcessIV g9_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD g9_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart g9_ippsAES_GCMStart
#define ippsAES_GCMEncrypt g9_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt g9_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag g9_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize g9_ippsAES_XTSGetSize
#define ippsAES_XTSInit g9_ippsAES_XTSInit
#define ippsAES_XTSEncrypt g9_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt g9_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC g9_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt g9_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt g9_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize g9_ippsAES_CMACGetSize
#define ippsAES_CMACInit g9_ippsAES_CMACInit
#define ippsAES_CMACUpdate g9_ippsAES_CMACUpdate
#define ippsAES_CMACFinal g9_ippsAES_CMACFinal
#define ippsAES_CMACGetTag g9_ippsAES_CMACGetTag
#define ippsARCFourCheckKey g9_ippsARCFourCheckKey
#define ippsARCFourGetSize g9_ippsARCFourGetSize
#define ippsARCFourInit g9_ippsARCFourInit
#define ippsARCFourReset g9_ippsARCFourReset
#define ippsARCFourPack g9_ippsARCFourPack
#define ippsARCFourUnpack g9_ippsARCFourUnpack
#define ippsARCFourEncrypt g9_ippsARCFourEncrypt
#define ippsARCFourDecrypt g9_ippsARCFourDecrypt
#define ippsSHA1GetSize g9_ippsSHA1GetSize
#define ippsSHA1Init g9_ippsSHA1Init
#define ippsSHA1Duplicate g9_ippsSHA1Duplicate
#define ippsSHA1Pack g9_ippsSHA1Pack
#define ippsSHA1Unpack g9_ippsSHA1Unpack
#define ippsSHA1Update g9_ippsSHA1Update
#define ippsSHA1GetTag g9_ippsSHA1GetTag
#define ippsSHA1Final g9_ippsSHA1Final
#define ippsSHA1MessageDigest g9_ippsSHA1MessageDigest
#define ippsSHA224GetSize g9_ippsSHA224GetSize
#define ippsSHA224Init g9_ippsSHA224Init
#define ippsSHA224Duplicate g9_ippsSHA224Duplicate
#define ippsSHA224Pack g9_ippsSHA224Pack
#define ippsSHA224Unpack g9_ippsSHA224Unpack
#define ippsSHA224Update g9_ippsSHA224Update
#define ippsSHA224GetTag g9_ippsSHA224GetTag
#define ippsSHA224Final g9_ippsSHA224Final
#define ippsSHA224MessageDigest g9_ippsSHA224MessageDigest
#define ippsSHA256GetSize g9_ippsSHA256GetSize
#define ippsSHA256Init g9_ippsSHA256Init
#define ippsSHA256Duplicate g9_ippsSHA256Duplicate
#define ippsSHA256Pack g9_ippsSHA256Pack
#define ippsSHA256Unpack g9_ippsSHA256Unpack
#define ippsSHA256Update g9_ippsSHA256Update
#define ippsSHA256GetTag g9_ippsSHA256GetTag
#define ippsSHA256Final g9_ippsSHA256Final
#define ippsSHA256MessageDigest g9_ippsSHA256MessageDigest
#define ippsSHA384GetSize g9_ippsSHA384GetSize
#define ippsSHA384Init g9_ippsSHA384Init
#define ippsSHA384Duplicate g9_ippsSHA384Duplicate
#define ippsSHA384Pack g9_ippsSHA384Pack
#define ippsSHA384Unpack g9_ippsSHA384Unpack
#define ippsSHA384Update g9_ippsSHA384Update
#define ippsSHA384GetTag g9_ippsSHA384GetTag
#define ippsSHA384Final g9_ippsSHA384Final
#define ippsSHA384MessageDigest g9_ippsSHA384MessageDigest
#define ippsSHA512GetSize g9_ippsSHA512GetSize
#define ippsSHA512Init g9_ippsSHA512Init
#define ippsSHA512Duplicate g9_ippsSHA512Duplicate
#define ippsSHA512Pack g9_ippsSHA512Pack
#define ippsSHA512Unpack g9_ippsSHA512Unpack
#define ippsSHA512Update g9_ippsSHA512Update
#define ippsSHA512GetTag g9_ippsSHA512GetTag
#define ippsSHA512Final g9_ippsSHA512Final
#define ippsSHA512MessageDigest g9_ippsSHA512MessageDigest
#define ippsMD5GetSize g9_ippsMD5GetSize
#define ippsMD5Init g9_ippsMD5Init
#define ippsMD5Duplicate g9_ippsMD5Duplicate
#define ippsMD5Pack g9_ippsMD5Pack
#define ippsMD5Unpack g9_ippsMD5Unpack
#define ippsMD5Update g9_ippsMD5Update
#define ippsMD5GetTag g9_ippsMD5GetTag
#define ippsMD5Final g9_ippsMD5Final
#define ippsMD5MessageDigest g9_ippsMD5MessageDigest
#define ippsSM3GetSize g9_ippsSM3GetSize
#define ippsSM3Init g9_ippsSM3Init
#define ippsSM3Duplicate g9_ippsSM3Duplicate
#define ippsSM3Pack g9_ippsSM3Pack
#define ippsSM3Unpack g9_ippsSM3Unpack
#define ippsSM3Update g9_ippsSM3Update
#define ippsSM3GetTag g9_ippsSM3GetTag
#define ippsSM3Final g9_ippsSM3Final
#define ippsSM3MessageDigest g9_ippsSM3MessageDigest
#define ippsHashGetSize g9_ippsHashGetSize
#define ippsHashInit g9_ippsHashInit
#define ippsHashPack g9_ippsHashPack
#define ippsHashUnpack g9_ippsHashUnpack
#define ippsHashDuplicate g9_ippsHashDuplicate
#define ippsHashUpdate g9_ippsHashUpdate
#define ippsHashGetTag g9_ippsHashGetTag
#define ippsHashFinal g9_ippsHashFinal
#define ippsHashMessage g9_ippsHashMessage
#define ippsHashMethod_MD5 g9_ippsHashMethod_MD5
#define ippsHashMethod_SM3 g9_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 g9_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI g9_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT g9_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 g9_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI g9_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT g9_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 g9_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI g9_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT g9_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 g9_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 g9_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 g9_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 g9_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize g9_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 g9_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 g9_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 g9_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 g9_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI g9_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT g9_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 g9_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI g9_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT g9_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 g9_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI g9_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT g9_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 g9_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI g9_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT g9_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 g9_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI g9_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT g9_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 g9_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 g9_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 g9_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 g9_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 g9_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 g9_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 g9_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 g9_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf g9_ippsHashGetSize_rmf
#define ippsHashInit_rmf g9_ippsHashInit_rmf
#define ippsHashPack_rmf g9_ippsHashPack_rmf
#define ippsHashUnpack_rmf g9_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf g9_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf g9_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf g9_ippsHashGetTag_rmf
#define ippsHashFinal_rmf g9_ippsHashFinal_rmf
#define ippsHashMessage_rmf g9_ippsHashMessage_rmf
#define ippsHashMethodGetInfo g9_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf g9_ippsHashGetInfo_rmf
#define ippsMGF g9_ippsMGF
#define ippsMGF1_rmf g9_ippsMGF1_rmf
#define ippsMGF2_rmf g9_ippsMGF2_rmf
#define ippsHMAC_GetSize g9_ippsHMAC_GetSize
#define ippsHMAC_Init g9_ippsHMAC_Init
#define ippsHMAC_Pack g9_ippsHMAC_Pack
#define ippsHMAC_Unpack g9_ippsHMAC_Unpack
#define ippsHMAC_Duplicate g9_ippsHMAC_Duplicate
#define ippsHMAC_Update g9_ippsHMAC_Update
#define ippsHMAC_Final g9_ippsHMAC_Final
#define ippsHMAC_GetTag g9_ippsHMAC_GetTag
#define ippsHMAC_Message g9_ippsHMAC_Message
#define ippsHMACGetSize_rmf g9_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf g9_ippsHMACInit_rmf
#define ippsHMACPack_rmf g9_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf g9_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf g9_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf g9_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf g9_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf g9_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf g9_ippsHMACMessage_rmf
#define ippsBigNumGetSize g9_ippsBigNumGetSize
#define ippsBigNumInit g9_ippsBigNumInit
#define ippsCmpZero_BN g9_ippsCmpZero_BN
#define ippsCmp_BN g9_ippsCmp_BN
#define ippsGetSize_BN g9_ippsGetSize_BN
#define ippsSet_BN g9_ippsSet_BN
#define ippsGet_BN g9_ippsGet_BN
#define ippsRef_BN g9_ippsRef_BN
#define ippsExtGet_BN g9_ippsExtGet_BN
#define ippsAdd_BN g9_ippsAdd_BN
#define ippsSub_BN g9_ippsSub_BN
#define ippsMul_BN g9_ippsMul_BN
#define ippsMAC_BN_I g9_ippsMAC_BN_I
#define ippsDiv_BN g9_ippsDiv_BN
#define ippsMod_BN g9_ippsMod_BN
#define ippsGcd_BN g9_ippsGcd_BN
#define ippsModInv_BN g9_ippsModInv_BN
#define ippsSetOctString_BN g9_ippsSetOctString_BN
#define ippsGetOctString_BN g9_ippsGetOctString_BN
#define ippsMontGetSize g9_ippsMontGetSize
#define ippsMontInit g9_ippsMontInit
#define ippsMontSet g9_ippsMontSet
#define ippsMontGet g9_ippsMontGet
#define ippsMontForm g9_ippsMontForm
#define ippsMontMul g9_ippsMontMul
#define ippsMontExp g9_ippsMontExp
#define ippsPRNGGetSize g9_ippsPRNGGetSize
#define ippsPRNGInit g9_ippsPRNGInit
#define ippsPRNGSetModulus g9_ippsPRNGSetModulus
#define ippsPRNGSetH0 g9_ippsPRNGSetH0
#define ippsPRNGSetAugment g9_ippsPRNGSetAugment
#define ippsPRNGSetSeed g9_ippsPRNGSetSeed
#define ippsPRNGGetSeed g9_ippsPRNGGetSeed
#define ippsPRNGen g9_ippsPRNGen
#define ippsPRNGen_BN g9_ippsPRNGen_BN
#define ippsPRNGenRDRAND g9_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN g9_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED g9_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN g9_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize g9_ippsPrimeGetSize
#define ippsPrimeInit g9_ippsPrimeInit
#define ippsPrimeGen g9_ippsPrimeGen
#define ippsPrimeTest g9_ippsPrimeTest
#define ippsPrimeGen_BN g9_ippsPrimeGen_BN
#define ippsPrimeTest_BN g9_ippsPrimeTest_BN
#define ippsPrimeGet g9_ippsPrimeGet
#define ippsPrimeGet_BN g9_ippsPrimeGet_BN
#define ippsPrimeSet g9_ippsPrimeSet
#define ippsPrimeSet_BN g9_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey g9_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey g9_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey g9_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey g9_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 g9_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 g9_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 g9_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 g9_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 g9_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 g9_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 g9_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 g9_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey g9_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey g9_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt g9_ippsRSA_Encrypt
#define ippsRSA_Decrypt g9_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys g9_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys g9_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP g9_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP g9_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf g9_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf g9_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 g9_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 g9_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS g9_ippsRSASign_PSS
#define ippsRSAVerify_PSS g9_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf g9_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf g9_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 g9_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 g9_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf g9_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf g9_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString g9_ippsDLGetResultString
#define ippsDLPGetSize g9_ippsDLPGetSize
#define ippsDLPInit g9_ippsDLPInit
#define ippsDLPPack g9_ippsDLPPack
#define ippsDLPUnpack g9_ippsDLPUnpack
#define ippsDLPSet g9_ippsDLPSet
#define ippsDLPGet g9_ippsDLPGet
#define ippsDLPSetDP g9_ippsDLPSetDP
#define ippsDLPGetDP g9_ippsDLPGetDP
#define ippsDLPGenKeyPair g9_ippsDLPGenKeyPair
#define ippsDLPPublicKey g9_ippsDLPPublicKey
#define ippsDLPValidateKeyPair g9_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair g9_ippsDLPSetKeyPair
#define ippsDLPSignDSA g9_ippsDLPSignDSA
#define ippsDLPVerifyDSA g9_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH g9_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA g9_ippsDLPGenerateDSA
#define ippsDLPValidateDSA g9_ippsDLPValidateDSA
#define ippsDLPGenerateDH g9_ippsDLPGenerateDH
#define ippsDLPValidateDH g9_ippsDLPValidateDH
#define ippsECCGetResultString g9_ippsECCGetResultString
#define ippsECCPGetSize g9_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 g9_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 g9_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 g9_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 g9_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 g9_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 g9_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 g9_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 g9_ippsECCPGetSizeStdSM2
#define ippsECCPInit g9_ippsECCPInit
#define ippsECCPInitStd128r1 g9_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 g9_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 g9_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 g9_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 g9_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 g9_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 g9_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 g9_ippsECCPInitStdSM2
#define ippsECCPSet g9_ippsECCPSet
#define ippsECCPSetStd g9_ippsECCPSetStd
#define ippsECCPSetStd128r1 g9_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 g9_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 g9_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 g9_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 g9_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 g9_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 g9_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 g9_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 g9_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 g9_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 g9_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 g9_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 g9_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 g9_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet g9_ippsECCPGet
#define ippsECCPGetOrderBitSize g9_ippsECCPGetOrderBitSize
#define ippsECCPValidate g9_ippsECCPValidate
#define ippsECCPPointGetSize g9_ippsECCPPointGetSize
#define ippsECCPPointInit g9_ippsECCPPointInit
#define ippsECCPSetPoint g9_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity g9_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint g9_ippsECCPGetPoint
#define ippsECCPCheckPoint g9_ippsECCPCheckPoint
#define ippsECCPComparePoint g9_ippsECCPComparePoint
#define ippsECCPNegativePoint g9_ippsECCPNegativePoint
#define ippsECCPAddPoint g9_ippsECCPAddPoint
#define ippsECCPMulPointScalar g9_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair g9_ippsECCPGenKeyPair
#define ippsECCPPublicKey g9_ippsECCPPublicKey
#define ippsECCPValidateKeyPair g9_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair g9_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH g9_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC g9_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA g9_ippsECCPSignDSA
#define ippsECCPVerifyDSA g9_ippsECCPVerifyDSA
#define ippsECCPSignNR g9_ippsECCPSignNR
#define ippsECCPVerifyNR g9_ippsECCPVerifyNR
#define ippsECCPSignSM2 g9_ippsECCPSignSM2
#define ippsECCPVerifySM2 g9_ippsECCPVerifySM2
#define ippsGFpGetSize g9_ippsGFpGetSize
#define ippsGFpInitArbitrary g9_ippsGFpInitArbitrary
#define ippsGFpInitFixed g9_ippsGFpInitFixed
#define ippsGFpInit g9_ippsGFpInit
#define ippsGFpMethod_p192r1 g9_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 g9_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 g9_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 g9_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 g9_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 g9_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn g9_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 g9_ippsGFpMethod_p256
#define ippsGFpMethod_pArb g9_ippsGFpMethod_pArb
#define ippsGFpxGetSize g9_ippsGFpxGetSize
#define ippsGFpxInit g9_ippsGFpxInit
#define ippsGFpxInitBinomial g9_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 g9_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 g9_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 g9_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 g9_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom g9_ippsGFpxMethod_binom
#define ippsGFpxMethod_com g9_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize g9_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize g9_ippsGFpElementGetSize
#define ippsGFpElementInit g9_ippsGFpElementInit
#define ippsGFpSetElement g9_ippsGFpSetElement
#define ippsGFpSetElementRegular g9_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString g9_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom g9_ippsGFpSetElementRandom
#define ippsGFpSetElementHash g9_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf g9_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement g9_ippsGFpCpyElement
#define ippsGFpGetElement g9_ippsGFpGetElement
#define ippsGFpGetElementOctString g9_ippsGFpGetElementOctString
#define ippsGFpCmpElement g9_ippsGFpCmpElement
#define ippsGFpIsZeroElement g9_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement g9_ippsGFpIsUnityElement
#define ippsGFpConj g9_ippsGFpConj
#define ippsGFpNeg g9_ippsGFpNeg
#define ippsGFpInv g9_ippsGFpInv
#define ippsGFpSqrt g9_ippsGFpSqrt
#define ippsGFpSqr g9_ippsGFpSqr
#define ippsGFpAdd g9_ippsGFpAdd
#define ippsGFpSub g9_ippsGFpSub
#define ippsGFpMul g9_ippsGFpMul
#define ippsGFpExp g9_ippsGFpExp
#define ippsGFpMultiExp g9_ippsGFpMultiExp
#define ippsGFpAdd_PE g9_ippsGFpAdd_PE
#define ippsGFpSub_PE g9_ippsGFpSub_PE
#define ippsGFpMul_PE g9_ippsGFpMul_PE
#define ippsGFpGetInfo g9_ippsGFpGetInfo
#define ippsGFpECGetSize g9_ippsGFpECGetSize
#define ippsGFpECInit g9_ippsGFpECInit
#define ippsGFpECSet g9_ippsGFpECSet
#define ippsGFpECSetSubgroup g9_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 g9_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 g9_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 g9_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 g9_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 g9_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 g9_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 g9_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 g9_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 g9_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 g9_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 g9_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 g9_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 g9_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 g9_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 g9_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet g9_ippsGFpECGet
#define ippsGFpECGetSubgroup g9_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize g9_ippsGFpECScratchBufferSize
#define ippsGFpECVerify g9_ippsGFpECVerify
#define ippsGFpECPointGetSize g9_ippsGFpECPointGetSize
#define ippsGFpECPointInit g9_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity g9_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint g9_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular g9_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom g9_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint g9_ippsGFpECMakePoint
#define ippsGFpECSetPointHash g9_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible g9_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf g9_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf g9_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint g9_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular g9_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString g9_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString g9_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint g9_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup g9_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint g9_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint g9_ippsGFpECCmpPoint
#define ippsGFpECNegPoint g9_ippsGFpECNegPoint
#define ippsGFpECAddPoint g9_ippsGFpECAddPoint
#define ippsGFpECMulPoint g9_ippsGFpECMulPoint
#define ippsGFpECPrivateKey g9_ippsGFpECPrivateKey
#define ippsGFpECPublicKey g9_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair g9_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH g9_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC g9_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 g9_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA g9_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA g9_ippsGFpECVerifyDSA
#define ippsGFpECSignNR g9_ippsGFpECSignNR
#define ippsGFpECVerifyNR g9_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 g9_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 g9_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 g9_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize g9_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init g9_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup g9_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey g9_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm g9_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF g9_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 g9_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 g9_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 g9_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 g9_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 g9_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 g9_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 g9_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 g9_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize g9_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext g9_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize g9_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext g9_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion h9_ippcpGetLibVersion
#define ippsDESGetSize h9_ippsDESGetSize
#define ippsDESInit h9_ippsDESInit
#define ippsDESPack h9_ippsDESPack
#define ippsDESUnpack h9_ippsDESUnpack
#define ippsTDESEncryptECB h9_ippsTDESEncryptECB
#define ippsTDESDecryptECB h9_ippsTDESDecryptECB
#define ippsTDESEncryptCBC h9_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC h9_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB h9_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB h9_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB h9_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB h9_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR h9_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR h9_ippsTDESDecryptCTR
#define ippsAESGetSize h9_ippsAESGetSize
#define ippsAESInit h9_ippsAESInit
#define ippsAESSetKey h9_ippsAESSetKey
#define ippsAESPack h9_ippsAESPack
#define ippsAESUnpack h9_ippsAESUnpack
#define ippsAESEncryptECB h9_ippsAESEncryptECB
#define ippsAESDecryptECB h9_ippsAESDecryptECB
#define ippsAESEncryptCBC h9_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 h9_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 h9_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 h9_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC h9_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 h9_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 h9_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 h9_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB h9_ippsAESEncryptCFB
#define ippsAESDecryptCFB h9_ippsAESDecryptCFB
#define ippsAESEncryptOFB h9_ippsAESEncryptOFB
#define ippsAESDecryptOFB h9_ippsAESDecryptOFB
#define ippsAESEncryptCTR h9_ippsAESEncryptCTR
#define ippsAESDecryptCTR h9_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct h9_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct h9_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise h9_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise h9_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise h9_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB h9_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize h9_ippsSMS4GetSize
#define ippsSMS4Init h9_ippsSMS4Init
#define ippsSMS4SetKey h9_ippsSMS4SetKey
#define ippsSMS4EncryptECB h9_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB h9_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC h9_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 h9_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 h9_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 h9_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC h9_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 h9_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 h9_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 h9_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB h9_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB h9_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB h9_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB h9_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR h9_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR h9_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize h9_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit h9_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen h9_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen h9_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart h9_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt h9_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt h9_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag h9_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize h9_ippsAES_CCMGetSize
#define ippsAES_CCMInit h9_ippsAES_CCMInit
#define ippsAES_CCMMessageLen h9_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen h9_ippsAES_CCMTagLen
#define ippsAES_CCMStart h9_ippsAES_CCMStart
#define ippsAES_CCMEncrypt h9_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt h9_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag h9_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize h9_ippsAES_GCMGetSize
#define ippsAES_GCMInit h9_ippsAES_GCMInit
#define ippsAES_GCMReinit h9_ippsAES_GCMReinit
#define ippsAES_GCMReset h9_ippsAES_GCMReset
#define ippsAES_GCMProcessIV h9_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD h9_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart h9_ippsAES_GCMStart
#define ippsAES_GCMEncrypt h9_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt h9_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag h9_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize h9_ippsAES_XTSGetSize
#define ippsAES_XTSInit h9_ippsAES_XTSInit
#define ippsAES_XTSEncrypt h9_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt h9_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC h9_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt h9_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt h9_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize h9_ippsAES_CMACGetSize
#define ippsAES_CMACInit h9_ippsAES_CMACInit
#define ippsAES_CMACUpdate h9_ippsAES_CMACUpdate
#define ippsAES_CMACFinal h9_ippsAES_CMACFinal
#define ippsAES_CMACGetTag h9_ippsAES_CMACGetTag
#define ippsARCFourCheckKey h9_ippsARCFourCheckKey
#define ippsARCFourGetSize h9_ippsARCFourGetSize
#define ippsARCFourInit h9_ippsARCFourInit
#define ippsARCFourReset h9_ippsARCFourReset
#define ippsARCFourPack h9_ippsARCFourPack
#define ippsARCFourUnpack h9_ippsARCFourUnpack
#define ippsARCFourEncrypt h9_ippsARCFourEncrypt
#define ippsARCFourDecrypt h9_ippsARCFourDecrypt
#define ippsSHA1GetSize h9_ippsSHA1GetSize
#define ippsSHA1Init h9_ippsSHA1Init
#define ippsSHA1Duplicate h9_ippsSHA1Duplicate
#define ippsSHA1Pack h9_ippsSHA1Pack
#define ippsSHA1Unpack h9_ippsSHA1Unpack
#define ippsSHA1Update h9_ippsSHA1Update
#define ippsSHA1GetTag h9_ippsSHA1GetTag
#define ippsSHA1Final h9_ippsSHA1Final
#define ippsSHA1MessageDigest h9_ippsSHA1MessageDigest
#define ippsSHA224GetSize h9_ippsSHA224GetSize
#define ippsSHA224Init h9_ippsSHA224Init
#define ippsSHA224Duplicate h9_ippsSHA224Duplicate
#define ippsSHA224Pack h9_ippsSHA224Pack
#define ippsSHA224Unpack h9_ippsSHA224Unpack
#define ippsSHA224Update h9_ippsSHA224Update
#define ippsSHA224GetTag h9_ippsSHA224GetTag
#define ippsSHA224Final h9_ippsSHA224Final
#define ippsSHA224MessageDigest h9_ippsSHA224MessageDigest
#define ippsSHA256GetSize h9_ippsSHA256GetSize
#define ippsSHA256Init h9_ippsSHA256Init
#define ippsSHA256Duplicate h9_ippsSHA256Duplicate
#define ippsSHA256Pack h9_ippsSHA256Pack
#define ippsSHA256Unpack h9_ippsSHA256Unpack
#define ippsSHA256Update h9_ippsSHA256Update
#define ippsSHA256GetTag h9_ippsSHA256GetTag
#define ippsSHA256Final h9_ippsSHA256Final
#define ippsSHA256MessageDigest h9_ippsSHA256MessageDigest
#define ippsSHA384GetSize h9_ippsSHA384GetSize
#define ippsSHA384Init h9_ippsSHA384Init
#define ippsSHA384Duplicate h9_ippsSHA384Duplicate
#define ippsSHA384Pack h9_ippsSHA384Pack
#define ippsSHA384Unpack h9_ippsSHA384Unpack
#define ippsSHA384Update h9_ippsSHA384Update
#define ippsSHA384GetTag h9_ippsSHA384GetTag
#define ippsSHA384Final h9_ippsSHA384Final
#define ippsSHA384MessageDigest h9_ippsSHA384MessageDigest
#define ippsSHA512GetSize h9_ippsSHA512GetSize
#define ippsSHA512Init h9_ippsSHA512Init
#define ippsSHA512Duplicate h9_ippsSHA512Duplicate
#define ippsSHA512Pack h9_ippsSHA512Pack
#define ippsSHA512Unpack h9_ippsSHA512Unpack
#define ippsSHA512Update h9_ippsSHA512Update
#define ippsSHA512GetTag h9_ippsSHA512GetTag
#define ippsSHA512Final h9_ippsSHA512Final
#define ippsSHA512MessageDigest h9_ippsSHA512MessageDigest
#define ippsMD5GetSize h9_ippsMD5GetSize
#define ippsMD5Init h9_ippsMD5Init
#define ippsMD5Duplicate h9_ippsMD5Duplicate
#define ippsMD5Pack h9_ippsMD5Pack
#define ippsMD5Unpack h9_ippsMD5Unpack
#define ippsMD5Update h9_ippsMD5Update
#define ippsMD5GetTag h9_ippsMD5GetTag
#define ippsMD5Final h9_ippsMD5Final
#define ippsMD5MessageDigest h9_ippsMD5MessageDigest
#define ippsSM3GetSize h9_ippsSM3GetSize
#define ippsSM3Init h9_ippsSM3Init
#define ippsSM3Duplicate h9_ippsSM3Duplicate
#define ippsSM3Pack h9_ippsSM3Pack
#define ippsSM3Unpack h9_ippsSM3Unpack
#define ippsSM3Update h9_ippsSM3Update
#define ippsSM3GetTag h9_ippsSM3GetTag
#define ippsSM3Final h9_ippsSM3Final
#define ippsSM3MessageDigest h9_ippsSM3MessageDigest
#define ippsHashGetSize h9_ippsHashGetSize
#define ippsHashInit h9_ippsHashInit
#define ippsHashPack h9_ippsHashPack
#define ippsHashUnpack h9_ippsHashUnpack
#define ippsHashDuplicate h9_ippsHashDuplicate
#define ippsHashUpdate h9_ippsHashUpdate
#define ippsHashGetTag h9_ippsHashGetTag
#define ippsHashFinal h9_ippsHashFinal
#define ippsHashMessage h9_ippsHashMessage
#define ippsHashMethod_MD5 h9_ippsHashMethod_MD5
#define ippsHashMethod_SM3 h9_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 h9_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI h9_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT h9_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 h9_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI h9_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT h9_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 h9_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI h9_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT h9_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 h9_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 h9_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 h9_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 h9_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize h9_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 h9_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 h9_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 h9_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 h9_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI h9_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT h9_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 h9_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI h9_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT h9_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 h9_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI h9_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT h9_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 h9_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI h9_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT h9_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 h9_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI h9_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT h9_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 h9_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 h9_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 h9_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 h9_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 h9_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 h9_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 h9_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 h9_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf h9_ippsHashGetSize_rmf
#define ippsHashInit_rmf h9_ippsHashInit_rmf
#define ippsHashPack_rmf h9_ippsHashPack_rmf
#define ippsHashUnpack_rmf h9_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf h9_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf h9_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf h9_ippsHashGetTag_rmf
#define ippsHashFinal_rmf h9_ippsHashFinal_rmf
#define ippsHashMessage_rmf h9_ippsHashMessage_rmf
#define ippsHashMethodGetInfo h9_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf h9_ippsHashGetInfo_rmf
#define ippsMGF h9_ippsMGF
#define ippsMGF1_rmf h9_ippsMGF1_rmf
#define ippsMGF2_rmf h9_ippsMGF2_rmf
#define ippsHMAC_GetSize h9_ippsHMAC_GetSize
#define ippsHMAC_Init h9_ippsHMAC_Init
#define ippsHMAC_Pack h9_ippsHMAC_Pack
#define ippsHMAC_Unpack h9_ippsHMAC_Unpack
#define ippsHMAC_Duplicate h9_ippsHMAC_Duplicate
#define ippsHMAC_Update h9_ippsHMAC_Update
#define ippsHMAC_Final h9_ippsHMAC_Final
#define ippsHMAC_GetTag h9_ippsHMAC_GetTag
#define ippsHMAC_Message h9_ippsHMAC_Message
#define ippsHMACGetSize_rmf h9_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf h9_ippsHMACInit_rmf
#define ippsHMACPack_rmf h9_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf h9_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf h9_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf h9_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf h9_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf h9_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf h9_ippsHMACMessage_rmf
#define ippsBigNumGetSize h9_ippsBigNumGetSize
#define ippsBigNumInit h9_ippsBigNumInit
#define ippsCmpZero_BN h9_ippsCmpZero_BN
#define ippsCmp_BN h9_ippsCmp_BN
#define ippsGetSize_BN h9_ippsGetSize_BN
#define ippsSet_BN h9_ippsSet_BN
#define ippsGet_BN h9_ippsGet_BN
#define ippsRef_BN h9_ippsRef_BN
#define ippsExtGet_BN h9_ippsExtGet_BN
#define ippsAdd_BN h9_ippsAdd_BN
#define ippsSub_BN h9_ippsSub_BN
#define ippsMul_BN h9_ippsMul_BN
#define ippsMAC_BN_I h9_ippsMAC_BN_I
#define ippsDiv_BN h9_ippsDiv_BN
#define ippsMod_BN h9_ippsMod_BN
#define ippsGcd_BN h9_ippsGcd_BN
#define ippsModInv_BN h9_ippsModInv_BN
#define ippsSetOctString_BN h9_ippsSetOctString_BN
#define ippsGetOctString_BN h9_ippsGetOctString_BN
#define ippsMontGetSize h9_ippsMontGetSize
#define ippsMontInit h9_ippsMontInit
#define ippsMontSet h9_ippsMontSet
#define ippsMontGet h9_ippsMontGet
#define ippsMontForm h9_ippsMontForm
#define ippsMontMul h9_ippsMontMul
#define ippsMontExp h9_ippsMontExp
#define ippsPRNGGetSize h9_ippsPRNGGetSize
#define ippsPRNGInit h9_ippsPRNGInit
#define ippsPRNGSetModulus h9_ippsPRNGSetModulus
#define ippsPRNGSetH0 h9_ippsPRNGSetH0
#define ippsPRNGSetAugment h9_ippsPRNGSetAugment
#define ippsPRNGSetSeed h9_ippsPRNGSetSeed
#define ippsPRNGGetSeed h9_ippsPRNGGetSeed
#define ippsPRNGen h9_ippsPRNGen
#define ippsPRNGen_BN h9_ippsPRNGen_BN
#define ippsPRNGenRDRAND h9_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN h9_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED h9_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN h9_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize h9_ippsPrimeGetSize
#define ippsPrimeInit h9_ippsPrimeInit
#define ippsPrimeGen h9_ippsPrimeGen
#define ippsPrimeTest h9_ippsPrimeTest
#define ippsPrimeGen_BN h9_ippsPrimeGen_BN
#define ippsPrimeTest_BN h9_ippsPrimeTest_BN
#define ippsPrimeGet h9_ippsPrimeGet
#define ippsPrimeGet_BN h9_ippsPrimeGet_BN
#define ippsPrimeSet h9_ippsPrimeSet
#define ippsPrimeSet_BN h9_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey h9_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey h9_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey h9_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey h9_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 h9_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 h9_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 h9_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 h9_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 h9_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 h9_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 h9_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 h9_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey h9_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey h9_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt h9_ippsRSA_Encrypt
#define ippsRSA_Decrypt h9_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys h9_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys h9_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP h9_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP h9_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf h9_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf h9_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 h9_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 h9_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS h9_ippsRSASign_PSS
#define ippsRSAVerify_PSS h9_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf h9_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf h9_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 h9_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 h9_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf h9_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf h9_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString h9_ippsDLGetResultString
#define ippsDLPGetSize h9_ippsDLPGetSize
#define ippsDLPInit h9_ippsDLPInit
#define ippsDLPPack h9_ippsDLPPack
#define ippsDLPUnpack h9_ippsDLPUnpack
#define ippsDLPSet h9_ippsDLPSet
#define ippsDLPGet h9_ippsDLPGet
#define ippsDLPSetDP h9_ippsDLPSetDP
#define ippsDLPGetDP h9_ippsDLPGetDP
#define ippsDLPGenKeyPair h9_ippsDLPGenKeyPair
#define ippsDLPPublicKey h9_ippsDLPPublicKey
#define ippsDLPValidateKeyPair h9_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair h9_ippsDLPSetKeyPair
#define ippsDLPSignDSA h9_ippsDLPSignDSA
#define ippsDLPVerifyDSA h9_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH h9_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA h9_ippsDLPGenerateDSA
#define ippsDLPValidateDSA h9_ippsDLPValidateDSA
#define ippsDLPGenerateDH h9_ippsDLPGenerateDH
#define ippsDLPValidateDH h9_ippsDLPValidateDH
#define ippsECCGetResultString h9_ippsECCGetResultString
#define ippsECCPGetSize h9_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 h9_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 h9_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 h9_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 h9_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 h9_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 h9_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 h9_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 h9_ippsECCPGetSizeStdSM2
#define ippsECCPInit h9_ippsECCPInit
#define ippsECCPInitStd128r1 h9_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 h9_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 h9_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 h9_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 h9_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 h9_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 h9_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 h9_ippsECCPInitStdSM2
#define ippsECCPSet h9_ippsECCPSet
#define ippsECCPSetStd h9_ippsECCPSetStd
#define ippsECCPSetStd128r1 h9_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 h9_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 h9_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 h9_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 h9_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 h9_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 h9_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 h9_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 h9_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 h9_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 h9_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 h9_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 h9_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 h9_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet h9_ippsECCPGet
#define ippsECCPGetOrderBitSize h9_ippsECCPGetOrderBitSize
#define ippsECCPValidate h9_ippsECCPValidate
#define ippsECCPPointGetSize h9_ippsECCPPointGetSize
#define ippsECCPPointInit h9_ippsECCPPointInit
#define ippsECCPSetPoint h9_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity h9_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint h9_ippsECCPGetPoint
#define ippsECCPCheckPoint h9_ippsECCPCheckPoint
#define ippsECCPComparePoint h9_ippsECCPComparePoint
#define ippsECCPNegativePoint h9_ippsECCPNegativePoint
#define ippsECCPAddPoint h9_ippsECCPAddPoint
#define ippsECCPMulPointScalar h9_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair h9_ippsECCPGenKeyPair
#define ippsECCPPublicKey h9_ippsECCPPublicKey
#define ippsECCPValidateKeyPair h9_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair h9_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH h9_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC h9_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA h9_ippsECCPSignDSA
#define ippsECCPVerifyDSA h9_ippsECCPVerifyDSA
#define ippsECCPSignNR h9_ippsECCPSignNR
#define ippsECCPVerifyNR h9_ippsECCPVerifyNR
#define ippsECCPSignSM2 h9_ippsECCPSignSM2
#define ippsECCPVerifySM2 h9_ippsECCPVerifySM2
#define ippsGFpGetSize h9_ippsGFpGetSize
#define ippsGFpInitArbitrary h9_ippsGFpInitArbitrary
#define ippsGFpInitFixed h9_ippsGFpInitFixed
#define ippsGFpInit h9_ippsGFpInit
#define ippsGFpMethod_p192r1 h9_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 h9_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 h9_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 h9_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 h9_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 h9_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn h9_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 h9_ippsGFpMethod_p256
#define ippsGFpMethod_pArb h9_ippsGFpMethod_pArb
#define ippsGFpxGetSize h9_ippsGFpxGetSize
#define ippsGFpxInit h9_ippsGFpxInit
#define ippsGFpxInitBinomial h9_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 h9_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 h9_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 h9_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 h9_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom h9_ippsGFpxMethod_binom
#define ippsGFpxMethod_com h9_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize h9_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize h9_ippsGFpElementGetSize
#define ippsGFpElementInit h9_ippsGFpElementInit
#define ippsGFpSetElement h9_ippsGFpSetElement
#define ippsGFpSetElementRegular h9_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString h9_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom h9_ippsGFpSetElementRandom
#define ippsGFpSetElementHash h9_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf h9_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement h9_ippsGFpCpyElement
#define ippsGFpGetElement h9_ippsGFpGetElement
#define ippsGFpGetElementOctString h9_ippsGFpGetElementOctString
#define ippsGFpCmpElement h9_ippsGFpCmpElement
#define ippsGFpIsZeroElement h9_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement h9_ippsGFpIsUnityElement
#define ippsGFpConj h9_ippsGFpConj
#define ippsGFpNeg h9_ippsGFpNeg
#define ippsGFpInv h9_ippsGFpInv
#define ippsGFpSqrt h9_ippsGFpSqrt
#define ippsGFpSqr h9_ippsGFpSqr
#define ippsGFpAdd h9_ippsGFpAdd
#define ippsGFpSub h9_ippsGFpSub
#define ippsGFpMul h9_ippsGFpMul
#define ippsGFpExp h9_ippsGFpExp
#define ippsGFpMultiExp h9_ippsGFpMultiExp
#define ippsGFpAdd_PE h9_ippsGFpAdd_PE
#define ippsGFpSub_PE h9_ippsGFpSub_PE
#define ippsGFpMul_PE h9_ippsGFpMul_PE
#define ippsGFpGetInfo h9_ippsGFpGetInfo
#define ippsGFpECGetSize h9_ippsGFpECGetSize
#define ippsGFpECInit h9_ippsGFpECInit
#define ippsGFpECSet h9_ippsGFpECSet
#define ippsGFpECSetSubgroup h9_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 h9_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 h9_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 h9_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 h9_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 h9_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 h9_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 h9_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 h9_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 h9_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 h9_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 h9_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 h9_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 h9_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 h9_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 h9_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet h9_ippsGFpECGet
#define ippsGFpECGetSubgroup h9_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize h9_ippsGFpECScratchBufferSize
#define ippsGFpECVerify h9_ippsGFpECVerify
#define ippsGFpECPointGetSize h9_ippsGFpECPointGetSize
#define ippsGFpECPointInit h9_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity h9_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint h9_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular h9_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom h9_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint h9_ippsGFpECMakePoint
#define ippsGFpECSetPointHash h9_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible h9_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf h9_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf h9_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint h9_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular h9_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString h9_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString h9_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint h9_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup h9_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint h9_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint h9_ippsGFpECCmpPoint
#define ippsGFpECNegPoint h9_ippsGFpECNegPoint
#define ippsGFpECAddPoint h9_ippsGFpECAddPoint
#define ippsGFpECMulPoint h9_ippsGFpECMulPoint
#define ippsGFpECPrivateKey h9_ippsGFpECPrivateKey
#define ippsGFpECPublicKey h9_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair h9_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH h9_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC h9_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 h9_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA h9_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA h9_ippsGFpECVerifyDSA
#define ippsGFpECSignNR h9_ippsGFpECSignNR
#define ippsGFpECVerifyNR h9_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 h9_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 h9_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 h9_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize h9_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init h9_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup h9_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey h9_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm h9_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF h9_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 h9_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 h9_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 h9_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 h9_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 h9_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 h9_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 h9_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 h9_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize h9_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext h9_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize h9_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext h9_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion k0_ippcpGetLibVersion
#define ippsDESGetSize k0_ippsDESGetSize
#define ippsDESInit k0_ippsDESInit
#define ippsDESPack k0_ippsDESPack
#define ippsDESUnpack k0_ippsDESUnpack
#define ippsTDESEncryptECB k0_ippsTDESEncryptECB
#define ippsTDESDecryptECB k0_ippsTDESDecryptECB
#define ippsTDESEncryptCBC k0_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC k0_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB k0_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB k0_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB k0_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB k0_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR k0_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR k0_ippsTDESDecryptCTR
#define ippsAESGetSize k0_ippsAESGetSize
#define ippsAESInit k0_ippsAESInit
#define ippsAESSetKey k0_ippsAESSetKey
#define ippsAESPack k0_ippsAESPack
#define ippsAESUnpack k0_ippsAESUnpack
#define ippsAESEncryptECB k0_ippsAESEncryptECB
#define ippsAESDecryptECB k0_ippsAESDecryptECB
#define ippsAESEncryptCBC k0_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 k0_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 k0_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 k0_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC k0_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 k0_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 k0_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 k0_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB k0_ippsAESEncryptCFB
#define ippsAESDecryptCFB k0_ippsAESDecryptCFB
#define ippsAESEncryptOFB k0_ippsAESEncryptOFB
#define ippsAESDecryptOFB k0_ippsAESDecryptOFB
#define ippsAESEncryptCTR k0_ippsAESEncryptCTR
#define ippsAESDecryptCTR k0_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct k0_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct k0_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise k0_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise k0_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise k0_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB k0_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize k0_ippsSMS4GetSize
#define ippsSMS4Init k0_ippsSMS4Init
#define ippsSMS4SetKey k0_ippsSMS4SetKey
#define ippsSMS4EncryptECB k0_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB k0_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC k0_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 k0_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 k0_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 k0_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC k0_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 k0_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 k0_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 k0_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB k0_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB k0_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB k0_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB k0_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR k0_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR k0_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize k0_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit k0_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen k0_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen k0_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart k0_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt k0_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt k0_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag k0_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize k0_ippsAES_CCMGetSize
#define ippsAES_CCMInit k0_ippsAES_CCMInit
#define ippsAES_CCMMessageLen k0_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen k0_ippsAES_CCMTagLen
#define ippsAES_CCMStart k0_ippsAES_CCMStart
#define ippsAES_CCMEncrypt k0_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt k0_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag k0_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize k0_ippsAES_GCMGetSize
#define ippsAES_GCMInit k0_ippsAES_GCMInit
#define ippsAES_GCMReinit k0_ippsAES_GCMReinit
#define ippsAES_GCMReset k0_ippsAES_GCMReset
#define ippsAES_GCMProcessIV k0_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD k0_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart k0_ippsAES_GCMStart
#define ippsAES_GCMEncrypt k0_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt k0_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag k0_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize k0_ippsAES_XTSGetSize
#define ippsAES_XTSInit k0_ippsAES_XTSInit
#define ippsAES_XTSEncrypt k0_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt k0_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC k0_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt k0_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt k0_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize k0_ippsAES_CMACGetSize
#define ippsAES_CMACInit k0_ippsAES_CMACInit
#define ippsAES_CMACUpdate k0_ippsAES_CMACUpdate
#define ippsAES_CMACFinal k0_ippsAES_CMACFinal
#define ippsAES_CMACGetTag k0_ippsAES_CMACGetTag
#define ippsARCFourCheckKey k0_ippsARCFourCheckKey
#define ippsARCFourGetSize k0_ippsARCFourGetSize
#define ippsARCFourInit k0_ippsARCFourInit
#define ippsARCFourReset k0_ippsARCFourReset
#define ippsARCFourPack k0_ippsARCFourPack
#define ippsARCFourUnpack k0_ippsARCFourUnpack
#define ippsARCFourEncrypt k0_ippsARCFourEncrypt
#define ippsARCFourDecrypt k0_ippsARCFourDecrypt
#define ippsSHA1GetSize k0_ippsSHA1GetSize
#define ippsSHA1Init k0_ippsSHA1Init
#define ippsSHA1Duplicate k0_ippsSHA1Duplicate
#define ippsSHA1Pack k0_ippsSHA1Pack
#define ippsSHA1Unpack k0_ippsSHA1Unpack
#define ippsSHA1Update k0_ippsSHA1Update
#define ippsSHA1GetTag k0_ippsSHA1GetTag
#define ippsSHA1Final k0_ippsSHA1Final
#define ippsSHA1MessageDigest k0_ippsSHA1MessageDigest
#define ippsSHA224GetSize k0_ippsSHA224GetSize
#define ippsSHA224Init k0_ippsSHA224Init
#define ippsSHA224Duplicate k0_ippsSHA224Duplicate
#define ippsSHA224Pack k0_ippsSHA224Pack
#define ippsSHA224Unpack k0_ippsSHA224Unpack
#define ippsSHA224Update k0_ippsSHA224Update
#define ippsSHA224GetTag k0_ippsSHA224GetTag
#define ippsSHA224Final k0_ippsSHA224Final
#define ippsSHA224MessageDigest k0_ippsSHA224MessageDigest
#define ippsSHA256GetSize k0_ippsSHA256GetSize
#define ippsSHA256Init k0_ippsSHA256Init
#define ippsSHA256Duplicate k0_ippsSHA256Duplicate
#define ippsSHA256Pack k0_ippsSHA256Pack
#define ippsSHA256Unpack k0_ippsSHA256Unpack
#define ippsSHA256Update k0_ippsSHA256Update
#define ippsSHA256GetTag k0_ippsSHA256GetTag
#define ippsSHA256Final k0_ippsSHA256Final
#define ippsSHA256MessageDigest k0_ippsSHA256MessageDigest
#define ippsSHA384GetSize k0_ippsSHA384GetSize
#define ippsSHA384Init k0_ippsSHA384Init
#define ippsSHA384Duplicate k0_ippsSHA384Duplicate
#define ippsSHA384Pack k0_ippsSHA384Pack
#define ippsSHA384Unpack k0_ippsSHA384Unpack
#define ippsSHA384Update k0_ippsSHA384Update
#define ippsSHA384GetTag k0_ippsSHA384GetTag
#define ippsSHA384Final k0_ippsSHA384Final
#define ippsSHA384MessageDigest k0_ippsSHA384MessageDigest
#define ippsSHA512GetSize k0_ippsSHA512GetSize
#define ippsSHA512Init k0_ippsSHA512Init
#define ippsSHA512Duplicate k0_ippsSHA512Duplicate
#define ippsSHA512Pack k0_ippsSHA512Pack
#define ippsSHA512Unpack k0_ippsSHA512Unpack
#define ippsSHA512Update k0_ippsSHA512Update
#define ippsSHA512GetTag k0_ippsSHA512GetTag
#define ippsSHA512Final k0_ippsSHA512Final
#define ippsSHA512MessageDigest k0_ippsSHA512MessageDigest
#define ippsMD5GetSize k0_ippsMD5GetSize
#define ippsMD5Init k0_ippsMD5Init
#define ippsMD5Duplicate k0_ippsMD5Duplicate
#define ippsMD5Pack k0_ippsMD5Pack
#define ippsMD5Unpack k0_ippsMD5Unpack
#define ippsMD5Update k0_ippsMD5Update
#define ippsMD5GetTag k0_ippsMD5GetTag
#define ippsMD5Final k0_ippsMD5Final
#define ippsMD5MessageDigest k0_ippsMD5MessageDigest
#define ippsSM3GetSize k0_ippsSM3GetSize
#define ippsSM3Init k0_ippsSM3Init
#define ippsSM3Duplicate k0_ippsSM3Duplicate
#define ippsSM3Pack k0_ippsSM3Pack
#define ippsSM3Unpack k0_ippsSM3Unpack
#define ippsSM3Update k0_ippsSM3Update
#define ippsSM3GetTag k0_ippsSM3GetTag
#define ippsSM3Final k0_ippsSM3Final
#define ippsSM3MessageDigest k0_ippsSM3MessageDigest
#define ippsHashGetSize k0_ippsHashGetSize
#define ippsHashInit k0_ippsHashInit
#define ippsHashPack k0_ippsHashPack
#define ippsHashUnpack k0_ippsHashUnpack
#define ippsHashDuplicate k0_ippsHashDuplicate
#define ippsHashUpdate k0_ippsHashUpdate
#define ippsHashGetTag k0_ippsHashGetTag
#define ippsHashFinal k0_ippsHashFinal
#define ippsHashMessage k0_ippsHashMessage
#define ippsHashMethod_MD5 k0_ippsHashMethod_MD5
#define ippsHashMethod_SM3 k0_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 k0_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI k0_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT k0_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 k0_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI k0_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT k0_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 k0_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI k0_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT k0_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 k0_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 k0_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 k0_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 k0_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize k0_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 k0_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 k0_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 k0_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 k0_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI k0_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT k0_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 k0_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI k0_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT k0_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 k0_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI k0_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT k0_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 k0_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI k0_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT k0_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 k0_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI k0_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT k0_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 k0_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 k0_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 k0_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 k0_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 k0_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 k0_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 k0_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 k0_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf k0_ippsHashGetSize_rmf
#define ippsHashInit_rmf k0_ippsHashInit_rmf
#define ippsHashPack_rmf k0_ippsHashPack_rmf
#define ippsHashUnpack_rmf k0_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf k0_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf k0_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf k0_ippsHashGetTag_rmf
#define ippsHashFinal_rmf k0_ippsHashFinal_rmf
#define ippsHashMessage_rmf k0_ippsHashMessage_rmf
#define ippsHashMethodGetInfo k0_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf k0_ippsHashGetInfo_rmf
#define ippsMGF k0_ippsMGF
#define ippsMGF1_rmf k0_ippsMGF1_rmf
#define ippsMGF2_rmf k0_ippsMGF2_rmf
#define ippsHMAC_GetSize k0_ippsHMAC_GetSize
#define ippsHMAC_Init k0_ippsHMAC_Init
#define ippsHMAC_Pack k0_ippsHMAC_Pack
#define ippsHMAC_Unpack k0_ippsHMAC_Unpack
#define ippsHMAC_Duplicate k0_ippsHMAC_Duplicate
#define ippsHMAC_Update k0_ippsHMAC_Update
#define ippsHMAC_Final k0_ippsHMAC_Final
#define ippsHMAC_GetTag k0_ippsHMAC_GetTag
#define ippsHMAC_Message k0_ippsHMAC_Message
#define ippsHMACGetSize_rmf k0_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf k0_ippsHMACInit_rmf
#define ippsHMACPack_rmf k0_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf k0_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf k0_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf k0_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf k0_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf k0_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf k0_ippsHMACMessage_rmf
#define ippsBigNumGetSize k0_ippsBigNumGetSize
#define ippsBigNumInit k0_ippsBigNumInit
#define ippsCmpZero_BN k0_ippsCmpZero_BN
#define ippsCmp_BN k0_ippsCmp_BN
#define ippsGetSize_BN k0_ippsGetSize_BN
#define ippsSet_BN k0_ippsSet_BN
#define ippsGet_BN k0_ippsGet_BN
#define ippsRef_BN k0_ippsRef_BN
#define ippsExtGet_BN k0_ippsExtGet_BN
#define ippsAdd_BN k0_ippsAdd_BN
#define ippsSub_BN k0_ippsSub_BN
#define ippsMul_BN k0_ippsMul_BN
#define ippsMAC_BN_I k0_ippsMAC_BN_I
#define ippsDiv_BN k0_ippsDiv_BN
#define ippsMod_BN k0_ippsMod_BN
#define ippsGcd_BN k0_ippsGcd_BN
#define ippsModInv_BN k0_ippsModInv_BN
#define ippsSetOctString_BN k0_ippsSetOctString_BN
#define ippsGetOctString_BN k0_ippsGetOctString_BN
#define ippsMontGetSize k0_ippsMontGetSize
#define ippsMontInit k0_ippsMontInit
#define ippsMontSet k0_ippsMontSet
#define ippsMontGet k0_ippsMontGet
#define ippsMontForm k0_ippsMontForm
#define ippsMontMul k0_ippsMontMul
#define ippsMontExp k0_ippsMontExp
#define ippsPRNGGetSize k0_ippsPRNGGetSize
#define ippsPRNGInit k0_ippsPRNGInit
#define ippsPRNGSetModulus k0_ippsPRNGSetModulus
#define ippsPRNGSetH0 k0_ippsPRNGSetH0
#define ippsPRNGSetAugment k0_ippsPRNGSetAugment
#define ippsPRNGSetSeed k0_ippsPRNGSetSeed
#define ippsPRNGGetSeed k0_ippsPRNGGetSeed
#define ippsPRNGen k0_ippsPRNGen
#define ippsPRNGen_BN k0_ippsPRNGen_BN
#define ippsPRNGenRDRAND k0_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN k0_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED k0_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN k0_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize k0_ippsPrimeGetSize
#define ippsPrimeInit k0_ippsPrimeInit
#define ippsPrimeGen k0_ippsPrimeGen
#define ippsPrimeTest k0_ippsPrimeTest
#define ippsPrimeGen_BN k0_ippsPrimeGen_BN
#define ippsPrimeTest_BN k0_ippsPrimeTest_BN
#define ippsPrimeGet k0_ippsPrimeGet
#define ippsPrimeGet_BN k0_ippsPrimeGet_BN
#define ippsPrimeSet k0_ippsPrimeSet
#define ippsPrimeSet_BN k0_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey k0_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey k0_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey k0_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey k0_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 k0_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 k0_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 k0_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 k0_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 k0_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 k0_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 k0_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 k0_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey k0_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey k0_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt k0_ippsRSA_Encrypt
#define ippsRSA_Decrypt k0_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys k0_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys k0_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP k0_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP k0_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf k0_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf k0_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 k0_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 k0_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS k0_ippsRSASign_PSS
#define ippsRSAVerify_PSS k0_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf k0_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf k0_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 k0_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 k0_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf k0_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf k0_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString k0_ippsDLGetResultString
#define ippsDLPGetSize k0_ippsDLPGetSize
#define ippsDLPInit k0_ippsDLPInit
#define ippsDLPPack k0_ippsDLPPack
#define ippsDLPUnpack k0_ippsDLPUnpack
#define ippsDLPSet k0_ippsDLPSet
#define ippsDLPGet k0_ippsDLPGet
#define ippsDLPSetDP k0_ippsDLPSetDP
#define ippsDLPGetDP k0_ippsDLPGetDP
#define ippsDLPGenKeyPair k0_ippsDLPGenKeyPair
#define ippsDLPPublicKey k0_ippsDLPPublicKey
#define ippsDLPValidateKeyPair k0_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair k0_ippsDLPSetKeyPair
#define ippsDLPSignDSA k0_ippsDLPSignDSA
#define ippsDLPVerifyDSA k0_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH k0_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA k0_ippsDLPGenerateDSA
#define ippsDLPValidateDSA k0_ippsDLPValidateDSA
#define ippsDLPGenerateDH k0_ippsDLPGenerateDH
#define ippsDLPValidateDH k0_ippsDLPValidateDH
#define ippsECCGetResultString k0_ippsECCGetResultString
#define ippsECCPGetSize k0_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 k0_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 k0_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 k0_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 k0_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 k0_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 k0_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 k0_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 k0_ippsECCPGetSizeStdSM2
#define ippsECCPInit k0_ippsECCPInit
#define ippsECCPInitStd128r1 k0_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 k0_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 k0_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 k0_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 k0_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 k0_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 k0_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 k0_ippsECCPInitStdSM2
#define ippsECCPSet k0_ippsECCPSet
#define ippsECCPSetStd k0_ippsECCPSetStd
#define ippsECCPSetStd128r1 k0_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 k0_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 k0_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 k0_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 k0_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 k0_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 k0_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 k0_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 k0_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 k0_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 k0_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 k0_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 k0_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 k0_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet k0_ippsECCPGet
#define ippsECCPGetOrderBitSize k0_ippsECCPGetOrderBitSize
#define ippsECCPValidate k0_ippsECCPValidate
#define ippsECCPPointGetSize k0_ippsECCPPointGetSize
#define ippsECCPPointInit k0_ippsECCPPointInit
#define ippsECCPSetPoint k0_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity k0_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint k0_ippsECCPGetPoint
#define ippsECCPCheckPoint k0_ippsECCPCheckPoint
#define ippsECCPComparePoint k0_ippsECCPComparePoint
#define ippsECCPNegativePoint k0_ippsECCPNegativePoint
#define ippsECCPAddPoint k0_ippsECCPAddPoint
#define ippsECCPMulPointScalar k0_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair k0_ippsECCPGenKeyPair
#define ippsECCPPublicKey k0_ippsECCPPublicKey
#define ippsECCPValidateKeyPair k0_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair k0_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH k0_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC k0_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA k0_ippsECCPSignDSA
#define ippsECCPVerifyDSA k0_ippsECCPVerifyDSA
#define ippsECCPSignNR k0_ippsECCPSignNR
#define ippsECCPVerifyNR k0_ippsECCPVerifyNR
#define ippsECCPSignSM2 k0_ippsECCPSignSM2
#define ippsECCPVerifySM2 k0_ippsECCPVerifySM2
#define ippsGFpGetSize k0_ippsGFpGetSize
#define ippsGFpInitArbitrary k0_ippsGFpInitArbitrary
#define ippsGFpInitFixed k0_ippsGFpInitFixed
#define ippsGFpInit k0_ippsGFpInit
#define ippsGFpMethod_p192r1 k0_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 k0_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 k0_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 k0_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 k0_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 k0_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn k0_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 k0_ippsGFpMethod_p256
#define ippsGFpMethod_pArb k0_ippsGFpMethod_pArb
#define ippsGFpxGetSize k0_ippsGFpxGetSize
#define ippsGFpxInit k0_ippsGFpxInit
#define ippsGFpxInitBinomial k0_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 k0_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 k0_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 k0_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 k0_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom k0_ippsGFpxMethod_binom
#define ippsGFpxMethod_com k0_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize k0_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize k0_ippsGFpElementGetSize
#define ippsGFpElementInit k0_ippsGFpElementInit
#define ippsGFpSetElement k0_ippsGFpSetElement
#define ippsGFpSetElementRegular k0_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString k0_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom k0_ippsGFpSetElementRandom
#define ippsGFpSetElementHash k0_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf k0_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement k0_ippsGFpCpyElement
#define ippsGFpGetElement k0_ippsGFpGetElement
#define ippsGFpGetElementOctString k0_ippsGFpGetElementOctString
#define ippsGFpCmpElement k0_ippsGFpCmpElement
#define ippsGFpIsZeroElement k0_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement k0_ippsGFpIsUnityElement
#define ippsGFpConj k0_ippsGFpConj
#define ippsGFpNeg k0_ippsGFpNeg
#define ippsGFpInv k0_ippsGFpInv
#define ippsGFpSqrt k0_ippsGFpSqrt
#define ippsGFpSqr k0_ippsGFpSqr
#define ippsGFpAdd k0_ippsGFpAdd
#define ippsGFpSub k0_ippsGFpSub
#define ippsGFpMul k0_ippsGFpMul
#define ippsGFpExp k0_ippsGFpExp
#define ippsGFpMultiExp k0_ippsGFpMultiExp
#define ippsGFpAdd_PE k0_ippsGFpAdd_PE
#define ippsGFpSub_PE k0_ippsGFpSub_PE
#define ippsGFpMul_PE k0_ippsGFpMul_PE
#define ippsGFpGetInfo k0_ippsGFpGetInfo
#define ippsGFpECGetSize k0_ippsGFpECGetSize
#define ippsGFpECInit k0_ippsGFpECInit
#define ippsGFpECSet k0_ippsGFpECSet
#define ippsGFpECSetSubgroup k0_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 k0_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 k0_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 k0_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 k0_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 k0_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 k0_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 k0_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 k0_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 k0_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 k0_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 k0_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 k0_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 k0_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 k0_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 k0_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet k0_ippsGFpECGet
#define ippsGFpECGetSubgroup k0_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize k0_ippsGFpECScratchBufferSize
#define ippsGFpECVerify k0_ippsGFpECVerify
#define ippsGFpECPointGetSize k0_ippsGFpECPointGetSize
#define ippsGFpECPointInit k0_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity k0_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint k0_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular k0_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom k0_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint k0_ippsGFpECMakePoint
#define ippsGFpECSetPointHash k0_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible k0_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf k0_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf k0_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint k0_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular k0_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString k0_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString k0_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint k0_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup k0_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint k0_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint k0_ippsGFpECCmpPoint
#define ippsGFpECNegPoint k0_ippsGFpECNegPoint
#define ippsGFpECAddPoint k0_ippsGFpECAddPoint
#define ippsGFpECMulPoint k0_ippsGFpECMulPoint
#define ippsGFpECPrivateKey k0_ippsGFpECPrivateKey
#define ippsGFpECPublicKey k0_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair k0_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH k0_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC k0_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 k0_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA k0_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA k0_ippsGFpECVerifyDSA
#define ippsGFpECSignNR k0_ippsGFpECSignNR
#define ippsGFpECVerifyNR k0_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 k0_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 k0_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 k0_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize k0_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init k0_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup k0_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey k0_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm k0_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF k0_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 k0_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 k0_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 k0_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 k0_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 k0_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 k0_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 k0_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 k0_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize k0_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext k0_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize k0_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext k0_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion k1_ippcpGetLibVersion
#define ippsDESGetSize k1_ippsDESGetSize
#define ippsDESInit k1_ippsDESInit
#define ippsDESPack k1_ippsDESPack
#define ippsDESUnpack k1_ippsDESUnpack
#define ippsTDESEncryptECB k1_ippsTDESEncryptECB
#define ippsTDESDecryptECB k1_ippsTDESDecryptECB
#define ippsTDESEncryptCBC k1_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC k1_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB k1_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB k1_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB k1_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB k1_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR k1_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR k1_ippsTDESDecryptCTR
#define ippsAESGetSize k1_ippsAESGetSize
#define ippsAESInit k1_ippsAESInit
#define ippsAESSetKey k1_ippsAESSetKey
#define ippsAESPack k1_ippsAESPack
#define ippsAESUnpack k1_ippsAESUnpack
#define ippsAESEncryptECB k1_ippsAESEncryptECB
#define ippsAESDecryptECB k1_ippsAESDecryptECB
#define ippsAESEncryptCBC k1_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 k1_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 k1_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 k1_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC k1_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 k1_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 k1_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 k1_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB k1_ippsAESEncryptCFB
#define ippsAESDecryptCFB k1_ippsAESDecryptCFB
#define ippsAESEncryptOFB k1_ippsAESEncryptOFB
#define ippsAESDecryptOFB k1_ippsAESDecryptOFB
#define ippsAESEncryptCTR k1_ippsAESEncryptCTR
#define ippsAESDecryptCTR k1_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct k1_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct k1_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise k1_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise k1_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise k1_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB k1_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize k1_ippsSMS4GetSize
#define ippsSMS4Init k1_ippsSMS4Init
#define ippsSMS4SetKey k1_ippsSMS4SetKey
#define ippsSMS4EncryptECB k1_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB k1_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC k1_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 k1_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 k1_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 k1_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC k1_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 k1_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 k1_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 k1_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB k1_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB k1_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB k1_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB k1_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR k1_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR k1_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize k1_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit k1_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen k1_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen k1_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart k1_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt k1_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt k1_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag k1_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize k1_ippsAES_CCMGetSize
#define ippsAES_CCMInit k1_ippsAES_CCMInit
#define ippsAES_CCMMessageLen k1_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen k1_ippsAES_CCMTagLen
#define ippsAES_CCMStart k1_ippsAES_CCMStart
#define ippsAES_CCMEncrypt k1_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt k1_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag k1_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize k1_ippsAES_GCMGetSize
#define ippsAES_GCMInit k1_ippsAES_GCMInit
#define ippsAES_GCMReinit k1_ippsAES_GCMReinit
#define ippsAES_GCMReset k1_ippsAES_GCMReset
#define ippsAES_GCMProcessIV k1_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD k1_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart k1_ippsAES_GCMStart
#define ippsAES_GCMEncrypt k1_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt k1_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag k1_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize k1_ippsAES_XTSGetSize
#define ippsAES_XTSInit k1_ippsAES_XTSInit
#define ippsAES_XTSEncrypt k1_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt k1_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC k1_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt k1_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt k1_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize k1_ippsAES_CMACGetSize
#define ippsAES_CMACInit k1_ippsAES_CMACInit
#define ippsAES_CMACUpdate k1_ippsAES_CMACUpdate
#define ippsAES_CMACFinal k1_ippsAES_CMACFinal
#define ippsAES_CMACGetTag k1_ippsAES_CMACGetTag
#define ippsARCFourCheckKey k1_ippsARCFourCheckKey
#define ippsARCFourGetSize k1_ippsARCFourGetSize
#define ippsARCFourInit k1_ippsARCFourInit
#define ippsARCFourReset k1_ippsARCFourReset
#define ippsARCFourPack k1_ippsARCFourPack
#define ippsARCFourUnpack k1_ippsARCFourUnpack
#define ippsARCFourEncrypt k1_ippsARCFourEncrypt
#define ippsARCFourDecrypt k1_ippsARCFourDecrypt
#define ippsSHA1GetSize k1_ippsSHA1GetSize
#define ippsSHA1Init k1_ippsSHA1Init
#define ippsSHA1Duplicate k1_ippsSHA1Duplicate
#define ippsSHA1Pack k1_ippsSHA1Pack
#define ippsSHA1Unpack k1_ippsSHA1Unpack
#define ippsSHA1Update k1_ippsSHA1Update
#define ippsSHA1GetTag k1_ippsSHA1GetTag
#define ippsSHA1Final k1_ippsSHA1Final
#define ippsSHA1MessageDigest k1_ippsSHA1MessageDigest
#define ippsSHA224GetSize k1_ippsSHA224GetSize
#define ippsSHA224Init k1_ippsSHA224Init
#define ippsSHA224Duplicate k1_ippsSHA224Duplicate
#define ippsSHA224Pack k1_ippsSHA224Pack
#define ippsSHA224Unpack k1_ippsSHA224Unpack
#define ippsSHA224Update k1_ippsSHA224Update
#define ippsSHA224GetTag k1_ippsSHA224GetTag
#define ippsSHA224Final k1_ippsSHA224Final
#define ippsSHA224MessageDigest k1_ippsSHA224MessageDigest
#define ippsSHA256GetSize k1_ippsSHA256GetSize
#define ippsSHA256Init k1_ippsSHA256Init
#define ippsSHA256Duplicate k1_ippsSHA256Duplicate
#define ippsSHA256Pack k1_ippsSHA256Pack
#define ippsSHA256Unpack k1_ippsSHA256Unpack
#define ippsSHA256Update k1_ippsSHA256Update
#define ippsSHA256GetTag k1_ippsSHA256GetTag
#define ippsSHA256Final k1_ippsSHA256Final
#define ippsSHA256MessageDigest k1_ippsSHA256MessageDigest
#define ippsSHA384GetSize k1_ippsSHA384GetSize
#define ippsSHA384Init k1_ippsSHA384Init
#define ippsSHA384Duplicate k1_ippsSHA384Duplicate
#define ippsSHA384Pack k1_ippsSHA384Pack
#define ippsSHA384Unpack k1_ippsSHA384Unpack
#define ippsSHA384Update k1_ippsSHA384Update
#define ippsSHA384GetTag k1_ippsSHA384GetTag
#define ippsSHA384Final k1_ippsSHA384Final
#define ippsSHA384MessageDigest k1_ippsSHA384MessageDigest
#define ippsSHA512GetSize k1_ippsSHA512GetSize
#define ippsSHA512Init k1_ippsSHA512Init
#define ippsSHA512Duplicate k1_ippsSHA512Duplicate
#define ippsSHA512Pack k1_ippsSHA512Pack
#define ippsSHA512Unpack k1_ippsSHA512Unpack
#define ippsSHA512Update k1_ippsSHA512Update
#define ippsSHA512GetTag k1_ippsSHA512GetTag
#define ippsSHA512Final k1_ippsSHA512Final
#define ippsSHA512MessageDigest k1_ippsSHA512MessageDigest
#define ippsMD5GetSize k1_ippsMD5GetSize
#define ippsMD5Init k1_ippsMD5Init
#define ippsMD5Duplicate k1_ippsMD5Duplicate
#define ippsMD5Pack k1_ippsMD5Pack
#define ippsMD5Unpack k1_ippsMD5Unpack
#define ippsMD5Update k1_ippsMD5Update
#define ippsMD5GetTag k1_ippsMD5GetTag
#define ippsMD5Final k1_ippsMD5Final
#define ippsMD5MessageDigest k1_ippsMD5MessageDigest
#define ippsSM3GetSize k1_ippsSM3GetSize
#define ippsSM3Init k1_ippsSM3Init
#define ippsSM3Duplicate k1_ippsSM3Duplicate
#define ippsSM3Pack k1_ippsSM3Pack
#define ippsSM3Unpack k1_ippsSM3Unpack
#define ippsSM3Update k1_ippsSM3Update
#define ippsSM3GetTag k1_ippsSM3GetTag
#define ippsSM3Final k1_ippsSM3Final
#define ippsSM3MessageDigest k1_ippsSM3MessageDigest
#define ippsHashGetSize k1_ippsHashGetSize
#define ippsHashInit k1_ippsHashInit
#define ippsHashPack k1_ippsHashPack
#define ippsHashUnpack k1_ippsHashUnpack
#define ippsHashDuplicate k1_ippsHashDuplicate
#define ippsHashUpdate k1_ippsHashUpdate
#define ippsHashGetTag k1_ippsHashGetTag
#define ippsHashFinal k1_ippsHashFinal
#define ippsHashMessage k1_ippsHashMessage
#define ippsHashMethod_MD5 k1_ippsHashMethod_MD5
#define ippsHashMethod_SM3 k1_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 k1_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI k1_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT k1_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 k1_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI k1_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT k1_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 k1_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI k1_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT k1_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 k1_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 k1_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 k1_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 k1_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize k1_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 k1_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 k1_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 k1_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 k1_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI k1_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT k1_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 k1_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI k1_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT k1_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 k1_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI k1_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT k1_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 k1_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI k1_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT k1_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 k1_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI k1_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT k1_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 k1_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 k1_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 k1_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 k1_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 k1_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 k1_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 k1_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 k1_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf k1_ippsHashGetSize_rmf
#define ippsHashInit_rmf k1_ippsHashInit_rmf
#define ippsHashPack_rmf k1_ippsHashPack_rmf
#define ippsHashUnpack_rmf k1_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf k1_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf k1_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf k1_ippsHashGetTag_rmf
#define ippsHashFinal_rmf k1_ippsHashFinal_rmf
#define ippsHashMessage_rmf k1_ippsHashMessage_rmf
#define ippsHashMethodGetInfo k1_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf k1_ippsHashGetInfo_rmf
#define ippsMGF k1_ippsMGF
#define ippsMGF1_rmf k1_ippsMGF1_rmf
#define ippsMGF2_rmf k1_ippsMGF2_rmf
#define ippsHMAC_GetSize k1_ippsHMAC_GetSize
#define ippsHMAC_Init k1_ippsHMAC_Init
#define ippsHMAC_Pack k1_ippsHMAC_Pack
#define ippsHMAC_Unpack k1_ippsHMAC_Unpack
#define ippsHMAC_Duplicate k1_ippsHMAC_Duplicate
#define ippsHMAC_Update k1_ippsHMAC_Update
#define ippsHMAC_Final k1_ippsHMAC_Final
#define ippsHMAC_GetTag k1_ippsHMAC_GetTag
#define ippsHMAC_Message k1_ippsHMAC_Message
#define ippsHMACGetSize_rmf k1_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf k1_ippsHMACInit_rmf
#define ippsHMACPack_rmf k1_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf k1_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf k1_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf k1_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf k1_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf k1_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf k1_ippsHMACMessage_rmf
#define ippsBigNumGetSize k1_ippsBigNumGetSize
#define ippsBigNumInit k1_ippsBigNumInit
#define ippsCmpZero_BN k1_ippsCmpZero_BN
#define ippsCmp_BN k1_ippsCmp_BN
#define ippsGetSize_BN k1_ippsGetSize_BN
#define ippsSet_BN k1_ippsSet_BN
#define ippsGet_BN k1_ippsGet_BN
#define ippsRef_BN k1_ippsRef_BN
#define ippsExtGet_BN k1_ippsExtGet_BN
#define ippsAdd_BN k1_ippsAdd_BN
#define ippsSub_BN k1_ippsSub_BN
#define ippsMul_BN k1_ippsMul_BN
#define ippsMAC_BN_I k1_ippsMAC_BN_I
#define ippsDiv_BN k1_ippsDiv_BN
#define ippsMod_BN k1_ippsMod_BN
#define ippsGcd_BN k1_ippsGcd_BN
#define ippsModInv_BN k1_ippsModInv_BN
#define ippsSetOctString_BN k1_ippsSetOctString_BN
#define ippsGetOctString_BN k1_ippsGetOctString_BN
#define ippsMontGetSize k1_ippsMontGetSize
#define ippsMontInit k1_ippsMontInit
#define ippsMontSet k1_ippsMontSet
#define ippsMontGet k1_ippsMontGet
#define ippsMontForm k1_ippsMontForm
#define ippsMontMul k1_ippsMontMul
#define ippsMontExp k1_ippsMontExp
#define ippsPRNGGetSize k1_ippsPRNGGetSize
#define ippsPRNGInit k1_ippsPRNGInit
#define ippsPRNGSetModulus k1_ippsPRNGSetModulus
#define ippsPRNGSetH0 k1_ippsPRNGSetH0
#define ippsPRNGSetAugment k1_ippsPRNGSetAugment
#define ippsPRNGSetSeed k1_ippsPRNGSetSeed
#define ippsPRNGGetSeed k1_ippsPRNGGetSeed
#define ippsPRNGen k1_ippsPRNGen
#define ippsPRNGen_BN k1_ippsPRNGen_BN
#define ippsPRNGenRDRAND k1_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN k1_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED k1_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN k1_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize k1_ippsPrimeGetSize
#define ippsPrimeInit k1_ippsPrimeInit
#define ippsPrimeGen k1_ippsPrimeGen
#define ippsPrimeTest k1_ippsPrimeTest
#define ippsPrimeGen_BN k1_ippsPrimeGen_BN
#define ippsPrimeTest_BN k1_ippsPrimeTest_BN
#define ippsPrimeGet k1_ippsPrimeGet
#define ippsPrimeGet_BN k1_ippsPrimeGet_BN
#define ippsPrimeSet k1_ippsPrimeSet
#define ippsPrimeSet_BN k1_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey k1_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey k1_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey k1_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey k1_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 k1_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 k1_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 k1_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 k1_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 k1_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 k1_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 k1_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 k1_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey k1_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey k1_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt k1_ippsRSA_Encrypt
#define ippsRSA_Decrypt k1_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys k1_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys k1_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP k1_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP k1_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf k1_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf k1_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 k1_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 k1_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS k1_ippsRSASign_PSS
#define ippsRSAVerify_PSS k1_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf k1_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf k1_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 k1_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 k1_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf k1_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf k1_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString k1_ippsDLGetResultString
#define ippsDLPGetSize k1_ippsDLPGetSize
#define ippsDLPInit k1_ippsDLPInit
#define ippsDLPPack k1_ippsDLPPack
#define ippsDLPUnpack k1_ippsDLPUnpack
#define ippsDLPSet k1_ippsDLPSet
#define ippsDLPGet k1_ippsDLPGet
#define ippsDLPSetDP k1_ippsDLPSetDP
#define ippsDLPGetDP k1_ippsDLPGetDP
#define ippsDLPGenKeyPair k1_ippsDLPGenKeyPair
#define ippsDLPPublicKey k1_ippsDLPPublicKey
#define ippsDLPValidateKeyPair k1_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair k1_ippsDLPSetKeyPair
#define ippsDLPSignDSA k1_ippsDLPSignDSA
#define ippsDLPVerifyDSA k1_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH k1_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA k1_ippsDLPGenerateDSA
#define ippsDLPValidateDSA k1_ippsDLPValidateDSA
#define ippsDLPGenerateDH k1_ippsDLPGenerateDH
#define ippsDLPValidateDH k1_ippsDLPValidateDH
#define ippsECCGetResultString k1_ippsECCGetResultString
#define ippsECCPGetSize k1_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 k1_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 k1_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 k1_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 k1_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 k1_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 k1_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 k1_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 k1_ippsECCPGetSizeStdSM2
#define ippsECCPInit k1_ippsECCPInit
#define ippsECCPInitStd128r1 k1_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 k1_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 k1_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 k1_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 k1_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 k1_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 k1_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 k1_ippsECCPInitStdSM2
#define ippsECCPSet k1_ippsECCPSet
#define ippsECCPSetStd k1_ippsECCPSetStd
#define ippsECCPSetStd128r1 k1_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 k1_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 k1_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 k1_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 k1_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 k1_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 k1_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 k1_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 k1_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 k1_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 k1_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 k1_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 k1_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 k1_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet k1_ippsECCPGet
#define ippsECCPGetOrderBitSize k1_ippsECCPGetOrderBitSize
#define ippsECCPValidate k1_ippsECCPValidate
#define ippsECCPPointGetSize k1_ippsECCPPointGetSize
#define ippsECCPPointInit k1_ippsECCPPointInit
#define ippsECCPSetPoint k1_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity k1_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint k1_ippsECCPGetPoint
#define ippsECCPCheckPoint k1_ippsECCPCheckPoint
#define ippsECCPComparePoint k1_ippsECCPComparePoint
#define ippsECCPNegativePoint k1_ippsECCPNegativePoint
#define ippsECCPAddPoint k1_ippsECCPAddPoint
#define ippsECCPMulPointScalar k1_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair k1_ippsECCPGenKeyPair
#define ippsECCPPublicKey k1_ippsECCPPublicKey
#define ippsECCPValidateKeyPair k1_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair k1_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH k1_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC k1_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA k1_ippsECCPSignDSA
#define ippsECCPVerifyDSA k1_ippsECCPVerifyDSA
#define ippsECCPSignNR k1_ippsECCPSignNR
#define ippsECCPVerifyNR k1_ippsECCPVerifyNR
#define ippsECCPSignSM2 k1_ippsECCPSignSM2
#define ippsECCPVerifySM2 k1_ippsECCPVerifySM2
#define ippsGFpGetSize k1_ippsGFpGetSize
#define ippsGFpInitArbitrary k1_ippsGFpInitArbitrary
#define ippsGFpInitFixed k1_ippsGFpInitFixed
#define ippsGFpInit k1_ippsGFpInit
#define ippsGFpMethod_p192r1 k1_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 k1_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 k1_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 k1_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 k1_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 k1_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn k1_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 k1_ippsGFpMethod_p256
#define ippsGFpMethod_pArb k1_ippsGFpMethod_pArb
#define ippsGFpxGetSize k1_ippsGFpxGetSize
#define ippsGFpxInit k1_ippsGFpxInit
#define ippsGFpxInitBinomial k1_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 k1_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 k1_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 k1_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 k1_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom k1_ippsGFpxMethod_binom
#define ippsGFpxMethod_com k1_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize k1_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize k1_ippsGFpElementGetSize
#define ippsGFpElementInit k1_ippsGFpElementInit
#define ippsGFpSetElement k1_ippsGFpSetElement
#define ippsGFpSetElementRegular k1_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString k1_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom k1_ippsGFpSetElementRandom
#define ippsGFpSetElementHash k1_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf k1_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement k1_ippsGFpCpyElement
#define ippsGFpGetElement k1_ippsGFpGetElement
#define ippsGFpGetElementOctString k1_ippsGFpGetElementOctString
#define ippsGFpCmpElement k1_ippsGFpCmpElement
#define ippsGFpIsZeroElement k1_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement k1_ippsGFpIsUnityElement
#define ippsGFpConj k1_ippsGFpConj
#define ippsGFpNeg k1_ippsGFpNeg
#define ippsGFpInv k1_ippsGFpInv
#define ippsGFpSqrt k1_ippsGFpSqrt
#define ippsGFpSqr k1_ippsGFpSqr
#define ippsGFpAdd k1_ippsGFpAdd
#define ippsGFpSub k1_ippsGFpSub
#define ippsGFpMul k1_ippsGFpMul
#define ippsGFpExp k1_ippsGFpExp
#define ippsGFpMultiExp k1_ippsGFpMultiExp
#define ippsGFpAdd_PE k1_ippsGFpAdd_PE
#define ippsGFpSub_PE k1_ippsGFpSub_PE
#define ippsGFpMul_PE k1_ippsGFpMul_PE
#define ippsGFpGetInfo k1_ippsGFpGetInfo
#define ippsGFpECGetSize k1_ippsGFpECGetSize
#define ippsGFpECInit k1_ippsGFpECInit
#define ippsGFpECSet k1_ippsGFpECSet
#define ippsGFpECSetSubgroup k1_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 k1_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 k1_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 k1_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 k1_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 k1_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 k1_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 k1_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 k1_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 k1_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 k1_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 k1_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 k1_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 k1_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 k1_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 k1_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet k1_ippsGFpECGet
#define ippsGFpECGetSubgroup k1_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize k1_ippsGFpECScratchBufferSize
#define ippsGFpECVerify k1_ippsGFpECVerify
#define ippsGFpECPointGetSize k1_ippsGFpECPointGetSize
#define ippsGFpECPointInit k1_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity k1_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint k1_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular k1_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom k1_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint k1_ippsGFpECMakePoint
#define ippsGFpECSetPointHash k1_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible k1_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf k1_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf k1_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint k1_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular k1_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString k1_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString k1_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint k1_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup k1_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint k1_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint k1_ippsGFpECCmpPoint
#define ippsGFpECNegPoint k1_ippsGFpECNegPoint
#define ippsGFpECAddPoint k1_ippsGFpECAddPoint
#define ippsGFpECMulPoint k1_ippsGFpECMulPoint
#define ippsGFpECPrivateKey k1_ippsGFpECPrivateKey
#define ippsGFpECPublicKey k1_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair k1_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH k1_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC k1_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 k1_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA k1_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA k1_ippsGFpECVerifyDSA
#define ippsGFpECSignNR k1_ippsGFpECSignNR
#define ippsGFpECVerifyNR k1_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 k1_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 k1_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 k1_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize k1_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init k1_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup k1_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey k1_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm k1_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF k1_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 k1_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 k1_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 k1_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 k1_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 k1_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 k1_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 k1_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 k1_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize k1_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext k1_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize k1_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext k1_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion l9_ippcpGetLibVersion
#define ippsDESGetSize l9_ippsDESGetSize
#define ippsDESInit l9_ippsDESInit
#define ippsDESPack l9_ippsDESPack
#define ippsDESUnpack l9_ippsDESUnpack
#define ippsTDESEncryptECB l9_ippsTDESEncryptECB
#define ippsTDESDecryptECB l9_ippsTDESDecryptECB
#define ippsTDESEncryptCBC l9_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC l9_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB l9_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB l9_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB l9_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB l9_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR l9_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR l9_ippsTDESDecryptCTR
#define ippsAESGetSize l9_ippsAESGetSize
#define ippsAESInit l9_ippsAESInit
#define ippsAESSetKey l9_ippsAESSetKey
#define ippsAESPack l9_ippsAESPack
#define ippsAESUnpack l9_ippsAESUnpack
#define ippsAESEncryptECB l9_ippsAESEncryptECB
#define ippsAESDecryptECB l9_ippsAESDecryptECB
#define ippsAESEncryptCBC l9_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 l9_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 l9_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 l9_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC l9_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 l9_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 l9_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 l9_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB l9_ippsAESEncryptCFB
#define ippsAESDecryptCFB l9_ippsAESDecryptCFB
#define ippsAESEncryptOFB l9_ippsAESEncryptOFB
#define ippsAESDecryptOFB l9_ippsAESDecryptOFB
#define ippsAESEncryptCTR l9_ippsAESEncryptCTR
#define ippsAESDecryptCTR l9_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct l9_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct l9_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise l9_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise l9_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise l9_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB l9_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize l9_ippsSMS4GetSize
#define ippsSMS4Init l9_ippsSMS4Init
#define ippsSMS4SetKey l9_ippsSMS4SetKey
#define ippsSMS4EncryptECB l9_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB l9_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC l9_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 l9_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 l9_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 l9_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC l9_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 l9_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 l9_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 l9_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB l9_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB l9_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB l9_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB l9_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR l9_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR l9_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize l9_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit l9_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen l9_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen l9_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart l9_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt l9_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt l9_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag l9_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize l9_ippsAES_CCMGetSize
#define ippsAES_CCMInit l9_ippsAES_CCMInit
#define ippsAES_CCMMessageLen l9_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen l9_ippsAES_CCMTagLen
#define ippsAES_CCMStart l9_ippsAES_CCMStart
#define ippsAES_CCMEncrypt l9_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt l9_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag l9_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize l9_ippsAES_GCMGetSize
#define ippsAES_GCMInit l9_ippsAES_GCMInit
#define ippsAES_GCMReinit l9_ippsAES_GCMReinit
#define ippsAES_GCMReset l9_ippsAES_GCMReset
#define ippsAES_GCMProcessIV l9_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD l9_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart l9_ippsAES_GCMStart
#define ippsAES_GCMEncrypt l9_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt l9_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag l9_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize l9_ippsAES_XTSGetSize
#define ippsAES_XTSInit l9_ippsAES_XTSInit
#define ippsAES_XTSEncrypt l9_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt l9_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC l9_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt l9_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt l9_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize l9_ippsAES_CMACGetSize
#define ippsAES_CMACInit l9_ippsAES_CMACInit
#define ippsAES_CMACUpdate l9_ippsAES_CMACUpdate
#define ippsAES_CMACFinal l9_ippsAES_CMACFinal
#define ippsAES_CMACGetTag l9_ippsAES_CMACGetTag
#define ippsARCFourCheckKey l9_ippsARCFourCheckKey
#define ippsARCFourGetSize l9_ippsARCFourGetSize
#define ippsARCFourInit l9_ippsARCFourInit
#define ippsARCFourReset l9_ippsARCFourReset
#define ippsARCFourPack l9_ippsARCFourPack
#define ippsARCFourUnpack l9_ippsARCFourUnpack
#define ippsARCFourEncrypt l9_ippsARCFourEncrypt
#define ippsARCFourDecrypt l9_ippsARCFourDecrypt
#define ippsSHA1GetSize l9_ippsSHA1GetSize
#define ippsSHA1Init l9_ippsSHA1Init
#define ippsSHA1Duplicate l9_ippsSHA1Duplicate
#define ippsSHA1Pack l9_ippsSHA1Pack
#define ippsSHA1Unpack l9_ippsSHA1Unpack
#define ippsSHA1Update l9_ippsSHA1Update
#define ippsSHA1GetTag l9_ippsSHA1GetTag
#define ippsSHA1Final l9_ippsSHA1Final
#define ippsSHA1MessageDigest l9_ippsSHA1MessageDigest
#define ippsSHA224GetSize l9_ippsSHA224GetSize
#define ippsSHA224Init l9_ippsSHA224Init
#define ippsSHA224Duplicate l9_ippsSHA224Duplicate
#define ippsSHA224Pack l9_ippsSHA224Pack
#define ippsSHA224Unpack l9_ippsSHA224Unpack
#define ippsSHA224Update l9_ippsSHA224Update
#define ippsSHA224GetTag l9_ippsSHA224GetTag
#define ippsSHA224Final l9_ippsSHA224Final
#define ippsSHA224MessageDigest l9_ippsSHA224MessageDigest
#define ippsSHA256GetSize l9_ippsSHA256GetSize
#define ippsSHA256Init l9_ippsSHA256Init
#define ippsSHA256Duplicate l9_ippsSHA256Duplicate
#define ippsSHA256Pack l9_ippsSHA256Pack
#define ippsSHA256Unpack l9_ippsSHA256Unpack
#define ippsSHA256Update l9_ippsSHA256Update
#define ippsSHA256GetTag l9_ippsSHA256GetTag
#define ippsSHA256Final l9_ippsSHA256Final
#define ippsSHA256MessageDigest l9_ippsSHA256MessageDigest
#define ippsSHA384GetSize l9_ippsSHA384GetSize
#define ippsSHA384Init l9_ippsSHA384Init
#define ippsSHA384Duplicate l9_ippsSHA384Duplicate
#define ippsSHA384Pack l9_ippsSHA384Pack
#define ippsSHA384Unpack l9_ippsSHA384Unpack
#define ippsSHA384Update l9_ippsSHA384Update
#define ippsSHA384GetTag l9_ippsSHA384GetTag
#define ippsSHA384Final l9_ippsSHA384Final
#define ippsSHA384MessageDigest l9_ippsSHA384MessageDigest
#define ippsSHA512GetSize l9_ippsSHA512GetSize
#define ippsSHA512Init l9_ippsSHA512Init
#define ippsSHA512Duplicate l9_ippsSHA512Duplicate
#define ippsSHA512Pack l9_ippsSHA512Pack
#define ippsSHA512Unpack l9_ippsSHA512Unpack
#define ippsSHA512Update l9_ippsSHA512Update
#define ippsSHA512GetTag l9_ippsSHA512GetTag
#define ippsSHA512Final l9_ippsSHA512Final
#define ippsSHA512MessageDigest l9_ippsSHA512MessageDigest
#define ippsMD5GetSize l9_ippsMD5GetSize
#define ippsMD5Init l9_ippsMD5Init
#define ippsMD5Duplicate l9_ippsMD5Duplicate
#define ippsMD5Pack l9_ippsMD5Pack
#define ippsMD5Unpack l9_ippsMD5Unpack
#define ippsMD5Update l9_ippsMD5Update
#define ippsMD5GetTag l9_ippsMD5GetTag
#define ippsMD5Final l9_ippsMD5Final
#define ippsMD5MessageDigest l9_ippsMD5MessageDigest
#define ippsSM3GetSize l9_ippsSM3GetSize
#define ippsSM3Init l9_ippsSM3Init
#define ippsSM3Duplicate l9_ippsSM3Duplicate
#define ippsSM3Pack l9_ippsSM3Pack
#define ippsSM3Unpack l9_ippsSM3Unpack
#define ippsSM3Update l9_ippsSM3Update
#define ippsSM3GetTag l9_ippsSM3GetTag
#define ippsSM3Final l9_ippsSM3Final
#define ippsSM3MessageDigest l9_ippsSM3MessageDigest
#define ippsHashGetSize l9_ippsHashGetSize
#define ippsHashInit l9_ippsHashInit
#define ippsHashPack l9_ippsHashPack
#define ippsHashUnpack l9_ippsHashUnpack
#define ippsHashDuplicate l9_ippsHashDuplicate
#define ippsHashUpdate l9_ippsHashUpdate
#define ippsHashGetTag l9_ippsHashGetTag
#define ippsHashFinal l9_ippsHashFinal
#define ippsHashMessage l9_ippsHashMessage
#define ippsHashMethod_MD5 l9_ippsHashMethod_MD5
#define ippsHashMethod_SM3 l9_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 l9_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI l9_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT l9_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 l9_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI l9_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT l9_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 l9_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI l9_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT l9_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 l9_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 l9_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 l9_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 l9_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize l9_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 l9_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 l9_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 l9_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 l9_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI l9_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT l9_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 l9_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI l9_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT l9_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 l9_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI l9_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT l9_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 l9_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI l9_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT l9_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 l9_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI l9_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT l9_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 l9_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 l9_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 l9_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 l9_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 l9_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 l9_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 l9_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 l9_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf l9_ippsHashGetSize_rmf
#define ippsHashInit_rmf l9_ippsHashInit_rmf
#define ippsHashPack_rmf l9_ippsHashPack_rmf
#define ippsHashUnpack_rmf l9_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf l9_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf l9_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf l9_ippsHashGetTag_rmf
#define ippsHashFinal_rmf l9_ippsHashFinal_rmf
#define ippsHashMessage_rmf l9_ippsHashMessage_rmf
#define ippsHashMethodGetInfo l9_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf l9_ippsHashGetInfo_rmf
#define ippsMGF l9_ippsMGF
#define ippsMGF1_rmf l9_ippsMGF1_rmf
#define ippsMGF2_rmf l9_ippsMGF2_rmf
#define ippsHMAC_GetSize l9_ippsHMAC_GetSize
#define ippsHMAC_Init l9_ippsHMAC_Init
#define ippsHMAC_Pack l9_ippsHMAC_Pack
#define ippsHMAC_Unpack l9_ippsHMAC_Unpack
#define ippsHMAC_Duplicate l9_ippsHMAC_Duplicate
#define ippsHMAC_Update l9_ippsHMAC_Update
#define ippsHMAC_Final l9_ippsHMAC_Final
#define ippsHMAC_GetTag l9_ippsHMAC_GetTag
#define ippsHMAC_Message l9_ippsHMAC_Message
#define ippsHMACGetSize_rmf l9_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf l9_ippsHMACInit_rmf
#define ippsHMACPack_rmf l9_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf l9_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf l9_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf l9_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf l9_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf l9_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf l9_ippsHMACMessage_rmf
#define ippsBigNumGetSize l9_ippsBigNumGetSize
#define ippsBigNumInit l9_ippsBigNumInit
#define ippsCmpZero_BN l9_ippsCmpZero_BN
#define ippsCmp_BN l9_ippsCmp_BN
#define ippsGetSize_BN l9_ippsGetSize_BN
#define ippsSet_BN l9_ippsSet_BN
#define ippsGet_BN l9_ippsGet_BN
#define ippsRef_BN l9_ippsRef_BN
#define ippsExtGet_BN l9_ippsExtGet_BN
#define ippsAdd_BN l9_ippsAdd_BN
#define ippsSub_BN l9_ippsSub_BN
#define ippsMul_BN l9_ippsMul_BN
#define ippsMAC_BN_I l9_ippsMAC_BN_I
#define ippsDiv_BN l9_ippsDiv_BN
#define ippsMod_BN l9_ippsMod_BN
#define ippsGcd_BN l9_ippsGcd_BN
#define ippsModInv_BN l9_ippsModInv_BN
#define ippsSetOctString_BN l9_ippsSetOctString_BN
#define ippsGetOctString_BN l9_ippsGetOctString_BN
#define ippsMontGetSize l9_ippsMontGetSize
#define ippsMontInit l9_ippsMontInit
#define ippsMontSet l9_ippsMontSet
#define ippsMontGet l9_ippsMontGet
#define ippsMontForm l9_ippsMontForm
#define ippsMontMul l9_ippsMontMul
#define ippsMontExp l9_ippsMontExp
#define ippsPRNGGetSize l9_ippsPRNGGetSize
#define ippsPRNGInit l9_ippsPRNGInit
#define ippsPRNGSetModulus l9_ippsPRNGSetModulus
#define ippsPRNGSetH0 l9_ippsPRNGSetH0
#define ippsPRNGSetAugment l9_ippsPRNGSetAugment
#define ippsPRNGSetSeed l9_ippsPRNGSetSeed
#define ippsPRNGGetSeed l9_ippsPRNGGetSeed
#define ippsPRNGen l9_ippsPRNGen
#define ippsPRNGen_BN l9_ippsPRNGen_BN
#define ippsPRNGenRDRAND l9_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN l9_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED l9_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN l9_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize l9_ippsPrimeGetSize
#define ippsPrimeInit l9_ippsPrimeInit
#define ippsPrimeGen l9_ippsPrimeGen
#define ippsPrimeTest l9_ippsPrimeTest
#define ippsPrimeGen_BN l9_ippsPrimeGen_BN
#define ippsPrimeTest_BN l9_ippsPrimeTest_BN
#define ippsPrimeGet l9_ippsPrimeGet
#define ippsPrimeGet_BN l9_ippsPrimeGet_BN
#define ippsPrimeSet l9_ippsPrimeSet
#define ippsPrimeSet_BN l9_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey l9_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey l9_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey l9_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey l9_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 l9_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 l9_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 l9_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 l9_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 l9_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 l9_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 l9_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 l9_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey l9_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey l9_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt l9_ippsRSA_Encrypt
#define ippsRSA_Decrypt l9_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys l9_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys l9_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP l9_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP l9_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf l9_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf l9_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 l9_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 l9_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS l9_ippsRSASign_PSS
#define ippsRSAVerify_PSS l9_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf l9_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf l9_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 l9_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 l9_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf l9_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf l9_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString l9_ippsDLGetResultString
#define ippsDLPGetSize l9_ippsDLPGetSize
#define ippsDLPInit l9_ippsDLPInit
#define ippsDLPPack l9_ippsDLPPack
#define ippsDLPUnpack l9_ippsDLPUnpack
#define ippsDLPSet l9_ippsDLPSet
#define ippsDLPGet l9_ippsDLPGet
#define ippsDLPSetDP l9_ippsDLPSetDP
#define ippsDLPGetDP l9_ippsDLPGetDP
#define ippsDLPGenKeyPair l9_ippsDLPGenKeyPair
#define ippsDLPPublicKey l9_ippsDLPPublicKey
#define ippsDLPValidateKeyPair l9_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair l9_ippsDLPSetKeyPair
#define ippsDLPSignDSA l9_ippsDLPSignDSA
#define ippsDLPVerifyDSA l9_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH l9_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA l9_ippsDLPGenerateDSA
#define ippsDLPValidateDSA l9_ippsDLPValidateDSA
#define ippsDLPGenerateDH l9_ippsDLPGenerateDH
#define ippsDLPValidateDH l9_ippsDLPValidateDH
#define ippsECCGetResultString l9_ippsECCGetResultString
#define ippsECCPGetSize l9_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 l9_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 l9_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 l9_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 l9_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 l9_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 l9_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 l9_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 l9_ippsECCPGetSizeStdSM2
#define ippsECCPInit l9_ippsECCPInit
#define ippsECCPInitStd128r1 l9_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 l9_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 l9_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 l9_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 l9_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 l9_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 l9_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 l9_ippsECCPInitStdSM2
#define ippsECCPSet l9_ippsECCPSet
#define ippsECCPSetStd l9_ippsECCPSetStd
#define ippsECCPSetStd128r1 l9_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 l9_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 l9_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 l9_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 l9_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 l9_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 l9_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 l9_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 l9_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 l9_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 l9_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 l9_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 l9_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 l9_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet l9_ippsECCPGet
#define ippsECCPGetOrderBitSize l9_ippsECCPGetOrderBitSize
#define ippsECCPValidate l9_ippsECCPValidate
#define ippsECCPPointGetSize l9_ippsECCPPointGetSize
#define ippsECCPPointInit l9_ippsECCPPointInit
#define ippsECCPSetPoint l9_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity l9_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint l9_ippsECCPGetPoint
#define ippsECCPCheckPoint l9_ippsECCPCheckPoint
#define ippsECCPComparePoint l9_ippsECCPComparePoint
#define ippsECCPNegativePoint l9_ippsECCPNegativePoint
#define ippsECCPAddPoint l9_ippsECCPAddPoint
#define ippsECCPMulPointScalar l9_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair l9_ippsECCPGenKeyPair
#define ippsECCPPublicKey l9_ippsECCPPublicKey
#define ippsECCPValidateKeyPair l9_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair l9_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH l9_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC l9_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA l9_ippsECCPSignDSA
#define ippsECCPVerifyDSA l9_ippsECCPVerifyDSA
#define ippsECCPSignNR l9_ippsECCPSignNR
#define ippsECCPVerifyNR l9_ippsECCPVerifyNR
#define ippsECCPSignSM2 l9_ippsECCPSignSM2
#define ippsECCPVerifySM2 l9_ippsECCPVerifySM2
#define ippsGFpGetSize l9_ippsGFpGetSize
#define ippsGFpInitArbitrary l9_ippsGFpInitArbitrary
#define ippsGFpInitFixed l9_ippsGFpInitFixed
#define ippsGFpInit l9_ippsGFpInit
#define ippsGFpMethod_p192r1 l9_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 l9_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 l9_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 l9_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 l9_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 l9_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn l9_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 l9_ippsGFpMethod_p256
#define ippsGFpMethod_pArb l9_ippsGFpMethod_pArb
#define ippsGFpxGetSize l9_ippsGFpxGetSize
#define ippsGFpxInit l9_ippsGFpxInit
#define ippsGFpxInitBinomial l9_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 l9_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 l9_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 l9_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 l9_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom l9_ippsGFpxMethod_binom
#define ippsGFpxMethod_com l9_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize l9_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize l9_ippsGFpElementGetSize
#define ippsGFpElementInit l9_ippsGFpElementInit
#define ippsGFpSetElement l9_ippsGFpSetElement
#define ippsGFpSetElementRegular l9_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString l9_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom l9_ippsGFpSetElementRandom
#define ippsGFpSetElementHash l9_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf l9_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement l9_ippsGFpCpyElement
#define ippsGFpGetElement l9_ippsGFpGetElement
#define ippsGFpGetElementOctString l9_ippsGFpGetElementOctString
#define ippsGFpCmpElement l9_ippsGFpCmpElement
#define ippsGFpIsZeroElement l9_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement l9_ippsGFpIsUnityElement
#define ippsGFpConj l9_ippsGFpConj
#define ippsGFpNeg l9_ippsGFpNeg
#define ippsGFpInv l9_ippsGFpInv
#define ippsGFpSqrt l9_ippsGFpSqrt
#define ippsGFpSqr l9_ippsGFpSqr
#define ippsGFpAdd l9_ippsGFpAdd
#define ippsGFpSub l9_ippsGFpSub
#define ippsGFpMul l9_ippsGFpMul
#define ippsGFpExp l9_ippsGFpExp
#define ippsGFpMultiExp l9_ippsGFpMultiExp
#define ippsGFpAdd_PE l9_ippsGFpAdd_PE
#define ippsGFpSub_PE l9_ippsGFpSub_PE
#define ippsGFpMul_PE l9_ippsGFpMul_PE
#define ippsGFpGetInfo l9_ippsGFpGetInfo
#define ippsGFpECGetSize l9_ippsGFpECGetSize
#define ippsGFpECInit l9_ippsGFpECInit
#define ippsGFpECSet l9_ippsGFpECSet
#define ippsGFpECSetSubgroup l9_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 l9_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 l9_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 l9_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 l9_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 l9_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 l9_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 l9_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 l9_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 l9_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 l9_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 l9_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 l9_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 l9_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 l9_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 l9_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet l9_ippsGFpECGet
#define ippsGFpECGetSubgroup l9_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize l9_ippsGFpECScratchBufferSize
#define ippsGFpECVerify l9_ippsGFpECVerify
#define ippsGFpECPointGetSize l9_ippsGFpECPointGetSize
#define ippsGFpECPointInit l9_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity l9_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint l9_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular l9_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom l9_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint l9_ippsGFpECMakePoint
#define ippsGFpECSetPointHash l9_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible l9_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf l9_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf l9_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint l9_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular l9_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString l9_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString l9_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint l9_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup l9_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint l9_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint l9_ippsGFpECCmpPoint
#define ippsGFpECNegPoint l9_ippsGFpECNegPoint
#define ippsGFpECAddPoint l9_ippsGFpECAddPoint
#define ippsGFpECMulPoint l9_ippsGFpECMulPoint
#define ippsGFpECPrivateKey l9_ippsGFpECPrivateKey
#define ippsGFpECPublicKey l9_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair l9_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH l9_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC l9_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 l9_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA l9_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA l9_ippsGFpECVerifyDSA
#define ippsGFpECSignNR l9_ippsGFpECSignNR
#define ippsGFpECVerifyNR l9_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 l9_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 l9_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 l9_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize l9_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init l9_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup l9_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey l9_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm l9_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF l9_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 l9_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 l9_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 l9_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 l9_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 l9_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 l9_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 l9_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 l9_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize l9_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext l9_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize l9_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext l9_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion m7_ippcpGetLibVersion
#define ippsDESGetSize m7_ippsDESGetSize
#define ippsDESInit m7_ippsDESInit
#define ippsDESPack m7_ippsDESPack
#define ippsDESUnpack m7_ippsDESUnpack
#define ippsTDESEncryptECB m7_ippsTDESEncryptECB
#define ippsTDESDecryptECB m7_ippsTDESDecryptECB
#define ippsTDESEncryptCBC m7_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC m7_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB m7_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB m7_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB m7_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB m7_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR m7_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR m7_ippsTDESDecryptCTR
#define ippsAESGetSize m7_ippsAESGetSize
#define ippsAESInit m7_ippsAESInit
#define ippsAESSetKey m7_ippsAESSetKey
#define ippsAESPack m7_ippsAESPack
#define ippsAESUnpack m7_ippsAESUnpack
#define ippsAESEncryptECB m7_ippsAESEncryptECB
#define ippsAESDecryptECB m7_ippsAESDecryptECB
#define ippsAESEncryptCBC m7_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 m7_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 m7_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 m7_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC m7_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 m7_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 m7_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 m7_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB m7_ippsAESEncryptCFB
#define ippsAESDecryptCFB m7_ippsAESDecryptCFB
#define ippsAESEncryptOFB m7_ippsAESEncryptOFB
#define ippsAESDecryptOFB m7_ippsAESDecryptOFB
#define ippsAESEncryptCTR m7_ippsAESEncryptCTR
#define ippsAESDecryptCTR m7_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct m7_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct m7_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise m7_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise m7_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise m7_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB m7_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize m7_ippsSMS4GetSize
#define ippsSMS4Init m7_ippsSMS4Init
#define ippsSMS4SetKey m7_ippsSMS4SetKey
#define ippsSMS4EncryptECB m7_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB m7_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC m7_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 m7_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 m7_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 m7_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC m7_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 m7_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 m7_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 m7_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB m7_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB m7_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB m7_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB m7_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR m7_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR m7_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize m7_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit m7_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen m7_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen m7_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart m7_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt m7_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt m7_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag m7_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize m7_ippsAES_CCMGetSize
#define ippsAES_CCMInit m7_ippsAES_CCMInit
#define ippsAES_CCMMessageLen m7_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen m7_ippsAES_CCMTagLen
#define ippsAES_CCMStart m7_ippsAES_CCMStart
#define ippsAES_CCMEncrypt m7_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt m7_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag m7_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize m7_ippsAES_GCMGetSize
#define ippsAES_GCMInit m7_ippsAES_GCMInit
#define ippsAES_GCMReinit m7_ippsAES_GCMReinit
#define ippsAES_GCMReset m7_ippsAES_GCMReset
#define ippsAES_GCMProcessIV m7_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD m7_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart m7_ippsAES_GCMStart
#define ippsAES_GCMEncrypt m7_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt m7_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag m7_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize m7_ippsAES_XTSGetSize
#define ippsAES_XTSInit m7_ippsAES_XTSInit
#define ippsAES_XTSEncrypt m7_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt m7_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC m7_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt m7_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt m7_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize m7_ippsAES_CMACGetSize
#define ippsAES_CMACInit m7_ippsAES_CMACInit
#define ippsAES_CMACUpdate m7_ippsAES_CMACUpdate
#define ippsAES_CMACFinal m7_ippsAES_CMACFinal
#define ippsAES_CMACGetTag m7_ippsAES_CMACGetTag
#define ippsARCFourCheckKey m7_ippsARCFourCheckKey
#define ippsARCFourGetSize m7_ippsARCFourGetSize
#define ippsARCFourInit m7_ippsARCFourInit
#define ippsARCFourReset m7_ippsARCFourReset
#define ippsARCFourPack m7_ippsARCFourPack
#define ippsARCFourUnpack m7_ippsARCFourUnpack
#define ippsARCFourEncrypt m7_ippsARCFourEncrypt
#define ippsARCFourDecrypt m7_ippsARCFourDecrypt
#define ippsSHA1GetSize m7_ippsSHA1GetSize
#define ippsSHA1Init m7_ippsSHA1Init
#define ippsSHA1Duplicate m7_ippsSHA1Duplicate
#define ippsSHA1Pack m7_ippsSHA1Pack
#define ippsSHA1Unpack m7_ippsSHA1Unpack
#define ippsSHA1Update m7_ippsSHA1Update
#define ippsSHA1GetTag m7_ippsSHA1GetTag
#define ippsSHA1Final m7_ippsSHA1Final
#define ippsSHA1MessageDigest m7_ippsSHA1MessageDigest
#define ippsSHA224GetSize m7_ippsSHA224GetSize
#define ippsSHA224Init m7_ippsSHA224Init
#define ippsSHA224Duplicate m7_ippsSHA224Duplicate
#define ippsSHA224Pack m7_ippsSHA224Pack
#define ippsSHA224Unpack m7_ippsSHA224Unpack
#define ippsSHA224Update m7_ippsSHA224Update
#define ippsSHA224GetTag m7_ippsSHA224GetTag
#define ippsSHA224Final m7_ippsSHA224Final
#define ippsSHA224MessageDigest m7_ippsSHA224MessageDigest
#define ippsSHA256GetSize m7_ippsSHA256GetSize
#define ippsSHA256Init m7_ippsSHA256Init
#define ippsSHA256Duplicate m7_ippsSHA256Duplicate
#define ippsSHA256Pack m7_ippsSHA256Pack
#define ippsSHA256Unpack m7_ippsSHA256Unpack
#define ippsSHA256Update m7_ippsSHA256Update
#define ippsSHA256GetTag m7_ippsSHA256GetTag
#define ippsSHA256Final m7_ippsSHA256Final
#define ippsSHA256MessageDigest m7_ippsSHA256MessageDigest
#define ippsSHA384GetSize m7_ippsSHA384GetSize
#define ippsSHA384Init m7_ippsSHA384Init
#define ippsSHA384Duplicate m7_ippsSHA384Duplicate
#define ippsSHA384Pack m7_ippsSHA384Pack
#define ippsSHA384Unpack m7_ippsSHA384Unpack
#define ippsSHA384Update m7_ippsSHA384Update
#define ippsSHA384GetTag m7_ippsSHA384GetTag
#define ippsSHA384Final m7_ippsSHA384Final
#define ippsSHA384MessageDigest m7_ippsSHA384MessageDigest
#define ippsSHA512GetSize m7_ippsSHA512GetSize
#define ippsSHA512Init m7_ippsSHA512Init
#define ippsSHA512Duplicate m7_ippsSHA512Duplicate
#define ippsSHA512Pack m7_ippsSHA512Pack
#define ippsSHA512Unpack m7_ippsSHA512Unpack
#define ippsSHA512Update m7_ippsSHA512Update
#define ippsSHA512GetTag m7_ippsSHA512GetTag
#define ippsSHA512Final m7_ippsSHA512Final
#define ippsSHA512MessageDigest m7_ippsSHA512MessageDigest
#define ippsMD5GetSize m7_ippsMD5GetSize
#define ippsMD5Init m7_ippsMD5Init
#define ippsMD5Duplicate m7_ippsMD5Duplicate
#define ippsMD5Pack m7_ippsMD5Pack
#define ippsMD5Unpack m7_ippsMD5Unpack
#define ippsMD5Update m7_ippsMD5Update
#define ippsMD5GetTag m7_ippsMD5GetTag
#define ippsMD5Final m7_ippsMD5Final
#define ippsMD5MessageDigest m7_ippsMD5MessageDigest
#define ippsSM3GetSize m7_ippsSM3GetSize
#define ippsSM3Init m7_ippsSM3Init
#define ippsSM3Duplicate m7_ippsSM3Duplicate
#define ippsSM3Pack m7_ippsSM3Pack
#define ippsSM3Unpack m7_ippsSM3Unpack
#define ippsSM3Update m7_ippsSM3Update
#define ippsSM3GetTag m7_ippsSM3GetTag
#define ippsSM3Final m7_ippsSM3Final
#define ippsSM3MessageDigest m7_ippsSM3MessageDigest
#define ippsHashGetSize m7_ippsHashGetSize
#define ippsHashInit m7_ippsHashInit
#define ippsHashPack m7_ippsHashPack
#define ippsHashUnpack m7_ippsHashUnpack
#define ippsHashDuplicate m7_ippsHashDuplicate
#define ippsHashUpdate m7_ippsHashUpdate
#define ippsHashGetTag m7_ippsHashGetTag
#define ippsHashFinal m7_ippsHashFinal
#define ippsHashMessage m7_ippsHashMessage
#define ippsHashMethod_MD5 m7_ippsHashMethod_MD5
#define ippsHashMethod_SM3 m7_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 m7_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI m7_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT m7_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 m7_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI m7_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT m7_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 m7_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI m7_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT m7_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 m7_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 m7_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 m7_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 m7_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize m7_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 m7_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 m7_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 m7_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 m7_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI m7_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT m7_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 m7_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI m7_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT m7_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 m7_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI m7_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT m7_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 m7_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI m7_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT m7_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 m7_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI m7_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT m7_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 m7_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 m7_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 m7_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 m7_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 m7_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 m7_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 m7_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 m7_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf m7_ippsHashGetSize_rmf
#define ippsHashInit_rmf m7_ippsHashInit_rmf
#define ippsHashPack_rmf m7_ippsHashPack_rmf
#define ippsHashUnpack_rmf m7_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf m7_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf m7_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf m7_ippsHashGetTag_rmf
#define ippsHashFinal_rmf m7_ippsHashFinal_rmf
#define ippsHashMessage_rmf m7_ippsHashMessage_rmf
#define ippsHashMethodGetInfo m7_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf m7_ippsHashGetInfo_rmf
#define ippsMGF m7_ippsMGF
#define ippsMGF1_rmf m7_ippsMGF1_rmf
#define ippsMGF2_rmf m7_ippsMGF2_rmf
#define ippsHMAC_GetSize m7_ippsHMAC_GetSize
#define ippsHMAC_Init m7_ippsHMAC_Init
#define ippsHMAC_Pack m7_ippsHMAC_Pack
#define ippsHMAC_Unpack m7_ippsHMAC_Unpack
#define ippsHMAC_Duplicate m7_ippsHMAC_Duplicate
#define ippsHMAC_Update m7_ippsHMAC_Update
#define ippsHMAC_Final m7_ippsHMAC_Final
#define ippsHMAC_GetTag m7_ippsHMAC_GetTag
#define ippsHMAC_Message m7_ippsHMAC_Message
#define ippsHMACGetSize_rmf m7_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf m7_ippsHMACInit_rmf
#define ippsHMACPack_rmf m7_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf m7_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf m7_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf m7_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf m7_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf m7_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf m7_ippsHMACMessage_rmf
#define ippsBigNumGetSize m7_ippsBigNumGetSize
#define ippsBigNumInit m7_ippsBigNumInit
#define ippsCmpZero_BN m7_ippsCmpZero_BN
#define ippsCmp_BN m7_ippsCmp_BN
#define ippsGetSize_BN m7_ippsGetSize_BN
#define ippsSet_BN m7_ippsSet_BN
#define ippsGet_BN m7_ippsGet_BN
#define ippsRef_BN m7_ippsRef_BN
#define ippsExtGet_BN m7_ippsExtGet_BN
#define ippsAdd_BN m7_ippsAdd_BN
#define ippsSub_BN m7_ippsSub_BN
#define ippsMul_BN m7_ippsMul_BN
#define ippsMAC_BN_I m7_ippsMAC_BN_I
#define ippsDiv_BN m7_ippsDiv_BN
#define ippsMod_BN m7_ippsMod_BN
#define ippsGcd_BN m7_ippsGcd_BN
#define ippsModInv_BN m7_ippsModInv_BN
#define ippsSetOctString_BN m7_ippsSetOctString_BN
#define ippsGetOctString_BN m7_ippsGetOctString_BN
#define ippsMontGetSize m7_ippsMontGetSize
#define ippsMontInit m7_ippsMontInit
#define ippsMontSet m7_ippsMontSet
#define ippsMontGet m7_ippsMontGet
#define ippsMontForm m7_ippsMontForm
#define ippsMontMul m7_ippsMontMul
#define ippsMontExp m7_ippsMontExp
#define ippsPRNGGetSize m7_ippsPRNGGetSize
#define ippsPRNGInit m7_ippsPRNGInit
#define ippsPRNGSetModulus m7_ippsPRNGSetModulus
#define ippsPRNGSetH0 m7_ippsPRNGSetH0
#define ippsPRNGSetAugment m7_ippsPRNGSetAugment
#define ippsPRNGSetSeed m7_ippsPRNGSetSeed
#define ippsPRNGGetSeed m7_ippsPRNGGetSeed
#define ippsPRNGen m7_ippsPRNGen
#define ippsPRNGen_BN m7_ippsPRNGen_BN
#define ippsPRNGenRDRAND m7_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN m7_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED m7_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN m7_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize m7_ippsPrimeGetSize
#define ippsPrimeInit m7_ippsPrimeInit
#define ippsPrimeGen m7_ippsPrimeGen
#define ippsPrimeTest m7_ippsPrimeTest
#define ippsPrimeGen_BN m7_ippsPrimeGen_BN
#define ippsPrimeTest_BN m7_ippsPrimeTest_BN
#define ippsPrimeGet m7_ippsPrimeGet
#define ippsPrimeGet_BN m7_ippsPrimeGet_BN
#define ippsPrimeSet m7_ippsPrimeSet
#define ippsPrimeSet_BN m7_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey m7_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey m7_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey m7_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey m7_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 m7_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 m7_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 m7_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 m7_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 m7_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 m7_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 m7_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 m7_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey m7_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey m7_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt m7_ippsRSA_Encrypt
#define ippsRSA_Decrypt m7_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys m7_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys m7_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP m7_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP m7_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf m7_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf m7_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 m7_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 m7_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS m7_ippsRSASign_PSS
#define ippsRSAVerify_PSS m7_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf m7_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf m7_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 m7_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 m7_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf m7_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf m7_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString m7_ippsDLGetResultString
#define ippsDLPGetSize m7_ippsDLPGetSize
#define ippsDLPInit m7_ippsDLPInit
#define ippsDLPPack m7_ippsDLPPack
#define ippsDLPUnpack m7_ippsDLPUnpack
#define ippsDLPSet m7_ippsDLPSet
#define ippsDLPGet m7_ippsDLPGet
#define ippsDLPSetDP m7_ippsDLPSetDP
#define ippsDLPGetDP m7_ippsDLPGetDP
#define ippsDLPGenKeyPair m7_ippsDLPGenKeyPair
#define ippsDLPPublicKey m7_ippsDLPPublicKey
#define ippsDLPValidateKeyPair m7_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair m7_ippsDLPSetKeyPair
#define ippsDLPSignDSA m7_ippsDLPSignDSA
#define ippsDLPVerifyDSA m7_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH m7_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA m7_ippsDLPGenerateDSA
#define ippsDLPValidateDSA m7_ippsDLPValidateDSA
#define ippsDLPGenerateDH m7_ippsDLPGenerateDH
#define ippsDLPValidateDH m7_ippsDLPValidateDH
#define ippsECCGetResultString m7_ippsECCGetResultString
#define ippsECCPGetSize m7_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 m7_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 m7_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 m7_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 m7_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 m7_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 m7_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 m7_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 m7_ippsECCPGetSizeStdSM2
#define ippsECCPInit m7_ippsECCPInit
#define ippsECCPInitStd128r1 m7_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 m7_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 m7_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 m7_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 m7_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 m7_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 m7_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 m7_ippsECCPInitStdSM2
#define ippsECCPSet m7_ippsECCPSet
#define ippsECCPSetStd m7_ippsECCPSetStd
#define ippsECCPSetStd128r1 m7_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 m7_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 m7_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 m7_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 m7_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 m7_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 m7_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 m7_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 m7_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 m7_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 m7_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 m7_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 m7_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 m7_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet m7_ippsECCPGet
#define ippsECCPGetOrderBitSize m7_ippsECCPGetOrderBitSize
#define ippsECCPValidate m7_ippsECCPValidate
#define ippsECCPPointGetSize m7_ippsECCPPointGetSize
#define ippsECCPPointInit m7_ippsECCPPointInit
#define ippsECCPSetPoint m7_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity m7_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint m7_ippsECCPGetPoint
#define ippsECCPCheckPoint m7_ippsECCPCheckPoint
#define ippsECCPComparePoint m7_ippsECCPComparePoint
#define ippsECCPNegativePoint m7_ippsECCPNegativePoint
#define ippsECCPAddPoint m7_ippsECCPAddPoint
#define ippsECCPMulPointScalar m7_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair m7_ippsECCPGenKeyPair
#define ippsECCPPublicKey m7_ippsECCPPublicKey
#define ippsECCPValidateKeyPair m7_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair m7_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH m7_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC m7_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA m7_ippsECCPSignDSA
#define ippsECCPVerifyDSA m7_ippsECCPVerifyDSA
#define ippsECCPSignNR m7_ippsECCPSignNR
#define ippsECCPVerifyNR m7_ippsECCPVerifyNR
#define ippsECCPSignSM2 m7_ippsECCPSignSM2
#define ippsECCPVerifySM2 m7_ippsECCPVerifySM2
#define ippsGFpGetSize m7_ippsGFpGetSize
#define ippsGFpInitArbitrary m7_ippsGFpInitArbitrary
#define ippsGFpInitFixed m7_ippsGFpInitFixed
#define ippsGFpInit m7_ippsGFpInit
#define ippsGFpMethod_p192r1 m7_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 m7_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 m7_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 m7_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 m7_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 m7_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn m7_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 m7_ippsGFpMethod_p256
#define ippsGFpMethod_pArb m7_ippsGFpMethod_pArb
#define ippsGFpxGetSize m7_ippsGFpxGetSize
#define ippsGFpxInit m7_ippsGFpxInit
#define ippsGFpxInitBinomial m7_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 m7_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 m7_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 m7_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 m7_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom m7_ippsGFpxMethod_binom
#define ippsGFpxMethod_com m7_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize m7_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize m7_ippsGFpElementGetSize
#define ippsGFpElementInit m7_ippsGFpElementInit
#define ippsGFpSetElement m7_ippsGFpSetElement
#define ippsGFpSetElementRegular m7_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString m7_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom m7_ippsGFpSetElementRandom
#define ippsGFpSetElementHash m7_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf m7_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement m7_ippsGFpCpyElement
#define ippsGFpGetElement m7_ippsGFpGetElement
#define ippsGFpGetElementOctString m7_ippsGFpGetElementOctString
#define ippsGFpCmpElement m7_ippsGFpCmpElement
#define ippsGFpIsZeroElement m7_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement m7_ippsGFpIsUnityElement
#define ippsGFpConj m7_ippsGFpConj
#define ippsGFpNeg m7_ippsGFpNeg
#define ippsGFpInv m7_ippsGFpInv
#define ippsGFpSqrt m7_ippsGFpSqrt
#define ippsGFpSqr m7_ippsGFpSqr
#define ippsGFpAdd m7_ippsGFpAdd
#define ippsGFpSub m7_ippsGFpSub
#define ippsGFpMul m7_ippsGFpMul
#define ippsGFpExp m7_ippsGFpExp
#define ippsGFpMultiExp m7_ippsGFpMultiExp
#define ippsGFpAdd_PE m7_ippsGFpAdd_PE
#define ippsGFpSub_PE m7_ippsGFpSub_PE
#define ippsGFpMul_PE m7_ippsGFpMul_PE
#define ippsGFpGetInfo m7_ippsGFpGetInfo
#define ippsGFpECGetSize m7_ippsGFpECGetSize
#define ippsGFpECInit m7_ippsGFpECInit
#define ippsGFpECSet m7_ippsGFpECSet
#define ippsGFpECSetSubgroup m7_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 m7_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 m7_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 m7_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 m7_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 m7_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 m7_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 m7_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 m7_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 m7_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 m7_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 m7_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 m7_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 m7_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 m7_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 m7_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet m7_ippsGFpECGet
#define ippsGFpECGetSubgroup m7_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize m7_ippsGFpECScratchBufferSize
#define ippsGFpECVerify m7_ippsGFpECVerify
#define ippsGFpECPointGetSize m7_ippsGFpECPointGetSize
#define ippsGFpECPointInit m7_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity m7_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint m7_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular m7_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom m7_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint m7_ippsGFpECMakePoint
#define ippsGFpECSetPointHash m7_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible m7_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf m7_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf m7_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint m7_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular m7_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString m7_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString m7_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint m7_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup m7_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint m7_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint m7_ippsGFpECCmpPoint
#define ippsGFpECNegPoint m7_ippsGFpECNegPoint
#define ippsGFpECAddPoint m7_ippsGFpECAddPoint
#define ippsGFpECMulPoint m7_ippsGFpECMulPoint
#define ippsGFpECPrivateKey m7_ippsGFpECPrivateKey
#define ippsGFpECPublicKey m7_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair m7_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH m7_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC m7_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 m7_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA m7_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA m7_ippsGFpECVerifyDSA
#define ippsGFpECSignNR m7_ippsGFpECSignNR
#define ippsGFpECVerifyNR m7_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 m7_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 m7_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 m7_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize m7_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init m7_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup m7_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey m7_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm m7_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF m7_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 m7_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 m7_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 m7_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 m7_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 m7_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 m7_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 m7_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 m7_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize m7_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext m7_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize m7_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext m7_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion n0_ippcpGetLibVersion
#define ippsDESGetSize n0_ippsDESGetSize
#define ippsDESInit n0_ippsDESInit
#define ippsDESPack n0_ippsDESPack
#define ippsDESUnpack n0_ippsDESUnpack
#define ippsTDESEncryptECB n0_ippsTDESEncryptECB
#define ippsTDESDecryptECB n0_ippsTDESDecryptECB
#define ippsTDESEncryptCBC n0_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC n0_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB n0_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB n0_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB n0_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB n0_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR n0_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR n0_ippsTDESDecryptCTR
#define ippsAESGetSize n0_ippsAESGetSize
#define ippsAESInit n0_ippsAESInit
#define ippsAESSetKey n0_ippsAESSetKey
#define ippsAESPack n0_ippsAESPack
#define ippsAESUnpack n0_ippsAESUnpack
#define ippsAESEncryptECB n0_ippsAESEncryptECB
#define ippsAESDecryptECB n0_ippsAESDecryptECB
#define ippsAESEncryptCBC n0_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 n0_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 n0_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 n0_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC n0_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 n0_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 n0_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 n0_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB n0_ippsAESEncryptCFB
#define ippsAESDecryptCFB n0_ippsAESDecryptCFB
#define ippsAESEncryptOFB n0_ippsAESEncryptOFB
#define ippsAESDecryptOFB n0_ippsAESDecryptOFB
#define ippsAESEncryptCTR n0_ippsAESEncryptCTR
#define ippsAESDecryptCTR n0_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct n0_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct n0_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise n0_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise n0_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise n0_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB n0_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize n0_ippsSMS4GetSize
#define ippsSMS4Init n0_ippsSMS4Init
#define ippsSMS4SetKey n0_ippsSMS4SetKey
#define ippsSMS4EncryptECB n0_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB n0_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC n0_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 n0_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 n0_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 n0_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC n0_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 n0_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 n0_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 n0_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB n0_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB n0_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB n0_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB n0_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR n0_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR n0_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize n0_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit n0_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen n0_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen n0_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart n0_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt n0_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt n0_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag n0_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize n0_ippsAES_CCMGetSize
#define ippsAES_CCMInit n0_ippsAES_CCMInit
#define ippsAES_CCMMessageLen n0_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen n0_ippsAES_CCMTagLen
#define ippsAES_CCMStart n0_ippsAES_CCMStart
#define ippsAES_CCMEncrypt n0_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt n0_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag n0_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize n0_ippsAES_GCMGetSize
#define ippsAES_GCMInit n0_ippsAES_GCMInit
#define ippsAES_GCMReinit n0_ippsAES_GCMReinit
#define ippsAES_GCMReset n0_ippsAES_GCMReset
#define ippsAES_GCMProcessIV n0_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD n0_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart n0_ippsAES_GCMStart
#define ippsAES_GCMEncrypt n0_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt n0_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag n0_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize n0_ippsAES_XTSGetSize
#define ippsAES_XTSInit n0_ippsAES_XTSInit
#define ippsAES_XTSEncrypt n0_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt n0_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC n0_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt n0_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt n0_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize n0_ippsAES_CMACGetSize
#define ippsAES_CMACInit n0_ippsAES_CMACInit
#define ippsAES_CMACUpdate n0_ippsAES_CMACUpdate
#define ippsAES_CMACFinal n0_ippsAES_CMACFinal
#define ippsAES_CMACGetTag n0_ippsAES_CMACGetTag
#define ippsARCFourCheckKey n0_ippsARCFourCheckKey
#define ippsARCFourGetSize n0_ippsARCFourGetSize
#define ippsARCFourInit n0_ippsARCFourInit
#define ippsARCFourReset n0_ippsARCFourReset
#define ippsARCFourPack n0_ippsARCFourPack
#define ippsARCFourUnpack n0_ippsARCFourUnpack
#define ippsARCFourEncrypt n0_ippsARCFourEncrypt
#define ippsARCFourDecrypt n0_ippsARCFourDecrypt
#define ippsSHA1GetSize n0_ippsSHA1GetSize
#define ippsSHA1Init n0_ippsSHA1Init
#define ippsSHA1Duplicate n0_ippsSHA1Duplicate
#define ippsSHA1Pack n0_ippsSHA1Pack
#define ippsSHA1Unpack n0_ippsSHA1Unpack
#define ippsSHA1Update n0_ippsSHA1Update
#define ippsSHA1GetTag n0_ippsSHA1GetTag
#define ippsSHA1Final n0_ippsSHA1Final
#define ippsSHA1MessageDigest n0_ippsSHA1MessageDigest
#define ippsSHA224GetSize n0_ippsSHA224GetSize
#define ippsSHA224Init n0_ippsSHA224Init
#define ippsSHA224Duplicate n0_ippsSHA224Duplicate
#define ippsSHA224Pack n0_ippsSHA224Pack
#define ippsSHA224Unpack n0_ippsSHA224Unpack
#define ippsSHA224Update n0_ippsSHA224Update
#define ippsSHA224GetTag n0_ippsSHA224GetTag
#define ippsSHA224Final n0_ippsSHA224Final
#define ippsSHA224MessageDigest n0_ippsSHA224MessageDigest
#define ippsSHA256GetSize n0_ippsSHA256GetSize
#define ippsSHA256Init n0_ippsSHA256Init
#define ippsSHA256Duplicate n0_ippsSHA256Duplicate
#define ippsSHA256Pack n0_ippsSHA256Pack
#define ippsSHA256Unpack n0_ippsSHA256Unpack
#define ippsSHA256Update n0_ippsSHA256Update
#define ippsSHA256GetTag n0_ippsSHA256GetTag
#define ippsSHA256Final n0_ippsSHA256Final
#define ippsSHA256MessageDigest n0_ippsSHA256MessageDigest
#define ippsSHA384GetSize n0_ippsSHA384GetSize
#define ippsSHA384Init n0_ippsSHA384Init
#define ippsSHA384Duplicate n0_ippsSHA384Duplicate
#define ippsSHA384Pack n0_ippsSHA384Pack
#define ippsSHA384Unpack n0_ippsSHA384Unpack
#define ippsSHA384Update n0_ippsSHA384Update
#define ippsSHA384GetTag n0_ippsSHA384GetTag
#define ippsSHA384Final n0_ippsSHA384Final
#define ippsSHA384MessageDigest n0_ippsSHA384MessageDigest
#define ippsSHA512GetSize n0_ippsSHA512GetSize
#define ippsSHA512Init n0_ippsSHA512Init
#define ippsSHA512Duplicate n0_ippsSHA512Duplicate
#define ippsSHA512Pack n0_ippsSHA512Pack
#define ippsSHA512Unpack n0_ippsSHA512Unpack
#define ippsSHA512Update n0_ippsSHA512Update
#define ippsSHA512GetTag n0_ippsSHA512GetTag
#define ippsSHA512Final n0_ippsSHA512Final
#define ippsSHA512MessageDigest n0_ippsSHA512MessageDigest
#define ippsMD5GetSize n0_ippsMD5GetSize
#define ippsMD5Init n0_ippsMD5Init
#define ippsMD5Duplicate n0_ippsMD5Duplicate
#define ippsMD5Pack n0_ippsMD5Pack
#define ippsMD5Unpack n0_ippsMD5Unpack
#define ippsMD5Update n0_ippsMD5Update
#define ippsMD5GetTag n0_ippsMD5GetTag
#define ippsMD5Final n0_ippsMD5Final
#define ippsMD5MessageDigest n0_ippsMD5MessageDigest
#define ippsSM3GetSize n0_ippsSM3GetSize
#define ippsSM3Init n0_ippsSM3Init
#define ippsSM3Duplicate n0_ippsSM3Duplicate
#define ippsSM3Pack n0_ippsSM3Pack
#define ippsSM3Unpack n0_ippsSM3Unpack
#define ippsSM3Update n0_ippsSM3Update
#define ippsSM3GetTag n0_ippsSM3GetTag
#define ippsSM3Final n0_ippsSM3Final
#define ippsSM3MessageDigest n0_ippsSM3MessageDigest
#define ippsHashGetSize n0_ippsHashGetSize
#define ippsHashInit n0_ippsHashInit
#define ippsHashPack n0_ippsHashPack
#define ippsHashUnpack n0_ippsHashUnpack
#define ippsHashDuplicate n0_ippsHashDuplicate
#define ippsHashUpdate n0_ippsHashUpdate
#define ippsHashGetTag n0_ippsHashGetTag
#define ippsHashFinal n0_ippsHashFinal
#define ippsHashMessage n0_ippsHashMessage
#define ippsHashMethod_MD5 n0_ippsHashMethod_MD5
#define ippsHashMethod_SM3 n0_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 n0_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI n0_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT n0_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 n0_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI n0_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT n0_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 n0_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI n0_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT n0_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 n0_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 n0_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 n0_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 n0_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize n0_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 n0_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 n0_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 n0_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 n0_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI n0_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT n0_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 n0_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI n0_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT n0_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 n0_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI n0_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT n0_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 n0_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI n0_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT n0_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 n0_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI n0_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT n0_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 n0_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 n0_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 n0_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 n0_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 n0_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 n0_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 n0_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 n0_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf n0_ippsHashGetSize_rmf
#define ippsHashInit_rmf n0_ippsHashInit_rmf
#define ippsHashPack_rmf n0_ippsHashPack_rmf
#define ippsHashUnpack_rmf n0_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf n0_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf n0_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf n0_ippsHashGetTag_rmf
#define ippsHashFinal_rmf n0_ippsHashFinal_rmf
#define ippsHashMessage_rmf n0_ippsHashMessage_rmf
#define ippsHashMethodGetInfo n0_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf n0_ippsHashGetInfo_rmf
#define ippsMGF n0_ippsMGF
#define ippsMGF1_rmf n0_ippsMGF1_rmf
#define ippsMGF2_rmf n0_ippsMGF2_rmf
#define ippsHMAC_GetSize n0_ippsHMAC_GetSize
#define ippsHMAC_Init n0_ippsHMAC_Init
#define ippsHMAC_Pack n0_ippsHMAC_Pack
#define ippsHMAC_Unpack n0_ippsHMAC_Unpack
#define ippsHMAC_Duplicate n0_ippsHMAC_Duplicate
#define ippsHMAC_Update n0_ippsHMAC_Update
#define ippsHMAC_Final n0_ippsHMAC_Final
#define ippsHMAC_GetTag n0_ippsHMAC_GetTag
#define ippsHMAC_Message n0_ippsHMAC_Message
#define ippsHMACGetSize_rmf n0_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf n0_ippsHMACInit_rmf
#define ippsHMACPack_rmf n0_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf n0_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf n0_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf n0_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf n0_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf n0_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf n0_ippsHMACMessage_rmf
#define ippsBigNumGetSize n0_ippsBigNumGetSize
#define ippsBigNumInit n0_ippsBigNumInit
#define ippsCmpZero_BN n0_ippsCmpZero_BN
#define ippsCmp_BN n0_ippsCmp_BN
#define ippsGetSize_BN n0_ippsGetSize_BN
#define ippsSet_BN n0_ippsSet_BN
#define ippsGet_BN n0_ippsGet_BN
#define ippsRef_BN n0_ippsRef_BN
#define ippsExtGet_BN n0_ippsExtGet_BN
#define ippsAdd_BN n0_ippsAdd_BN
#define ippsSub_BN n0_ippsSub_BN
#define ippsMul_BN n0_ippsMul_BN
#define ippsMAC_BN_I n0_ippsMAC_BN_I
#define ippsDiv_BN n0_ippsDiv_BN
#define ippsMod_BN n0_ippsMod_BN
#define ippsGcd_BN n0_ippsGcd_BN
#define ippsModInv_BN n0_ippsModInv_BN
#define ippsSetOctString_BN n0_ippsSetOctString_BN
#define ippsGetOctString_BN n0_ippsGetOctString_BN
#define ippsMontGetSize n0_ippsMontGetSize
#define ippsMontInit n0_ippsMontInit
#define ippsMontSet n0_ippsMontSet
#define ippsMontGet n0_ippsMontGet
#define ippsMontForm n0_ippsMontForm
#define ippsMontMul n0_ippsMontMul
#define ippsMontExp n0_ippsMontExp
#define ippsPRNGGetSize n0_ippsPRNGGetSize
#define ippsPRNGInit n0_ippsPRNGInit
#define ippsPRNGSetModulus n0_ippsPRNGSetModulus
#define ippsPRNGSetH0 n0_ippsPRNGSetH0
#define ippsPRNGSetAugment n0_ippsPRNGSetAugment
#define ippsPRNGSetSeed n0_ippsPRNGSetSeed
#define ippsPRNGGetSeed n0_ippsPRNGGetSeed
#define ippsPRNGen n0_ippsPRNGen
#define ippsPRNGen_BN n0_ippsPRNGen_BN
#define ippsPRNGenRDRAND n0_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN n0_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED n0_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN n0_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize n0_ippsPrimeGetSize
#define ippsPrimeInit n0_ippsPrimeInit
#define ippsPrimeGen n0_ippsPrimeGen
#define ippsPrimeTest n0_ippsPrimeTest
#define ippsPrimeGen_BN n0_ippsPrimeGen_BN
#define ippsPrimeTest_BN n0_ippsPrimeTest_BN
#define ippsPrimeGet n0_ippsPrimeGet
#define ippsPrimeGet_BN n0_ippsPrimeGet_BN
#define ippsPrimeSet n0_ippsPrimeSet
#define ippsPrimeSet_BN n0_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey n0_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey n0_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey n0_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey n0_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 n0_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 n0_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 n0_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 n0_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 n0_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 n0_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 n0_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 n0_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey n0_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey n0_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt n0_ippsRSA_Encrypt
#define ippsRSA_Decrypt n0_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys n0_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys n0_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP n0_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP n0_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf n0_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf n0_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 n0_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 n0_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS n0_ippsRSASign_PSS
#define ippsRSAVerify_PSS n0_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf n0_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf n0_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 n0_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 n0_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf n0_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf n0_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString n0_ippsDLGetResultString
#define ippsDLPGetSize n0_ippsDLPGetSize
#define ippsDLPInit n0_ippsDLPInit
#define ippsDLPPack n0_ippsDLPPack
#define ippsDLPUnpack n0_ippsDLPUnpack
#define ippsDLPSet n0_ippsDLPSet
#define ippsDLPGet n0_ippsDLPGet
#define ippsDLPSetDP n0_ippsDLPSetDP
#define ippsDLPGetDP n0_ippsDLPGetDP
#define ippsDLPGenKeyPair n0_ippsDLPGenKeyPair
#define ippsDLPPublicKey n0_ippsDLPPublicKey
#define ippsDLPValidateKeyPair n0_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair n0_ippsDLPSetKeyPair
#define ippsDLPSignDSA n0_ippsDLPSignDSA
#define ippsDLPVerifyDSA n0_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH n0_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA n0_ippsDLPGenerateDSA
#define ippsDLPValidateDSA n0_ippsDLPValidateDSA
#define ippsDLPGenerateDH n0_ippsDLPGenerateDH
#define ippsDLPValidateDH n0_ippsDLPValidateDH
#define ippsECCGetResultString n0_ippsECCGetResultString
#define ippsECCPGetSize n0_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 n0_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 n0_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 n0_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 n0_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 n0_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 n0_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 n0_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 n0_ippsECCPGetSizeStdSM2
#define ippsECCPInit n0_ippsECCPInit
#define ippsECCPInitStd128r1 n0_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 n0_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 n0_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 n0_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 n0_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 n0_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 n0_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 n0_ippsECCPInitStdSM2
#define ippsECCPSet n0_ippsECCPSet
#define ippsECCPSetStd n0_ippsECCPSetStd
#define ippsECCPSetStd128r1 n0_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 n0_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 n0_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 n0_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 n0_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 n0_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 n0_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 n0_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 n0_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 n0_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 n0_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 n0_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 n0_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 n0_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet n0_ippsECCPGet
#define ippsECCPGetOrderBitSize n0_ippsECCPGetOrderBitSize
#define ippsECCPValidate n0_ippsECCPValidate
#define ippsECCPPointGetSize n0_ippsECCPPointGetSize
#define ippsECCPPointInit n0_ippsECCPPointInit
#define ippsECCPSetPoint n0_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity n0_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint n0_ippsECCPGetPoint
#define ippsECCPCheckPoint n0_ippsECCPCheckPoint
#define ippsECCPComparePoint n0_ippsECCPComparePoint
#define ippsECCPNegativePoint n0_ippsECCPNegativePoint
#define ippsECCPAddPoint n0_ippsECCPAddPoint
#define ippsECCPMulPointScalar n0_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair n0_ippsECCPGenKeyPair
#define ippsECCPPublicKey n0_ippsECCPPublicKey
#define ippsECCPValidateKeyPair n0_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair n0_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH n0_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC n0_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA n0_ippsECCPSignDSA
#define ippsECCPVerifyDSA n0_ippsECCPVerifyDSA
#define ippsECCPSignNR n0_ippsECCPSignNR
#define ippsECCPVerifyNR n0_ippsECCPVerifyNR
#define ippsECCPSignSM2 n0_ippsECCPSignSM2
#define ippsECCPVerifySM2 n0_ippsECCPVerifySM2
#define ippsGFpGetSize n0_ippsGFpGetSize
#define ippsGFpInitArbitrary n0_ippsGFpInitArbitrary
#define ippsGFpInitFixed n0_ippsGFpInitFixed
#define ippsGFpInit n0_ippsGFpInit
#define ippsGFpMethod_p192r1 n0_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 n0_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 n0_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 n0_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 n0_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 n0_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn n0_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 n0_ippsGFpMethod_p256
#define ippsGFpMethod_pArb n0_ippsGFpMethod_pArb
#define ippsGFpxGetSize n0_ippsGFpxGetSize
#define ippsGFpxInit n0_ippsGFpxInit
#define ippsGFpxInitBinomial n0_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 n0_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 n0_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 n0_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 n0_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom n0_ippsGFpxMethod_binom
#define ippsGFpxMethod_com n0_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize n0_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize n0_ippsGFpElementGetSize
#define ippsGFpElementInit n0_ippsGFpElementInit
#define ippsGFpSetElement n0_ippsGFpSetElement
#define ippsGFpSetElementRegular n0_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString n0_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom n0_ippsGFpSetElementRandom
#define ippsGFpSetElementHash n0_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf n0_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement n0_ippsGFpCpyElement
#define ippsGFpGetElement n0_ippsGFpGetElement
#define ippsGFpGetElementOctString n0_ippsGFpGetElementOctString
#define ippsGFpCmpElement n0_ippsGFpCmpElement
#define ippsGFpIsZeroElement n0_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement n0_ippsGFpIsUnityElement
#define ippsGFpConj n0_ippsGFpConj
#define ippsGFpNeg n0_ippsGFpNeg
#define ippsGFpInv n0_ippsGFpInv
#define ippsGFpSqrt n0_ippsGFpSqrt
#define ippsGFpSqr n0_ippsGFpSqr
#define ippsGFpAdd n0_ippsGFpAdd
#define ippsGFpSub n0_ippsGFpSub
#define ippsGFpMul n0_ippsGFpMul
#define ippsGFpExp n0_ippsGFpExp
#define ippsGFpMultiExp n0_ippsGFpMultiExp
#define ippsGFpAdd_PE n0_ippsGFpAdd_PE
#define ippsGFpSub_PE n0_ippsGFpSub_PE
#define ippsGFpMul_PE n0_ippsGFpMul_PE
#define ippsGFpGetInfo n0_ippsGFpGetInfo
#define ippsGFpECGetSize n0_ippsGFpECGetSize
#define ippsGFpECInit n0_ippsGFpECInit
#define ippsGFpECSet n0_ippsGFpECSet
#define ippsGFpECSetSubgroup n0_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 n0_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 n0_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 n0_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 n0_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 n0_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 n0_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 n0_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 n0_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 n0_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 n0_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 n0_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 n0_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 n0_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 n0_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 n0_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet n0_ippsGFpECGet
#define ippsGFpECGetSubgroup n0_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize n0_ippsGFpECScratchBufferSize
#define ippsGFpECVerify n0_ippsGFpECVerify
#define ippsGFpECPointGetSize n0_ippsGFpECPointGetSize
#define ippsGFpECPointInit n0_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity n0_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint n0_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular n0_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom n0_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint n0_ippsGFpECMakePoint
#define ippsGFpECSetPointHash n0_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible n0_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf n0_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf n0_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint n0_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular n0_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString n0_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString n0_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint n0_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup n0_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint n0_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint n0_ippsGFpECCmpPoint
#define ippsGFpECNegPoint n0_ippsGFpECNegPoint
#define ippsGFpECAddPoint n0_ippsGFpECAddPoint
#define ippsGFpECMulPoint n0_ippsGFpECMulPoint
#define ippsGFpECPrivateKey n0_ippsGFpECPrivateKey
#define ippsGFpECPublicKey n0_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair n0_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH n0_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC n0_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 n0_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA n0_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA n0_ippsGFpECVerifyDSA
#define ippsGFpECSignNR n0_ippsGFpECSignNR
#define ippsGFpECVerifyNR n0_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 n0_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 n0_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 n0_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize n0_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init n0_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup n0_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey n0_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm n0_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF n0_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 n0_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 n0_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 n0_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 n0_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 n0_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 n0_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 n0_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 n0_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize n0_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext n0_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize n0_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext n0_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion n8_ippcpGetLibVersion
#define ippsDESGetSize n8_ippsDESGetSize
#define ippsDESInit n8_ippsDESInit
#define ippsDESPack n8_ippsDESPack
#define ippsDESUnpack n8_ippsDESUnpack
#define ippsTDESEncryptECB n8_ippsTDESEncryptECB
#define ippsTDESDecryptECB n8_ippsTDESDecryptECB
#define ippsTDESEncryptCBC n8_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC n8_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB n8_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB n8_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB n8_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB n8_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR n8_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR n8_ippsTDESDecryptCTR
#define ippsAESGetSize n8_ippsAESGetSize
#define ippsAESInit n8_ippsAESInit
#define ippsAESSetKey n8_ippsAESSetKey
#define ippsAESPack n8_ippsAESPack
#define ippsAESUnpack n8_ippsAESUnpack
#define ippsAESEncryptECB n8_ippsAESEncryptECB
#define ippsAESDecryptECB n8_ippsAESDecryptECB
#define ippsAESEncryptCBC n8_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 n8_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 n8_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 n8_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC n8_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 n8_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 n8_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 n8_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB n8_ippsAESEncryptCFB
#define ippsAESDecryptCFB n8_ippsAESDecryptCFB
#define ippsAESEncryptOFB n8_ippsAESEncryptOFB
#define ippsAESDecryptOFB n8_ippsAESDecryptOFB
#define ippsAESEncryptCTR n8_ippsAESEncryptCTR
#define ippsAESDecryptCTR n8_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct n8_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct n8_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise n8_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise n8_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise n8_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB n8_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize n8_ippsSMS4GetSize
#define ippsSMS4Init n8_ippsSMS4Init
#define ippsSMS4SetKey n8_ippsSMS4SetKey
#define ippsSMS4EncryptECB n8_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB n8_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC n8_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 n8_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 n8_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 n8_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC n8_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 n8_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 n8_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 n8_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB n8_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB n8_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB n8_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB n8_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR n8_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR n8_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize n8_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit n8_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen n8_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen n8_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart n8_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt n8_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt n8_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag n8_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize n8_ippsAES_CCMGetSize
#define ippsAES_CCMInit n8_ippsAES_CCMInit
#define ippsAES_CCMMessageLen n8_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen n8_ippsAES_CCMTagLen
#define ippsAES_CCMStart n8_ippsAES_CCMStart
#define ippsAES_CCMEncrypt n8_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt n8_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag n8_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize n8_ippsAES_GCMGetSize
#define ippsAES_GCMInit n8_ippsAES_GCMInit
#define ippsAES_GCMReinit n8_ippsAES_GCMReinit
#define ippsAES_GCMReset n8_ippsAES_GCMReset
#define ippsAES_GCMProcessIV n8_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD n8_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart n8_ippsAES_GCMStart
#define ippsAES_GCMEncrypt n8_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt n8_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag n8_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize n8_ippsAES_XTSGetSize
#define ippsAES_XTSInit n8_ippsAES_XTSInit
#define ippsAES_XTSEncrypt n8_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt n8_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC n8_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt n8_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt n8_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize n8_ippsAES_CMACGetSize
#define ippsAES_CMACInit n8_ippsAES_CMACInit
#define ippsAES_CMACUpdate n8_ippsAES_CMACUpdate
#define ippsAES_CMACFinal n8_ippsAES_CMACFinal
#define ippsAES_CMACGetTag n8_ippsAES_CMACGetTag
#define ippsARCFourCheckKey n8_ippsARCFourCheckKey
#define ippsARCFourGetSize n8_ippsARCFourGetSize
#define ippsARCFourInit n8_ippsARCFourInit
#define ippsARCFourReset n8_ippsARCFourReset
#define ippsARCFourPack n8_ippsARCFourPack
#define ippsARCFourUnpack n8_ippsARCFourUnpack
#define ippsARCFourEncrypt n8_ippsARCFourEncrypt
#define ippsARCFourDecrypt n8_ippsARCFourDecrypt
#define ippsSHA1GetSize n8_ippsSHA1GetSize
#define ippsSHA1Init n8_ippsSHA1Init
#define ippsSHA1Duplicate n8_ippsSHA1Duplicate
#define ippsSHA1Pack n8_ippsSHA1Pack
#define ippsSHA1Unpack n8_ippsSHA1Unpack
#define ippsSHA1Update n8_ippsSHA1Update
#define ippsSHA1GetTag n8_ippsSHA1GetTag
#define ippsSHA1Final n8_ippsSHA1Final
#define ippsSHA1MessageDigest n8_ippsSHA1MessageDigest
#define ippsSHA224GetSize n8_ippsSHA224GetSize
#define ippsSHA224Init n8_ippsSHA224Init
#define ippsSHA224Duplicate n8_ippsSHA224Duplicate
#define ippsSHA224Pack n8_ippsSHA224Pack
#define ippsSHA224Unpack n8_ippsSHA224Unpack
#define ippsSHA224Update n8_ippsSHA224Update
#define ippsSHA224GetTag n8_ippsSHA224GetTag
#define ippsSHA224Final n8_ippsSHA224Final
#define ippsSHA224MessageDigest n8_ippsSHA224MessageDigest
#define ippsSHA256GetSize n8_ippsSHA256GetSize
#define ippsSHA256Init n8_ippsSHA256Init
#define ippsSHA256Duplicate n8_ippsSHA256Duplicate
#define ippsSHA256Pack n8_ippsSHA256Pack
#define ippsSHA256Unpack n8_ippsSHA256Unpack
#define ippsSHA256Update n8_ippsSHA256Update
#define ippsSHA256GetTag n8_ippsSHA256GetTag
#define ippsSHA256Final n8_ippsSHA256Final
#define ippsSHA256MessageDigest n8_ippsSHA256MessageDigest
#define ippsSHA384GetSize n8_ippsSHA384GetSize
#define ippsSHA384Init n8_ippsSHA384Init
#define ippsSHA384Duplicate n8_ippsSHA384Duplicate
#define ippsSHA384Pack n8_ippsSHA384Pack
#define ippsSHA384Unpack n8_ippsSHA384Unpack
#define ippsSHA384Update n8_ippsSHA384Update
#define ippsSHA384GetTag n8_ippsSHA384GetTag
#define ippsSHA384Final n8_ippsSHA384Final
#define ippsSHA384MessageDigest n8_ippsSHA384MessageDigest
#define ippsSHA512GetSize n8_ippsSHA512GetSize
#define ippsSHA512Init n8_ippsSHA512Init
#define ippsSHA512Duplicate n8_ippsSHA512Duplicate
#define ippsSHA512Pack n8_ippsSHA512Pack
#define ippsSHA512Unpack n8_ippsSHA512Unpack
#define ippsSHA512Update n8_ippsSHA512Update
#define ippsSHA512GetTag n8_ippsSHA512GetTag
#define ippsSHA512Final n8_ippsSHA512Final
#define ippsSHA512MessageDigest n8_ippsSHA512MessageDigest
#define ippsMD5GetSize n8_ippsMD5GetSize
#define ippsMD5Init n8_ippsMD5Init
#define ippsMD5Duplicate n8_ippsMD5Duplicate
#define ippsMD5Pack n8_ippsMD5Pack
#define ippsMD5Unpack n8_ippsMD5Unpack
#define ippsMD5Update n8_ippsMD5Update
#define ippsMD5GetTag n8_ippsMD5GetTag
#define ippsMD5Final n8_ippsMD5Final
#define ippsMD5MessageDigest n8_ippsMD5MessageDigest
#define ippsSM3GetSize n8_ippsSM3GetSize
#define ippsSM3Init n8_ippsSM3Init
#define ippsSM3Duplicate n8_ippsSM3Duplicate
#define ippsSM3Pack n8_ippsSM3Pack
#define ippsSM3Unpack n8_ippsSM3Unpack
#define ippsSM3Update n8_ippsSM3Update
#define ippsSM3GetTag n8_ippsSM3GetTag
#define ippsSM3Final n8_ippsSM3Final
#define ippsSM3MessageDigest n8_ippsSM3MessageDigest
#define ippsHashGetSize n8_ippsHashGetSize
#define ippsHashInit n8_ippsHashInit
#define ippsHashPack n8_ippsHashPack
#define ippsHashUnpack n8_ippsHashUnpack
#define ippsHashDuplicate n8_ippsHashDuplicate
#define ippsHashUpdate n8_ippsHashUpdate
#define ippsHashGetTag n8_ippsHashGetTag
#define ippsHashFinal n8_ippsHashFinal
#define ippsHashMessage n8_ippsHashMessage
#define ippsHashMethod_MD5 n8_ippsHashMethod_MD5
#define ippsHashMethod_SM3 n8_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 n8_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI n8_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT n8_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 n8_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI n8_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT n8_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 n8_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI n8_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT n8_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 n8_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 n8_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 n8_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 n8_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize n8_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 n8_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 n8_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 n8_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 n8_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI n8_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT n8_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 n8_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI n8_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT n8_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 n8_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI n8_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT n8_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 n8_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI n8_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT n8_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 n8_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI n8_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT n8_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 n8_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 n8_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 n8_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 n8_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 n8_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 n8_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 n8_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 n8_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf n8_ippsHashGetSize_rmf
#define ippsHashInit_rmf n8_ippsHashInit_rmf
#define ippsHashPack_rmf n8_ippsHashPack_rmf
#define ippsHashUnpack_rmf n8_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf n8_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf n8_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf n8_ippsHashGetTag_rmf
#define ippsHashFinal_rmf n8_ippsHashFinal_rmf
#define ippsHashMessage_rmf n8_ippsHashMessage_rmf
#define ippsHashMethodGetInfo n8_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf n8_ippsHashGetInfo_rmf
#define ippsMGF n8_ippsMGF
#define ippsMGF1_rmf n8_ippsMGF1_rmf
#define ippsMGF2_rmf n8_ippsMGF2_rmf
#define ippsHMAC_GetSize n8_ippsHMAC_GetSize
#define ippsHMAC_Init n8_ippsHMAC_Init
#define ippsHMAC_Pack n8_ippsHMAC_Pack
#define ippsHMAC_Unpack n8_ippsHMAC_Unpack
#define ippsHMAC_Duplicate n8_ippsHMAC_Duplicate
#define ippsHMAC_Update n8_ippsHMAC_Update
#define ippsHMAC_Final n8_ippsHMAC_Final
#define ippsHMAC_GetTag n8_ippsHMAC_GetTag
#define ippsHMAC_Message n8_ippsHMAC_Message
#define ippsHMACGetSize_rmf n8_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf n8_ippsHMACInit_rmf
#define ippsHMACPack_rmf n8_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf n8_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf n8_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf n8_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf n8_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf n8_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf n8_ippsHMACMessage_rmf
#define ippsBigNumGetSize n8_ippsBigNumGetSize
#define ippsBigNumInit n8_ippsBigNumInit
#define ippsCmpZero_BN n8_ippsCmpZero_BN
#define ippsCmp_BN n8_ippsCmp_BN
#define ippsGetSize_BN n8_ippsGetSize_BN
#define ippsSet_BN n8_ippsSet_BN
#define ippsGet_BN n8_ippsGet_BN
#define ippsRef_BN n8_ippsRef_BN
#define ippsExtGet_BN n8_ippsExtGet_BN
#define ippsAdd_BN n8_ippsAdd_BN
#define ippsSub_BN n8_ippsSub_BN
#define ippsMul_BN n8_ippsMul_BN
#define ippsMAC_BN_I n8_ippsMAC_BN_I
#define ippsDiv_BN n8_ippsDiv_BN
#define ippsMod_BN n8_ippsMod_BN
#define ippsGcd_BN n8_ippsGcd_BN
#define ippsModInv_BN n8_ippsModInv_BN
#define ippsSetOctString_BN n8_ippsSetOctString_BN
#define ippsGetOctString_BN n8_ippsGetOctString_BN
#define ippsMontGetSize n8_ippsMontGetSize
#define ippsMontInit n8_ippsMontInit
#define ippsMontSet n8_ippsMontSet
#define ippsMontGet n8_ippsMontGet
#define ippsMontForm n8_ippsMontForm
#define ippsMontMul n8_ippsMontMul
#define ippsMontExp n8_ippsMontExp
#define ippsPRNGGetSize n8_ippsPRNGGetSize
#define ippsPRNGInit n8_ippsPRNGInit
#define ippsPRNGSetModulus n8_ippsPRNGSetModulus
#define ippsPRNGSetH0 n8_ippsPRNGSetH0
#define ippsPRNGSetAugment n8_ippsPRNGSetAugment
#define ippsPRNGSetSeed n8_ippsPRNGSetSeed
#define ippsPRNGGetSeed n8_ippsPRNGGetSeed
#define ippsPRNGen n8_ippsPRNGen
#define ippsPRNGen_BN n8_ippsPRNGen_BN
#define ippsPRNGenRDRAND n8_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN n8_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED n8_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN n8_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize n8_ippsPrimeGetSize
#define ippsPrimeInit n8_ippsPrimeInit
#define ippsPrimeGen n8_ippsPrimeGen
#define ippsPrimeTest n8_ippsPrimeTest
#define ippsPrimeGen_BN n8_ippsPrimeGen_BN
#define ippsPrimeTest_BN n8_ippsPrimeTest_BN
#define ippsPrimeGet n8_ippsPrimeGet
#define ippsPrimeGet_BN n8_ippsPrimeGet_BN
#define ippsPrimeSet n8_ippsPrimeSet
#define ippsPrimeSet_BN n8_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey n8_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey n8_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey n8_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey n8_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 n8_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 n8_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 n8_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 n8_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 n8_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 n8_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 n8_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 n8_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey n8_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey n8_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt n8_ippsRSA_Encrypt
#define ippsRSA_Decrypt n8_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys n8_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys n8_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP n8_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP n8_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf n8_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf n8_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 n8_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 n8_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS n8_ippsRSASign_PSS
#define ippsRSAVerify_PSS n8_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf n8_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf n8_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 n8_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 n8_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf n8_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf n8_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString n8_ippsDLGetResultString
#define ippsDLPGetSize n8_ippsDLPGetSize
#define ippsDLPInit n8_ippsDLPInit
#define ippsDLPPack n8_ippsDLPPack
#define ippsDLPUnpack n8_ippsDLPUnpack
#define ippsDLPSet n8_ippsDLPSet
#define ippsDLPGet n8_ippsDLPGet
#define ippsDLPSetDP n8_ippsDLPSetDP
#define ippsDLPGetDP n8_ippsDLPGetDP
#define ippsDLPGenKeyPair n8_ippsDLPGenKeyPair
#define ippsDLPPublicKey n8_ippsDLPPublicKey
#define ippsDLPValidateKeyPair n8_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair n8_ippsDLPSetKeyPair
#define ippsDLPSignDSA n8_ippsDLPSignDSA
#define ippsDLPVerifyDSA n8_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH n8_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA n8_ippsDLPGenerateDSA
#define ippsDLPValidateDSA n8_ippsDLPValidateDSA
#define ippsDLPGenerateDH n8_ippsDLPGenerateDH
#define ippsDLPValidateDH n8_ippsDLPValidateDH
#define ippsECCGetResultString n8_ippsECCGetResultString
#define ippsECCPGetSize n8_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 n8_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 n8_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 n8_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 n8_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 n8_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 n8_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 n8_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 n8_ippsECCPGetSizeStdSM2
#define ippsECCPInit n8_ippsECCPInit
#define ippsECCPInitStd128r1 n8_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 n8_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 n8_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 n8_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 n8_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 n8_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 n8_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 n8_ippsECCPInitStdSM2
#define ippsECCPSet n8_ippsECCPSet
#define ippsECCPSetStd n8_ippsECCPSetStd
#define ippsECCPSetStd128r1 n8_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 n8_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 n8_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 n8_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 n8_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 n8_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 n8_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 n8_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 n8_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 n8_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 n8_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 n8_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 n8_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 n8_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet n8_ippsECCPGet
#define ippsECCPGetOrderBitSize n8_ippsECCPGetOrderBitSize
#define ippsECCPValidate n8_ippsECCPValidate
#define ippsECCPPointGetSize n8_ippsECCPPointGetSize
#define ippsECCPPointInit n8_ippsECCPPointInit
#define ippsECCPSetPoint n8_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity n8_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint n8_ippsECCPGetPoint
#define ippsECCPCheckPoint n8_ippsECCPCheckPoint
#define ippsECCPComparePoint n8_ippsECCPComparePoint
#define ippsECCPNegativePoint n8_ippsECCPNegativePoint
#define ippsECCPAddPoint n8_ippsECCPAddPoint
#define ippsECCPMulPointScalar n8_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair n8_ippsECCPGenKeyPair
#define ippsECCPPublicKey n8_ippsECCPPublicKey
#define ippsECCPValidateKeyPair n8_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair n8_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH n8_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC n8_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA n8_ippsECCPSignDSA
#define ippsECCPVerifyDSA n8_ippsECCPVerifyDSA
#define ippsECCPSignNR n8_ippsECCPSignNR
#define ippsECCPVerifyNR n8_ippsECCPVerifyNR
#define ippsECCPSignSM2 n8_ippsECCPSignSM2
#define ippsECCPVerifySM2 n8_ippsECCPVerifySM2
#define ippsGFpGetSize n8_ippsGFpGetSize
#define ippsGFpInitArbitrary n8_ippsGFpInitArbitrary
#define ippsGFpInitFixed n8_ippsGFpInitFixed
#define ippsGFpInit n8_ippsGFpInit
#define ippsGFpMethod_p192r1 n8_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 n8_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 n8_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 n8_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 n8_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 n8_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn n8_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 n8_ippsGFpMethod_p256
#define ippsGFpMethod_pArb n8_ippsGFpMethod_pArb
#define ippsGFpxGetSize n8_ippsGFpxGetSize
#define ippsGFpxInit n8_ippsGFpxInit
#define ippsGFpxInitBinomial n8_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 n8_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 n8_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 n8_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 n8_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom n8_ippsGFpxMethod_binom
#define ippsGFpxMethod_com n8_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize n8_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize n8_ippsGFpElementGetSize
#define ippsGFpElementInit n8_ippsGFpElementInit
#define ippsGFpSetElement n8_ippsGFpSetElement
#define ippsGFpSetElementRegular n8_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString n8_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom n8_ippsGFpSetElementRandom
#define ippsGFpSetElementHash n8_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf n8_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement n8_ippsGFpCpyElement
#define ippsGFpGetElement n8_ippsGFpGetElement
#define ippsGFpGetElementOctString n8_ippsGFpGetElementOctString
#define ippsGFpCmpElement n8_ippsGFpCmpElement
#define ippsGFpIsZeroElement n8_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement n8_ippsGFpIsUnityElement
#define ippsGFpConj n8_ippsGFpConj
#define ippsGFpNeg n8_ippsGFpNeg
#define ippsGFpInv n8_ippsGFpInv
#define ippsGFpSqrt n8_ippsGFpSqrt
#define ippsGFpSqr n8_ippsGFpSqr
#define ippsGFpAdd n8_ippsGFpAdd
#define ippsGFpSub n8_ippsGFpSub
#define ippsGFpMul n8_ippsGFpMul
#define ippsGFpExp n8_ippsGFpExp
#define ippsGFpMultiExp n8_ippsGFpMultiExp
#define ippsGFpAdd_PE n8_ippsGFpAdd_PE
#define ippsGFpSub_PE n8_ippsGFpSub_PE
#define ippsGFpMul_PE n8_ippsGFpMul_PE
#define ippsGFpGetInfo n8_ippsGFpGetInfo
#define ippsGFpECGetSize n8_ippsGFpECGetSize
#define ippsGFpECInit n8_ippsGFpECInit
#define ippsGFpECSet n8_ippsGFpECSet
#define ippsGFpECSetSubgroup n8_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 n8_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 n8_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 n8_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 n8_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 n8_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 n8_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 n8_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 n8_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 n8_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 n8_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 n8_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 n8_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 n8_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 n8_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 n8_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet n8_ippsGFpECGet
#define ippsGFpECGetSubgroup n8_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize n8_ippsGFpECScratchBufferSize
#define ippsGFpECVerify n8_ippsGFpECVerify
#define ippsGFpECPointGetSize n8_ippsGFpECPointGetSize
#define ippsGFpECPointInit n8_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity n8_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint n8_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular n8_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom n8_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint n8_ippsGFpECMakePoint
#define ippsGFpECSetPointHash n8_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible n8_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf n8_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf n8_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint n8_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular n8_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString n8_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString n8_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint n8_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup n8_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint n8_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint n8_ippsGFpECCmpPoint
#define ippsGFpECNegPoint n8_ippsGFpECNegPoint
#define ippsGFpECAddPoint n8_ippsGFpECAddPoint
#define ippsGFpECMulPoint n8_ippsGFpECMulPoint
#define ippsGFpECPrivateKey n8_ippsGFpECPrivateKey
#define ippsGFpECPublicKey n8_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair n8_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH n8_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC n8_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 n8_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA n8_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA n8_ippsGFpECVerifyDSA
#define ippsGFpECSignNR n8_ippsGFpECSignNR
#define ippsGFpECVerifyNR n8_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 n8_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 n8_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 n8_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize n8_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init n8_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup n8_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey n8_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm n8_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF n8_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 n8_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 n8_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 n8_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 n8_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 n8_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 n8_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 n8_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 n8_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize n8_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext n8_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize n8_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext n8_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion p8_ippcpGetLibVersion
#define ippsDESGetSize p8_ippsDESGetSize
#define ippsDESInit p8_ippsDESInit
#define ippsDESPack p8_ippsDESPack
#define ippsDESUnpack p8_ippsDESUnpack
#define ippsTDESEncryptECB p8_ippsTDESEncryptECB
#define ippsTDESDecryptECB p8_ippsTDESDecryptECB
#define ippsTDESEncryptCBC p8_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC p8_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB p8_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB p8_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB p8_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB p8_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR p8_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR p8_ippsTDESDecryptCTR
#define ippsAESGetSize p8_ippsAESGetSize
#define ippsAESInit p8_ippsAESInit
#define ippsAESSetKey p8_ippsAESSetKey
#define ippsAESPack p8_ippsAESPack
#define ippsAESUnpack p8_ippsAESUnpack
#define ippsAESEncryptECB p8_ippsAESEncryptECB
#define ippsAESDecryptECB p8_ippsAESDecryptECB
#define ippsAESEncryptCBC p8_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 p8_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 p8_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 p8_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC p8_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 p8_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 p8_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 p8_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB p8_ippsAESEncryptCFB
#define ippsAESDecryptCFB p8_ippsAESDecryptCFB
#define ippsAESEncryptOFB p8_ippsAESEncryptOFB
#define ippsAESDecryptOFB p8_ippsAESDecryptOFB
#define ippsAESEncryptCTR p8_ippsAESEncryptCTR
#define ippsAESDecryptCTR p8_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct p8_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct p8_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise p8_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise p8_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise p8_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB p8_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize p8_ippsSMS4GetSize
#define ippsSMS4Init p8_ippsSMS4Init
#define ippsSMS4SetKey p8_ippsSMS4SetKey
#define ippsSMS4EncryptECB p8_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB p8_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC p8_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 p8_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 p8_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 p8_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC p8_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 p8_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 p8_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 p8_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB p8_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB p8_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB p8_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB p8_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR p8_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR p8_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize p8_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit p8_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen p8_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen p8_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart p8_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt p8_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt p8_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag p8_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize p8_ippsAES_CCMGetSize
#define ippsAES_CCMInit p8_ippsAES_CCMInit
#define ippsAES_CCMMessageLen p8_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen p8_ippsAES_CCMTagLen
#define ippsAES_CCMStart p8_ippsAES_CCMStart
#define ippsAES_CCMEncrypt p8_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt p8_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag p8_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize p8_ippsAES_GCMGetSize
#define ippsAES_GCMInit p8_ippsAES_GCMInit
#define ippsAES_GCMReinit p8_ippsAES_GCMReinit
#define ippsAES_GCMReset p8_ippsAES_GCMReset
#define ippsAES_GCMProcessIV p8_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD p8_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart p8_ippsAES_GCMStart
#define ippsAES_GCMEncrypt p8_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt p8_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag p8_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize p8_ippsAES_XTSGetSize
#define ippsAES_XTSInit p8_ippsAES_XTSInit
#define ippsAES_XTSEncrypt p8_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt p8_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC p8_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt p8_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt p8_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize p8_ippsAES_CMACGetSize
#define ippsAES_CMACInit p8_ippsAES_CMACInit
#define ippsAES_CMACUpdate p8_ippsAES_CMACUpdate
#define ippsAES_CMACFinal p8_ippsAES_CMACFinal
#define ippsAES_CMACGetTag p8_ippsAES_CMACGetTag
#define ippsARCFourCheckKey p8_ippsARCFourCheckKey
#define ippsARCFourGetSize p8_ippsARCFourGetSize
#define ippsARCFourInit p8_ippsARCFourInit
#define ippsARCFourReset p8_ippsARCFourReset
#define ippsARCFourPack p8_ippsARCFourPack
#define ippsARCFourUnpack p8_ippsARCFourUnpack
#define ippsARCFourEncrypt p8_ippsARCFourEncrypt
#define ippsARCFourDecrypt p8_ippsARCFourDecrypt
#define ippsSHA1GetSize p8_ippsSHA1GetSize
#define ippsSHA1Init p8_ippsSHA1Init
#define ippsSHA1Duplicate p8_ippsSHA1Duplicate
#define ippsSHA1Pack p8_ippsSHA1Pack
#define ippsSHA1Unpack p8_ippsSHA1Unpack
#define ippsSHA1Update p8_ippsSHA1Update
#define ippsSHA1GetTag p8_ippsSHA1GetTag
#define ippsSHA1Final p8_ippsSHA1Final
#define ippsSHA1MessageDigest p8_ippsSHA1MessageDigest
#define ippsSHA224GetSize p8_ippsSHA224GetSize
#define ippsSHA224Init p8_ippsSHA224Init
#define ippsSHA224Duplicate p8_ippsSHA224Duplicate
#define ippsSHA224Pack p8_ippsSHA224Pack
#define ippsSHA224Unpack p8_ippsSHA224Unpack
#define ippsSHA224Update p8_ippsSHA224Update
#define ippsSHA224GetTag p8_ippsSHA224GetTag
#define ippsSHA224Final p8_ippsSHA224Final
#define ippsSHA224MessageDigest p8_ippsSHA224MessageDigest
#define ippsSHA256GetSize p8_ippsSHA256GetSize
#define ippsSHA256Init p8_ippsSHA256Init
#define ippsSHA256Duplicate p8_ippsSHA256Duplicate
#define ippsSHA256Pack p8_ippsSHA256Pack
#define ippsSHA256Unpack p8_ippsSHA256Unpack
#define ippsSHA256Update p8_ippsSHA256Update
#define ippsSHA256GetTag p8_ippsSHA256GetTag
#define ippsSHA256Final p8_ippsSHA256Final
#define ippsSHA256MessageDigest p8_ippsSHA256MessageDigest
#define ippsSHA384GetSize p8_ippsSHA384GetSize
#define ippsSHA384Init p8_ippsSHA384Init
#define ippsSHA384Duplicate p8_ippsSHA384Duplicate
#define ippsSHA384Pack p8_ippsSHA384Pack
#define ippsSHA384Unpack p8_ippsSHA384Unpack
#define ippsSHA384Update p8_ippsSHA384Update
#define ippsSHA384GetTag p8_ippsSHA384GetTag
#define ippsSHA384Final p8_ippsSHA384Final
#define ippsSHA384MessageDigest p8_ippsSHA384MessageDigest
#define ippsSHA512GetSize p8_ippsSHA512GetSize
#define ippsSHA512Init p8_ippsSHA512Init
#define ippsSHA512Duplicate p8_ippsSHA512Duplicate
#define ippsSHA512Pack p8_ippsSHA512Pack
#define ippsSHA512Unpack p8_ippsSHA512Unpack
#define ippsSHA512Update p8_ippsSHA512Update
#define ippsSHA512GetTag p8_ippsSHA512GetTag
#define ippsSHA512Final p8_ippsSHA512Final
#define ippsSHA512MessageDigest p8_ippsSHA512MessageDigest
#define ippsMD5GetSize p8_ippsMD5GetSize
#define ippsMD5Init p8_ippsMD5Init
#define ippsMD5Duplicate p8_ippsMD5Duplicate
#define ippsMD5Pack p8_ippsMD5Pack
#define ippsMD5Unpack p8_ippsMD5Unpack
#define ippsMD5Update p8_ippsMD5Update
#define ippsMD5GetTag p8_ippsMD5GetTag
#define ippsMD5Final p8_ippsMD5Final
#define ippsMD5MessageDigest p8_ippsMD5MessageDigest
#define ippsSM3GetSize p8_ippsSM3GetSize
#define ippsSM3Init p8_ippsSM3Init
#define ippsSM3Duplicate p8_ippsSM3Duplicate
#define ippsSM3Pack p8_ippsSM3Pack
#define ippsSM3Unpack p8_ippsSM3Unpack
#define ippsSM3Update p8_ippsSM3Update
#define ippsSM3GetTag p8_ippsSM3GetTag
#define ippsSM3Final p8_ippsSM3Final
#define ippsSM3MessageDigest p8_ippsSM3MessageDigest
#define ippsHashGetSize p8_ippsHashGetSize
#define ippsHashInit p8_ippsHashInit
#define ippsHashPack p8_ippsHashPack
#define ippsHashUnpack p8_ippsHashUnpack
#define ippsHashDuplicate p8_ippsHashDuplicate
#define ippsHashUpdate p8_ippsHashUpdate
#define ippsHashGetTag p8_ippsHashGetTag
#define ippsHashFinal p8_ippsHashFinal
#define ippsHashMessage p8_ippsHashMessage
#define ippsHashMethod_MD5 p8_ippsHashMethod_MD5
#define ippsHashMethod_SM3 p8_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 p8_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI p8_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT p8_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 p8_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI p8_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT p8_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 p8_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI p8_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT p8_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 p8_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 p8_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 p8_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 p8_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize p8_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 p8_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 p8_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 p8_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 p8_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI p8_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT p8_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 p8_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI p8_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT p8_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 p8_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI p8_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT p8_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 p8_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI p8_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT p8_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 p8_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI p8_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT p8_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 p8_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 p8_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 p8_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 p8_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 p8_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 p8_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 p8_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 p8_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf p8_ippsHashGetSize_rmf
#define ippsHashInit_rmf p8_ippsHashInit_rmf
#define ippsHashPack_rmf p8_ippsHashPack_rmf
#define ippsHashUnpack_rmf p8_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf p8_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf p8_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf p8_ippsHashGetTag_rmf
#define ippsHashFinal_rmf p8_ippsHashFinal_rmf
#define ippsHashMessage_rmf p8_ippsHashMessage_rmf
#define ippsHashMethodGetInfo p8_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf p8_ippsHashGetInfo_rmf
#define ippsMGF p8_ippsMGF
#define ippsMGF1_rmf p8_ippsMGF1_rmf
#define ippsMGF2_rmf p8_ippsMGF2_rmf
#define ippsHMAC_GetSize p8_ippsHMAC_GetSize
#define ippsHMAC_Init p8_ippsHMAC_Init
#define ippsHMAC_Pack p8_ippsHMAC_Pack
#define ippsHMAC_Unpack p8_ippsHMAC_Unpack
#define ippsHMAC_Duplicate p8_ippsHMAC_Duplicate
#define ippsHMAC_Update p8_ippsHMAC_Update
#define ippsHMAC_Final p8_ippsHMAC_Final
#define ippsHMAC_GetTag p8_ippsHMAC_GetTag
#define ippsHMAC_Message p8_ippsHMAC_Message
#define ippsHMACGetSize_rmf p8_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf p8_ippsHMACInit_rmf
#define ippsHMACPack_rmf p8_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf p8_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf p8_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf p8_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf p8_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf p8_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf p8_ippsHMACMessage_rmf
#define ippsBigNumGetSize p8_ippsBigNumGetSize
#define ippsBigNumInit p8_ippsBigNumInit
#define ippsCmpZero_BN p8_ippsCmpZero_BN
#define ippsCmp_BN p8_ippsCmp_BN
#define ippsGetSize_BN p8_ippsGetSize_BN
#define ippsSet_BN p8_ippsSet_BN
#define ippsGet_BN p8_ippsGet_BN
#define ippsRef_BN p8_ippsRef_BN
#define ippsExtGet_BN p8_ippsExtGet_BN
#define ippsAdd_BN p8_ippsAdd_BN
#define ippsSub_BN p8_ippsSub_BN
#define ippsMul_BN p8_ippsMul_BN
#define ippsMAC_BN_I p8_ippsMAC_BN_I
#define ippsDiv_BN p8_ippsDiv_BN
#define ippsMod_BN p8_ippsMod_BN
#define ippsGcd_BN p8_ippsGcd_BN
#define ippsModInv_BN p8_ippsModInv_BN
#define ippsSetOctString_BN p8_ippsSetOctString_BN
#define ippsGetOctString_BN p8_ippsGetOctString_BN
#define ippsMontGetSize p8_ippsMontGetSize
#define ippsMontInit p8_ippsMontInit
#define ippsMontSet p8_ippsMontSet
#define ippsMontGet p8_ippsMontGet
#define ippsMontForm p8_ippsMontForm
#define ippsMontMul p8_ippsMontMul
#define ippsMontExp p8_ippsMontExp
#define ippsPRNGGetSize p8_ippsPRNGGetSize
#define ippsPRNGInit p8_ippsPRNGInit
#define ippsPRNGSetModulus p8_ippsPRNGSetModulus
#define ippsPRNGSetH0 p8_ippsPRNGSetH0
#define ippsPRNGSetAugment p8_ippsPRNGSetAugment
#define ippsPRNGSetSeed p8_ippsPRNGSetSeed
#define ippsPRNGGetSeed p8_ippsPRNGGetSeed
#define ippsPRNGen p8_ippsPRNGen
#define ippsPRNGen_BN p8_ippsPRNGen_BN
#define ippsPRNGenRDRAND p8_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN p8_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED p8_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN p8_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize p8_ippsPrimeGetSize
#define ippsPrimeInit p8_ippsPrimeInit
#define ippsPrimeGen p8_ippsPrimeGen
#define ippsPrimeTest p8_ippsPrimeTest
#define ippsPrimeGen_BN p8_ippsPrimeGen_BN
#define ippsPrimeTest_BN p8_ippsPrimeTest_BN
#define ippsPrimeGet p8_ippsPrimeGet
#define ippsPrimeGet_BN p8_ippsPrimeGet_BN
#define ippsPrimeSet p8_ippsPrimeSet
#define ippsPrimeSet_BN p8_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey p8_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey p8_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey p8_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey p8_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 p8_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 p8_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 p8_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 p8_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 p8_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 p8_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 p8_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 p8_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey p8_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey p8_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt p8_ippsRSA_Encrypt
#define ippsRSA_Decrypt p8_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys p8_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys p8_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP p8_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP p8_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf p8_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf p8_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 p8_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 p8_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS p8_ippsRSASign_PSS
#define ippsRSAVerify_PSS p8_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf p8_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf p8_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 p8_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 p8_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf p8_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf p8_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString p8_ippsDLGetResultString
#define ippsDLPGetSize p8_ippsDLPGetSize
#define ippsDLPInit p8_ippsDLPInit
#define ippsDLPPack p8_ippsDLPPack
#define ippsDLPUnpack p8_ippsDLPUnpack
#define ippsDLPSet p8_ippsDLPSet
#define ippsDLPGet p8_ippsDLPGet
#define ippsDLPSetDP p8_ippsDLPSetDP
#define ippsDLPGetDP p8_ippsDLPGetDP
#define ippsDLPGenKeyPair p8_ippsDLPGenKeyPair
#define ippsDLPPublicKey p8_ippsDLPPublicKey
#define ippsDLPValidateKeyPair p8_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair p8_ippsDLPSetKeyPair
#define ippsDLPSignDSA p8_ippsDLPSignDSA
#define ippsDLPVerifyDSA p8_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH p8_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA p8_ippsDLPGenerateDSA
#define ippsDLPValidateDSA p8_ippsDLPValidateDSA
#define ippsDLPGenerateDH p8_ippsDLPGenerateDH
#define ippsDLPValidateDH p8_ippsDLPValidateDH
#define ippsECCGetResultString p8_ippsECCGetResultString
#define ippsECCPGetSize p8_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 p8_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 p8_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 p8_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 p8_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 p8_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 p8_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 p8_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 p8_ippsECCPGetSizeStdSM2
#define ippsECCPInit p8_ippsECCPInit
#define ippsECCPInitStd128r1 p8_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 p8_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 p8_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 p8_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 p8_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 p8_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 p8_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 p8_ippsECCPInitStdSM2
#define ippsECCPSet p8_ippsECCPSet
#define ippsECCPSetStd p8_ippsECCPSetStd
#define ippsECCPSetStd128r1 p8_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 p8_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 p8_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 p8_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 p8_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 p8_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 p8_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 p8_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 p8_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 p8_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 p8_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 p8_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 p8_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 p8_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet p8_ippsECCPGet
#define ippsECCPGetOrderBitSize p8_ippsECCPGetOrderBitSize
#define ippsECCPValidate p8_ippsECCPValidate
#define ippsECCPPointGetSize p8_ippsECCPPointGetSize
#define ippsECCPPointInit p8_ippsECCPPointInit
#define ippsECCPSetPoint p8_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity p8_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint p8_ippsECCPGetPoint
#define ippsECCPCheckPoint p8_ippsECCPCheckPoint
#define ippsECCPComparePoint p8_ippsECCPComparePoint
#define ippsECCPNegativePoint p8_ippsECCPNegativePoint
#define ippsECCPAddPoint p8_ippsECCPAddPoint
#define ippsECCPMulPointScalar p8_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair p8_ippsECCPGenKeyPair
#define ippsECCPPublicKey p8_ippsECCPPublicKey
#define ippsECCPValidateKeyPair p8_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair p8_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH p8_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC p8_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA p8_ippsECCPSignDSA
#define ippsECCPVerifyDSA p8_ippsECCPVerifyDSA
#define ippsECCPSignNR p8_ippsECCPSignNR
#define ippsECCPVerifyNR p8_ippsECCPVerifyNR
#define ippsECCPSignSM2 p8_ippsECCPSignSM2
#define ippsECCPVerifySM2 p8_ippsECCPVerifySM2
#define ippsGFpGetSize p8_ippsGFpGetSize
#define ippsGFpInitArbitrary p8_ippsGFpInitArbitrary
#define ippsGFpInitFixed p8_ippsGFpInitFixed
#define ippsGFpInit p8_ippsGFpInit
#define ippsGFpMethod_p192r1 p8_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 p8_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 p8_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 p8_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 p8_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 p8_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn p8_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 p8_ippsGFpMethod_p256
#define ippsGFpMethod_pArb p8_ippsGFpMethod_pArb
#define ippsGFpxGetSize p8_ippsGFpxGetSize
#define ippsGFpxInit p8_ippsGFpxInit
#define ippsGFpxInitBinomial p8_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 p8_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 p8_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 p8_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 p8_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom p8_ippsGFpxMethod_binom
#define ippsGFpxMethod_com p8_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize p8_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize p8_ippsGFpElementGetSize
#define ippsGFpElementInit p8_ippsGFpElementInit
#define ippsGFpSetElement p8_ippsGFpSetElement
#define ippsGFpSetElementRegular p8_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString p8_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom p8_ippsGFpSetElementRandom
#define ippsGFpSetElementHash p8_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf p8_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement p8_ippsGFpCpyElement
#define ippsGFpGetElement p8_ippsGFpGetElement
#define ippsGFpGetElementOctString p8_ippsGFpGetElementOctString
#define ippsGFpCmpElement p8_ippsGFpCmpElement
#define ippsGFpIsZeroElement p8_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement p8_ippsGFpIsUnityElement
#define ippsGFpConj p8_ippsGFpConj
#define ippsGFpNeg p8_ippsGFpNeg
#define ippsGFpInv p8_ippsGFpInv
#define ippsGFpSqrt p8_ippsGFpSqrt
#define ippsGFpSqr p8_ippsGFpSqr
#define ippsGFpAdd p8_ippsGFpAdd
#define ippsGFpSub p8_ippsGFpSub
#define ippsGFpMul p8_ippsGFpMul
#define ippsGFpExp p8_ippsGFpExp
#define ippsGFpMultiExp p8_ippsGFpMultiExp
#define ippsGFpAdd_PE p8_ippsGFpAdd_PE
#define ippsGFpSub_PE p8_ippsGFpSub_PE
#define ippsGFpMul_PE p8_ippsGFpMul_PE
#define ippsGFpGetInfo p8_ippsGFpGetInfo
#define ippsGFpECGetSize p8_ippsGFpECGetSize
#define ippsGFpECInit p8_ippsGFpECInit
#define ippsGFpECSet p8_ippsGFpECSet
#define ippsGFpECSetSubgroup p8_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 p8_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 p8_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 p8_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 p8_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 p8_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 p8_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 p8_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 p8_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 p8_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 p8_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 p8_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 p8_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 p8_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 p8_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 p8_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet p8_ippsGFpECGet
#define ippsGFpECGetSubgroup p8_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize p8_ippsGFpECScratchBufferSize
#define ippsGFpECVerify p8_ippsGFpECVerify
#define ippsGFpECPointGetSize p8_ippsGFpECPointGetSize
#define ippsGFpECPointInit p8_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity p8_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint p8_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular p8_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom p8_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint p8_ippsGFpECMakePoint
#define ippsGFpECSetPointHash p8_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible p8_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf p8_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf p8_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint p8_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular p8_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString p8_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString p8_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint p8_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup p8_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint p8_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint p8_ippsGFpECCmpPoint
#define ippsGFpECNegPoint p8_ippsGFpECNegPoint
#define ippsGFpECAddPoint p8_ippsGFpECAddPoint
#define ippsGFpECMulPoint p8_ippsGFpECMulPoint
#define ippsGFpECPrivateKey p8_ippsGFpECPrivateKey
#define ippsGFpECPublicKey p8_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair p8_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH p8_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC p8_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 p8_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA p8_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA p8_ippsGFpECVerifyDSA
#define ippsGFpECSignNR p8_ippsGFpECSignNR
#define ippsGFpECVerifyNR p8_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 p8_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 p8_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 p8_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize p8_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init p8_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup p8_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey p8_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm p8_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF p8_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 p8_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 p8_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 p8_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 p8_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 p8_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 p8_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 p8_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 p8_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize p8_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext p8_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize p8_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext p8_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion s8_ippcpGetLibVersion
#define ippsDESGetSize s8_ippsDESGetSize
#define ippsDESInit s8_ippsDESInit
#define ippsDESPack s8_ippsDESPack
#define ippsDESUnpack s8_ippsDESUnpack
#define ippsTDESEncryptECB s8_ippsTDESEncryptECB
#define ippsTDESDecryptECB s8_ippsTDESDecryptECB
#define ippsTDESEncryptCBC s8_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC s8_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB s8_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB s8_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB s8_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB s8_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR s8_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR s8_ippsTDESDecryptCTR
#define ippsAESGetSize s8_ippsAESGetSize
#define ippsAESInit s8_ippsAESInit
#define ippsAESSetKey s8_ippsAESSetKey
#define ippsAESPack s8_ippsAESPack
#define ippsAESUnpack s8_ippsAESUnpack
#define ippsAESEncryptECB s8_ippsAESEncryptECB
#define ippsAESDecryptECB s8_ippsAESDecryptECB
#define ippsAESEncryptCBC s8_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 s8_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 s8_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 s8_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC s8_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 s8_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 s8_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 s8_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB s8_ippsAESEncryptCFB
#define ippsAESDecryptCFB s8_ippsAESDecryptCFB
#define ippsAESEncryptOFB s8_ippsAESEncryptOFB
#define ippsAESDecryptOFB s8_ippsAESDecryptOFB
#define ippsAESEncryptCTR s8_ippsAESEncryptCTR
#define ippsAESDecryptCTR s8_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct s8_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct s8_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise s8_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise s8_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise s8_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB s8_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize s8_ippsSMS4GetSize
#define ippsSMS4Init s8_ippsSMS4Init
#define ippsSMS4SetKey s8_ippsSMS4SetKey
#define ippsSMS4EncryptECB s8_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB s8_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC s8_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 s8_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 s8_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 s8_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC s8_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 s8_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 s8_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 s8_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB s8_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB s8_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB s8_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB s8_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR s8_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR s8_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize s8_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit s8_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen s8_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen s8_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart s8_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt s8_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt s8_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag s8_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize s8_ippsAES_CCMGetSize
#define ippsAES_CCMInit s8_ippsAES_CCMInit
#define ippsAES_CCMMessageLen s8_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen s8_ippsAES_CCMTagLen
#define ippsAES_CCMStart s8_ippsAES_CCMStart
#define ippsAES_CCMEncrypt s8_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt s8_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag s8_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize s8_ippsAES_GCMGetSize
#define ippsAES_GCMInit s8_ippsAES_GCMInit
#define ippsAES_GCMReinit s8_ippsAES_GCMReinit
#define ippsAES_GCMReset s8_ippsAES_GCMReset
#define ippsAES_GCMProcessIV s8_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD s8_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart s8_ippsAES_GCMStart
#define ippsAES_GCMEncrypt s8_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt s8_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag s8_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize s8_ippsAES_XTSGetSize
#define ippsAES_XTSInit s8_ippsAES_XTSInit
#define ippsAES_XTSEncrypt s8_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt s8_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC s8_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt s8_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt s8_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize s8_ippsAES_CMACGetSize
#define ippsAES_CMACInit s8_ippsAES_CMACInit
#define ippsAES_CMACUpdate s8_ippsAES_CMACUpdate
#define ippsAES_CMACFinal s8_ippsAES_CMACFinal
#define ippsAES_CMACGetTag s8_ippsAES_CMACGetTag
#define ippsARCFourCheckKey s8_ippsARCFourCheckKey
#define ippsARCFourGetSize s8_ippsARCFourGetSize
#define ippsARCFourInit s8_ippsARCFourInit
#define ippsARCFourReset s8_ippsARCFourReset
#define ippsARCFourPack s8_ippsARCFourPack
#define ippsARCFourUnpack s8_ippsARCFourUnpack
#define ippsARCFourEncrypt s8_ippsARCFourEncrypt
#define ippsARCFourDecrypt s8_ippsARCFourDecrypt
#define ippsSHA1GetSize s8_ippsSHA1GetSize
#define ippsSHA1Init s8_ippsSHA1Init
#define ippsSHA1Duplicate s8_ippsSHA1Duplicate
#define ippsSHA1Pack s8_ippsSHA1Pack
#define ippsSHA1Unpack s8_ippsSHA1Unpack
#define ippsSHA1Update s8_ippsSHA1Update
#define ippsSHA1GetTag s8_ippsSHA1GetTag
#define ippsSHA1Final s8_ippsSHA1Final
#define ippsSHA1MessageDigest s8_ippsSHA1MessageDigest
#define ippsSHA224GetSize s8_ippsSHA224GetSize
#define ippsSHA224Init s8_ippsSHA224Init
#define ippsSHA224Duplicate s8_ippsSHA224Duplicate
#define ippsSHA224Pack s8_ippsSHA224Pack
#define ippsSHA224Unpack s8_ippsSHA224Unpack
#define ippsSHA224Update s8_ippsSHA224Update
#define ippsSHA224GetTag s8_ippsSHA224GetTag
#define ippsSHA224Final s8_ippsSHA224Final
#define ippsSHA224MessageDigest s8_ippsSHA224MessageDigest
#define ippsSHA256GetSize s8_ippsSHA256GetSize
#define ippsSHA256Init s8_ippsSHA256Init
#define ippsSHA256Duplicate s8_ippsSHA256Duplicate
#define ippsSHA256Pack s8_ippsSHA256Pack
#define ippsSHA256Unpack s8_ippsSHA256Unpack
#define ippsSHA256Update s8_ippsSHA256Update
#define ippsSHA256GetTag s8_ippsSHA256GetTag
#define ippsSHA256Final s8_ippsSHA256Final
#define ippsSHA256MessageDigest s8_ippsSHA256MessageDigest
#define ippsSHA384GetSize s8_ippsSHA384GetSize
#define ippsSHA384Init s8_ippsSHA384Init
#define ippsSHA384Duplicate s8_ippsSHA384Duplicate
#define ippsSHA384Pack s8_ippsSHA384Pack
#define ippsSHA384Unpack s8_ippsSHA384Unpack
#define ippsSHA384Update s8_ippsSHA384Update
#define ippsSHA384GetTag s8_ippsSHA384GetTag
#define ippsSHA384Final s8_ippsSHA384Final
#define ippsSHA384MessageDigest s8_ippsSHA384MessageDigest
#define ippsSHA512GetSize s8_ippsSHA512GetSize
#define ippsSHA512Init s8_ippsSHA512Init
#define ippsSHA512Duplicate s8_ippsSHA512Duplicate
#define ippsSHA512Pack s8_ippsSHA512Pack
#define ippsSHA512Unpack s8_ippsSHA512Unpack
#define ippsSHA512Update s8_ippsSHA512Update
#define ippsSHA512GetTag s8_ippsSHA512GetTag
#define ippsSHA512Final s8_ippsSHA512Final
#define ippsSHA512MessageDigest s8_ippsSHA512MessageDigest
#define ippsMD5GetSize s8_ippsMD5GetSize
#define ippsMD5Init s8_ippsMD5Init
#define ippsMD5Duplicate s8_ippsMD5Duplicate
#define ippsMD5Pack s8_ippsMD5Pack
#define ippsMD5Unpack s8_ippsMD5Unpack
#define ippsMD5Update s8_ippsMD5Update
#define ippsMD5GetTag s8_ippsMD5GetTag
#define ippsMD5Final s8_ippsMD5Final
#define ippsMD5MessageDigest s8_ippsMD5MessageDigest
#define ippsSM3GetSize s8_ippsSM3GetSize
#define ippsSM3Init s8_ippsSM3Init
#define ippsSM3Duplicate s8_ippsSM3Duplicate
#define ippsSM3Pack s8_ippsSM3Pack
#define ippsSM3Unpack s8_ippsSM3Unpack
#define ippsSM3Update s8_ippsSM3Update
#define ippsSM3GetTag s8_ippsSM3GetTag
#define ippsSM3Final s8_ippsSM3Final
#define ippsSM3MessageDigest s8_ippsSM3MessageDigest
#define ippsHashGetSize s8_ippsHashGetSize
#define ippsHashInit s8_ippsHashInit
#define ippsHashPack s8_ippsHashPack
#define ippsHashUnpack s8_ippsHashUnpack
#define ippsHashDuplicate s8_ippsHashDuplicate
#define ippsHashUpdate s8_ippsHashUpdate
#define ippsHashGetTag s8_ippsHashGetTag
#define ippsHashFinal s8_ippsHashFinal
#define ippsHashMessage s8_ippsHashMessage
#define ippsHashMethod_MD5 s8_ippsHashMethod_MD5
#define ippsHashMethod_SM3 s8_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 s8_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI s8_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT s8_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 s8_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI s8_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT s8_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 s8_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI s8_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT s8_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 s8_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 s8_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 s8_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 s8_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize s8_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 s8_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 s8_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 s8_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 s8_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI s8_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT s8_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 s8_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI s8_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT s8_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 s8_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI s8_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT s8_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 s8_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI s8_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT s8_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 s8_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI s8_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT s8_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 s8_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 s8_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 s8_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 s8_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 s8_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 s8_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 s8_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 s8_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf s8_ippsHashGetSize_rmf
#define ippsHashInit_rmf s8_ippsHashInit_rmf
#define ippsHashPack_rmf s8_ippsHashPack_rmf
#define ippsHashUnpack_rmf s8_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf s8_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf s8_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf s8_ippsHashGetTag_rmf
#define ippsHashFinal_rmf s8_ippsHashFinal_rmf
#define ippsHashMessage_rmf s8_ippsHashMessage_rmf
#define ippsHashMethodGetInfo s8_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf s8_ippsHashGetInfo_rmf
#define ippsMGF s8_ippsMGF
#define ippsMGF1_rmf s8_ippsMGF1_rmf
#define ippsMGF2_rmf s8_ippsMGF2_rmf
#define ippsHMAC_GetSize s8_ippsHMAC_GetSize
#define ippsHMAC_Init s8_ippsHMAC_Init
#define ippsHMAC_Pack s8_ippsHMAC_Pack
#define ippsHMAC_Unpack s8_ippsHMAC_Unpack
#define ippsHMAC_Duplicate s8_ippsHMAC_Duplicate
#define ippsHMAC_Update s8_ippsHMAC_Update
#define ippsHMAC_Final s8_ippsHMAC_Final
#define ippsHMAC_GetTag s8_ippsHMAC_GetTag
#define ippsHMAC_Message s8_ippsHMAC_Message
#define ippsHMACGetSize_rmf s8_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf s8_ippsHMACInit_rmf
#define ippsHMACPack_rmf s8_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf s8_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf s8_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf s8_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf s8_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf s8_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf s8_ippsHMACMessage_rmf
#define ippsBigNumGetSize s8_ippsBigNumGetSize
#define ippsBigNumInit s8_ippsBigNumInit
#define ippsCmpZero_BN s8_ippsCmpZero_BN
#define ippsCmp_BN s8_ippsCmp_BN
#define ippsGetSize_BN s8_ippsGetSize_BN
#define ippsSet_BN s8_ippsSet_BN
#define ippsGet_BN s8_ippsGet_BN
#define ippsRef_BN s8_ippsRef_BN
#define ippsExtGet_BN s8_ippsExtGet_BN
#define ippsAdd_BN s8_ippsAdd_BN
#define ippsSub_BN s8_ippsSub_BN
#define ippsMul_BN s8_ippsMul_BN
#define ippsMAC_BN_I s8_ippsMAC_BN_I
#define ippsDiv_BN s8_ippsDiv_BN
#define ippsMod_BN s8_ippsMod_BN
#define ippsGcd_BN s8_ippsGcd_BN
#define ippsModInv_BN s8_ippsModInv_BN
#define ippsSetOctString_BN s8_ippsSetOctString_BN
#define ippsGetOctString_BN s8_ippsGetOctString_BN
#define ippsMontGetSize s8_ippsMontGetSize
#define ippsMontInit s8_ippsMontInit
#define ippsMontSet s8_ippsMontSet
#define ippsMontGet s8_ippsMontGet
#define ippsMontForm s8_ippsMontForm
#define ippsMontMul s8_ippsMontMul
#define ippsMontExp s8_ippsMontExp
#define ippsPRNGGetSize s8_ippsPRNGGetSize
#define ippsPRNGInit s8_ippsPRNGInit
#define ippsPRNGSetModulus s8_ippsPRNGSetModulus
#define ippsPRNGSetH0 s8_ippsPRNGSetH0
#define ippsPRNGSetAugment s8_ippsPRNGSetAugment
#define ippsPRNGSetSeed s8_ippsPRNGSetSeed
#define ippsPRNGGetSeed s8_ippsPRNGGetSeed
#define ippsPRNGen s8_ippsPRNGen
#define ippsPRNGen_BN s8_ippsPRNGen_BN
#define ippsPRNGenRDRAND s8_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN s8_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED s8_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN s8_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize s8_ippsPrimeGetSize
#define ippsPrimeInit s8_ippsPrimeInit
#define ippsPrimeGen s8_ippsPrimeGen
#define ippsPrimeTest s8_ippsPrimeTest
#define ippsPrimeGen_BN s8_ippsPrimeGen_BN
#define ippsPrimeTest_BN s8_ippsPrimeTest_BN
#define ippsPrimeGet s8_ippsPrimeGet
#define ippsPrimeGet_BN s8_ippsPrimeGet_BN
#define ippsPrimeSet s8_ippsPrimeSet
#define ippsPrimeSet_BN s8_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey s8_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey s8_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey s8_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey s8_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 s8_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 s8_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 s8_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 s8_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 s8_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 s8_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 s8_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 s8_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey s8_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey s8_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt s8_ippsRSA_Encrypt
#define ippsRSA_Decrypt s8_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys s8_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys s8_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP s8_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP s8_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf s8_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf s8_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 s8_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 s8_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS s8_ippsRSASign_PSS
#define ippsRSAVerify_PSS s8_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf s8_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf s8_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 s8_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 s8_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf s8_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf s8_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString s8_ippsDLGetResultString
#define ippsDLPGetSize s8_ippsDLPGetSize
#define ippsDLPInit s8_ippsDLPInit
#define ippsDLPPack s8_ippsDLPPack
#define ippsDLPUnpack s8_ippsDLPUnpack
#define ippsDLPSet s8_ippsDLPSet
#define ippsDLPGet s8_ippsDLPGet
#define ippsDLPSetDP s8_ippsDLPSetDP
#define ippsDLPGetDP s8_ippsDLPGetDP
#define ippsDLPGenKeyPair s8_ippsDLPGenKeyPair
#define ippsDLPPublicKey s8_ippsDLPPublicKey
#define ippsDLPValidateKeyPair s8_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair s8_ippsDLPSetKeyPair
#define ippsDLPSignDSA s8_ippsDLPSignDSA
#define ippsDLPVerifyDSA s8_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH s8_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA s8_ippsDLPGenerateDSA
#define ippsDLPValidateDSA s8_ippsDLPValidateDSA
#define ippsDLPGenerateDH s8_ippsDLPGenerateDH
#define ippsDLPValidateDH s8_ippsDLPValidateDH
#define ippsECCGetResultString s8_ippsECCGetResultString
#define ippsECCPGetSize s8_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 s8_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 s8_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 s8_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 s8_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 s8_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 s8_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 s8_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 s8_ippsECCPGetSizeStdSM2
#define ippsECCPInit s8_ippsECCPInit
#define ippsECCPInitStd128r1 s8_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 s8_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 s8_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 s8_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 s8_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 s8_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 s8_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 s8_ippsECCPInitStdSM2
#define ippsECCPSet s8_ippsECCPSet
#define ippsECCPSetStd s8_ippsECCPSetStd
#define ippsECCPSetStd128r1 s8_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 s8_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 s8_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 s8_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 s8_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 s8_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 s8_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 s8_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 s8_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 s8_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 s8_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 s8_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 s8_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 s8_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet s8_ippsECCPGet
#define ippsECCPGetOrderBitSize s8_ippsECCPGetOrderBitSize
#define ippsECCPValidate s8_ippsECCPValidate
#define ippsECCPPointGetSize s8_ippsECCPPointGetSize
#define ippsECCPPointInit s8_ippsECCPPointInit
#define ippsECCPSetPoint s8_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity s8_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint s8_ippsECCPGetPoint
#define ippsECCPCheckPoint s8_ippsECCPCheckPoint
#define ippsECCPComparePoint s8_ippsECCPComparePoint
#define ippsECCPNegativePoint s8_ippsECCPNegativePoint
#define ippsECCPAddPoint s8_ippsECCPAddPoint
#define ippsECCPMulPointScalar s8_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair s8_ippsECCPGenKeyPair
#define ippsECCPPublicKey s8_ippsECCPPublicKey
#define ippsECCPValidateKeyPair s8_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair s8_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH s8_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC s8_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA s8_ippsECCPSignDSA
#define ippsECCPVerifyDSA s8_ippsECCPVerifyDSA
#define ippsECCPSignNR s8_ippsECCPSignNR
#define ippsECCPVerifyNR s8_ippsECCPVerifyNR
#define ippsECCPSignSM2 s8_ippsECCPSignSM2
#define ippsECCPVerifySM2 s8_ippsECCPVerifySM2
#define ippsGFpGetSize s8_ippsGFpGetSize
#define ippsGFpInitArbitrary s8_ippsGFpInitArbitrary
#define ippsGFpInitFixed s8_ippsGFpInitFixed
#define ippsGFpInit s8_ippsGFpInit
#define ippsGFpMethod_p192r1 s8_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 s8_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 s8_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 s8_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 s8_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 s8_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn s8_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 s8_ippsGFpMethod_p256
#define ippsGFpMethod_pArb s8_ippsGFpMethod_pArb
#define ippsGFpxGetSize s8_ippsGFpxGetSize
#define ippsGFpxInit s8_ippsGFpxInit
#define ippsGFpxInitBinomial s8_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 s8_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 s8_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 s8_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 s8_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom s8_ippsGFpxMethod_binom
#define ippsGFpxMethod_com s8_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize s8_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize s8_ippsGFpElementGetSize
#define ippsGFpElementInit s8_ippsGFpElementInit
#define ippsGFpSetElement s8_ippsGFpSetElement
#define ippsGFpSetElementRegular s8_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString s8_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom s8_ippsGFpSetElementRandom
#define ippsGFpSetElementHash s8_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf s8_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement s8_ippsGFpCpyElement
#define ippsGFpGetElement s8_ippsGFpGetElement
#define ippsGFpGetElementOctString s8_ippsGFpGetElementOctString
#define ippsGFpCmpElement s8_ippsGFpCmpElement
#define ippsGFpIsZeroElement s8_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement s8_ippsGFpIsUnityElement
#define ippsGFpConj s8_ippsGFpConj
#define ippsGFpNeg s8_ippsGFpNeg
#define ippsGFpInv s8_ippsGFpInv
#define ippsGFpSqrt s8_ippsGFpSqrt
#define ippsGFpSqr s8_ippsGFpSqr
#define ippsGFpAdd s8_ippsGFpAdd
#define ippsGFpSub s8_ippsGFpSub
#define ippsGFpMul s8_ippsGFpMul
#define ippsGFpExp s8_ippsGFpExp
#define ippsGFpMultiExp s8_ippsGFpMultiExp
#define ippsGFpAdd_PE s8_ippsGFpAdd_PE
#define ippsGFpSub_PE s8_ippsGFpSub_PE
#define ippsGFpMul_PE s8_ippsGFpMul_PE
#define ippsGFpGetInfo s8_ippsGFpGetInfo
#define ippsGFpECGetSize s8_ippsGFpECGetSize
#define ippsGFpECInit s8_ippsGFpECInit
#define ippsGFpECSet s8_ippsGFpECSet
#define ippsGFpECSetSubgroup s8_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 s8_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 s8_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 s8_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 s8_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 s8_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 s8_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 s8_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 s8_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 s8_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 s8_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 s8_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 s8_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 s8_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 s8_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 s8_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet s8_ippsGFpECGet
#define ippsGFpECGetSubgroup s8_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize s8_ippsGFpECScratchBufferSize
#define ippsGFpECVerify s8_ippsGFpECVerify
#define ippsGFpECPointGetSize s8_ippsGFpECPointGetSize
#define ippsGFpECPointInit s8_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity s8_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint s8_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular s8_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom s8_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint s8_ippsGFpECMakePoint
#define ippsGFpECSetPointHash s8_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible s8_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf s8_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf s8_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint s8_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular s8_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString s8_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString s8_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint s8_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup s8_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint s8_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint s8_ippsGFpECCmpPoint
#define ippsGFpECNegPoint s8_ippsGFpECNegPoint
#define ippsGFpECAddPoint s8_ippsGFpECAddPoint
#define ippsGFpECMulPoint s8_ippsGFpECMulPoint
#define ippsGFpECPrivateKey s8_ippsGFpECPrivateKey
#define ippsGFpECPublicKey s8_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair s8_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH s8_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC s8_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 s8_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA s8_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA s8_ippsGFpECVerifyDSA
#define ippsGFpECSignNR s8_ippsGFpECSignNR
#define ippsGFpECVerifyNR s8_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 s8_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 s8_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 s8_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize s8_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init s8_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup s8_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey s8_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm s8_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF s8_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 s8_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 s8_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 s8_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 s8_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 s8_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 s8_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 s8_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 s8_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize s8_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext s8_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize s8_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext s8_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion w7_ippcpGetLibVersion
#define ippsDESGetSize w7_ippsDESGetSize
#define ippsDESInit w7_ippsDESInit
#define ippsDESPack w7_ippsDESPack
#define ippsDESUnpack w7_ippsDESUnpack
#define ippsTDESEncryptECB w7_ippsTDESEncryptECB
#define ippsTDESDecryptECB w7_ippsTDESDecryptECB
#define ippsTDESEncryptCBC w7_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC w7_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB w7_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB w7_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB w7_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB w7_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR w7_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR w7_ippsTDESDecryptCTR
#define ippsAESGetSize w7_ippsAESGetSize
#define ippsAESInit w7_ippsAESInit
#define ippsAESSetKey w7_ippsAESSetKey
#define ippsAESPack w7_ippsAESPack
#define ippsAESUnpack w7_ippsAESUnpack
#define ippsAESEncryptECB w7_ippsAESEncryptECB
#define ippsAESDecryptECB w7_ippsAESDecryptECB
#define ippsAESEncryptCBC w7_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 w7_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 w7_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 w7_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC w7_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 w7_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 w7_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 w7_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB w7_ippsAESEncryptCFB
#define ippsAESDecryptCFB w7_ippsAESDecryptCFB
#define ippsAESEncryptOFB w7_ippsAESEncryptOFB
#define ippsAESDecryptOFB w7_ippsAESDecryptOFB
#define ippsAESEncryptCTR w7_ippsAESEncryptCTR
#define ippsAESDecryptCTR w7_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct w7_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct w7_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise w7_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise w7_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise w7_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB w7_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize w7_ippsSMS4GetSize
#define ippsSMS4Init w7_ippsSMS4Init
#define ippsSMS4SetKey w7_ippsSMS4SetKey
#define ippsSMS4EncryptECB w7_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB w7_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC w7_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 w7_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 w7_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 w7_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC w7_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 w7_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 w7_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 w7_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB w7_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB w7_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB w7_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB w7_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR w7_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR w7_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize w7_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit w7_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen w7_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen w7_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart w7_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt w7_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt w7_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag w7_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize w7_ippsAES_CCMGetSize
#define ippsAES_CCMInit w7_ippsAES_CCMInit
#define ippsAES_CCMMessageLen w7_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen w7_ippsAES_CCMTagLen
#define ippsAES_CCMStart w7_ippsAES_CCMStart
#define ippsAES_CCMEncrypt w7_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt w7_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag w7_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize w7_ippsAES_GCMGetSize
#define ippsAES_GCMInit w7_ippsAES_GCMInit
#define ippsAES_GCMReinit w7_ippsAES_GCMReinit
#define ippsAES_GCMReset w7_ippsAES_GCMReset
#define ippsAES_GCMProcessIV w7_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD w7_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart w7_ippsAES_GCMStart
#define ippsAES_GCMEncrypt w7_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt w7_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag w7_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize w7_ippsAES_XTSGetSize
#define ippsAES_XTSInit w7_ippsAES_XTSInit
#define ippsAES_XTSEncrypt w7_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt w7_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC w7_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt w7_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt w7_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize w7_ippsAES_CMACGetSize
#define ippsAES_CMACInit w7_ippsAES_CMACInit
#define ippsAES_CMACUpdate w7_ippsAES_CMACUpdate
#define ippsAES_CMACFinal w7_ippsAES_CMACFinal
#define ippsAES_CMACGetTag w7_ippsAES_CMACGetTag
#define ippsARCFourCheckKey w7_ippsARCFourCheckKey
#define ippsARCFourGetSize w7_ippsARCFourGetSize
#define ippsARCFourInit w7_ippsARCFourInit
#define ippsARCFourReset w7_ippsARCFourReset
#define ippsARCFourPack w7_ippsARCFourPack
#define ippsARCFourUnpack w7_ippsARCFourUnpack
#define ippsARCFourEncrypt w7_ippsARCFourEncrypt
#define ippsARCFourDecrypt w7_ippsARCFourDecrypt
#define ippsSHA1GetSize w7_ippsSHA1GetSize
#define ippsSHA1Init w7_ippsSHA1Init
#define ippsSHA1Duplicate w7_ippsSHA1Duplicate
#define ippsSHA1Pack w7_ippsSHA1Pack
#define ippsSHA1Unpack w7_ippsSHA1Unpack
#define ippsSHA1Update w7_ippsSHA1Update
#define ippsSHA1GetTag w7_ippsSHA1GetTag
#define ippsSHA1Final w7_ippsSHA1Final
#define ippsSHA1MessageDigest w7_ippsSHA1MessageDigest
#define ippsSHA224GetSize w7_ippsSHA224GetSize
#define ippsSHA224Init w7_ippsSHA224Init
#define ippsSHA224Duplicate w7_ippsSHA224Duplicate
#define ippsSHA224Pack w7_ippsSHA224Pack
#define ippsSHA224Unpack w7_ippsSHA224Unpack
#define ippsSHA224Update w7_ippsSHA224Update
#define ippsSHA224GetTag w7_ippsSHA224GetTag
#define ippsSHA224Final w7_ippsSHA224Final
#define ippsSHA224MessageDigest w7_ippsSHA224MessageDigest
#define ippsSHA256GetSize w7_ippsSHA256GetSize
#define ippsSHA256Init w7_ippsSHA256Init
#define ippsSHA256Duplicate w7_ippsSHA256Duplicate
#define ippsSHA256Pack w7_ippsSHA256Pack
#define ippsSHA256Unpack w7_ippsSHA256Unpack
#define ippsSHA256Update w7_ippsSHA256Update
#define ippsSHA256GetTag w7_ippsSHA256GetTag
#define ippsSHA256Final w7_ippsSHA256Final
#define ippsSHA256MessageDigest w7_ippsSHA256MessageDigest
#define ippsSHA384GetSize w7_ippsSHA384GetSize
#define ippsSHA384Init w7_ippsSHA384Init
#define ippsSHA384Duplicate w7_ippsSHA384Duplicate
#define ippsSHA384Pack w7_ippsSHA384Pack
#define ippsSHA384Unpack w7_ippsSHA384Unpack
#define ippsSHA384Update w7_ippsSHA384Update
#define ippsSHA384GetTag w7_ippsSHA384GetTag
#define ippsSHA384Final w7_ippsSHA384Final
#define ippsSHA384MessageDigest w7_ippsSHA384MessageDigest
#define ippsSHA512GetSize w7_ippsSHA512GetSize
#define ippsSHA512Init w7_ippsSHA512Init
#define ippsSHA512Duplicate w7_ippsSHA512Duplicate
#define ippsSHA512Pack w7_ippsSHA512Pack
#define ippsSHA512Unpack w7_ippsSHA512Unpack
#define ippsSHA512Update w7_ippsSHA512Update
#define ippsSHA512GetTag w7_ippsSHA512GetTag
#define ippsSHA512Final w7_ippsSHA512Final
#define ippsSHA512MessageDigest w7_ippsSHA512MessageDigest
#define ippsMD5GetSize w7_ippsMD5GetSize
#define ippsMD5Init w7_ippsMD5Init
#define ippsMD5Duplicate w7_ippsMD5Duplicate
#define ippsMD5Pack w7_ippsMD5Pack
#define ippsMD5Unpack w7_ippsMD5Unpack
#define ippsMD5Update w7_ippsMD5Update
#define ippsMD5GetTag w7_ippsMD5GetTag
#define ippsMD5Final w7_ippsMD5Final
#define ippsMD5MessageDigest w7_ippsMD5MessageDigest
#define ippsSM3GetSize w7_ippsSM3GetSize
#define ippsSM3Init w7_ippsSM3Init
#define ippsSM3Duplicate w7_ippsSM3Duplicate
#define ippsSM3Pack w7_ippsSM3Pack
#define ippsSM3Unpack w7_ippsSM3Unpack
#define ippsSM3Update w7_ippsSM3Update
#define ippsSM3GetTag w7_ippsSM3GetTag
#define ippsSM3Final w7_ippsSM3Final
#define ippsSM3MessageDigest w7_ippsSM3MessageDigest
#define ippsHashGetSize w7_ippsHashGetSize
#define ippsHashInit w7_ippsHashInit
#define ippsHashPack w7_ippsHashPack
#define ippsHashUnpack w7_ippsHashUnpack
#define ippsHashDuplicate w7_ippsHashDuplicate
#define ippsHashUpdate w7_ippsHashUpdate
#define ippsHashGetTag w7_ippsHashGetTag
#define ippsHashFinal w7_ippsHashFinal
#define ippsHashMessage w7_ippsHashMessage
#define ippsHashMethod_MD5 w7_ippsHashMethod_MD5
#define ippsHashMethod_SM3 w7_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 w7_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI w7_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT w7_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 w7_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI w7_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT w7_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 w7_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI w7_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT w7_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 w7_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 w7_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 w7_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 w7_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize w7_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 w7_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 w7_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 w7_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 w7_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI w7_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT w7_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 w7_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI w7_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT w7_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 w7_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI w7_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT w7_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 w7_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI w7_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT w7_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 w7_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI w7_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT w7_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 w7_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 w7_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 w7_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 w7_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 w7_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 w7_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 w7_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 w7_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf w7_ippsHashGetSize_rmf
#define ippsHashInit_rmf w7_ippsHashInit_rmf
#define ippsHashPack_rmf w7_ippsHashPack_rmf
#define ippsHashUnpack_rmf w7_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf w7_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf w7_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf w7_ippsHashGetTag_rmf
#define ippsHashFinal_rmf w7_ippsHashFinal_rmf
#define ippsHashMessage_rmf w7_ippsHashMessage_rmf
#define ippsHashMethodGetInfo w7_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf w7_ippsHashGetInfo_rmf
#define ippsMGF w7_ippsMGF
#define ippsMGF1_rmf w7_ippsMGF1_rmf
#define ippsMGF2_rmf w7_ippsMGF2_rmf
#define ippsHMAC_GetSize w7_ippsHMAC_GetSize
#define ippsHMAC_Init w7_ippsHMAC_Init
#define ippsHMAC_Pack w7_ippsHMAC_Pack
#define ippsHMAC_Unpack w7_ippsHMAC_Unpack
#define ippsHMAC_Duplicate w7_ippsHMAC_Duplicate
#define ippsHMAC_Update w7_ippsHMAC_Update
#define ippsHMAC_Final w7_ippsHMAC_Final
#define ippsHMAC_GetTag w7_ippsHMAC_GetTag
#define ippsHMAC_Message w7_ippsHMAC_Message
#define ippsHMACGetSize_rmf w7_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf w7_ippsHMACInit_rmf
#define ippsHMACPack_rmf w7_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf w7_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf w7_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf w7_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf w7_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf w7_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf w7_ippsHMACMessage_rmf
#define ippsBigNumGetSize w7_ippsBigNumGetSize
#define ippsBigNumInit w7_ippsBigNumInit
#define ippsCmpZero_BN w7_ippsCmpZero_BN
#define ippsCmp_BN w7_ippsCmp_BN
#define ippsGetSize_BN w7_ippsGetSize_BN
#define ippsSet_BN w7_ippsSet_BN
#define ippsGet_BN w7_ippsGet_BN
#define ippsRef_BN w7_ippsRef_BN
#define ippsExtGet_BN w7_ippsExtGet_BN
#define ippsAdd_BN w7_ippsAdd_BN
#define ippsSub_BN w7_ippsSub_BN
#define ippsMul_BN w7_ippsMul_BN
#define ippsMAC_BN_I w7_ippsMAC_BN_I
#define ippsDiv_BN w7_ippsDiv_BN
#define ippsMod_BN w7_ippsMod_BN
#define ippsGcd_BN w7_ippsGcd_BN
#define ippsModInv_BN w7_ippsModInv_BN
#define ippsSetOctString_BN w7_ippsSetOctString_BN
#define ippsGetOctString_BN w7_ippsGetOctString_BN
#define ippsMontGetSize w7_ippsMontGetSize
#define ippsMontInit w7_ippsMontInit
#define ippsMontSet w7_ippsMontSet
#define ippsMontGet w7_ippsMontGet
#define ippsMontForm w7_ippsMontForm
#define ippsMontMul w7_ippsMontMul
#define ippsMontExp w7_ippsMontExp
#define ippsPRNGGetSize w7_ippsPRNGGetSize
#define ippsPRNGInit w7_ippsPRNGInit
#define ippsPRNGSetModulus w7_ippsPRNGSetModulus
#define ippsPRNGSetH0 w7_ippsPRNGSetH0
#define ippsPRNGSetAugment w7_ippsPRNGSetAugment
#define ippsPRNGSetSeed w7_ippsPRNGSetSeed
#define ippsPRNGGetSeed w7_ippsPRNGGetSeed
#define ippsPRNGen w7_ippsPRNGen
#define ippsPRNGen_BN w7_ippsPRNGen_BN
#define ippsPRNGenRDRAND w7_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN w7_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED w7_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN w7_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize w7_ippsPrimeGetSize
#define ippsPrimeInit w7_ippsPrimeInit
#define ippsPrimeGen w7_ippsPrimeGen
#define ippsPrimeTest w7_ippsPrimeTest
#define ippsPrimeGen_BN w7_ippsPrimeGen_BN
#define ippsPrimeTest_BN w7_ippsPrimeTest_BN
#define ippsPrimeGet w7_ippsPrimeGet
#define ippsPrimeGet_BN w7_ippsPrimeGet_BN
#define ippsPrimeSet w7_ippsPrimeSet
#define ippsPrimeSet_BN w7_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey w7_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey w7_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey w7_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey w7_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 w7_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 w7_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 w7_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 w7_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 w7_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 w7_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 w7_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 w7_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey w7_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey w7_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt w7_ippsRSA_Encrypt
#define ippsRSA_Decrypt w7_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys w7_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys w7_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP w7_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP w7_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf w7_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf w7_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 w7_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 w7_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS w7_ippsRSASign_PSS
#define ippsRSAVerify_PSS w7_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf w7_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf w7_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 w7_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 w7_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf w7_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf w7_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString w7_ippsDLGetResultString
#define ippsDLPGetSize w7_ippsDLPGetSize
#define ippsDLPInit w7_ippsDLPInit
#define ippsDLPPack w7_ippsDLPPack
#define ippsDLPUnpack w7_ippsDLPUnpack
#define ippsDLPSet w7_ippsDLPSet
#define ippsDLPGet w7_ippsDLPGet
#define ippsDLPSetDP w7_ippsDLPSetDP
#define ippsDLPGetDP w7_ippsDLPGetDP
#define ippsDLPGenKeyPair w7_ippsDLPGenKeyPair
#define ippsDLPPublicKey w7_ippsDLPPublicKey
#define ippsDLPValidateKeyPair w7_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair w7_ippsDLPSetKeyPair
#define ippsDLPSignDSA w7_ippsDLPSignDSA
#define ippsDLPVerifyDSA w7_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH w7_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA w7_ippsDLPGenerateDSA
#define ippsDLPValidateDSA w7_ippsDLPValidateDSA
#define ippsDLPGenerateDH w7_ippsDLPGenerateDH
#define ippsDLPValidateDH w7_ippsDLPValidateDH
#define ippsECCGetResultString w7_ippsECCGetResultString
#define ippsECCPGetSize w7_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 w7_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 w7_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 w7_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 w7_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 w7_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 w7_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 w7_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 w7_ippsECCPGetSizeStdSM2
#define ippsECCPInit w7_ippsECCPInit
#define ippsECCPInitStd128r1 w7_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 w7_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 w7_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 w7_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 w7_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 w7_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 w7_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 w7_ippsECCPInitStdSM2
#define ippsECCPSet w7_ippsECCPSet
#define ippsECCPSetStd w7_ippsECCPSetStd
#define ippsECCPSetStd128r1 w7_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 w7_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 w7_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 w7_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 w7_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 w7_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 w7_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 w7_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 w7_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 w7_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 w7_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 w7_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 w7_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 w7_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet w7_ippsECCPGet
#define ippsECCPGetOrderBitSize w7_ippsECCPGetOrderBitSize
#define ippsECCPValidate w7_ippsECCPValidate
#define ippsECCPPointGetSize w7_ippsECCPPointGetSize
#define ippsECCPPointInit w7_ippsECCPPointInit
#define ippsECCPSetPoint w7_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity w7_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint w7_ippsECCPGetPoint
#define ippsECCPCheckPoint w7_ippsECCPCheckPoint
#define ippsECCPComparePoint w7_ippsECCPComparePoint
#define ippsECCPNegativePoint w7_ippsECCPNegativePoint
#define ippsECCPAddPoint w7_ippsECCPAddPoint
#define ippsECCPMulPointScalar w7_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair w7_ippsECCPGenKeyPair
#define ippsECCPPublicKey w7_ippsECCPPublicKey
#define ippsECCPValidateKeyPair w7_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair w7_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH w7_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC w7_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA w7_ippsECCPSignDSA
#define ippsECCPVerifyDSA w7_ippsECCPVerifyDSA
#define ippsECCPSignNR w7_ippsECCPSignNR
#define ippsECCPVerifyNR w7_ippsECCPVerifyNR
#define ippsECCPSignSM2 w7_ippsECCPSignSM2
#define ippsECCPVerifySM2 w7_ippsECCPVerifySM2
#define ippsGFpGetSize w7_ippsGFpGetSize
#define ippsGFpInitArbitrary w7_ippsGFpInitArbitrary
#define ippsGFpInitFixed w7_ippsGFpInitFixed
#define ippsGFpInit w7_ippsGFpInit
#define ippsGFpMethod_p192r1 w7_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 w7_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 w7_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 w7_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 w7_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 w7_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn w7_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 w7_ippsGFpMethod_p256
#define ippsGFpMethod_pArb w7_ippsGFpMethod_pArb
#define ippsGFpxGetSize w7_ippsGFpxGetSize
#define ippsGFpxInit w7_ippsGFpxInit
#define ippsGFpxInitBinomial w7_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 w7_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 w7_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 w7_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 w7_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom w7_ippsGFpxMethod_binom
#define ippsGFpxMethod_com w7_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize w7_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize w7_ippsGFpElementGetSize
#define ippsGFpElementInit w7_ippsGFpElementInit
#define ippsGFpSetElement w7_ippsGFpSetElement
#define ippsGFpSetElementRegular w7_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString w7_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom w7_ippsGFpSetElementRandom
#define ippsGFpSetElementHash w7_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf w7_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement w7_ippsGFpCpyElement
#define ippsGFpGetElement w7_ippsGFpGetElement
#define ippsGFpGetElementOctString w7_ippsGFpGetElementOctString
#define ippsGFpCmpElement w7_ippsGFpCmpElement
#define ippsGFpIsZeroElement w7_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement w7_ippsGFpIsUnityElement
#define ippsGFpConj w7_ippsGFpConj
#define ippsGFpNeg w7_ippsGFpNeg
#define ippsGFpInv w7_ippsGFpInv
#define ippsGFpSqrt w7_ippsGFpSqrt
#define ippsGFpSqr w7_ippsGFpSqr
#define ippsGFpAdd w7_ippsGFpAdd
#define ippsGFpSub w7_ippsGFpSub
#define ippsGFpMul w7_ippsGFpMul
#define ippsGFpExp w7_ippsGFpExp
#define ippsGFpMultiExp w7_ippsGFpMultiExp
#define ippsGFpAdd_PE w7_ippsGFpAdd_PE
#define ippsGFpSub_PE w7_ippsGFpSub_PE
#define ippsGFpMul_PE w7_ippsGFpMul_PE
#define ippsGFpGetInfo w7_ippsGFpGetInfo
#define ippsGFpECGetSize w7_ippsGFpECGetSize
#define ippsGFpECInit w7_ippsGFpECInit
#define ippsGFpECSet w7_ippsGFpECSet
#define ippsGFpECSetSubgroup w7_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 w7_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 w7_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 w7_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 w7_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 w7_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 w7_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 w7_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 w7_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 w7_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 w7_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 w7_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 w7_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 w7_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 w7_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 w7_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet w7_ippsGFpECGet
#define ippsGFpECGetSubgroup w7_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize w7_ippsGFpECScratchBufferSize
#define ippsGFpECVerify w7_ippsGFpECVerify
#define ippsGFpECPointGetSize w7_ippsGFpECPointGetSize
#define ippsGFpECPointInit w7_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity w7_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint w7_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular w7_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom w7_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint w7_ippsGFpECMakePoint
#define ippsGFpECSetPointHash w7_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible w7_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf w7_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf w7_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint w7_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular w7_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString w7_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString w7_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint w7_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup w7_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint w7_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint w7_ippsGFpECCmpPoint
#define ippsGFpECNegPoint w7_ippsGFpECNegPoint
#define ippsGFpECAddPoint w7_ippsGFpECAddPoint
#define ippsGFpECMulPoint w7_ippsGFpECMulPoint
#define ippsGFpECPrivateKey w7_ippsGFpECPrivateKey
#define ippsGFpECPublicKey w7_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair w7_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH w7_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC w7_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 w7_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA w7_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA w7_ippsGFpECVerifyDSA
#define ippsGFpECSignNR w7_ippsGFpECSignNR
#define ippsGFpECVerifyNR w7_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 w7_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 w7_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 w7_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize w7_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init w7_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup w7_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey w7_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm w7_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF w7_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 w7_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 w7_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 w7_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 w7_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 w7_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 w7_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 w7_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 w7_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize w7_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext w7_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize w7_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext w7_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,557 @@
/*******************************************************************************
* Copyright 2023 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
#define ippcpGetLibVersion y8_ippcpGetLibVersion
#define ippsDESGetSize y8_ippsDESGetSize
#define ippsDESInit y8_ippsDESInit
#define ippsDESPack y8_ippsDESPack
#define ippsDESUnpack y8_ippsDESUnpack
#define ippsTDESEncryptECB y8_ippsTDESEncryptECB
#define ippsTDESDecryptECB y8_ippsTDESDecryptECB
#define ippsTDESEncryptCBC y8_ippsTDESEncryptCBC
#define ippsTDESDecryptCBC y8_ippsTDESDecryptCBC
#define ippsTDESEncryptCFB y8_ippsTDESEncryptCFB
#define ippsTDESDecryptCFB y8_ippsTDESDecryptCFB
#define ippsTDESEncryptOFB y8_ippsTDESEncryptOFB
#define ippsTDESDecryptOFB y8_ippsTDESDecryptOFB
#define ippsTDESEncryptCTR y8_ippsTDESEncryptCTR
#define ippsTDESDecryptCTR y8_ippsTDESDecryptCTR
#define ippsAESGetSize y8_ippsAESGetSize
#define ippsAESInit y8_ippsAESInit
#define ippsAESSetKey y8_ippsAESSetKey
#define ippsAESPack y8_ippsAESPack
#define ippsAESUnpack y8_ippsAESUnpack
#define ippsAESEncryptECB y8_ippsAESEncryptECB
#define ippsAESDecryptECB y8_ippsAESDecryptECB
#define ippsAESEncryptCBC y8_ippsAESEncryptCBC
#define ippsAESEncryptCBC_CS1 y8_ippsAESEncryptCBC_CS1
#define ippsAESEncryptCBC_CS2 y8_ippsAESEncryptCBC_CS2
#define ippsAESEncryptCBC_CS3 y8_ippsAESEncryptCBC_CS3
#define ippsAESDecryptCBC y8_ippsAESDecryptCBC
#define ippsAESDecryptCBC_CS1 y8_ippsAESDecryptCBC_CS1
#define ippsAESDecryptCBC_CS2 y8_ippsAESDecryptCBC_CS2
#define ippsAESDecryptCBC_CS3 y8_ippsAESDecryptCBC_CS3
#define ippsAESEncryptCFB y8_ippsAESEncryptCFB
#define ippsAESDecryptCFB y8_ippsAESDecryptCFB
#define ippsAESEncryptOFB y8_ippsAESEncryptOFB
#define ippsAESDecryptOFB y8_ippsAESDecryptOFB
#define ippsAESEncryptCTR y8_ippsAESEncryptCTR
#define ippsAESDecryptCTR y8_ippsAESDecryptCTR
#define ippsAESEncryptXTS_Direct y8_ippsAESEncryptXTS_Direct
#define ippsAESDecryptXTS_Direct y8_ippsAESDecryptXTS_Direct
#define ippsAESSetupNoise y8_ippsAESSetupNoise
#define ippsAES_GCMSetupNoise y8_ippsAES_GCMSetupNoise
#define ippsAES_CMACSetupNoise y8_ippsAES_CMACSetupNoise
#define ippsAES_EncryptCFB16_MB y8_ippsAES_EncryptCFB16_MB
#define ippsSMS4GetSize y8_ippsSMS4GetSize
#define ippsSMS4Init y8_ippsSMS4Init
#define ippsSMS4SetKey y8_ippsSMS4SetKey
#define ippsSMS4EncryptECB y8_ippsSMS4EncryptECB
#define ippsSMS4DecryptECB y8_ippsSMS4DecryptECB
#define ippsSMS4EncryptCBC y8_ippsSMS4EncryptCBC
#define ippsSMS4EncryptCBC_CS1 y8_ippsSMS4EncryptCBC_CS1
#define ippsSMS4EncryptCBC_CS2 y8_ippsSMS4EncryptCBC_CS2
#define ippsSMS4EncryptCBC_CS3 y8_ippsSMS4EncryptCBC_CS3
#define ippsSMS4DecryptCBC y8_ippsSMS4DecryptCBC
#define ippsSMS4DecryptCBC_CS1 y8_ippsSMS4DecryptCBC_CS1
#define ippsSMS4DecryptCBC_CS2 y8_ippsSMS4DecryptCBC_CS2
#define ippsSMS4DecryptCBC_CS3 y8_ippsSMS4DecryptCBC_CS3
#define ippsSMS4EncryptCFB y8_ippsSMS4EncryptCFB
#define ippsSMS4DecryptCFB y8_ippsSMS4DecryptCFB
#define ippsSMS4EncryptOFB y8_ippsSMS4EncryptOFB
#define ippsSMS4DecryptOFB y8_ippsSMS4DecryptOFB
#define ippsSMS4EncryptCTR y8_ippsSMS4EncryptCTR
#define ippsSMS4DecryptCTR y8_ippsSMS4DecryptCTR
#define ippsSMS4_CCMGetSize y8_ippsSMS4_CCMGetSize
#define ippsSMS4_CCMInit y8_ippsSMS4_CCMInit
#define ippsSMS4_CCMMessageLen y8_ippsSMS4_CCMMessageLen
#define ippsSMS4_CCMTagLen y8_ippsSMS4_CCMTagLen
#define ippsSMS4_CCMStart y8_ippsSMS4_CCMStart
#define ippsSMS4_CCMEncrypt y8_ippsSMS4_CCMEncrypt
#define ippsSMS4_CCMDecrypt y8_ippsSMS4_CCMDecrypt
#define ippsSMS4_CCMGetTag y8_ippsSMS4_CCMGetTag
#define ippsAES_CCMGetSize y8_ippsAES_CCMGetSize
#define ippsAES_CCMInit y8_ippsAES_CCMInit
#define ippsAES_CCMMessageLen y8_ippsAES_CCMMessageLen
#define ippsAES_CCMTagLen y8_ippsAES_CCMTagLen
#define ippsAES_CCMStart y8_ippsAES_CCMStart
#define ippsAES_CCMEncrypt y8_ippsAES_CCMEncrypt
#define ippsAES_CCMDecrypt y8_ippsAES_CCMDecrypt
#define ippsAES_CCMGetTag y8_ippsAES_CCMGetTag
#define ippsAES_GCMGetSize y8_ippsAES_GCMGetSize
#define ippsAES_GCMInit y8_ippsAES_GCMInit
#define ippsAES_GCMReinit y8_ippsAES_GCMReinit
#define ippsAES_GCMReset y8_ippsAES_GCMReset
#define ippsAES_GCMProcessIV y8_ippsAES_GCMProcessIV
#define ippsAES_GCMProcessAAD y8_ippsAES_GCMProcessAAD
#define ippsAES_GCMStart y8_ippsAES_GCMStart
#define ippsAES_GCMEncrypt y8_ippsAES_GCMEncrypt
#define ippsAES_GCMDecrypt y8_ippsAES_GCMDecrypt
#define ippsAES_GCMGetTag y8_ippsAES_GCMGetTag
#define ippsAES_XTSGetSize y8_ippsAES_XTSGetSize
#define ippsAES_XTSInit y8_ippsAES_XTSInit
#define ippsAES_XTSEncrypt y8_ippsAES_XTSEncrypt
#define ippsAES_XTSDecrypt y8_ippsAES_XTSDecrypt
#define ippsAES_S2V_CMAC y8_ippsAES_S2V_CMAC
#define ippsAES_SIVEncrypt y8_ippsAES_SIVEncrypt
#define ippsAES_SIVDecrypt y8_ippsAES_SIVDecrypt
#define ippsAES_CMACGetSize y8_ippsAES_CMACGetSize
#define ippsAES_CMACInit y8_ippsAES_CMACInit
#define ippsAES_CMACUpdate y8_ippsAES_CMACUpdate
#define ippsAES_CMACFinal y8_ippsAES_CMACFinal
#define ippsAES_CMACGetTag y8_ippsAES_CMACGetTag
#define ippsARCFourCheckKey y8_ippsARCFourCheckKey
#define ippsARCFourGetSize y8_ippsARCFourGetSize
#define ippsARCFourInit y8_ippsARCFourInit
#define ippsARCFourReset y8_ippsARCFourReset
#define ippsARCFourPack y8_ippsARCFourPack
#define ippsARCFourUnpack y8_ippsARCFourUnpack
#define ippsARCFourEncrypt y8_ippsARCFourEncrypt
#define ippsARCFourDecrypt y8_ippsARCFourDecrypt
#define ippsSHA1GetSize y8_ippsSHA1GetSize
#define ippsSHA1Init y8_ippsSHA1Init
#define ippsSHA1Duplicate y8_ippsSHA1Duplicate
#define ippsSHA1Pack y8_ippsSHA1Pack
#define ippsSHA1Unpack y8_ippsSHA1Unpack
#define ippsSHA1Update y8_ippsSHA1Update
#define ippsSHA1GetTag y8_ippsSHA1GetTag
#define ippsSHA1Final y8_ippsSHA1Final
#define ippsSHA1MessageDigest y8_ippsSHA1MessageDigest
#define ippsSHA224GetSize y8_ippsSHA224GetSize
#define ippsSHA224Init y8_ippsSHA224Init
#define ippsSHA224Duplicate y8_ippsSHA224Duplicate
#define ippsSHA224Pack y8_ippsSHA224Pack
#define ippsSHA224Unpack y8_ippsSHA224Unpack
#define ippsSHA224Update y8_ippsSHA224Update
#define ippsSHA224GetTag y8_ippsSHA224GetTag
#define ippsSHA224Final y8_ippsSHA224Final
#define ippsSHA224MessageDigest y8_ippsSHA224MessageDigest
#define ippsSHA256GetSize y8_ippsSHA256GetSize
#define ippsSHA256Init y8_ippsSHA256Init
#define ippsSHA256Duplicate y8_ippsSHA256Duplicate
#define ippsSHA256Pack y8_ippsSHA256Pack
#define ippsSHA256Unpack y8_ippsSHA256Unpack
#define ippsSHA256Update y8_ippsSHA256Update
#define ippsSHA256GetTag y8_ippsSHA256GetTag
#define ippsSHA256Final y8_ippsSHA256Final
#define ippsSHA256MessageDigest y8_ippsSHA256MessageDigest
#define ippsSHA384GetSize y8_ippsSHA384GetSize
#define ippsSHA384Init y8_ippsSHA384Init
#define ippsSHA384Duplicate y8_ippsSHA384Duplicate
#define ippsSHA384Pack y8_ippsSHA384Pack
#define ippsSHA384Unpack y8_ippsSHA384Unpack
#define ippsSHA384Update y8_ippsSHA384Update
#define ippsSHA384GetTag y8_ippsSHA384GetTag
#define ippsSHA384Final y8_ippsSHA384Final
#define ippsSHA384MessageDigest y8_ippsSHA384MessageDigest
#define ippsSHA512GetSize y8_ippsSHA512GetSize
#define ippsSHA512Init y8_ippsSHA512Init
#define ippsSHA512Duplicate y8_ippsSHA512Duplicate
#define ippsSHA512Pack y8_ippsSHA512Pack
#define ippsSHA512Unpack y8_ippsSHA512Unpack
#define ippsSHA512Update y8_ippsSHA512Update
#define ippsSHA512GetTag y8_ippsSHA512GetTag
#define ippsSHA512Final y8_ippsSHA512Final
#define ippsSHA512MessageDigest y8_ippsSHA512MessageDigest
#define ippsMD5GetSize y8_ippsMD5GetSize
#define ippsMD5Init y8_ippsMD5Init
#define ippsMD5Duplicate y8_ippsMD5Duplicate
#define ippsMD5Pack y8_ippsMD5Pack
#define ippsMD5Unpack y8_ippsMD5Unpack
#define ippsMD5Update y8_ippsMD5Update
#define ippsMD5GetTag y8_ippsMD5GetTag
#define ippsMD5Final y8_ippsMD5Final
#define ippsMD5MessageDigest y8_ippsMD5MessageDigest
#define ippsSM3GetSize y8_ippsSM3GetSize
#define ippsSM3Init y8_ippsSM3Init
#define ippsSM3Duplicate y8_ippsSM3Duplicate
#define ippsSM3Pack y8_ippsSM3Pack
#define ippsSM3Unpack y8_ippsSM3Unpack
#define ippsSM3Update y8_ippsSM3Update
#define ippsSM3GetTag y8_ippsSM3GetTag
#define ippsSM3Final y8_ippsSM3Final
#define ippsSM3MessageDigest y8_ippsSM3MessageDigest
#define ippsHashGetSize y8_ippsHashGetSize
#define ippsHashInit y8_ippsHashInit
#define ippsHashPack y8_ippsHashPack
#define ippsHashUnpack y8_ippsHashUnpack
#define ippsHashDuplicate y8_ippsHashDuplicate
#define ippsHashUpdate y8_ippsHashUpdate
#define ippsHashGetTag y8_ippsHashGetTag
#define ippsHashFinal y8_ippsHashFinal
#define ippsHashMessage y8_ippsHashMessage
#define ippsHashMethod_MD5 y8_ippsHashMethod_MD5
#define ippsHashMethod_SM3 y8_ippsHashMethod_SM3
#define ippsHashMethod_SHA1 y8_ippsHashMethod_SHA1
#define ippsHashMethod_SHA1_NI y8_ippsHashMethod_SHA1_NI
#define ippsHashMethod_SHA1_TT y8_ippsHashMethod_SHA1_TT
#define ippsHashMethod_SHA256 y8_ippsHashMethod_SHA256
#define ippsHashMethod_SHA256_NI y8_ippsHashMethod_SHA256_NI
#define ippsHashMethod_SHA256_TT y8_ippsHashMethod_SHA256_TT
#define ippsHashMethod_SHA224 y8_ippsHashMethod_SHA224
#define ippsHashMethod_SHA224_NI y8_ippsHashMethod_SHA224_NI
#define ippsHashMethod_SHA224_TT y8_ippsHashMethod_SHA224_TT
#define ippsHashMethod_SHA512 y8_ippsHashMethod_SHA512
#define ippsHashMethod_SHA384 y8_ippsHashMethod_SHA384
#define ippsHashMethod_SHA512_256 y8_ippsHashMethod_SHA512_256
#define ippsHashMethod_SHA512_224 y8_ippsHashMethod_SHA512_224
#define ippsHashMethodGetSize y8_ippsHashMethodGetSize
#define ippsHashMethodSet_MD5 y8_ippsHashMethodSet_MD5
#define ippsHashMethodSet_SM3 y8_ippsHashMethodSet_SM3
#define ippsHashStateMethodSet_SM3 y8_ippsHashStateMethodSet_SM3
#define ippsHashMethodSet_SHA1 y8_ippsHashMethodSet_SHA1
#define ippsHashMethodSet_SHA1_NI y8_ippsHashMethodSet_SHA1_NI
#define ippsHashMethodSet_SHA1_TT y8_ippsHashMethodSet_SHA1_TT
#define ippsHashMethodSet_SHA256 y8_ippsHashMethodSet_SHA256
#define ippsHashMethodSet_SHA256_NI y8_ippsHashMethodSet_SHA256_NI
#define ippsHashMethodSet_SHA256_TT y8_ippsHashMethodSet_SHA256_TT
#define ippsHashStateMethodSet_SHA256 y8_ippsHashStateMethodSet_SHA256
#define ippsHashStateMethodSet_SHA256_NI y8_ippsHashStateMethodSet_SHA256_NI
#define ippsHashStateMethodSet_SHA256_TT y8_ippsHashStateMethodSet_SHA256_TT
#define ippsHashMethodSet_SHA224 y8_ippsHashMethodSet_SHA224
#define ippsHashMethodSet_SHA224_NI y8_ippsHashMethodSet_SHA224_NI
#define ippsHashMethodSet_SHA224_TT y8_ippsHashMethodSet_SHA224_TT
#define ippsHashStateMethodSet_SHA224 y8_ippsHashStateMethodSet_SHA224
#define ippsHashStateMethodSet_SHA224_NI y8_ippsHashStateMethodSet_SHA224_NI
#define ippsHashStateMethodSet_SHA224_TT y8_ippsHashStateMethodSet_SHA224_TT
#define ippsHashMethodSet_SHA512 y8_ippsHashMethodSet_SHA512
#define ippsHashMethodSet_SHA384 y8_ippsHashMethodSet_SHA384
#define ippsHashMethodSet_SHA512_256 y8_ippsHashMethodSet_SHA512_256
#define ippsHashMethodSet_SHA512_224 y8_ippsHashMethodSet_SHA512_224
#define ippsHashStateMethodSet_SHA512 y8_ippsHashStateMethodSet_SHA512
#define ippsHashStateMethodSet_SHA384 y8_ippsHashStateMethodSet_SHA384
#define ippsHashStateMethodSet_SHA512_256 y8_ippsHashStateMethodSet_SHA512_256
#define ippsHashStateMethodSet_SHA512_224 y8_ippsHashStateMethodSet_SHA512_224
#define ippsHashGetSize_rmf y8_ippsHashGetSize_rmf
#define ippsHashInit_rmf y8_ippsHashInit_rmf
#define ippsHashPack_rmf y8_ippsHashPack_rmf
#define ippsHashUnpack_rmf y8_ippsHashUnpack_rmf
#define ippsHashDuplicate_rmf y8_ippsHashDuplicate_rmf
#define ippsHashUpdate_rmf y8_ippsHashUpdate_rmf
#define ippsHashGetTag_rmf y8_ippsHashGetTag_rmf
#define ippsHashFinal_rmf y8_ippsHashFinal_rmf
#define ippsHashMessage_rmf y8_ippsHashMessage_rmf
#define ippsHashMethodGetInfo y8_ippsHashMethodGetInfo
#define ippsHashGetInfo_rmf y8_ippsHashGetInfo_rmf
#define ippsMGF y8_ippsMGF
#define ippsMGF1_rmf y8_ippsMGF1_rmf
#define ippsMGF2_rmf y8_ippsMGF2_rmf
#define ippsHMAC_GetSize y8_ippsHMAC_GetSize
#define ippsHMAC_Init y8_ippsHMAC_Init
#define ippsHMAC_Pack y8_ippsHMAC_Pack
#define ippsHMAC_Unpack y8_ippsHMAC_Unpack
#define ippsHMAC_Duplicate y8_ippsHMAC_Duplicate
#define ippsHMAC_Update y8_ippsHMAC_Update
#define ippsHMAC_Final y8_ippsHMAC_Final
#define ippsHMAC_GetTag y8_ippsHMAC_GetTag
#define ippsHMAC_Message y8_ippsHMAC_Message
#define ippsHMACGetSize_rmf y8_ippsHMACGetSize_rmf
#define ippsHMACInit_rmf y8_ippsHMACInit_rmf
#define ippsHMACPack_rmf y8_ippsHMACPack_rmf
#define ippsHMACUnpack_rmf y8_ippsHMACUnpack_rmf
#define ippsHMACDuplicate_rmf y8_ippsHMACDuplicate_rmf
#define ippsHMACUpdate_rmf y8_ippsHMACUpdate_rmf
#define ippsHMACFinal_rmf y8_ippsHMACFinal_rmf
#define ippsHMACGetTag_rmf y8_ippsHMACGetTag_rmf
#define ippsHMACMessage_rmf y8_ippsHMACMessage_rmf
#define ippsBigNumGetSize y8_ippsBigNumGetSize
#define ippsBigNumInit y8_ippsBigNumInit
#define ippsCmpZero_BN y8_ippsCmpZero_BN
#define ippsCmp_BN y8_ippsCmp_BN
#define ippsGetSize_BN y8_ippsGetSize_BN
#define ippsSet_BN y8_ippsSet_BN
#define ippsGet_BN y8_ippsGet_BN
#define ippsRef_BN y8_ippsRef_BN
#define ippsExtGet_BN y8_ippsExtGet_BN
#define ippsAdd_BN y8_ippsAdd_BN
#define ippsSub_BN y8_ippsSub_BN
#define ippsMul_BN y8_ippsMul_BN
#define ippsMAC_BN_I y8_ippsMAC_BN_I
#define ippsDiv_BN y8_ippsDiv_BN
#define ippsMod_BN y8_ippsMod_BN
#define ippsGcd_BN y8_ippsGcd_BN
#define ippsModInv_BN y8_ippsModInv_BN
#define ippsSetOctString_BN y8_ippsSetOctString_BN
#define ippsGetOctString_BN y8_ippsGetOctString_BN
#define ippsMontGetSize y8_ippsMontGetSize
#define ippsMontInit y8_ippsMontInit
#define ippsMontSet y8_ippsMontSet
#define ippsMontGet y8_ippsMontGet
#define ippsMontForm y8_ippsMontForm
#define ippsMontMul y8_ippsMontMul
#define ippsMontExp y8_ippsMontExp
#define ippsPRNGGetSize y8_ippsPRNGGetSize
#define ippsPRNGInit y8_ippsPRNGInit
#define ippsPRNGSetModulus y8_ippsPRNGSetModulus
#define ippsPRNGSetH0 y8_ippsPRNGSetH0
#define ippsPRNGSetAugment y8_ippsPRNGSetAugment
#define ippsPRNGSetSeed y8_ippsPRNGSetSeed
#define ippsPRNGGetSeed y8_ippsPRNGGetSeed
#define ippsPRNGen y8_ippsPRNGen
#define ippsPRNGen_BN y8_ippsPRNGen_BN
#define ippsPRNGenRDRAND y8_ippsPRNGenRDRAND
#define ippsPRNGenRDRAND_BN y8_ippsPRNGenRDRAND_BN
#define ippsTRNGenRDSEED y8_ippsTRNGenRDSEED
#define ippsTRNGenRDSEED_BN y8_ippsTRNGenRDSEED_BN
#define ippsPrimeGetSize y8_ippsPrimeGetSize
#define ippsPrimeInit y8_ippsPrimeInit
#define ippsPrimeGen y8_ippsPrimeGen
#define ippsPrimeTest y8_ippsPrimeTest
#define ippsPrimeGen_BN y8_ippsPrimeGen_BN
#define ippsPrimeTest_BN y8_ippsPrimeTest_BN
#define ippsPrimeGet y8_ippsPrimeGet
#define ippsPrimeGet_BN y8_ippsPrimeGet_BN
#define ippsPrimeSet y8_ippsPrimeSet
#define ippsPrimeSet_BN y8_ippsPrimeSet_BN
#define ippsRSA_GetSizePublicKey y8_ippsRSA_GetSizePublicKey
#define ippsRSA_InitPublicKey y8_ippsRSA_InitPublicKey
#define ippsRSA_SetPublicKey y8_ippsRSA_SetPublicKey
#define ippsRSA_GetPublicKey y8_ippsRSA_GetPublicKey
#define ippsRSA_GetSizePrivateKeyType1 y8_ippsRSA_GetSizePrivateKeyType1
#define ippsRSA_InitPrivateKeyType1 y8_ippsRSA_InitPrivateKeyType1
#define ippsRSA_SetPrivateKeyType1 y8_ippsRSA_SetPrivateKeyType1
#define ippsRSA_GetPrivateKeyType1 y8_ippsRSA_GetPrivateKeyType1
#define ippsRSA_GetSizePrivateKeyType2 y8_ippsRSA_GetSizePrivateKeyType2
#define ippsRSA_InitPrivateKeyType2 y8_ippsRSA_InitPrivateKeyType2
#define ippsRSA_SetPrivateKeyType2 y8_ippsRSA_SetPrivateKeyType2
#define ippsRSA_GetPrivateKeyType2 y8_ippsRSA_GetPrivateKeyType2
#define ippsRSA_GetBufferSizePublicKey y8_ippsRSA_GetBufferSizePublicKey
#define ippsRSA_GetBufferSizePrivateKey y8_ippsRSA_GetBufferSizePrivateKey
#define ippsRSA_Encrypt y8_ippsRSA_Encrypt
#define ippsRSA_Decrypt y8_ippsRSA_Decrypt
#define ippsRSA_GenerateKeys y8_ippsRSA_GenerateKeys
#define ippsRSA_ValidateKeys y8_ippsRSA_ValidateKeys
#define ippsRSAEncrypt_OAEP y8_ippsRSAEncrypt_OAEP
#define ippsRSADecrypt_OAEP y8_ippsRSADecrypt_OAEP
#define ippsRSAEncrypt_OAEP_rmf y8_ippsRSAEncrypt_OAEP_rmf
#define ippsRSADecrypt_OAEP_rmf y8_ippsRSADecrypt_OAEP_rmf
#define ippsRSAEncrypt_PKCSv15 y8_ippsRSAEncrypt_PKCSv15
#define ippsRSADecrypt_PKCSv15 y8_ippsRSADecrypt_PKCSv15
#define ippsRSASign_PSS y8_ippsRSASign_PSS
#define ippsRSAVerify_PSS y8_ippsRSAVerify_PSS
#define ippsRSASign_PSS_rmf y8_ippsRSASign_PSS_rmf
#define ippsRSAVerify_PSS_rmf y8_ippsRSAVerify_PSS_rmf
#define ippsRSASign_PKCS1v15 y8_ippsRSASign_PKCS1v15
#define ippsRSAVerify_PKCS1v15 y8_ippsRSAVerify_PKCS1v15
#define ippsRSASign_PKCS1v15_rmf y8_ippsRSASign_PKCS1v15_rmf
#define ippsRSAVerify_PKCS1v15_rmf y8_ippsRSAVerify_PKCS1v15_rmf
#define ippsDLGetResultString y8_ippsDLGetResultString
#define ippsDLPGetSize y8_ippsDLPGetSize
#define ippsDLPInit y8_ippsDLPInit
#define ippsDLPPack y8_ippsDLPPack
#define ippsDLPUnpack y8_ippsDLPUnpack
#define ippsDLPSet y8_ippsDLPSet
#define ippsDLPGet y8_ippsDLPGet
#define ippsDLPSetDP y8_ippsDLPSetDP
#define ippsDLPGetDP y8_ippsDLPGetDP
#define ippsDLPGenKeyPair y8_ippsDLPGenKeyPair
#define ippsDLPPublicKey y8_ippsDLPPublicKey
#define ippsDLPValidateKeyPair y8_ippsDLPValidateKeyPair
#define ippsDLPSetKeyPair y8_ippsDLPSetKeyPair
#define ippsDLPSignDSA y8_ippsDLPSignDSA
#define ippsDLPVerifyDSA y8_ippsDLPVerifyDSA
#define ippsDLPSharedSecretDH y8_ippsDLPSharedSecretDH
#define ippsDLPGenerateDSA y8_ippsDLPGenerateDSA
#define ippsDLPValidateDSA y8_ippsDLPValidateDSA
#define ippsDLPGenerateDH y8_ippsDLPGenerateDH
#define ippsDLPValidateDH y8_ippsDLPValidateDH
#define ippsECCGetResultString y8_ippsECCGetResultString
#define ippsECCPGetSize y8_ippsECCPGetSize
#define ippsECCPGetSizeStd128r1 y8_ippsECCPGetSizeStd128r1
#define ippsECCPGetSizeStd128r2 y8_ippsECCPGetSizeStd128r2
#define ippsECCPGetSizeStd192r1 y8_ippsECCPGetSizeStd192r1
#define ippsECCPGetSizeStd224r1 y8_ippsECCPGetSizeStd224r1
#define ippsECCPGetSizeStd256r1 y8_ippsECCPGetSizeStd256r1
#define ippsECCPGetSizeStd384r1 y8_ippsECCPGetSizeStd384r1
#define ippsECCPGetSizeStd521r1 y8_ippsECCPGetSizeStd521r1
#define ippsECCPGetSizeStdSM2 y8_ippsECCPGetSizeStdSM2
#define ippsECCPInit y8_ippsECCPInit
#define ippsECCPInitStd128r1 y8_ippsECCPInitStd128r1
#define ippsECCPInitStd128r2 y8_ippsECCPInitStd128r2
#define ippsECCPInitStd192r1 y8_ippsECCPInitStd192r1
#define ippsECCPInitStd224r1 y8_ippsECCPInitStd224r1
#define ippsECCPInitStd256r1 y8_ippsECCPInitStd256r1
#define ippsECCPInitStd384r1 y8_ippsECCPInitStd384r1
#define ippsECCPInitStd521r1 y8_ippsECCPInitStd521r1
#define ippsECCPInitStdSM2 y8_ippsECCPInitStdSM2
#define ippsECCPSet y8_ippsECCPSet
#define ippsECCPSetStd y8_ippsECCPSetStd
#define ippsECCPSetStd128r1 y8_ippsECCPSetStd128r1
#define ippsECCPSetStd128r2 y8_ippsECCPSetStd128r2
#define ippsECCPSetStd192r1 y8_ippsECCPSetStd192r1
#define ippsECCPSetStd224r1 y8_ippsECCPSetStd224r1
#define ippsECCPSetStd256r1 y8_ippsECCPSetStd256r1
#define ippsECCPSetStd384r1 y8_ippsECCPSetStd384r1
#define ippsECCPSetStd521r1 y8_ippsECCPSetStd521r1
#define ippsECCPSetStdSM2 y8_ippsECCPSetStdSM2
#define ippsECCPBindGxyTblStd192r1 y8_ippsECCPBindGxyTblStd192r1
#define ippsECCPBindGxyTblStd224r1 y8_ippsECCPBindGxyTblStd224r1
#define ippsECCPBindGxyTblStd256r1 y8_ippsECCPBindGxyTblStd256r1
#define ippsECCPBindGxyTblStd384r1 y8_ippsECCPBindGxyTblStd384r1
#define ippsECCPBindGxyTblStd521r1 y8_ippsECCPBindGxyTblStd521r1
#define ippsECCPBindGxyTblStdSM2 y8_ippsECCPBindGxyTblStdSM2
#define ippsECCPGet y8_ippsECCPGet
#define ippsECCPGetOrderBitSize y8_ippsECCPGetOrderBitSize
#define ippsECCPValidate y8_ippsECCPValidate
#define ippsECCPPointGetSize y8_ippsECCPPointGetSize
#define ippsECCPPointInit y8_ippsECCPPointInit
#define ippsECCPSetPoint y8_ippsECCPSetPoint
#define ippsECCPSetPointAtInfinity y8_ippsECCPSetPointAtInfinity
#define ippsECCPGetPoint y8_ippsECCPGetPoint
#define ippsECCPCheckPoint y8_ippsECCPCheckPoint
#define ippsECCPComparePoint y8_ippsECCPComparePoint
#define ippsECCPNegativePoint y8_ippsECCPNegativePoint
#define ippsECCPAddPoint y8_ippsECCPAddPoint
#define ippsECCPMulPointScalar y8_ippsECCPMulPointScalar
#define ippsECCPGenKeyPair y8_ippsECCPGenKeyPair
#define ippsECCPPublicKey y8_ippsECCPPublicKey
#define ippsECCPValidateKeyPair y8_ippsECCPValidateKeyPair
#define ippsECCPSetKeyPair y8_ippsECCPSetKeyPair
#define ippsECCPSharedSecretDH y8_ippsECCPSharedSecretDH
#define ippsECCPSharedSecretDHC y8_ippsECCPSharedSecretDHC
#define ippsECCPSignDSA y8_ippsECCPSignDSA
#define ippsECCPVerifyDSA y8_ippsECCPVerifyDSA
#define ippsECCPSignNR y8_ippsECCPSignNR
#define ippsECCPVerifyNR y8_ippsECCPVerifyNR
#define ippsECCPSignSM2 y8_ippsECCPSignSM2
#define ippsECCPVerifySM2 y8_ippsECCPVerifySM2
#define ippsGFpGetSize y8_ippsGFpGetSize
#define ippsGFpInitArbitrary y8_ippsGFpInitArbitrary
#define ippsGFpInitFixed y8_ippsGFpInitFixed
#define ippsGFpInit y8_ippsGFpInit
#define ippsGFpMethod_p192r1 y8_ippsGFpMethod_p192r1
#define ippsGFpMethod_p224r1 y8_ippsGFpMethod_p224r1
#define ippsGFpMethod_p256r1 y8_ippsGFpMethod_p256r1
#define ippsGFpMethod_p384r1 y8_ippsGFpMethod_p384r1
#define ippsGFpMethod_p521r1 y8_ippsGFpMethod_p521r1
#define ippsGFpMethod_p256sm2 y8_ippsGFpMethod_p256sm2
#define ippsGFpMethod_p256bn y8_ippsGFpMethod_p256bn
#define ippsGFpMethod_p256 y8_ippsGFpMethod_p256
#define ippsGFpMethod_pArb y8_ippsGFpMethod_pArb
#define ippsGFpxGetSize y8_ippsGFpxGetSize
#define ippsGFpxInit y8_ippsGFpxInit
#define ippsGFpxInitBinomial y8_ippsGFpxInitBinomial
#define ippsGFpxMethod_binom2_epid2 y8_ippsGFpxMethod_binom2_epid2
#define ippsGFpxMethod_binom3_epid2 y8_ippsGFpxMethod_binom3_epid2
#define ippsGFpxMethod_binom2 y8_ippsGFpxMethod_binom2
#define ippsGFpxMethod_binom3 y8_ippsGFpxMethod_binom3
#define ippsGFpxMethod_binom y8_ippsGFpxMethod_binom
#define ippsGFpxMethod_com y8_ippsGFpxMethod_com
#define ippsGFpScratchBufferSize y8_ippsGFpScratchBufferSize
#define ippsGFpElementGetSize y8_ippsGFpElementGetSize
#define ippsGFpElementInit y8_ippsGFpElementInit
#define ippsGFpSetElement y8_ippsGFpSetElement
#define ippsGFpSetElementRegular y8_ippsGFpSetElementRegular
#define ippsGFpSetElementOctString y8_ippsGFpSetElementOctString
#define ippsGFpSetElementRandom y8_ippsGFpSetElementRandom
#define ippsGFpSetElementHash y8_ippsGFpSetElementHash
#define ippsGFpSetElementHash_rmf y8_ippsGFpSetElementHash_rmf
#define ippsGFpCpyElement y8_ippsGFpCpyElement
#define ippsGFpGetElement y8_ippsGFpGetElement
#define ippsGFpGetElementOctString y8_ippsGFpGetElementOctString
#define ippsGFpCmpElement y8_ippsGFpCmpElement
#define ippsGFpIsZeroElement y8_ippsGFpIsZeroElement
#define ippsGFpIsUnityElement y8_ippsGFpIsUnityElement
#define ippsGFpConj y8_ippsGFpConj
#define ippsGFpNeg y8_ippsGFpNeg
#define ippsGFpInv y8_ippsGFpInv
#define ippsGFpSqrt y8_ippsGFpSqrt
#define ippsGFpSqr y8_ippsGFpSqr
#define ippsGFpAdd y8_ippsGFpAdd
#define ippsGFpSub y8_ippsGFpSub
#define ippsGFpMul y8_ippsGFpMul
#define ippsGFpExp y8_ippsGFpExp
#define ippsGFpMultiExp y8_ippsGFpMultiExp
#define ippsGFpAdd_PE y8_ippsGFpAdd_PE
#define ippsGFpSub_PE y8_ippsGFpSub_PE
#define ippsGFpMul_PE y8_ippsGFpMul_PE
#define ippsGFpGetInfo y8_ippsGFpGetInfo
#define ippsGFpECGetSize y8_ippsGFpECGetSize
#define ippsGFpECInit y8_ippsGFpECInit
#define ippsGFpECSet y8_ippsGFpECSet
#define ippsGFpECSetSubgroup y8_ippsGFpECSetSubgroup
#define ippsGFpECInitStd128r1 y8_ippsGFpECInitStd128r1
#define ippsGFpECInitStd128r2 y8_ippsGFpECInitStd128r2
#define ippsGFpECInitStd192r1 y8_ippsGFpECInitStd192r1
#define ippsGFpECInitStd224r1 y8_ippsGFpECInitStd224r1
#define ippsGFpECInitStd256r1 y8_ippsGFpECInitStd256r1
#define ippsGFpECInitStd384r1 y8_ippsGFpECInitStd384r1
#define ippsGFpECInitStd521r1 y8_ippsGFpECInitStd521r1
#define ippsGFpECInitStdSM2 y8_ippsGFpECInitStdSM2
#define ippsGFpECInitStdBN256 y8_ippsGFpECInitStdBN256
#define ippsGFpECBindGxyTblStd192r1 y8_ippsGFpECBindGxyTblStd192r1
#define ippsGFpECBindGxyTblStd224r1 y8_ippsGFpECBindGxyTblStd224r1
#define ippsGFpECBindGxyTblStd256r1 y8_ippsGFpECBindGxyTblStd256r1
#define ippsGFpECBindGxyTblStd384r1 y8_ippsGFpECBindGxyTblStd384r1
#define ippsGFpECBindGxyTblStd521r1 y8_ippsGFpECBindGxyTblStd521r1
#define ippsGFpECBindGxyTblStdSM2 y8_ippsGFpECBindGxyTblStdSM2
#define ippsGFpECGet y8_ippsGFpECGet
#define ippsGFpECGetSubgroup y8_ippsGFpECGetSubgroup
#define ippsGFpECScratchBufferSize y8_ippsGFpECScratchBufferSize
#define ippsGFpECVerify y8_ippsGFpECVerify
#define ippsGFpECPointGetSize y8_ippsGFpECPointGetSize
#define ippsGFpECPointInit y8_ippsGFpECPointInit
#define ippsGFpECSetPointAtInfinity y8_ippsGFpECSetPointAtInfinity
#define ippsGFpECSetPoint y8_ippsGFpECSetPoint
#define ippsGFpECSetPointRegular y8_ippsGFpECSetPointRegular
#define ippsGFpECSetPointRandom y8_ippsGFpECSetPointRandom
#define ippsGFpECMakePoint y8_ippsGFpECMakePoint
#define ippsGFpECSetPointHash y8_ippsGFpECSetPointHash
#define ippsGFpECSetPointHashBackCompatible y8_ippsGFpECSetPointHashBackCompatible
#define ippsGFpECSetPointHash_rmf y8_ippsGFpECSetPointHash_rmf
#define ippsGFpECSetPointHashBackCompatible_rmf y8_ippsGFpECSetPointHashBackCompatible_rmf
#define ippsGFpECGetPoint y8_ippsGFpECGetPoint
#define ippsGFpECGetPointRegular y8_ippsGFpECGetPointRegular
#define ippsGFpECSetPointOctString y8_ippsGFpECSetPointOctString
#define ippsGFpECGetPointOctString y8_ippsGFpECGetPointOctString
#define ippsGFpECTstPoint y8_ippsGFpECTstPoint
#define ippsGFpECTstPointInSubgroup y8_ippsGFpECTstPointInSubgroup
#define ippsGFpECCpyPoint y8_ippsGFpECCpyPoint
#define ippsGFpECCmpPoint y8_ippsGFpECCmpPoint
#define ippsGFpECNegPoint y8_ippsGFpECNegPoint
#define ippsGFpECAddPoint y8_ippsGFpECAddPoint
#define ippsGFpECMulPoint y8_ippsGFpECMulPoint
#define ippsGFpECPrivateKey y8_ippsGFpECPrivateKey
#define ippsGFpECPublicKey y8_ippsGFpECPublicKey
#define ippsGFpECTstKeyPair y8_ippsGFpECTstKeyPair
#define ippsGFpECSharedSecretDH y8_ippsGFpECSharedSecretDH
#define ippsGFpECSharedSecretDHC y8_ippsGFpECSharedSecretDHC
#define ippsGFpECMessageRepresentationSM2 y8_ippsGFpECMessageRepresentationSM2
#define ippsGFpECSignDSA y8_ippsGFpECSignDSA
#define ippsGFpECVerifyDSA y8_ippsGFpECVerifyDSA
#define ippsGFpECSignNR y8_ippsGFpECSignNR
#define ippsGFpECVerifyNR y8_ippsGFpECVerifyNR
#define ippsGFpECSignSM2 y8_ippsGFpECSignSM2
#define ippsGFpECVerifySM2 y8_ippsGFpECVerifySM2
#define ippsGFpECUserIDHashSM2 y8_ippsGFpECUserIDHashSM2
#define ippsGFpECKeyExchangeSM2_GetSize y8_ippsGFpECKeyExchangeSM2_GetSize
#define ippsGFpECKeyExchangeSM2_Init y8_ippsGFpECKeyExchangeSM2_Init
#define ippsGFpECKeyExchangeSM2_Setup y8_ippsGFpECKeyExchangeSM2_Setup
#define ippsGFpECKeyExchangeSM2_SharedKey y8_ippsGFpECKeyExchangeSM2_SharedKey
#define ippsGFpECKeyExchangeSM2_Confirm y8_ippsGFpECKeyExchangeSM2_Confirm
#define ippsGFpECGetInfo_GF y8_ippsGFpECGetInfo_GF
#define ippsGFpECESGetSize_SM2 y8_ippsGFpECESGetSize_SM2
#define ippsGFpECESInit_SM2 y8_ippsGFpECESInit_SM2
#define ippsGFpECESSetKey_SM2 y8_ippsGFpECESSetKey_SM2
#define ippsGFpECESStart_SM2 y8_ippsGFpECESStart_SM2
#define ippsGFpECESEncrypt_SM2 y8_ippsGFpECESEncrypt_SM2
#define ippsGFpECESDecrypt_SM2 y8_ippsGFpECESDecrypt_SM2
#define ippsGFpECESFinal_SM2 y8_ippsGFpECESFinal_SM2
#define ippsGFpECESGetBuffersSize_SM2 y8_ippsGFpECESGetBuffersSize_SM2
#define ippsGFpECEncryptSM2_Ext_EncMsgSize y8_ippsGFpECEncryptSM2_Ext_EncMsgSize
#define ippsGFpECEncryptSM2_Ext y8_ippsGFpECEncryptSM2_Ext
#define ippsGFpECDecryptSM2_Ext_DecMsgSize y8_ippsGFpECDecryptSM2_Ext_DecMsgSize
#define ippsGFpECDecryptSM2_Ext y8_ippsGFpECDecryptSM2_Ext

@ -0,0 +1,35 @@
#===============================================================================
# Copyright (C) 2022 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
BasedOnStyle: WebKit
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: None
ColumnLimit: 150
ContinuationIndentWidth: 3
IndentWidth: 3
MaxEmptyLinesToKeep: 3
PointerAlignment: Right
SortIncludes: false

@ -0,0 +1,33 @@
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text
*.cpp text
*.def text
*.rc text
*.i text
*.sh text
*.csh text
*.mk text
*.java text
*.csv text
*.lst text
# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf
*.bat text eol=crlf
# Declare files that will always have LF line endings on checkout.
*.py text eol=lf
# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.lib binary
*.dll binary
*.dylib binary
*.so binary
*.a binary

@ -0,0 +1,304 @@
# How to Build Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) <!-- omit in toc -->
- [Software Requirements](#software-requirements)
- [Common tools](#common-tools)
- [Linux* OS](#linux-os)
- [Windows* OS](#windows-os)
- [macOS*](#macos)
- [Building Intel IPP Cryptography on Linux\* OS](#building-intel-ipp-cryptography-on-linux-os)
- [Building Intel IPP Cryptography on Windows\* OS](#building-intel-ipp-cryptography-on-windows-os)
- [Building Intel IPP Cryptography on macOS\*](#building-intel-ipp-cryptography-on-macos)
- [CMake Build Options](#cmake-build-options)
- [Common for all operating systems](#common-for-all-operating-systems)
- [Windows\* OS](#windows-os)
- [Linux\* OS](#linux-os)
- [CMake Commands FAQ](#cmake-commands-faq)
- [How to build a 32-bit library?](#how-to-build-a-32-bit-library)
- [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)
- [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)
- [How to build a library to work in a kernel space?](#how-to-build-a-library-to-work-in-a-kernel-space)
- [Incorporating Intel® IPP Cryptography sources into custom build system](#incorporating-intel-ipp-cryptography-sources-into-custom-build-system)
## Software Requirements
### Common tools
- [CMake\*](https://cmake.org/download) 3.15 or higher
- Python 3.8.1
- The Netwide Assembler (NASM) 2.15
- OpenSSL\* 3.0.8 or higher
### Linux* OS
- [Common tools](#common-tools)
- Intel® C++ Compiler Classic 2021.9 for Linux\* OS
- GCC 8.3
- GCC 9.1
- GCC 10.1
- GCC 11.1
- Clang 9.0
- Clang 12.0
- GNU binutils 2.32
### Windows* OS
- [Common tools](#common-tools)
- Intel® C++ Compiler Classic 2021.9 for Windows\* OS
- Microsoft Visual C++ Compiler\* version 19.16 provided by Microsoft Visual Studio\* 2017 version 15.9
> **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\*.
- Microsoft Visual C++ Compiler\* version 19.24 provided by Microsoft Visual Studio\* 2019 version 16.4
- Microsoft Visual C++ Compiler\* version 19.30 provided by Microsoft Visual Studio\* 2022 version 17.0
> **NOTE:** [CMake\*](https://cmake.org/download) 3.21 or higher is required to build using Microsoft Visual Studio\* 2022.
### macOS*
- [Common tools](#common-tools)
- Intel® C++ Compiler Classic 2021.9 for macOS\*
## Building Intel IPP Cryptography on Linux\* OS
The software was validated on:
- Red Hat\* Enterprise Linux\* 8
To build the Intel IPP Cryptography library on Linux\* OS, complete the following steps:
1. Clone the source code from GitHub\* as follows:
``` bash
git clone --recursive https://github.com/intel/ipp-crypto
```
2. Set the environment for one of the supported C/C++ compilers.
*Example for Intel® Compiler:*
```bash
source /opt/intel/bin/compilervars.sh intel64
```
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).
3. Run CMake\* in the command line.
*Examples*:
For Intel® C++ Compiler:
``` bash
CC=icc CXX=icpc cmake CMakeLists.txt -B_build -DARCH=intel64
```
For GCC:
``` bash
CC=gcc CXX=g++ cmake CMakeLists.txt -B_build -DARCH=intel64
```
For the complete list of supported CMake options, refer to the [CMake Build Options](#cmake-build-options) section.
4. Navigate to the build folder specified in the CMake command line and start the build:
```bash
cd _build
make all
```
You can find the built libraries in the `<build_dir>/.build/<RELEASE|DEBUG>/lib` directory.
## Building Intel IPP Cryptography on Windows\* OS
The software was validated on:
- Windows Server\* 2019
To build the Intel IPP Cryptography library on Windows* OS, complete the following steps:
1. Clone the source code from GitHub\* as follows:
``` bash
git clone --recursive https://github.com/intel/ipp-crypto
```
2. Set the environment variables for one of the supported C/C++ compilers.
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).
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).
3. Run CMake\* in the command line.
*Examples*:
For Intel® C++ Compiler and Visual Studio\* 2019:
``` bash
cmake CMakeLists.txt -B_build -G"Visual Studio 16 2019" -T"Intel C++ Compiler 19.2" -Ax64
```
For MSVC\* Compiler and Visual Studio\* 2019:
``` bash
cmake CMakeLists.txt -B_build -G"Visual Studio 16 2019" -Ax64
```
For the complete list of supported CMake options, please refer to the [CMake Build Options](#cmake-build-options) section.
4. Navigate to the build folder, specified in the CMake command line and start build either from Visual Studio\* or in the command line.
*Build from command line:*
```bash
cmake --build . --parallel 4 --target ALL_BUILD --config Release
```
*Build from Visual Studio\*:*
Open the Microsoft Visual Studio\* solution `Intel(R) IPP Crypto.sln`, choose project (build target) from the Solution Explorer and run the build.
## Building Intel IPP Cryptography on macOS\*
The software was validated on:
- macOS\* 12.0
To build the Intel IPP Cryptography library on macOS*, complete the following steps:
1. Clone the source code from GitHub\* as follows:
``` bash
git clone --recursive https://github.com/intel/ipp-crypto
```
2. Set the environment variables for one of the supported C/C++ compilers.
*Example for Intel® Compiler:*
```bash
source /opt/intel/bin/compilervars.sh intel64
```
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)
3. Run CMake\* in the command line.
*Examples*:
For Intel® C++ Compiler:
``` bash
CC=icc CXX=icpc cmake CMakeLists.txt -B_build -DARCH=intel64
```
For the complete list of supported CMake options, refer to the [CMake Build Options](#cmake-build-options) section.
4. Navigate to the build folder specified in the CMake command line and start the build:
```bash
cd _build
make all
```
You can find the built libraries in the `<build_dir>/.build/<RELEASE|DEBUG>/lib` directory.
## CMake Build Options
### Common for all operating systems
- `-B<build-dir>` - defines the build directory. This is the directory where CMake puts the generated Microsoft Visual Studio\* solution or makefiles.
- `-DARCH=<ia32|intel64>` - on Linux* OS and macOS*, defines the target architecture for the build of the Intel IPP Cryptography library.
> **NOTE:** On Windows* OS, use `-G`/`-A` instead. See the description of these options [below](#windows-os-1).
- `-DMERGED_BLD:BOOL=<on|off>` - optional. Defines the configuration of the Intel IPP Cryptography library to build:
- `-DMERGED_BLD:BOOL=on`: default configuration. It includes the following steps:
- Build of a dispatched static library with all available optimizations
- Build of a dispatched dynamic library with all available optimizations
- Generation of the single-CPU headers (for details, refer to [this](./OVERVIEW.md) section)
- `-DMERGED_BLD:BOOL=off`: build of one static library per optimization; build of one dynamic library per optimization.
- `-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).
- Example for Linux\* OS and the IA-32 architecture:
`-DPLATFORM_LIST="m7;s8;p8;g9;h9"`
- Example for Linux\* OS and the Intel® 64 architecture:
`-DPLATFORM_LIST="w7;n8;y8;e9;l9;k0"`
- `-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.
- Currently supported by the library custom features dispatching:
1. Intel® Advanced Encryption Standard New Instructions (Intel® AES-NI) code-path enabling: `IPPCP_AES_ON;IPPCP_CLMUL_ON`
2. Intel® Advanced Vector Extensions 512 (Intel(R) AVX-512) and vector extensions of Intel(R) AES New Instructions (Intel(R) AES-NI) code-path enabling: `IPPCP_VAES_ON;IPPCP_VCLMUL_ON`
- Example:
`-DPLATFORM_LIST="IPPCP_AES_ON;IPPCP_CLMUL_ON"` - this combination enables Intel® AES-NI in all 1CPU libraries, which contains this code path.
- Example of using a combination of CPU features:
`-DPLATFORM_LIST="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 and for `"k1"` - Intel AVX-512 VAES)
### Windows\* OS
- `-G"<tool-chain-generator>"` - defines the native build system CMake will generate from the input files.
Refer to CMake [documentation](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators) for the Visual Studio\* generators options.
- `-A<x64|Win32>` - for Visual Studio\* 2019+, defines the target architecture for the build of the Intel IPP Cryptography library.
- `-T<Compiler>` - defines the compiler for building.
For example, to use Intel® Compiler, specify `-T"Intel C++ Compiler 19.1"`.
> **NOTE:** Refer to CMake [documentation](https://cmake.org/cmake/help/latest/manual/ccmake.1.html) for more information on these options.
### Linux\* OS
- `-DNONPIC_LIB:BOOL=<off|on>` - optional. Defines whether the built library is position-dependent or not.
- `-DNONPIC_LIB:BOOL=off:` default. Position-independent code.
- `-DNONPIC_LIB:BOOL=on:` position-dependent code.
## CMake Commands FAQ
### How to build a 32-bit library?
`cmake CMakeLists.txt -B_build -DARCH=ia32`
### How to build a 64-bit generic library without any CPU-specific optimizations?
`cmake CMakeLists.txt -B_build -DARCH=intel64 -DMERGED_BLD:BOOL=off -DPLATFORM_LIST=mx`
### How to build two libraries with optimizations for Intel® Advanced Vector Extensions 2 and Intel® Advanced Vector Extensions 512 instruction sets?
`cmake CMakeLists.txt -B_build -DARCH=intel64 -DMERGED_BLD:BOOL=off -DPLATFORM_LIST="l9;k0"`
### How to build a library to work in a kernel space?
`cmake CMakeLists.txt -B_build -DARCH=intel64 -DNONPIC_LIB:BOOL=on`
### How to specify path to OpenSSL\*
`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`
## Incorporating Intel® IPP Cryptography sources into custom build system
You can include Intel IPP Cryptography sources into some arbitrary project's CMake build system and build them with it.
Here is the minimal working example:
``` bash
cmake_minimum_required(VERSION 3.14)
project("test_proj")
# `crypto` is the repository root folder of Intel IPP Cryptography
add_subdirectory(crypto)
include_directories(crypto/include)
# 'main.cpp' is some arbitrary project's source file
add_executable("test_proj" main.cpp)
# `ippcp_s` is the target name of static library in the Intel IPP Cryptography build system.
# This static library will be built automatically, when you build your project.
target_link_libraries("test_proj" "ippcp_s")
```
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:
``` bash
find_package(IPPCrypto REQUIRED MODULE)
if (NOT IPPCRYPTO_FOUND)
message(FATAL_ERROR "No Intel IPP Cryptography library found on the system.")
endif()
# If Intel IPP Cryptography is found, the following variables will be defined:
# `IPPCRYPTO_LIBRARIES` - static library name
# `IPPCRYPTO_INCLUDE_DIRS` - path to Intel IPP Cryptography headers
# `IPPCRYPTO_ROOT_DIR` - library root dir (a folder with 'include' and 'lib' directories)
```

@ -0,0 +1,128 @@
# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
This is a list of notable changes to Intel(R) IPP Cryptography, in reverse chronological order.
## Intel(R) IPP Cryptography 2021.9
- Added optimized RSA-2048 code for multi-buffer (8 buffers) Intel® AVX-512 implementation.
- Added Intel® Advanced Vector Extensions 2 (Intel® AVX2) vector extensions of Intel® AES New Instructions (Intel® AES-NI) optimization for AES-GCM algorithm.
## Intel(R) IPP Cryptography 2021.8
- Crypto Multi-buffer library was extended with XTS mode of SM4 algorithm.
## Intel(R) IPP Cryptography 2021.7.1
- Added re-initialization API for AES-GCM context - ippsAES_GCMReinit. The use-case of this function is very specific, please, refer to the documentation for more details.
## Intel(R) IPP Cryptography 2021.7
- Mitigation for Frequency Throttling Side-Channel Attack ([Frequency Throttling Side Channel Software Guidance for Cryptography Implementations](https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/frequency-throttling-side-channel-guidance.html)) was added for ECB, CMAC and GCM modes of AES (for more details refer to ippsAESSetupNoise, ippsAES_GCMSetupNoise and ippsAES_CMACSetupNoise).
- Crypto Multi-buffer library was extended with CCM and GCM modes of SM4 algorithm.
- In Crypto Multi-buffer library in-place mode of executing (when pa_out == pa_inp) was fixed for SM4 CBC and CFB modes.
- New API that updates pointer to IppsHashMethod context inside the IppsHashState_rmf state was added (please, refer to ippsHashStateMethodSet_ API).
- ippsHMAC_Pack(_rmf), ippsHMAC_Unpack(_rmf) APIs were fixed - context id is set up properly now during the packing-unpacking process.
## Intel(R) IPP Cryptography 2021.6
- EC cryptography functionality for the NIST curves p256r1, p384r1, p521r1 and SM2 curve was enabled with Intel® Advanced Vector Extensions 512 (Intel® AVX-512) IFMA instructions.
- EC cryptography functionality input parameters checking was improved by adding keys boundaries check.
- AES-GCM input parameters checking was improved by adding input text boundary check.
- An issue in AES-CTR Intel® Advanced Vector Extensions 512 (Intel® AVX-512) code path related to handling of last partial block was fixed.
- The ability to build Intel® IPP Cryptography library and Crypto Multi buffer library with Microsoft Visual C++ Compiler\* version 19.30 provided by Microsoft Visual Studio\* 2022 version 17.0 was added.
## Intel(R) IPP Cryptography 2021.5
- AES-GCM small packets processing was optimized for Intel® Advanced Vector Extensions 512 (Intel® AVX-512) code path.
- The ability to build Intel® IPP Cryptography library and Crypto Multi buffer library with GCC\* 10, GCC\* 11, Clang\* 9, Clang\* 12 and Intel® C++ Compiler Classic 2021.3 was added.
- The ability to build Crypto Multi buffer library with OpenSSL\* 3.0 was added.
## Intel(R) IPP Cryptography 2021.4
- Crypto Multi buffer library was extended with ECB, CBC, CTR, OFB and CFB modes of SM4 algorithm.
- Crypto Multi buffer library was extended with EC SM2 public key generation, ECDHE and ECDSA (Sign and Verify) algorithms.
- Crypto Multi buffer library extended with ECDSA Ed25519 verify algorithm.
- Crypto Multi buffer library extended with modular exponent algorithm.
## Intel(R) IPP Cryptography 2021.3
- Enabled ECDSA Ed25519sign crypto multi buffer API within Intel® IPP Cryptography for 3rd Generation Intel® Xeon® Processor Scalable and 10th Gen Intel® Core™ Processors.
- Enabled RSA single buffer 3k, 4k within Intel® IPP Cryptography for 3rd Generation Intel® Xeon® Processor Scalable and 10th Gen Intel® Core™ Processors.
- Fixed Intel® IPP Cryptography AES-GCM decryption incorrect tag issue while dispatching on processors supported with Intel® Advanced Vector Extensions 512 (Intel® AVX-512).
## Intel(R) IPP Cryptography 2021.2
- Crypto Multi buffer library was extended with ECDSA (Sign) and ECDHE for the NIST curves p521r1.
- Added ECDSA verify with new Instruction Set Architecture(ISA) for the NIST curve p384r1, p256r1 and p521r1.
- Added SM3 multi buffer with new Instruction Set Architecture(ISA).
- Added new Intel® IPP Cryptography pre-defined hash algorithm APIs ippsHashMethodGetSize and ippsHashMethodInit.
- RSA-2048 decryption (CRT) was enabled for Intel(R) Microarchitecture Code Named Ice Lake.
- Crypto Multi buffer library was extended with ECDSA (Sign) and ECDHE for the NIST curves p256r1 and p384r1.
- Fixed a build issue that affect build of the Intel(R) IPP Cryptography library with MSVC\* compiler on Windows\* OS.
- Duplicated APIs of HASH, HMAC, MGF, RSA, ECCP functionality were marked as deprecated. For more information see [Deprecation notes](./DEPRECATION_NOTES.md)
- Added examples demonstrating usage of SMS4-CBC encryption and decryption.
## Intel(R) IPP Cryptography 2020 Update 3
- Refactoring of Crypto Multi buffer library, added build and installation of crypto_mb dynamic library and CPU features detection.
- Added multi buffer implementation of AES-CFB optimized with Intel(R) AES New Instructions (Intel(R) AES-NI) and vector extensions of Intel(R) AES New Instructions (Intel(R) AES-NI) instruction sets.
- Fixed compatibility issue with x64 ABI (restored non-volatile registers after function call in Intel® Advanced Vector Extensions (Intel® AVX)/Intel® Advanced Vector Extensions 2 (Intel® AVX2) assembly code).
- Updated Intel IPP Custom Library Tool.
## Intel(R) IPP Cryptography 2020 Update 2
- AES-GCM algorithm was optimized for Intel(R) Microarchitecture Code Named Cascade Lake with Intel(R) AES New Instructions (Intel(R) AES-NI).
- Crypto Multi buffer library installation instructions update. The Readme file of Crypto Multi buffer Library was updated by information about possible installation fails in specific environment.
- Position Independent Execution (PIE) option was added to Crypto Multi buffer Library build scripts.
- AES-XTS optimization for Intel(R) Microarchitecture Code Named Ice Lake with vector extensions of Intel(R) AES New Instructions (Intel(R) AES-NI) was improved.
- SM4-ECB, SM4-CBC and SM4-CTR were enabled for Intel(R) Microarchitecture Code Named Ice Lake with Intel(R) Advanced Vector Extensions 512 (Intel(R) AVX-512) GFNI instructions.
- Added support of Clang 9.0 for Linux and Clang 11.0 for MacOS compilers.
- Added example of RSA Multi Buffer Encryption/Decryption usage.
- The library was enabled with Intel® Control-Flow Enforcement Technology (Intel® CET) on Linux and Windows.
- Changed API of ippsGFpECSignDSA, ippsGFpECSignNR and ippsGFpECSignSM2 functions: const-ness requirement of private ephemeral keys is removed and now the ephemeral keys are cleaned up after signing.
## Intel(R) IPP Cryptography 2020 Update 1
- Added RSA IFMA Muti-buffer Library.
- Added RSA PSS multi buffer signature generation and verification.
- Added RSA PKCS#1 v1.5 multi buffer signature generation and verification.
- Removed Android support. Use Linux libraries instead.
- Fixed all build warnings for supported GCC\* and MSVC\* compilers.
- Assembler sources were migrated to NASM\* assembler.
## Intel(R) IPP Cryptography 2020
- Added RSA multi buffer encryption and decryption.
- Added Intel(R) IPP Cryptography library examples: AES-CTR, RSA-OAEP, RSA-PSS.
- Fixed code generation for kernel code model in Linux* Intel(R) 64 non-PIC builds.
- Fixes in Intel IPP Custom Library Tool.
- Added Microsoft\* Visual Studio\* 2019 build support.
- A dynamic dispatcher library and a set of CPU-optimized dynamic libraries were replaced by a single merged dynamic library with an internal dispatcher.
- Removed deprecated multi-threaded version of the library.
- Removed Supplemental Streaming SIMD Extensions 3 (SSSE3) support on macOS.
## Intel(R) IPP Cryptography 2019 Update 5
- 1024, 2048, 3072 and 4096 bit RSA were enabled with AVX512 IFMA instructions.
- AES-GCM was enabled with vector extensions of Intel(R) AES New Instructions (Intel(R) AES-NI).
- AES-XTS was enabled with vector extensions of Intel(R) AES New Instructions (Intel(R) AES-NI).
- Fixed GCC\* and MSVC\* builds of IA32 generic CPU code (pure C) with -DMERGED_BLD:BOOL=off option.
- Added single-CPU headers generation.
- Aligned structure of the build output directory across all supported operation systems.
- AES-CFB was enabled with vector extensions of Intel(R) AES New Instructions (Intel(R) AES-NI).
- ippsGFpECGetPointOctString and ippsGFpECSetPointOctString now support elliptic curves over both prime and extended finite fields.
- Added the ability to build the Intel(R) IPP Cryptography library with GCC\* 8.2.
## Intel(R) IPP Cryptography 2019 Update 4
- AES-ECB, AES-CBC and AES-CTR were enabled with vector extensions of Intel(R) AES New Instructions (Intel(R) AES-NI).
- Improved optimization of Intel(R) AES-NI based CMAC.
- Added the ippsGFpGetInfo function, which returns information about a finite field.
- Added the ippsHashGetInfo_rmf function, which returns information about a hash algorithm.
- Fixed selection of CPU-specific code in dynamic/shared libraries.
## Intel(R) IPP Cryptography 2019 Update 3
- Added the ability to build the Intel(R) IPP Cryptography library with the Intel(R) C++ Compiler 19.
- Added Intel IPP Custom Library Tool based on Python.
## Intel(R) IPP Cryptography 2019 Update 1
- Added the ability to build the Intel(R) IPP Cryptography library with the Microsoft\* Visual C++ Compiler 2017.
- Added the new SM2 encryption scheme.
- Changed the range of the message being signed or verified by EC and DLP.
- Deprecated the ARCFour functionality.
- Fixed a potential security problem in the signing functions over elliptic curves.
- Fixed a potential security problem in the key expansion function for AES Encryption.
- Fixed a potential security problem in the AES-CTR cipher functions.
- Fixed a potential security problem in the AES-GCM cipher functions.
- Fixed a potential security problem in the DLP signing and key generation functions.
- Fixed minor issues with DLP functions.
- Fixed some of the compilation warnings observed when building the static dispatcher on Windows\* OS.
------------------------------------------------------------------------
Intel is a trademark of Intel Corporation or its subsidiaries in the U.S. and/or other countries.
\* Other names and brands may be claimed as the property of others.

@ -0,0 +1,238 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
#
cmake_minimum_required(VERSION 3.12)
include("${CMAKE_CURRENT_SOURCE_DIR}/sources/cmake/ippcp-utils.cmake")
ippcp_getlibversion("${CMAKE_CURRENT_SOURCE_DIR}/include/ippversion.h")
if ((NOT DEFINED IPPCP_VERSION_MAJOR) OR
(NOT DEFINED IPPCP_VERSION_MINOR) OR
(NOT DEFINED IPPCP_VERSION_UPDATE) OR
(NOT DEFINED IPPCP_INTERFACE_VERSION_MAJOR) OR
(NOT DEFINED IPPCP_INTERFACE_VERSION_MINOR))
message(WARNING "Cannot parse version from ippversion.h file. The project might be corrupted.")
endif()
set(PROJECT_FULL_NAME "Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)")
set(PROJECT_NAME "Intel(R) IPP Crypto")
set(PROJECT_VERSION ${IPPCP_VERSION})
set(LIB_NAME ippcp)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
cmake_policy(SET CMP0042 NEW)
cmake_policy(SET CMP0054 NEW)
cmake_policy(SET CMP0068 NEW)
if("${CMAKE_GENERATOR}" STREQUAL "NMake Makefiles")
if(NOT(C_COMPILER STREQUAL ""))
set(CMAKE_C_COMPILER ${C_COMPILER})
endif()
if(NOT(CXX_COMPILER STREQUAL ""))
set(CMAKE_CXX_COMPILER ${CXX_COMPILER})
endif()
endif()
project(${PROJECT_NAME}
VERSION ${PROJECT_VERSION}
LANGUAGES C CXX)
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
message(STATUS "CMAKE_BUILD_TYPE is unset, defaulting to Release")
set(CMAKE_BUILD_TYPE "Release")
endif()
find_package(Python REQUIRED)
if(WIN32 AND (${CMAKE_GENERATOR} MATCHES "Visual Studio"))
if(CMAKE_GENERATOR_PLATFORM) # VS 2019+ -A param
if(${CMAKE_GENERATOR_PLATFORM} MATCHES "x64")
set(ARCH intel64)
else()
set(ARCH ia32)
endif()
else()
if(${CMAKE_GENERATOR} MATCHES "Win64") # old way of platform setting for VS
set(ARCH intel64)
else()
set(ARCH ia32)
endif()
endif()
else()
if (NOT "${ARCH}" STREQUAL "intel64" AND NOT "${ARCH}" STREQUAL "ia32")
message(FATAL_ERROR "Please, set the ARCH parameter to ia32 or intel64")
endif()
endif(WIN32 AND (${CMAKE_GENERATOR} MATCHES "Visual Studio"))
if ((NOT NONPIC_LIB) AND (NOT CODE_COVERAGE))
set(DYNAMIC_LIB ON)
else()
set(DYNAMIC_LIB OFF)
endif()
if("${MERGED_BLD}" STREQUAL "")
set(MERGED_BLD ON)
endif()
# Set default installation directories
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
if (UNIX)
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/intel/ippcp_${PROJECT_VERSION}" CACHE PATH "..." FORCE)
else()
set(CMAKE_INSTALL_PREFIX "c:/Program Files (x86)/IntelSWTools/ippcp_${PROJECT_VERSION}" CACHE PATH "..." FORCE)
endif()
endif()
set(IPP_CRYPTO_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(IPP_CRYPTO_INCLUDE_DIR "${IPP_CRYPTO_DIR}/include")
set(IPP_CRYPTO_SOURCES_INCLUDE_DIR "${IPP_CRYPTO_DIR}/sources/include")
set(IPP_CRYPTO_SOURCES_DIR "${IPP_CRYPTO_DIR}/sources/ippcp")
set(IPP_CRYPTO_DISPATCHER_DIR "${IPP_CRYPTO_DIR}/sources/dispatcher")
set(TOOLS_DIR "${IPP_CRYPTO_DIR}/tools")
if(NOT CMAKE_OUTPUT_DIR)
set(CMAKE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/.build")
endif()
message (STATUS "CMAKE_VERSION ......................... " ${CMAKE_VERSION})
if(UNIX AND NOT APPLE)
if(NONPIC_LIB)
message (STATUS "NONPIC_LIB ............................ on")
else()
message (STATUS "NONPIC_LIB ............................ off")
endif()
else()
set(${NONPIC_LIB} false)
endif(UNIX AND NOT APPLE)
set(NONPIC_SUBDIRECTORY "")
if(NONPIC_LIB)
set(NONPIC_SUBDIRECTORY "/nonpic")
endif()
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${CMAKE_OUTPUT_DIR}/${OUTPUTCONFIG}/lib${NONPIC_SUBDIRECTORY}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${CMAKE_OUTPUT_DIR}/${OUTPUTCONFIG}/lib${NONPIC_SUBDIRECTORY}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${CMAKE_OUTPUT_DIR}/${OUTPUTCONFIG}/lib${NONPIC_SUBDIRECTORY}")
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}")
endif()
if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}")
endif()
message (STATUS "PROJECT ............................... " ${PROJECT_FULL_NAME})
message (STATUS "CMAKE_BINARY_DIR ...................... " ${CMAKE_BINARY_DIR})
message (STATUS "CMAKE_OUTPUT_DIR ...................... " ${CMAKE_OUTPUT_DIR})
message (STATUS "CMAKE_SOURCE_DIR ...................... " ${CMAKE_SOURCE_DIR})
message (STATUS "IPP_CRYPTO_DIR ........................ " ${IPP_CRYPTO_DIR})
message (STATUS "CMAKE_GENERATOR ....................... " ${CMAKE_GENERATOR})
message (STATUS "CMAKE_C_COMPILER_ID ................... " ${CMAKE_C_COMPILER_ID})
message (STATUS "CMAKE_CXX_COMPILER_ID ................. " ${CMAKE_CXX_COMPILER_ID})
message (STATUS "IPP_CRYPTO_INCLUDE_DIR ................ " ${IPP_CRYPTO_INCLUDE_DIR})
message (STATUS "IPP_CRYPTO_SOURCES_INCLUDE_DIR ........ " ${IPP_CRYPTO_SOURCES_INCLUDE_DIR})
message (STATUS "IPP_CRYPTO_SOURCES_DIR ................ " ${IPP_CRYPTO_SOURCES_DIR})
message (STATUS "ARCH .................................. " ${ARCH})
message (STATUS "DYNAMIC_LIB ........................... " ${DYNAMIC_LIB})
message (STATUS "CMAKE_INSTALL_PREFIX .................. " ${CMAKE_INSTALL_PREFIX})
if(Python_Interpreter_FOUND)
message (STATUS "PYTHON_VERSION_STRING ................. " ${Python_VERSION})
else()
message (STATUS "PYTHON_VERSION_STRING ................. Python not found" )
endif()
if(MERGED_BLD)
message (STATUS "MERGED_BLD ............................ on")
else()
message (STATUS "MERGED_BLD ............................ off")
endif()
option(BUILD_EXAMPLES "Build examples" OFF)
if(BUILD_EXAMPLES)
message (STATUS "BUILD_EXAMPLES ........................ on")
else()
message (STATUS "BUILD_EXAMPLES ........................ off")
endif()
# Build with sanitizers
set(SANITIZERS OFF)
if(BUILD_WITH_SANITIZERS AND UNIX AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL "12.0.0")
set(ASAN OFF)
set(UBSAN OFF)
set(MSAN OFF)
if("${BUILD_WITH_SANITIZERS}" MATCHES "address")
set(ASAN ON)
list(APPEND PRINT_TYPES_OF_SANITIZERS_LIST "address")
endif()
if("${BUILD_WITH_SANITIZERS}" MATCHES "undefined")
set(UBSAN ON)
list(APPEND PRINT_TYPES_OF_SANITIZERS_LIST "undefined")
endif()
if("${BUILD_WITH_SANITIZERS}" MATCHES "memory")
set(MSAN ON)
list(APPEND PRINT_TYPES_OF_SANITIZERS_LIST "memory")
endif()
if((ASAN OR UBSAN) AND MSAN)
message (FATAL_ERROR "Can not use address | undefined sanitizers with memory sanitizer")
endif()
if(ASAN OR UBSAN OR MSAN)
set(SANITIZERS ON)
endif()
endif()
if(SANITIZERS)
list(JOIN PRINT_TYPES_OF_SANITIZERS_LIST "," PRINT_TYPES_OF_SANITIZERS_STRING)
message (STATUS "BUILD_WITH_SANITIZERS ................. on (${PRINT_TYPES_OF_SANITIZERS_STRING})")
else()
message (STATUS "BUILD_WITH_SANITIZERS ................. off - use -DBUILD_WITH_SANITIZERS=[memory,address,undefined] with CLANG compiler to enable this option")
endif(SANITIZERS)
if((UNIX) AND (NOT APPLE))
set(LINUX ON)
else()
set(LINUX OFF)
endif()
add_subdirectory(sources/ippcp)
if(EXISTS "${IPP_CRYPTO_DIR}/tests/")
add_subdirectory(tests)
endif()
if(EXISTS "${IPP_CRYPTO_DIR}/perf_tests/")
add_subdirectory(perf_tests)
endif()
if(BUILD_EXAMPLES)
# This helps to organize examples projects structure in IDE by folders
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
add_subdirectory(examples)
endif()

@ -0,0 +1,162 @@
# Scope of the Constant-time execution testing of Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
- [General information](#general)
- [Scope for ippcp library](#ippcp)
- [Scope for crypto_mb library](#cryptomb)
## General information <div id = 'general'>
- Testing is conducted under Linux for 64-bit Intel® IPP Cryptography built with the following compilers:
- Intel® C++ Compiler 19.1
- Intel® C++ Compiler Classic 2021.9
- GCC 8.3
- GCC 9.1
- GCC 10.1
- GCC 11.1
- Clang 9.0
- Clang 12.0
- Tested platforms: w7, n8, y8, e9, l9, k0 (see the supported platforms list [here](./OVERVIEW.md#target-optimization-codes-in-function-names)).
- 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))
- Information about Pin-Based Constant Execution Checker can be found [here](https://github.com/intel/pin_based_cec)
## ippcp library <div id = 'ippcp'>
| Tested Function | Parameters |
| :----------------------: | :----------------------------------------------------------------------------------------: |
| ippsAESEncryptCBC | Different key length:<br>128, 192, 256 bits |
| ippsAESDecryptCBC | Different key length:<br>128, 192, 256 bits |
| ippsAESEncryptCBC_CS1 | Different key length:<br>128, 192, 256 bits |
| ippsAESDecryptCBC_CS1 | Different key length:<br>128, 192, 256 bits |
| ippsAESEncryptCBC_CS2 | Different key length:<br>128, 192, 256 bits |
| ippsAESDecryptCBC_CS2 | Different key length:<br>128, 192, 256 bits |
| ippsAESEncryptCBC_CS3 | Different key length:<br>128, 192, 256 bits |
| ippsAESDecryptCBC_CS3 | Different key length:<br>128, 192, 256 bits |
| ippsAES_CCMEncrypt | Different key length:<br>128, 192, 256 bits |
| ippsAES_CCMDecrypt | Different key length:<br>128, 192, 256 bits |
| ippsAESEncryptCFB | Different key length:<br>128, 192, 256 bits |
| ippsAESDecryptCFB | Different key length:<br>128, 192, 256 bits |
| ippsAES_CMACUpdate | Different key length:<br>128, 192, 256 bits |
| ippsAES_CMACFinal | Different key length:<br>128, 192, 256 bits |
| ippsAESEncryptCTR | Different key length:<br>128, 192, 256 bits |
| ippsAESDecryptCTR | Different key length:<br>128, 192, 256 bits |
| ippsAESEncryptECB | Different key length:<br>128, 192, 256 bits |
| ippsAESDecryptECB | Different key length:<br>128, 192, 256 bits |
| ippsAES_GCMEncrypt | Different key length:<br>128, 192, 256 bits |
| ippsAES_GCMDecrypt | Different key length:<br>128, 192, 256 bits |
| ippsAES_GCMStart | Different key length:<br>128, 192, 256 bits |
| ippsAESEncryptOFB | Different key length:<br>128, 192, 256 bits |
| ippsAESDecryptOFB | Different key length:<br>128, 192, 256 bits |
| ippsAES_S2V_CMAC | Different key length:<br>128, 192, 256 bits |
| ippsAESSetKey | Different key length:<br>128, 192, 256 bits |
| ippsAES_SIVEncrypt | Different key length:<br>128, 192, 256 bits |
| ippsAES_SIVDecrypt | Different key length:<br>128, 192, 256 bits |
| ippsAES_XTSEncrypt | Different key length:<br>256, 512 bits |
| ippsAES_XTSDecrypt | Different key length:<br>256, 512 bits |
| ippsAESEncryptXTS_Direct | Different key length:<br>256, 512 bits |
| ippsAESDecryptXTS_Direct | Different key length:<br>256, 512 bits |
| ippsCmp_BN | - |
| ippsDLPPublicKey | - |
| ippsDLPSharedSecretDH | - |
| ippsGFpAdd | - |
| ippsGFpAdd_PE | - |
| ippsGFpConj | - |
| ippsGFpECAddPoint | Different curves:<br>p256r1, p384r1, p521r1 |
| ippsGFpECMulPoint | Different curves:<br>p224r1, p256r1, p384r1 |
| ippsGFpECNegPoint | Different curves:<br>p256r1, p384r1, p521r1 |
| ippsGFpECPublicKey | Different curves:<br>p256r1, p384r1, p521r1 |
| ippsGFpECSharedSecretDH | Different curves:<br>p256r1, p384r1, p521r1 |
| ippsGFpECSharedSecretDHC | Different curves:<br>p256r1, p384r1, p521r1 |
| ippsGFpECSignDSA | Different curves:<br>p256r1, p384r1 |
| ippsGFpECSignNR | Different curves:<br>p256r1, p384r1 |
| ippsGFpECSignSM2 | - |
| ippsGFpECESStart_SM2 | - |
| ippsGFpECESEncrypt_SM2 | - |
| ippsGFpECESDecrypt_SM2 | - |
| ippsGFpECESFinal_SM2 | - |
| ippsGFpExp | - |
| ippsGFpInv | - |
| ippsGFpMul | - |
| ippsGFpMul_PE | - |
| ippsGFpMultiExp | - |
| ippsGFpNeg | - |
| ippsGFpSub | - |
| ippsGFpSub_PE | - |
| ippsHMACInit_rmf | Different hashes:<br>sha1, sha256, sha224, sha384, sha512, <br>sha512-256, sha512-224, sm3 |
| ippsRSA_Decrypt | Different key types and key length:<br>key type 1, 512 bits<br>key type 2, 512 bits |
| ippsRSADecrypt_OAEP | Different key types and key length:<br>key type 1, 512 bits<br>key type 2, 512 bits |
| ippsRSADecrypt_OAEP_rmf | Different key types and key length:<br>key type 1, 512 bits<br>key type 2, 512 bits |
| ippsRSASign_PKCS1v15 | Different key types and key length:<br>key type 1, 512 bits<br>key type 2, 512 bits |
| ippsRSASign_PKCS1v15_rmf | Different key types and key length:<br>key type 1, 512 bits<br>key type 2, 512 bits |
| ippsRSASign_PSS | Different key types and key length:<br>key type 1, 512 bits<br>key type 2, 512 bits |
| ippsRSASign_PSS_rmf | Different key types and key length:<br>key type 1, 512 bits<br>key type 2, 512 bits |
| ippsSMS4EncryptCBC | - |
| ippsSMS4DecryptCBC | - |
| ippsSMS4EncryptCBC_CS1 | - |
| ippsSMS4DecryptCBC_CS1 | - |
| ippsSMS4EncryptCBC_CS2 | - |
| ippsSMS4DecryptCBC_CS2 | - |
| ippsSMS4EncryptCBC_CS3 | - |
| ippsSMS4DecryptCBC_CS3 | - |
| ippsSMS4_CCMEncrypt | - |
| ippsSMS4_CCMDecrypt | - |
| ippsSMS4EncryptCFB | - |
| ippsSMS4DecryptCFB | - |
| ippsSMS4EncryptCTR | - |
| ippsSMS4DecryptCTR | - |
| ippsSMS4EncryptECB | - |
| ippsSMS4DecryptECB | - |
| ippsSMS4EncryptOFB | - |
| ippsSMS4DecryptOFB | - |
| ippsSMS4SetKey | - |
## crypto_mb library <div id = 'cryptomb'>
| Function | Parameters |
| :--------------------------------------: | :---------------------------------------------------: |
| mbx_nistp256_ecpublic_key_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp384_ecpublic_key_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp521_ecpublic_key_mb8 | projective coordinates<br>affine coordinates |
| mbx_sm2_ecpublic_key_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp256_ecdh_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp384_ecdh_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp521_ecdh_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp256_ecdsa_sign_mb8 | - |
| mbx_nistp384_ecdsa_sign_mb8 | - |
| mbx_nistp521_ecdsa_sign_mb8 | - |
| mbx_nistp256_ecdsa_sign_setup_mb8 | - |
| mbx_nistp384_ecdsa_sign_setup_mb8 | - |
| mbx_nistp521_ecdsa_sign_setup_mb8 | - |
| mbx_nistp256_ecdsa_sign_complete_mb8 | - |
| mbx_nistp384_ecdsa_sign_complete_mb8 | - |
| mbx_nistp521_ecdsa_sign_complete_mb8 | - |
| mbx_nistp256_ecpublic_key_ssl_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp384_ecpublic_key_ssl_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp521_ecpublic_key_ssl_mb8 | projective coordinates<br>affine coordinates |
| mbx_sm2_ecpublic_key_ssl_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp256_ecdh_ssl_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp384_ecdh_ssl_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp521_ecdh_ssl_mb8 | projective coordinates<br>affine coordinates |
| mbx_nistp256_ecdsa_sign_ssl_mb8 | - |
| mbx_nistp384_ecdsa_sign_ssl_mb8 | - |
| mbx_nistp521_ecdsa_sign_ssl_mb8 | - |
| mbx_nistp256_ecdsa_sign_setup_ssl_mb8 | - |
| mbx_nistp384_ecdsa_sign_setup_ssl_mb8 | - |
| mbx_nistp521_ecdsa_sign_setup_ssl_mb8 | - |
| mbx_nistp256_ecdsa_sign_complete_ssl_mb8 | - |
| mbx_nistp384_ecdsa_sign_complete_ssl_mb8 | - |
| mbx_nistp521_ecdsa_sign_complete_ssl_mb8 | - |
| mbx_ed25519_public_key_mb8 | - |
| mbx_ed25519_sign_mb8 | - |
| mbx_rsa_private_mb8 | Different key length: <br>1024, 2048, 3072, 4096 bits |
| mbx_rsa_private_crt_mb8 | Different key length: <br>1024, 2048, 3072, 4096 bits |
| mbx_rsa_private_ssl_mb8 | Different key length: <br>1024, 2048, 3072, 4096 bits |
| mbx_rsa_private_crt_ssl_mb8 | Different key length: <br>1024, 2048, 3072, 4096 bits |
| mbx_sm2_ecdsa_sign_mb8 | - |
| mbx_sm2_ecdsa_sign_ssl_mb8 | - |
| mbx_sm4_encrypt_ecb_mb16 | - |
| mbx_sm4_decrypt_ecb_mb16 | - |
| mbx_sm4_encrypt_cbc_mb16 | - |
| mbx_sm4_decrypt_cbc_mb16 | - |
| mbx_sm4_encrypt_ctr128_mb16 | - |
| mbx_sm4_encrypt_ofb_mb16 | - |
| mbx_sm4_encrypt_cfb128_mb16 | - |
| mbx_sm4_decrypt_cfb128_mb16 | - |
| mbx_x25519_public_key_mb8 | - |
| mbx_x25519_mb8 | - |

@ -0,0 +1,86 @@
# Deprecated API in Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
This document describes deprecated API in different Intel IPP Cryptography versions and recommendations for transition.
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.>
## 2020 Update1 (branch [ipp-crypto_2020_update1](https://github.com/intel/ipp-crypto/tree/ipp-crypto_2020_update1))
### Hash Functionality
| Deprecated | Recommended replacement |
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------: |
| ippsSHA1GetSize<br>ippsSHA224GetSize<br>ippsSHA256GetSize<br>ippsSHA384GetSize<br>ippsSHA512GetSize<br>ippsSM3GetSize<br>ippsMD5GetSize | ippsHashGetSize_rmf |
| ippsSHA1Init<br>ippsSHA224Init<br>ippsSHA256Init<br>ippsSHA384Init<br>ippsSHA512Init<br>ippsSM3Init<br>ippsMD5Init | ippsHashInit_rmf \* |
| ippsSHA1Duplicate<br>ippsSHA224Duplicate<br>ippsSHA256Duplicate<br>ippsSHA384Duplicate<br>ippsSHA512Duplicate<br>ippsSM3Duplicate<br>ippsMD5Duplicate | ippsHashDuplicate_rmf |
| ippsSHA1Pack, ippsSHA1Unpack<br>ippsSHA224Pack, ippsSHA224Unpack<br>ippsSHA256Pack, ippsSHA256Unpack<br>ippsSHA384Pack, ippsSHA384Unpack<br>ippsSHA512Pack, ippsSHA512Unpack<br>ippsSM3Pack, ippsSM3Unpack<br>ippsMD5Pack, ippsMD5Unpack | ippsHashPack_rmf,<br>ippsHashUnpack_rmf |
| ippsSHA1Update, ippsSHA1GetTag, ippsSHA1Final<br>ippsSHA224Update, ippsSHA224GetTag, ippsSHA224Final<br>ippsSHA256Update, ippsSHA256GetTag, ippsSHA256Final<br>ippsSHA384Update, ippsSHA384GetTag, ippsSHA384Final<br>ippsSHA512Update, ippsSHA512GetTag, ippsSHA512Final<br>ippsSM3Update, ippsSM3GetTag, ippsSM3Final<br>ippsMD5Update, ippsMD5GetTag, ippsMD5Final | ippsHashUpdate_rmf,<br>ippsHashGetTag_rmf,<br>ippsHashFinal_rmf |
| ippsSHA1MessageDigest<br>ippsSHA224MessageDigest<br>ippsSHA256MessageDigest<br>ippsSHA384MessageDigest<br>ippsSHA512MessageDigest<br>ippsSM3MessageDigest<br>ippsMD5MessageDigest | ippsHashMessage_rmf \* |
| ippsHashGetSize | ippsHashGetSize_rmf |
| ippsHashInit \*\* | ippsHashInit_rmf \* |
| ippsHashDuplicate | ippsHashDuplicate_rmf |
| ippsHashPack, ippsHashUnpack | ippsHashPack_rmf, ippsHashUnpack_rmf |
| ippsHashUpdate, ippsHashGetTag,ippsHashFinal | ippsHashUpdate_rmf,ippsHashGetTag_rmf,ippsHashFinal_rmf |
| ippsHashMessage \*\* | ippsHashMessage_rmf \* |
>\* To choose hash algorithm, specify [IppsHashMethod parameter](#ippshashalgid-to-ippshashmethod-parameter-map)
>\*\* IppsHashAlgId parameter used in ippsHMAC_Init and in ippsHMAC_Message for choosing hash algorithm is deprecated (see Recommended replacement column for alternative in [IppsHashAlgId to IppsHashMethod Parameter Map](#ippshashalgid-to-ippshashmethod-parameter-map)
### Keyed HMAC Functionality
| Deprecated | Recommended replacement |
| :------------------------------------------------ | :------------------------------------------------------------: |
| ippsHMAC_GetSize | ippsHMAC_GetSize_rmf |
| ippsHMAC_Init \*\* | ippsHMAC_Init_rmf \* |
| ippsHMAC_Pack, ippsHMAC_Unack, ippsHMAC_Duplicate | ippsHMAC_Pack_rmf, ippsHMAC_Unpack_rmf, ippsHMAC_Duplicate_rmf |
| ippsHMAC_Update, ippsHMAC_Final, ippsHMAC_GetTag | ippsHMAC_Update_rmf, ippsHMAC_Final_rmf, ippsHMAC_GetTag_rmf |
| ippsHMAC_Message \*\* | ippsHMAC_Message_rmf \* |
>\* To choose hash algorithm, specify [IppsHashMethod parameter](#ippshashalgid-to-ippshashmethod-parameter-map)
>\*\* IppsHashAlgId parameter used in 'ippsHMAC_Init' and in ippsHMAC_Message for choosing hash algorithm is deprecated (see Recommended replacement column for alternative in [IppsHashAlgId to IppsHashMethod Parameter Map](#ippshashalgid-to-ippshashmethod-parameter-map)
### MGF Functionality
| Deprecated | Recommended replacement |
| :--------------- | :---------------------: |
| ippsHMAC_GetSize | ippsHMAC_GetSize_rmf |
### RSA Encryption and Signature Schemes
| Deprecated | Recommended replacement |
| :------------------------------------------- | :--------------------------------------------------: |
| ippsRSAEncrypt_OAEP, ippsRSADecrypt_OAEP | ippsRSAEncrypt_OAEP_rmf, ippsRSADecrypt_OAEP_rmf |
| ippsRSASign_PSS, ippsRSAVerify_PSS | ippsRSASign_PSS_rmf, ippsRSAVerify_PSS_rmf |
| ippsRSASign_PKCS1v15, ippsRSAVerify_PKCS1v15 | ippsRSASign_PKCS1v15_rmf, ippsRSAVerify_PKCS1v15_rmf |
### Elliptic Curve Cryptography (ECC)
| Deprecated | Recommended replacement |
| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| ippsECCPGetSize<br>ippsECCPGetSizeStd128r1<br>ippsECCPGetSizeStd128r2<br>ippsECCPGetSizeStd192r1<br>ippsECCPGetSizeStd224r1<br>ippsECCPGetSizeStd256r1<br>ippsECCPGetSizeStd384r1<br>ippsECCPGetSizeStd521r1<br>ippsECCPGetSizeStdSM2 | ippsGFpECGetSize |
| ippsECCPInit<br>ippsECCPInitStd128r1<br>ippsECCPInitStd128r2<br>ippsECCPInitStd192r1<br>ippsECCPInitStd224r1<br>ippsECCPInitStd256r1<br>ippsECCPInitStd384r1<br>ippsECCPInitStd521r1<br>ippsECCPInitStdSM2 | ippsGFpECInitStd \*<br>* ippsGFpECInitStd functions provides both initialization<br>and set up standard EC set of parameters |
| ippsECCPSet | ippsGFpECSet |
| ippsECCPSetStd | ippsGFpECInitStd \*<br>* ippsGFpECInitStd functions provides both initialization<br>and set up standard EC set of parameters |
| ippsECCPSetStd128r1<br>ippsECCPSetStd128r2<br>ippsECCPSetStd192r1<br>ippsECCPSetStd224r1<br>ippsECCPSetStd256r1<br>ippsECCPSetStd384r1<br>ippsECCPSetStd521r1<br>ippsECCPSetStdSM2 | ippsGFpECInitStd128r1<br>ippsGFpECInitStd128r2<br>ippsGFpECInitStd192r1<br>ippsGFpECInitStd224r1<br>ippsGFpECInitStd256r1<br>ippsGFpECInitStd384r1<br>ippsGFpECInitStd521r1<br>ippsGFpECInitStdSM2 |
| ippsECCPBindGxyTblStd192r1<br>ippsECCPBindGxyTblStd224r1<br>ippsECCPBindGxyTblStd256r1<br>ippsECCPBindGxyTblStd384r1<br>ippsECCPBindGxyTblStd521r1<br>ippsECCPBindGxyTblStdSM2 | ippsGFpECBindGxyTblStd192r1<br>ippsGFpECBindGxyTblStd224r1<br>ippsGFpECBindGxyTblStd256r1<br>ippsGFpECBindGxyTblStd384r1<br>ippsGFpECBindGxyTblStd521r1<br>ippsGFpECBindGxyTblStdSM2 |
| ippsECCPGet<br>ippsECCPGetOrderBitSize<br>ippsECCPValidate<br>ippsECCPPointGetSize, ippsECCPPointInit<br>ippsECCPSetPointAtInfinity<br>ippsECCPSetPoint,ippsECCPGetPoint<br>ippsECCPCheckPoint<br>ippsECCPComparePoint<br>ippsECCPNegativePoint<br>ippsECCPAddPoint<br>ippsECCPMulPointScalar | ippsGFpECGet<br>ippsGFpECGetSubgroup<br>ippsGFpECVerify<br>ippsGFpECPointGetSize, ippsGFpECPointInit<br>ippsGFpECSetPointAtInfinity<br>ippsGFpECSetPointRegular,ippsGFpECGetPointRegular<br>ippsGFpECTstPoint<br>ippsGFpECCmpPoint<br>ippsGFpECNegPoint<br>ippsGFpECAddPoint<br>ippsGFpECMulPoint |
| ippsECCPGenKeyPair<br>ippsECCPPublicKey<br>ippsECCPValidateKeyPair<br>ippsECCPSetKeyPair | ippsGFpECPrivateKey<br>ippsGFpECPublicKey<br>ippsGFpECTstKeyPair<br>n/a |
| ippsECCPSharedSecretDH<br>ippsECCPSharedSecretDHC | ippsGFpECSharedSecretDH<br>ippsGFpECSharedSecretDHC |
| ippsECCPSignDSA<br>ippsECCPVerifyDSA<br>ippsECCPSignNR<br>ippsECCPVerifyNR<br>ippsECCPSignSM2<br>ippsECCPVerifySM2 | ippsGFpECSignDSA<br>ippsGFpECVerifyDSA<br>ippsGFpECSignNR<br>ippsGFpECVerifyNR<br>ippsGFpECSignSM2<br>ippsGFpECVerifySM2 |
### IppsHashAlgId to IppsHashMethod Parameter Map
| Algorithm | IppsHashAlgId (deprecated) | IppsHashMethod (recommended) | Notes |
| :--------: | :------------------------: | :---------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------: |
| SHA1 | ippsHashAlg_SHA1 | ippsHashMethod_SHA1<br>ippsHashMethod_SHA1_NI<br>ippsHashMethod_SHA1_TT | Intel® Secure Hash Algorithm - New Instructions (Intel® SHA-NI) not supported<br>Intel SHA-NI only supported<br>Automatic switch on Intel SHA-NI, if possible (tick-tock) |
| SHA224 | ippsHashAlg_SHA224 | ippsHashMethod_SHA224<br>ippsHashMethod_SHA224_NI<br>ippsHashMethod_SHA224_TT | Intel SHA-NI not supported<br>Intel SHA-NI only supported<br>Automatic switch on Intel SHA-NI, if possible supported |
| SHA256 | ippsHashAlg_SHA256 | ippsHashMethod_SHA256<br>ippsHashMethod_SHA256_NI<br>ippsHashMethod_SHA256_TT | Intel SHA-NI not supported<br>Intel SHA-NI only supported<br>Automatic switch on Intel SHA-NI, if possible supported |
| SHA384 | ippsHashAlg_SHA384 | ippsHashMethod_SHA384 | - |
| SHA512 | ippsHashAgl_SHA512 | ippsHashMethod_SHA512 | - |
| SM3 | ippsHashAlg_SM3 | ippsHashMethod_SM3 | - |
| MD5 | ippsHashAlg_MD5 | ippsHashMethod_MD5 | - |
| SHA512-224 | ippsHashAlg_SHA512_224 | ippsHashMethod_SHA512_224 | - |
| SHA512-256 | ippsHashAlg_SHA512_256 | ippsHashMethod_SHA512_256 | - |

@ -0,0 +1,234 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
CMake
------------------------------
CMake - Cross Platform Makefile Generator
Copyright 2000-2021 Kitware, Inc. and Contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Kitware, Inc. nor the names of Contributors
may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

@ -0,0 +1,23 @@
## How to build on macOS
- download Intel CPP Classic compiler from [here](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#dpcpp-cpp)
- choose offline installer m_cpp-compiler-classic_p_2023.2.0.48999_offline.dmg
- `wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/macosx/nasm-2.16.01-macosx.zip`
- extract zip file
- `wget https://www.openssl.org/source/openssl-3.1.2.tar.gz`
- in `openssl-3.1.2` extracted folder :
```
./Configure
make
```
- in this `src` folder: (or `git clone https://github.com/intel/ipp-crypto` for newer)
```
source /opt/intel/oneapi/compiler/2023.2.0/env/vars.sh intel64
export ASM_NASM=/[your_path_here]/nasm-2.16.01/nasm
CC=icc CXX=icpc cmake CMakeLists.txt -B_build -DARCH=intel64 -DOPENSSL_INCLUDE_DIR=/[your_path_here]/openssl-3.1.2/include -DOPENSSL_LIBRARIES=/[your_path_here]/openssl-3.1.2 -DOPENSSL_ROOT_DIR=/[your_path_here]/openssl-3.1.2
cd _build
make ippcp_s
```

@ -0,0 +1,208 @@
# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) Library Overview <!-- omit in toc -->
- [Repository Structure](#repository-structure)
- [Branches Description](#branches-description)
- [Dispatcher](#dispatcher)
- [CPU Dispatching](#cpu-dispatching)
- [Target Optimization Codes in Function Names](#target-optimization-codes-in-function-names)
- [CPU Feature Dispatching](#cpu-feature-dispatching)
- [How to Avoid Dispatcher in All CPUs Static Library](#how-to-avoid-dispatcher-in-all-cpus-static-library)
- [Library Configurations](#library-configurations)
- [Linkage Mode](#linkage-mode)
- [Code Position](#code-position)
- [Target Instruction Set Architecture (ISA)](#target-instruction-set-architecture-isa)
- [All CPUs Library](#all-cpus-library)
- [Specific ISA Library](#specific-isa-library)
- [Choosing specific ISA from the All CPUs Static Library](#choosing-specific-isa-from-the-all-cpus-static-library)
- [Functionality](#functionality)
- [Static Library with Custom functionality](#static-library-with-custom-functionality)
- [Dynamic Library with Custom functionality](#dynamic-library-with-custom-functionality)
<!-- Images List -->
[sha256-dispatching]: ./data/images/README-pictures-0-dispatcher.png "Intel IPP Crypto function dispatching scheme"
[library configurations]: ./data/images/README-pictures-1-library-configurations.png "Library configurations picture"
[build targets]: ./data/images/README-pictures-1a-build-targets.png "Build targets picture"
[merged library]: ./data/images/README-pictures-2-merged-library.png "Merged library scheme"
[CPU-specific libraries]: ./data/images/README-pictures-3-cpu-specific-libraries.png "CPU-specific libraries scheme"
[link-with-merged-library]: ./data/images/README-pictures-4a-1CPU.png "Link with Merged Library picture"
[1cpu-link-with-merged-library]: ./data/images/README-pictures-4b-1CPU.png "1CPU link with Merged Library picture"
<!-- End of Images List -->
## Repository Structure
``` bash
├── CHANGELOG.md
├── CMakeLists.txt < Main CMake file
├── examples < Examples of the library usage
├── include < Public headers
├── LICENSE
├── README.md
├── sources
   ├── cmake < OS-specific CMake files
     ├── linux
     ├── macosx
     └── windows
   ├── dispatcher < CPU dispatcher generator
   ├── gen_cpu_spc_header < Single CPU headers generator
   ├── include < Internal headers
   └── ippcp < C-sources
   ├── asm_ia32 < IA-32 Assembler sources
   ├── asm_intel64 < Intel® 64 Assembler sources
   └── ifma_rsa_mb < Sources of RSA IFMA Multi-buffer library
└── tools
└── ipp_custom_library_tool_python < Custom Library Tool
```
### Branches Description
- `develop` - snapshots of the library under active development.
Contains code that may not be fully functional and that Intel may substantially modify in development of a production version.
- `ipp_crypto_<release>` - source code of the official production release `<release>`.
## Dispatcher
### CPU Dispatching
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.
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.
![Dispatcher picture][sha256-dispatching]
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).
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.
By default, the dispatcher chooses the most appropriate optimization for the current hardware, but it is possible to apply the user-chosen one using the [ippcpSetCpuFeatures()](https://www.intel.com/content/www/us/en/docs/ipp-crypto/developer-guide-oneapi/current/support-functions.html) function.
#### Target Optimization Codes in Function Names
| IA-32 Intel® architecture | Intel® 64 architecture | Meaning |
| ------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------ |
| px | mx | Generic code without hardware specific optimizations suitable for any CPU |
| w7 | - | Optimized for processors with Intel® Streaming SIMD Extensions 2 (Intel® SSE2) |
| - | m7 | Optimized for processors with Intel® SSE3 |
| s8 | n8 | Optimized for processors with Supplemental Streaming SIMD Extensions 3 (SSSE3) |
| p8 | y8 | Optimized for processors with Intel® SSE4.2 |
| g9 | e9 | Optimized for processors with Intel® Advanced Vector Extensions (Intel® AVX) |
| h9 | l9 | Optimized for processors with Intel® Advanced Vector Extensions 2 (Intel® AVX2) |
| - | k0 | Optimized for processors with Intel® Advanced Vector Extensions 512 (Intel® AVX-512) (formerly codenamed SkyLake) |
| - | k1 | Optimized for processors with Intel® Advanced Vector Extensions 512 (Intel® AVX-512) (formerly codenamed IceLake) |
### CPU Feature Dispatching
Besides CPU dispatching that lets the library choose the general instruction set targeted implementation (for example, Intel SSE4.2, Intel AVX-512, and others), there is more granular dispatching that allows configuring usage of particular CPU features within a single instruction set. For example, Intel AVX-512 instruction set contains a VAES (AES Vector Extensions) feature subset, but not all CPUs that have Intel AVX-512 on board support VAES, so the library can automatically detect it in a runtime and enable corresponding optimizations if the feature subset is available.
List of CPU feature subsets that the library has special optimizations for:
- Intel ADX (ADCX, ADOX)
- Intel® Advanced Encryption Standard New Instructions (Intel® AES-NI)
- Intel® Secure Hash Algorithm - New Instructions (Intel® SHA-NI)
- RDRAND
- RDSEED
- CLMUL
- Intel AVX-512 VAES
- Intel AVX-512 IFMA
- Intel AVX-512 GFNI
> **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).
### How to Avoid Dispatcher in All CPUs Static Library
To leave only specific ISA when linking with an [All CPUs Static Library](#all-cpus-library) and drop dispatcher, please refer to [this section](#choosing-specific-isa-from-the-all-cpus-static-library).
## Library Configurations
The Intel IPP Cryptography library supports configurations by:
1) [*Linkage Mode*](#linkage-mode): to produce a static or dynamic library
2) [*Code Position*](#code-position): to make position independent code (PIC) or non-PIC library
3) *Target Instruction Set Architecture (ISA)*:
- [All CPUs Library](#all-cpus-library)
- [Specific Instruction Set (ISA) Targeted Library](#specific-isa-library)
- [Choosing specific ISA from the All CPUs Static Library](#choosing-specific-isa-from-the-all-cpus-static-library)
4) *Functionality*:
- [Library with All functionality](#functionality)
- [Static Library with Custom functionality](#static-library-with-custom-functionality)
- [Dynamic Library with Custom functionality](#dynamic-library-with-custom-functionality)
All possible configuration combinations are shown in the picture below.
![Library configurations picture][library configurations]
### Linkage Mode
The build system is designed to create a dynamic library from the static one, so both build targets for dynamic and static libraries are always generated during CMake phase.
The corresponding build target names for the libraries are shown at the picture below (same target names can be used on Linux* OS in the `make` command as well).
![Build targets picture][build targets]
### Code Position
Be default, the Intel IPP Cryptography library is built with the [Position Independent Code (PIC)](https://en.wikipedia.org/wiki/Position-independent_code) option.
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).
### Target Instruction Set Architecture (ISA)
#### All CPUs Library
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.
![Merged library picture][merged library]
The advantage of this configuration is that the library works on any CPU.
CMake build option: `-DMERGED_BLD:BOOL=on`
#### Specific ISA Library
The build system produces several separate libraries each optimized for its own instruction set. In this case, there is no need in [CPU dispatcher](#cpu-dispatching), so the dispatcher is not included, although [features dispatching](#cpu-feature-dispatching) within a single instruction set is in place.
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).
For example, to create two libraries - one with SSE4.2 optimizations and another with Intel AVX-512 optimizations, specify `-DPLATFORM_LIST="y8;k0"`.
![CPU specific libraries picture][CPU-specific libraries]
The advantage of this configuration is that libraries that contain function versions optimized for only one instruction set have much smaller footprint size than a big merged library. But the price of this advantage is that such libraries only work on a CPU that supports a corresponding instruction set.
CMake build options: `-DMERGED_BLD:BOOL=off -DPLATFORM_LIST="<platform_list>"`
#### Choosing specific ISA from the All CPUs Static Library
When application is being statically linked with All CPUs Static Library, it receives functions implementations for all instruction sets with corresponding [dispatcher](#dispatcher) routines. This works well when CPU, where an application is going to work, is unknown.
![Link with Merged Library picture][link-with-merged-library]
But when target CPU is defined, it is possible to take from the static library only required instruction set implementations and avoid [dispatcher](#dispatcher) inclusion.
![1CPU link with Merged Library picture][1cpu-link-with-merged-library]
For this purpose, there are several CPU-specific headers (each targets a specific CPU optimization) generated during the merged library build. They are located in the `<build_dir>/.build/<RELEASE|DEBUG>/include/autogen` directory.
To enable linking of CPU-specific versions of the library functions, include the appropriate header from the directory above before the primary library header `ippcp.h`.
It is important to ensure that both processor and operating system supports full capabilities of the target processor.
### Functionality
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.
#### Static Library with Custom functionality
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.
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.
#### Dynamic Library with Custom functionality
To build your own dynamic library containing only the functionality that is necessary for your application, you can use the Intel® IPP Custom Library Tool - a Python tool that consumes pre-built merged (all CPUs) static library to produce a tiny dynamic library.
The tool is located in the `tools/ipp_custom_library_tool_python` directory.
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.

@ -0,0 +1,72 @@
# Intel® Integrated Performance Primitives Cryptography
[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)
Intel® Integrated Performance Primitives (Intel® IPP) Cryptography is a secure, fast and lightweight library of building blocks for cryptography, highly-optimized for various Intel® CPUs.
## Key Features
The library provides a comprehensive set of routines commonly used for cryptographic operations, including:
- Symmetric Cryptography Primitive Functions:
- AES (ECB, CBC, CTR, OFB, CFB, XTS, GCM, CCM, SIV)
- SM4 (ECB, CBC, CTR, OFB, CFB, CCM)
- TDES (ECB, CBC, CTR, OFB, CFB)
- RC4
- One-Way Hash Primitives:
- SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
- MD5
- SM3
- Data Authentication Primitive Functions:
- HMAC
- AES-CMAC
- Public Key Cryptography Functions:
- RSA, RSA-OAEP, RSA-PKCS_v15, RSA-PSS
- DLP, DLP-DSA, DLP-DH
- ECC (NIST curves), ECDSA, ECDH, EC-SM2
- Multi-buffer RSA, ECDSA, SM3, x25519
- Finite Field Arithmetic Functions
- Big Number Integer Arithmetic Functions
- PRNG/TRNG and Prime Numbers Generation
## Reasons to Use Intel IPP Cryptography
- Security (constant-time execution for secret processing functions)
- Designed for the small footprint size
- Optimized for different Intel CPUs and instruction set architectures (including hardware cryptography instructions support):
- Intel® Streaming SIMD Extensions 2 (Intel® SSE2)
- Intel® SSE3
- Intel® SSE4.2
- Intel® Advanced Vector Extensions (Intel® AVX)
- Intel® Advanced Vector Extensions 2 (Intel® AVX2)
- Intel® Advanced Vector Extensions 512 (Intel® AVX-512)
- Configurable CPU dispatching for the best performance
- Kernel mode compatibility
- Thread-safe design
## Installation
[How to Get and Build the Intel IPP Cryptography Library](./BUILD.md)
## Documentation
- [Introduction to Intel IPP Cryptography Library](./OVERVIEW.md)
- [Introduction to Crypto Multi-buffer Library](./sources/ippcp/crypto_mb/Readme.md)
- [Intel IPP Cryptography Build Instructions](./BUILD.md)
- [Intel IPP Release Notes](https://www.intel.com/content/www/us/en/developer/articles/release-notes/release-notes-for-oneapi-integrated-performance-primitives.html)
- [Intel IPP Cryptography Developer Reference](https://www.intel.com/content/www/us/en/docs/ipp-crypto/developer-reference/current/overview.html)
- [Intel IPP Documentation](https://www.intel.com/content/www/us/en/developer/tools/oneapi/ipp-documentation.html)
## Branches Description
- `develop` - snapshots of the library under active development.
Contains code that may not be fully functional and that Intel may substantially modify in development of a production version.
- `ipp_crypto_<release>` - source code of the official production release `<release>`.
## How to Contribute
We welcome community contributions to Intel IPP Cryptography. If you have an idea how to improve the product, let us know about your proposal via the Intel IPP Forum or GitHub* Issues.
### License
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.
## Certification
Intel IPP Cryptography library is not certified for FIPS-140-2 (Security Requirements for Cryptographic Modules) and CMVP (Cryptographic Module Validation Program).

@ -0,0 +1,15 @@
# Security Policy
## Reporting a Security Vulnerability
Visit [https://intel.com/security](https://intel.com/security) for information on how to report security vulnerabilities.
**Do not report any security vulnerability as a regular issue in this repository.**
Include the following information in your report:
- Description of the security problem
- Steps to reproduce
- Expected behavior
- Environment where the problem is reproduced: OS, compiler (including version), versions of ippcp / crypto_mb libraries
- Any additional information that may be relevant

@ -0,0 +1,37 @@
Intel(R) Integrated Performance Primitives Cryptography Third Party Programs File
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.
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.
These separate license terms govern your use of the third party programs as set forth in the “third-party-programs.txt” or other similarly-named text file.
Third party programs and their corresponding required notices and/or license terms are listed
below.
-------------------------------------------------------------
1. Intel(R) Multi-Buffer Crypto for IPSec Library
Copyright (c) 2012-2021, Intel Corporation
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

@ -0,0 +1,123 @@
#===============================================================================
# Copyright (C) 2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) examples
#
# List of examples for targets generation
set(IPPCP_EXAMPLES
# AES examples
aes/aes-256-ctr-encryption.cpp
aes/aes-256-ctr-decryption.cpp
# DSA
dsa/dsa-dlp-sha-1-verification.cpp
dsa/dsa-dlp-sha-256-verification.cpp
# RSA SSA-PSS examples
rsa/rsa-3k-pss-sha384-type1-signature.cpp
rsa/rsa-1k-pss-sha1-verification.cpp
# RSA OAEP examples
rsa/rsa-1k-oaep-sha1-encryption.cpp
rsa/rsa-1k-oaep-sha1-type2-decryption.cpp
# SMS4 examples
sms4/sms4-128-cbc-encryption.cpp
sms4/sms4-128-cbc-decryption.cpp
)
cmake_policy(SET CMP0003 NEW)
# Custom target to build ALL examples at once
add_custom_target(ippcp_examples_all)
set_target_properties(ippcp_examples_all PROPERTIES FOLDER "examples")
function(ippcp_define_example out_target source_file category)
# Extract file name without directory or longest extension
get_filename_component(name "${source_file}" NAME_WE)
# Add suffix for nonpic build
if (NONPIC_LIB)
set(suffix "-nonpic")
endif()
set(local_target "example_${name}${suffix}")
# link additional sources if defined in categoryOptions.cmake
set(additional_sources "${category}_CATEGORY_COMMON_SOURCES")
add_executable(${local_target} "${source_file}"
$<$<BOOL:${${additional_sources}}>:${${additional_sources}}>)
# Static linking with merged lib is only supported
set(LIBRARY_NAMES_LIST ${IPPCP_LIB_MERGED})
ippcp_example_set_build_options(${local_target} "${LIBRARY_NAMES_LIST}")
set_target_properties(${local_target} PROPERTIES
PROJECT_LABEL "(example) ${name}" # Set name of the target in IDE
FOLDER "examples/${category}" # Group projects in solution folder
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_OUTPUT_DIR}/$<UPPER_CASE:$<CONFIG>>/examples" # Set output directory for examples in the build folder
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_OUTPUT_DIR}/$<UPPER_CASE:$<CONFIG>>/examples"
COMPILE_DEFINITIONS _NO_IPP_DEPRECATED) # ignore deprecation warnings
# Add a single target to build all examples of the same category (e.g. 'make ippcp_examples_aes')
set(parent_target ippcp_examples_${category})
if(NOT TARGET ${parent_target})
add_custom_target(${parent_target})
set_target_properties(${parent_target} PROPERTIES FOLDER "examples")
if(TARGET ippcp_examples_all)
add_dependencies(ippcp_examples_all ${parent_target})
endif()
endif()
add_dependencies(${parent_target} ${local_target})
set(${out_target} ${local_target} PARENT_SCOPE)
endfunction()
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_LIST_DIR)
# Build with standalone library
cmake_minimum_required(VERSION 3.1)
project("Intel IPP Cryptography Examples" CXX)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
option(BUILD_EXAMPLES "Build examples" ON)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
find_package(IPPCrypto REQUIRED MODULE)
if (NOT IPPCRYPTO_FOUND)
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.")
endif()
# Define library to link
list(GET IPPCRYPTO_LIBRARIES 0 IPPCP_LIB_MERGED)
# Define include folder
set(IPP_CRYPTO_INCLUDE_DIR ${IPPCRYPTO_INCLUDE_DIRS})
# Define output directory
if(NOT CMAKE_OUTPUT_DIR)
set(CMAKE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/.build")
endif()
else()
# Build with library sources
if(NOT BUILD_EXAMPLES OR NOT MERGED_BLD)
message(FATAL_ERROR "Only merged library build is currently supported for Intel IPP Cryptography examples. Use -DMERGED_BLD:BOOL=on options.")
endif()
endif()
include(examplesBuildOptions.cmake)
foreach(example_filename ${IPPCP_EXAMPLES})
# Extract example category from its subdirectory
get_filename_component(category "${example_filename}" DIRECTORY)
# Source additional options that may exist for category
include(${category}/categoryOptions.cmake OPTIONAL)
ippcp_define_example(example ${example_filename} ${category})
endforeach()

@ -0,0 +1,95 @@
# Building usage examples of Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) library
## System requirements
- CMake 3.15
## Build with library sources
Only merged library (cmake option `-DMERGED_BLD:BOOL=ON`) builds are supported for the examples.
1. Navigate to the library sources root and run cmake to generate a library build procedure with the `-DBUILD_EXAMPLES:BOOL=ON`
option.
On Linux\*/macOS\*:
`cmake CMakeLists.txt -B_build -DARCH=intel64 -DMERGED_BLD:BOOL=ON -DBUILD_EXAMPLES:BOOL=ON`
On Windows\*:
`cmake CMakeLists.txt -B_build -G<vs_generator> [-T"Intel® C++ Compiler <version>"] -DBUILD_EXAMPLES:BOOL=ON`
For the Visual Studio\* generators options, please refer to the CMake help.
The toolchain switch is optional, specify it if you want to build the library and examples using Intel® C++ Compiler.
For the list of supported compiler versions or other cmake build options, please refer to the library root README.md file.
2. On Linux\*/macOS\*, build with `make -j8 <target>`. You can use the following targets:
- To build an invididual example, use targets started with the *example_* string (like *example_aes-256-ctr-encryption*).
- To build all examples of a single specific category, use target *ippcp_examples_\<category\>* (like *ippcp_examples_aes*).
- To build all examples, use target *ippcp_examples_all*.
3. On Windows\* OS open generated Visual Studio\* solution in the IDE, select the appropriate project (individual example,
all examples by category or the whole set of examples) in the *examples* folder of project structure in IDE and run **Build**.
To run the build from the command line, open "Developer Command Prompt for VS \<version\>" console and run the cmake command:
`cmake --build _build --target <target> --config Release`,
where '_build' is the path to CMake build directory.
## Build with pre-built library
1. Navigate to the *examples* folder and run the cmake command below.
On Linux\*/macOS\*:
`cmake CMakeLists.txt -B_build`
On Windows\* OS it is required to specify a generator (`-G` option) and optionally a toolchain (`-T` option)
to build with Intel® C++ Compiler. Example:
`cmake CMakeLists.txt -B_build -G<vs_generator> [-T"Intel C++ Compiler <version>"]`
For the Visual Studio\* generators options, please refer to the CMake help.
2. The build system will scan the system for the Intel IPP Cryptography library.
If it is found, you’ll see the following message:
```
-- Found Intel IPP Cryptography at: /home/user/intel/ippcp
-- Configuring done
```
If the library is not found automatically, you can specify the path to the library root folder
(where the include/ and lib/ directories are located) using the `-DIPPCRYPTO_ROOT_DIR=<path>` option.
3. Run the build process as described in the [Build with library sources](#build-with-library-sources).
# How to add a new example into Intel IPP Cryptography library:
1. Choose a category (a folder), where to put the example, and a filename. Use
existing folders where applicable.
The file name should be as follows: "\<category\>-\<key-size\>-\<mode\>-\<other-info\>.cpp"
E.g.: "rsa-1k-oaep-sha1-type2-decryption.cpp" for the example of RSA category.
2. Write an example keeping its source code formatting consistent with other
examples as much as possible. The "aes/aes-256-ctr-encryption.cpp" can be used
as a reference.
3. Use Doxygen annotations for the file description, global variables and
macros. The *main()* function shall not use doxygen annotations inside
(otherwise they disappear in the source code section of an example page in
the generated documentation).
4. Add the example to the build: open *examples/CMakeLists.txt* file and add the
new file to the *IPPCP_EXAMPLES* list.
5. Make sure it can be built using Intel IPP Cryptography examples build procedure, and it
works correctly.
You are ready to submit a pull request!

@ -0,0 +1,137 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief AES Counter mode of operation (CTR) example
*
* This example demonstrates usage of AES block cipher with 256-bit key
* run with CTR mode of operation. Decryption scheme.
*
* The CTR mode of operation is implemented according to the
* "NIST Special Publication 800-38A: Recommendation for Block Cipher Modes of
* Operation" document:
*
* https://csrc.nist.gov/publications/detail/sp/800-38a/final
*
*/
#include <string.h>
#include "ippcp.h"
#include "examples_common.h"
/*! AES block size in bytes */
static const int AES_BLOCK_SIZE = 16;
/*! Key size in bytes */
static const int KEY_SIZE = 32;
/*! Message size in bytes */
static const int SRC_LEN = 16;
/*! Plain text */
static Ipp8u plainText[SRC_LEN] = {
0x6b,0xc1,0xbe,0xe2,0x2e,0x40,0x9f,0x96,
0xe9,0x3d,0x7e,0x11,0x73,0x93,0x17,0x2a
};
/*! Cipher text */
static Ipp8u cipherText[SRC_LEN] = {
0x60,0x1e,0xc3,0x13,0x77,0x57,0x89,0xa5,
0xb7,0xa7,0xf5,0x04,0xbb,0xf3,0xd2,0x28
};
/*! 256-bit secret key */
static Ipp8u key256[KEY_SIZE] = {
0x60,0x3d,0xeb,0x10,0x15,0xca,0x71,0xbe,
0x2b,0x73,0xae,0xf0,0x85,0x7d,0x77,0x81,
0x1f,0x35,0x2c,0x07,0x3b,0x61,0x08,0xd7,
0x2d,0x98,0x10,0xa3,0x09,0x14,0xdf,0xf4
};
/*! Initial counter for CTR mode.
* Size of counter for AES-CTR shall be equal to the size of AES block (16 bytes).
*/
static Ipp8u initialCounter[AES_BLOCK_SIZE] = {
0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
};
/*! Main function */
int main(void)
{
/* Length of changeable bits in a counter (can be value starting from 1 till block size 128) */
const Ipp32u counterLen = 128;
/* Size of AES context structure. It will be set up in ippsAESGetSize(). */
int ctxSize = 0;
Ipp8u pOut[SRC_LEN] = {};
Ipp8u pCounter[AES_BLOCK_SIZE] = {};
/* Internal function status */
IppStatus status = ippStsNoErr;
/* Pointer to AES context structure */
IppsAESSpec* pAES = 0;
do {
/* 1. Get size needed for AES context structure */
status = ippsAESGetSize(&ctxSize);
if (!checkStatus("ippsAESGetSize", ippStsNoErr, status))
return status;
/* 2. Allocate memory for AES context structure */
pAES = (IppsAESSpec*)(new Ipp8u[ctxSize]);
if (NULL == pAES) {
printf("ERROR: Cannot allocate memory (%d bytes) for AES context\n", ctxSize);
return -1;
}
/* 3. Initialize AES context */
status = ippsAESInit(key256, sizeof(key256), pAES, ctxSize);
if (!checkStatus("ippsAESInit", ippStsNoErr, status))
break;
/* Initialize counter before decryption.
* An updated counter value will be stored here after ippsAESDecryptCTR finishes.
*/
memcpy(pCounter, initialCounter, sizeof(initialCounter));
/* 4. Decryption */
status = ippsAESDecryptCTR(cipherText, pOut, sizeof(cipherText), pAES, pCounter, counterLen);
if (!checkStatus("ippsAESDecryptCTR", ippStsNoErr, status))
break;
/* Compare decrypted message and original text */
if (0 != memcmp(pOut, plainText, sizeof(plainText))) {
printf("ERROR: Decrypted and plain text messages do not match\n");
break;
}
} while (0);
/* 5. Remove secret and release resources */
ippsAESInit(0, KEY_SIZE, pAES, ctxSize);
if (pAES) delete [] (Ipp8u*)pAES;
PRINT_EXAMPLE_STATUS("ippsAESDecryptCTR", "AES-CTR 256 Decryption", !status);
return status;
}

@ -0,0 +1,137 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief AES Counter mode of operation (CTR) example
*
* This example demonstrates usage of AES block cipher with 256-bit key
* run with CTR mode of operation. Encryption scheme.
*
* The CTR mode of operation is implemented according to the
* "NIST Special Publication 800-38A: Recommendation for Block Cipher Modes of
* Operation" document:
*
* https://csrc.nist.gov/publications/detail/sp/800-38a/final
*
*/
#include <string.h>
#include "ippcp.h"
#include "examples_common.h"
/*! AES block size in bytes */
static const int AES_BLOCK_SIZE = 16;
/*! Key size in bytes */
static const int KEY_SIZE = 32;
/*! Message size in bytes */
static const int SRC_LEN = 16;
/*! Plain text */
static Ipp8u plainText[SRC_LEN] = {
0x6b,0xc1,0xbe,0xe2,0x2e,0x40,0x9f,0x96,
0xe9,0x3d,0x7e,0x11,0x73,0x93,0x17,0x2a
};
/*! Cipher text */
static Ipp8u cipherText[SRC_LEN] = {
0x60,0x1e,0xc3,0x13,0x77,0x57,0x89,0xa5,
0xb7,0xa7,0xf5,0x04,0xbb,0xf3,0xd2,0x28
};
/*! 256-bit secret key */
static Ipp8u key256[KEY_SIZE] = {
0x60,0x3d,0xeb,0x10,0x15,0xca,0x71,0xbe,
0x2b,0x73,0xae,0xf0,0x85,0x7d,0x77,0x81,
0x1f,0x35,0x2c,0x07,0x3b,0x61,0x08,0xd7,
0x2d,0x98,0x10,0xa3,0x09,0x14,0xdf,0xf4
};
/*! Initial counter for CTR mode.
* Size of counter for AES-CTR shall be equal to the size of AES block (16 bytes).
*/
static Ipp8u initialCounter[AES_BLOCK_SIZE] = {
0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,
0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
};
/*! Main function */
int main(void)
{
/* Length of changeable bits in a counter (can be value starting from 1 till block size 128) */
const Ipp32u counterLen = 128;
/* Size of AES context structure. It will be set up in ippsAESGetSize(). */
int ctxSize = 0;
Ipp8u pOut[SRC_LEN] = {};
Ipp8u pCounter[AES_BLOCK_SIZE] = {};
/* Internal function status */
IppStatus status = ippStsNoErr;
/* Pointer to AES context structure */
IppsAESSpec* pAES = 0;
do {
/* 1. Get size needed for AES context structure */
status = ippsAESGetSize(&ctxSize);
if (!checkStatus("ippsAESGetSize", ippStsNoErr, status))
return status;
/* 2. Allocate memory for AES context structure */
pAES = (IppsAESSpec*)(new Ipp8u[ctxSize]);
if (NULL == pAES) {
printf("ERROR: Cannot allocate memory (%d bytes) for AES context\n", ctxSize);
return -1;
}
/* 3. Initialize AES context */
status = ippsAESInit(key256, sizeof(key256), pAES, ctxSize);
if (!checkStatus("ippsAESInit", ippStsNoErr, status))
break;
/* Initialize counter before encryption.
* An updated counter value will be stored here after ippsAESEncryptCTR finishes.
*/
memcpy(pCounter, initialCounter, sizeof(initialCounter));
/* 4. Encryption */
status = ippsAESEncryptCTR(plainText, pOut, sizeof(plainText), pAES, pCounter, counterLen);
if (!checkStatus("ippsAESEncryptCTR", ippStsNoErr, status))
break;
/* Compare encrypted message and reference text */
if (0 != memcmp(pOut, cipherText, sizeof(cipherText))) {
printf("ERROR: Encrypted and reference messages do not match\n");
break;
}
} while (0);
/* 5. Remove secret and release resources */
ippsAESInit(0, KEY_SIZE, pAES, ctxSize);
if (pAES) delete [] (Ipp8u*)pAES;
PRINT_EXAMPLE_STATUS("ippsAESEncryptCTR", "AES-CTR 256 Encryption", !status)
return status;
}

@ -0,0 +1,183 @@
/*******************************************************************************
* Copyright (C) 2021 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief DSA-DLP verification scheme example
*
* This example demonstrates message verification according to
* DSA-DLP scheme with (L = 1024, N = 160) DSA parameters and SHA-1 hash function.
*
* The DSA-DLP scheme is implemented according : Digital Signature Standard (DSS) (FIPS PUB 186-4) (July 2013)
*
* available at:
*
* http://dx.doi.org/10.6028/NIST.FIPS.186-4.
*
*/
#include <string.h>
#include "bignum.h"
#include "examples_common.h"
#include "ippcp.h"
/*! Parameters DSA-DLP scheme */
static const int L_BIT = 1024;
static const int N_BIT = 160;
/*! Message size in bytes */
static const int MSG_LEN_BYTE = 6;
/*! Message text */
static Ipp8u MSG[MSG_LEN_BYTE] = {0x31, 0x32, 0x33,
0x34, 0x30, 0x30};
/*! The generator of the multiplicative subgroup */
static const BigNumber G(
"0x"
"0835AA8C358BBF01A1846D1206323FABE408B0E98789FCC6239DA14D4B3F86C2"
"76A8F48AA85A59507E620AD1BC745F0F1CBF63EC98C229C2610D77C634D1642E"
"404354771655B2D5662F7A45227178CE3430AF0F6B3BB94B52F7F51E97BAD659"
"B1BA0684E208BE624C28D82FB1162F18DD9DCE45216461654CF3374624D15A8D");
/*! The modulus p */
static const BigNumber P(
"0x"
"B34CE9C1E78294D3258473842005D2A48C8C566CFCA8F84C0606F2529B59A6D3"
"8AAE071B53BB2167EAA4FC3B01FE176E787E481B6037AAC62CBC3D089799536A"
"869FA8CDFEA1E8B1FD2D1CD3A30350859A2CD6B3EC2F9BFBB68BB11B4BBE2ADA"
"A18D64A93639543AE5E16293E311C0CF8C8D6E180DF05D08C2FD2D93D570751F");
/*! The order of the generator g */
static const BigNumber Q("0xB90B38BA0A50A43EC6898D3F9B68049777F489B1");
/*! The public key value */
static const BigNumber Y(
"0x"
"173931DDA31EFF32F24B383091BF77EACDC6EFD557624911D8E9B9DEBF0F256D"
"0CFFAC5567B33F6EAAE9D3275BBED7EF9F5F94C4003C959E49A1ED3F58C31B21"
"BACCC0ED8840B46145F121B8906D072129BAE01F071947997E8EF760D2D9EA21"
"D08A5EB7E89390B21A85664713C549E25FEDA6E9E6C31970866BDFBC8FA981F6");
/*! R digital signature component */
static const BigNumber sigR("0xAA6A258FBF7D90E15614676D377DF8B10E38DB4A");
/*! S digital signature component */
static const BigNumber sigS("0x496D5220B5F67D3532D1F991203BC3523B964C3B");
int main(void) {
/*! Internal function status */
IppStatus status = ippStsNoErr;
/* Pointer to DSA DLP context structure */
IppsDLPState* pDL = NULL;
/* Result verification DSA DLP */
IppDLResult result = ippDLValid;
/* Size of DSA-DLP context structure. It will be set up in ippsDLPGetSize(). */
int DLSize = 0;
/* Digest size */
const int digestSizeBit = IPP_SHA1_DIGEST_BITSIZE;
const int digestSizeByte = digestSizeBit / 8;
/* Pointer to the SHA-1 hash method */
const IppsHashMethod* hashMethod = ippsHashMethod_SHA1();
/*! Algorithm */
do {
/* 1. Create a digest by message */
/*! Buffer create digest */
Ipp8u md[digestSizeByte] = {};
/*! Create digest by message */
status = ippsHashMessage_rmf(MSG,
MSG_LEN_BYTE,
md,
hashMethod);
/*! Check status create digest */
if (ippStsNoErr != status)
break;
/*!
* (!) Allocate BigNumber container for the shrank message digest.
* Note, the DSA algorithm uses only leftmost |minSizeDigestBit| bits of the original message digest
*/
const int minSizeDigestBit = IPP_MIN(N_BIT, digestSizeBit);
BigNumber digest(NULL, bitSizeInWords(minSizeDigestBit));
/*! Set digest to BigNumber */
status = ippsSetOctString_BN(md,
bitSizeInBytes(minSizeDigestBit),
digest);
if (ippStsNoErr != status)
break;
/* 2. Get size needed for DSA DLP context structure */
status = ippsDLPGetSize(L_BIT, N_BIT,
&DLSize);
if (ippStsNoErr != status)
break;
/* 3. Allocate memory for DSA DLP context structure */
pDL = (IppsDLPState*)(new Ipp8u[DLSize]);
if (NULL == pDL) {
printf("ERROR: Cannot allocate memory (%d bytes) for DSA DLP context\n", DLSize);
return -1;
}
/* 4. Initialize DSA DLP context */
status = ippsDLPInit(L_BIT, N_BIT,
pDL);
if (ippStsNoErr != status)
break;
/* 5. Set DL Domain Parameters */
status = ippsDLPSet(P, Q, G, pDL);
if (ippStsNoErr != status)
break;
/* 6. Set up Key Pair into the DL context */
status = ippsDLPSetKeyPair(NULL, /* optional Private Key Set */
Y,
pDL);
if (ippStsNoErr != status)
break;
/* 7. Verify Signature DSA DLP */
status = ippsDLPVerifyDSA(digest,
sigR, sigS,
&result,
pDL);
if (ippStsNoErr != status)
break;
if (ippDLValid != result)
status = ippStsErr;
} while (0); /* end Algorithm */
/* 8. Remove secret and release resources */
if (NULL != pDL)
delete[](Ipp8u*) pDL;
PRINT_EXAMPLE_STATUS("ippsDLPVerifyDSA", "DSA-DLP Verification Hash Method Message SHA-1", ippStsNoErr == status);
return status;
}

@ -0,0 +1,207 @@
/*******************************************************************************
* Copyright (C) 2021 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief DSA-DLP verification scheme example
*
* This example demonstrates message verification according to
* DSA-DLP scheme with (L = 3072, N = 256) DSA parameters and SHA-256 hash function.
*
* The DSA-DLP scheme is implemented according : Digital Signature Standard (DSS) (FIPS PUB 186-4) (July 2013)
*
* available at:
*
* http://dx.doi.org/10.6028/NIST.FIPS.186-4.
*
*/
#include <string.h>
#include "bignum.h"
#include "examples_common.h"
#include "ippcp.h"
/*! Parameters DSA-DLP scheme */
static const int L_BIT = 3072;
static const int N_BIT = 256;
/*! Message size in bytes */
static const int MSG_LEN_BYTE = 6;
/*! Message text */
static Ipp8u MSG[MSG_LEN_BYTE] = {0x31, 0x32, 0x33,
0x34, 0x30, 0x30};
/*! The generator of the multiplicative subgroup */
static const BigNumber G(
"0x"
"6DEA4B8C3FE3AB91E3229FB14C1CFA822915769AF161405F48B7FADFE1EC5D9F"
"EC4EF0CFBB2233FFDDFA5A554CFC68C6BC6A0BA30CEF6F51309294E622B58D4F"
"ACE00AE9669D9172B15696839ED332AFD906E3F427D85A9AF73562B845BE53A3"
"713C0219402A4C208E9B6A6873235E0BC20442E70AB69EDD46E8F3F7D58CB35E"
"A3690C673F54CD37377725739F00EBE2B3B53BDAF89DDAC74012F8486BD3F521"
"7579B4A303F61BCCC98931FABA969C8C2A27ACB04BC21201EDF9A7F6B42E10F7"
"5DD23C3AB073D7290D173EBE6CB1919607BFE2BF0D829A609D8D3CDA7044FF8D"
"FBBD463E68C9403A45834EC547A7D4FD5ABC68C5997CDC397120698F879356E0"
"E74B62FE1A2938A5D1B486B53A5E0CB875E23A2E834EA563A4A9D4BE44045877"
"DF020C30E22E55603F63D74ED2CAFDE18180EC294A7CE263D56EB280562687F6"
"1F898F3C7D2B37D7F00250A43CA989DE16FA1AAB7D83E0DBF6AA66EDC36AD79E"
"ECFE2F91CFAB6285BA10AE713126F69326540C461E44E45BDF076E4ED8D3E924");
/*! The modulus p */
static const BigNumber P(
"0x"
"DCD2F71FBA7AEB46AEEA858AB76F2102FA97A953ABCE9D791AA269F0161733AC"
"3DF25F5C9DB3448F82846E355E23089614046D42B030298D94F5365D942CBB54"
"90E40A1D5E6E577CC646A807F049A1FB42B97A9E64EFA1AA9EF93BB3C7120DDB"
"F9C403E580431F1789127F0A64EA7B036EF12D07F02103655D63DDDA3C44AD32"
"8F727C1D060FC92E3616976CF11BF1FEEFFF033490D98929252B585CD92C081A"
"FCC71DAE6341AE8DD05E62AE297AD2B00560EC94F1F64482816E3AF052FC1DAF"
"F0A9BF52034012594D4246036D040FA5E741E693E36B064BEDB224EA1F7C6C86"
"171CA8FCFAC98C5DB6E34DAD307C5BFDECE4E578F0E18FCAAEE9D5B330ED69A7"
"2D8FDDF878A58A57914247825AE6ED1CB8A6B241EA694B77F843EEE40F1BE90F"
"26B26154813647D1E1AF01254CF21CFDD2E9EBA7E431BD8DB6164D05A3D3AE93"
"71AF5D0D39A3A9B9F07BA61233C77A6BFC273515FB844DB8FAFD69B559CE844C"
"7A3D686EA4991D9FE74CAD560489F3C1DBB4FD171EA8AE7874E302207C02A7B1");
/*! The order of the generator g */
static const BigNumber Q("0xF870D35CA9F84E6ACAD808D6AC35B13EE4073F26EA84FEFE08C4D9A565754037");
/*! The public key value */
static const BigNumber Y(
"0x"
"7E0062E6F32ECAB1EFFA38391B71A523221D6E97A61F55238F0A623CC42980B9"
"87FB22EC6138E8D1C0D36C05D059CA0CA3F1A526A5F67B216341ABCD04105BB8"
"EFC9E479C2532F9DEA6CDDFB4F57DE5B9D6964E3D314EB89693A3D57F82B9FF9"
"3E0E0D11D72FA4F1BD82BB2B20F1B59547AFF7711DB319D7D06E6964BEB294E4"
"4D34C2A21C7AC7CDAC5E91F2F6D183042AFC3644B09837FA2225A074CEB65D49"
"9F73CEE04C705C82BB912F97D765D5F9C8CB442019E7DAC1E1CCCCEE990335EA"
"3B8C837583595CD4F83169D4787FE4675386D604E8E205B977C7AB2369504282"
"54E3B836BD00296257238D22BDA16A722E405DF82029E3384931FB0E4903C3F8"
"771FB15708D4CB3238E7B2A68131BE518A08D6EFD483A01537A432046DCBD1FF"
"A5FF831E0257B292012D5E1A44C6E32019A6B3AE176A67EDAF12EB27E68FA60A"
"05AF4E5448D606C392B4A672B44298B1775A16B9440B131EB0D91CA3FDE1A1E5"
"28B5FFFC31FFDF1449169C2F4ABD96809A75FB6C85AE845940C45D5AF8334057");
/*! R digital signature component */
static const BigNumber sigR("0x8C7F9B7F5D53A4D3877185D2EF69B2B3AB16321D996940C2EFCBEF01C0B598B4");
/*! S digital signature component */
static const BigNumber sigS("0x33708B0FD4109873550D02340918EC93E5383D471C9D0A322AA76C2872783CBA");
int main(void) {
/*! Internal function status */
IppStatus status = ippStsNoErr;
/* Pointer to DSA DLP context structure */
IppsDLPState* pDL = NULL;
/* Result verification DSA DLP */
IppDLResult result = ippDLValid;
/* Size of DSA-DLP context structure. It will be set up in ippsDLPGetSize(). */
int DLSize = 0;
/* Digest size */
const int digestSizeBit = IPP_SHA256_DIGEST_BITSIZE;
const int digestSizeByte = digestSizeBit / 8;
/* Pointer to the SHA-256 hash method */
const IppsHashMethod* hashMethod = ippsHashMethod_SHA256();
/*! Algorithm */
do {
/* 1. Create a digest by message */
/*! Buffer create digest */
Ipp8u md[digestSizeByte] = {};
/*! Create digest by message */
status = ippsHashMessage_rmf(MSG,
MSG_LEN_BYTE,
md,
hashMethod);
/*! Check status create digest */
if (ippStsNoErr != status)
break;
/*!
* (!) Allocate BigNumber container for the shrank message digest.
* Note, the DSA algorithm uses only leftmost |minSizeDigestBit| bits of the original message digest
*/
const int minSizeDigestBit = IPP_MIN(N_BIT, digestSizeBit);
BigNumber digest(NULL, bitSizeInWords(minSizeDigestBit));
/*! Set digest to BigNumber */
status = ippsSetOctString_BN(md,
bitSizeInBytes(minSizeDigestBit),
digest);
if (ippStsNoErr != status)
break;
/* 2. Get size needed for DSA DLP context structure */
status = ippsDLPGetSize(L_BIT, N_BIT,
&DLSize);
if (ippStsNoErr != status)
break;
/* 3. Allocate memory for DSA DLP context structure */
pDL = (IppsDLPState*)(new Ipp8u[DLSize]);
if (NULL == pDL) {
printf("ERROR: Cannot allocate memory (%d bytes) for DSA DLP context\n", DLSize);
return -1;
}
/* 4. Initialize DSA DLP context */
status = ippsDLPInit(L_BIT, N_BIT,
pDL);
if (ippStsNoErr != status)
break;
/* 5. Set DL Domain Parameters */
status = ippsDLPSet(P, Q, G, pDL);
if (ippStsNoErr != status)
break;
/* 6. Set up Key Pair into the DL context */
status = ippsDLPSetKeyPair(NULL, /* optional Private Key Set */
Y,
pDL);
if (ippStsNoErr != status)
break;
/* 7. Verify Signature DSA DLP */
status = ippsDLPVerifyDSA(digest,
sigR, sigS,
&result,
pDL);
if (ippStsNoErr != status)
break;
if (ippDLValid != result)
status = ippStsErr;
} while (0); /* end Algorithm */
/* 8. Remove secret and release resources */
if (NULL != pDL)
delete[](Ipp8u*) pDL;
PRINT_EXAMPLE_STATUS("ippsDLPVerifyDSA", "DSA-DLP Verification Hash Method Message SHA-256", ippStsNoErr == status);
return status;
}

@ -0,0 +1,131 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief RSA-OAEP encryption scheme usage example.
*
* This example demonstrates message encryption according to
* RSA-OAEP scheme with 1024-bit RSA modulus and SHA-1 hash function.
* It uses Reduced Memory Footprint (_rmf) version of the function.
*
* The RSASSA-OAEP scheme is implemented according to the PKCS#1 v2.1: RSA Cryptography Standard (June 2002),
* available at:
*
* https://tools.ietf.org/html/rfc3447.
*
*/
#include <cstring>
#include "ippcp.h"
#include "examples_common.h"
#include "bignum.h"
/*! 1024-bit RSA Modulus N = P*Q */
static BigNumber N("0xBBF82F090682CE9C2338AC2B9DA871F7368D07EED41043A440D6B6F07454F51FB8DFBAAF035C02AB61EA48CEEB6FCD4876ED520D60E1E"
"C4619719D8A5B8B807FAFB8E0A3DFC737723EE6B4B7D93A2584EE6A649D060953748834B2454598394EE0AAB12D7B61A51F527A9A41F6C1"
"687FE2537298CA2A8F5946F8E5FD091DBDCB");
/*! Public exponent */
static BigNumber E("0x11");
/*! Plain text source message */
static Ipp8u sourceMessage[] =
"\xd4\x36\xe9\x95\x69\xfd\x32\xa7"
"\xc8\xa0\x5b\xbc\x90\xd3\x2c\x49";
/*! Seed string of hash size */
static Ipp8u seed[] = "\xaa\xfd\x12\xf6\x59\xca\xe6\x34\x89\xb4"
"\x79\xe5\x07\x6d\xde\xc2\xf0\x6c\xb5\x8f";
/*! Reference cipher text. Length is equal to RSA modulus size */
static Ipp8u cipherTextRef[] =
"\x12\x53\xE0\x4D\xC0\xA5\x39\x7B\xB4\x4A\x7A\xB8\x7E\x9B\xF2\xA0"
"\x39\xA3\x3D\x1E\x99\x6F\xC8\x2A\x94\xCC\xD3\x00\x74\xC9\x5D\xF7"
"\x63\x72\x20\x17\x06\x9E\x52\x68\xDA\x5D\x1C\x0B\x4F\x87\x2C\xF6"
"\x53\xC1\x1D\xF8\x23\x14\xA6\x79\x68\xDF\xEA\xE2\x8D\xEF\x04\xBB"
"\x6D\x84\xB1\xC3\x1D\x65\x4A\x19\x70\xE5\x78\x3B\xD6\xEB\x96\xA0"
"\x24\xC2\xCA\x2F\x4A\x90\xFE\x9F\x2E\xF5\xC9\xC1\x40\xE5\xBB\x48"
"\xDA\x95\x36\xAD\x87\x00\xC8\x4F\xC9\x13\x0A\xDE\xA7\x4E\x55\x8D"
"\x51\xA7\x4D\xDF\x85\xD8\xB5\x0D\xE9\x68\x38\xD6\x06\x3E\x09\x55";
/*! Main function */
int main(void)
{
/* Internal function status */
IppStatus status = ippStsNoErr;
/* Size in bits of RSA modulus */
const int bitSizeN = N.BitSize();
/* Size in bits of RSA public exponent */
const int bitSizeE = E.BitSize();
/* Allocate memory for public key. */
int keySize = 0;
ippsRSA_GetSizePublicKey(bitSizeN, bitSizeE, &keySize);
IppsRSAPublicKeyState* pPubKey = (IppsRSAPublicKeyState*)(new Ipp8u[keySize]);
ippsRSA_InitPublicKey(bitSizeN, bitSizeE, pPubKey, keySize);
/* Allocate memory for cipher text, not less than RSA modulus size. */
int cipherTextLen = bitSizeInBytes(bitSizeN);
Ipp8u* pCipherText = new Ipp8u[cipherTextLen];
do {
/* Set public key */
status = ippsRSA_SetPublicKey(N, E, pPubKey);
if (!checkStatus("ippsRSA_SetPublicKey", ippStsNoErr, status))
break;
/* Calculate temporary buffer size */
int pubBufSize = 0;
status = ippsRSA_GetBufferSizePublicKey(&pubBufSize, pPubKey);
if (!checkStatus("ippsRSA_GetBufferSizePublicKey", ippStsNoErr, status))
break;
/* Allocate memory for temporary buffer */
Ipp8u* pScratchBuffer = new Ipp8u[pubBufSize];
/* Encrypt message */
status = ippsRSAEncrypt_OAEP_rmf(sourceMessage, sizeof(sourceMessage)-1,
0 /* optional label assotiated with the sourceMessage */,
0, /* label length */
seed, pCipherText, pPubKey,
ippsHashMethod_SHA1(),
pScratchBuffer);
if (pScratchBuffer) delete [] pScratchBuffer;
if (!checkStatus("ippsRSAEncrypt_OAEP_rmf", ippStsNoErr, status))
break;
if (0 != memcmp(cipherTextRef, pCipherText, sizeof(cipherTextRef)-1)) {
printf("ERROR: Encrypted and reference messages do not match\n");
status = ippStsErr;
}
} while (0);
PRINT_EXAMPLE_STATUS("ippsRSAEncrypt_OAEP_rmf", "RSA-OAEP 1024 (SHA1) Encryption", ippStsNoErr == status);
if (pCipherText) delete [] pCipherText;
if (pPubKey) delete [] (Ipp8u*)pPubKey;
return status;
}

@ -0,0 +1,146 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief RSA-OAEP decryption scheme usage example.
*
* This example demonstrates message decryption according to
* RSA-OAEP scheme with 1024-bit RSA modulus and SHA-1 hash function.
* The private key of Type2 (to be able to apply Chinese Reminder Theorem) is used in this example.
* It uses Reduced Memory Footprint (_rmf) version of the function.
*
* The RSASSA-OAEP scheme is implemented according to the PKCS#1 v2.1: RSA Cryptography Standard (June 2002),
* available at:
*
* https://tools.ietf.org/html/rfc3447.
*
*/
#include <string.h>
#include "ippcp.h"
#include "examples_common.h"
#include "bignum.h"
/*! Prime P factor */
static BigNumber P("0xEECFAE81B1B9B3C908810B10A1B5600199EB9F44AEF4FDA493B81A9E3D84F632"
"124EF0236E5D1E3B7E28FAE7AA040A2D5B252176459D1F397541BA2A58FB6599");
/*! Prime Q factor */
static BigNumber Q("0xC97FB1F027F453F6341233EAAAD1D9353F6C42D08866B1D05A0F2035028B9D86"
"9840B41666B42E92EA0DA3B43204B5CFCE3352524D0416A5A441E700AF461503");
/*! D mod (p-1) factor */
static BigNumber DP("0x54494CA63EBA0337E4E24023FCD69A5AEB07DDDC0183A4D0AC9B54B051F2B13E"
"D9490975EAB77414FF59C1F7692E9A2E202B38FC910A474174ADC93C1F67C981");
/*! D mod (q-1) factor */
static BigNumber DQ("0x471E0290FF0AF0750351B7F878864CA961ADBD3A8A7E991C5C0556A94C3146A7"
"F9803F8F6F8AE342E931FD8AE47A220D1B99A495849807FE39F9245A9836DA3D");
/*! Q^-1 mod p factor */
static BigNumber InvQ("0xB06C4FDABB6301198D265BDBAE9423B380F271F73453885093077FCD39E2119F"
"C98632154F5883B167A967BF402B4E9E2E0F9656E698EA3666EDFB25798039F7");
/*! Plain text */
static Ipp8u sourceMessageRef[] =
"\xd4\x36\xe9\x95\x69\xfd\x32\xa7"
"\xc8\xa0\x5b\xbc\x90\xd3\x2c\x49";
/*! Cipher text to decrypt. */
static Ipp8u cipherText[] =
"\x12\x53\xE0\x4D\xC0\xA5\x39\x7B\xB4\x4A\x7A\xB8\x7E\x9B\xF2\xA0"
"\x39\xA3\x3D\x1E\x99\x6F\xC8\x2A\x94\xCC\xD3\x00\x74\xC9\x5D\xF7"
"\x63\x72\x20\x17\x06\x9E\x52\x68\xDA\x5D\x1C\x0B\x4F\x87\x2C\xF6"
"\x53\xC1\x1D\xF8\x23\x14\xA6\x79\x68\xDF\xEA\xE2\x8D\xEF\x04\xBB"
"\x6D\x84\xB1\xC3\x1D\x65\x4A\x19\x70\xE5\x78\x3B\xD6\xEB\x96\xA0"
"\x24\xC2\xCA\x2F\x4A\x90\xFE\x9F\x2E\xF5\xC9\xC1\x40\xE5\xBB\x48"
"\xDA\x95\x36\xAD\x87\x00\xC8\x4F\xC9\x13\x0A\xDE\xA7\x4E\x55\x8D"
"\x51\xA7\x4D\xDF\x85\xD8\xB5\x0D\xE9\x68\x38\xD6\x06\x3E\x09\x55";
/*! Main function */
int main(void)
{
/* Internal function status */
IppStatus status = ippStsNoErr;
/* Size in bits of P factor */
const int bitSizeP = P.BitSize();
/* Size in bits of Q factor */
const int bitSizeQ = Q.BitSize();
/* Allocate memory for private key.
* There are two types of private keys that are supported: Type1 and Type2.
* You can choose any of them, depending on your private key representation.
* This example uses Type2 key.
* For more information, see https://www.intel.com/content/www/us/en/docs/ipp-crypto/developer-reference/current/crypto-ref-getsize-public-private1-private2.html
*/
int keySize = 0;
ippsRSA_GetSizePrivateKeyType2(bitSizeP, bitSizeQ, &keySize);
IppsRSAPrivateKeyState* pPrvKeyType2 = (IppsRSAPrivateKeyState*)(new Ipp8u [keySize]);
ippsRSA_InitPrivateKeyType2(bitSizeP, bitSizeQ, pPrvKeyType2, keySize);
/* Allocate memory for decrypted plain text, not less than RSA modulus size. */
int plainTextLen = bitSizeInBytes(bitSizeP + bitSizeQ);
Ipp8u* pPlainText = new Ipp8u[plainTextLen];
do {
/* Set private key */
status = ippsRSA_SetPrivateKeyType2(P, Q, DP, DQ, InvQ, pPrvKeyType2);
if (!checkStatus("ippsRSA_SetPrivateKeyType2", ippStsNoErr, status))
break;
/* Calculate temporary buffer size */
int bufSize = 0;
status = ippsRSA_GetBufferSizePrivateKey(&bufSize, pPrvKeyType2);
if (!checkStatus("ippsRSA_GetBufferSizePrivateKey", ippStsNoErr, status))
break;
/* Allocate memory for temporary buffer */
Ipp8u* pScratchBuffer = new Ipp8u[bufSize];
/* Decrypt message */
status = ippsRSADecrypt_OAEP_rmf(cipherText,
0 /* optional label to be assotiated with the message */,
0, /* label length */
pPlainText, &plainTextLen,
pPrvKeyType2,
ippsHashMethod_SHA1(),
pScratchBuffer);
if (pScratchBuffer) delete [] pScratchBuffer;
if (!checkStatus("ippsRSADecrypt_OAEP_rmf", ippStsNoErr, status))
break;
if (0 != memcmp(sourceMessageRef, pPlainText, sizeof(sourceMessageRef)-1)) {
printf("ERROR: Decrypted and plain text messages do not match\n");
status = ippStsErr;
}
} while (0);
PRINT_EXAMPLE_STATUS("ippsRSADecrypt_OAEP_rmf", "RSA-OAEP 1024 (SHA1) Type2 decryption", ippStsNoErr == status)
if (pPlainText) delete [] pPlainText;
if (pPrvKeyType2) delete [] (Ipp8u*)pPrvKeyType2;
return status;
}

@ -0,0 +1,124 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief RSASSA-PSS verification scheme usage example.
*
* This example demonstrates message verification according to
* RSASSA-PSS scheme with 1024-bit RSA modulus and SHA-1 hash function.
* It uses Reduced Memory Footprint (_rmf) version of the function.
*
* The RSASSA-PSS scheme is implemented according to the PKCS#1 v2.1: RSA Cryptography Standard (June 2002),
* available at:
*
* https://tools.ietf.org/html/rfc3447.
*
*/
#include "ippcp.h"
#include "examples_common.h"
#include "bignum.h"
/*! 1024-bit RSA Modulus N = P*Q */
static BigNumber N("0xA2BA40EE07E3B2BD2F02CE227F36A195024486E49C19CB41BBBDFBBA98B22B0E577C2EEAFFA20D883A76E65E394C69D4"
"B3C05A1E8FADDA27EDB2A42BC000FE888B9B32C22D15ADD0CD76B3E7936E19955B220DD17D4EA904B1EC102B2E4DE775"
"1222AA99151024C7CB41CC5EA21D00EEB41F7C800834D2C6E06BCE3BCE7EA9A5");
/*! Public exponent */
static BigNumber E("0x10001");
/*! Message to be signed */
static
Ipp8u sourceMessage[] = "\x85\x9e\xef\x2f\xd7\x8a\xca\x00\x30\x8b\xdc\x47\x11\x93\xbf\x55"
"\xbf\x9d\x78\xdb\x8f\x8a\x67\x2b\x48\x46\x34\xf3\xc9\xc2\x6e\x64"
"\x78\xae\x10\x26\x0f\xe0\xdd\x8c\x08\x2e\x53\xa5\x29\x3a\xf2\x17"
"\x3c\xd5\x0c\x6d\x5d\x35\x4f\xeb\xf7\x8b\x26\x02\x1c\x25\xc0\x27"
"\x12\xe7\x8c\xd4\x69\x4c\x9f\x46\x97\x77\xe4\x51\xe7\xf8\xe9\xe0"
"\x4c\xd3\x73\x9c\x6b\xbf\xed\xae\x48\x7f\xb5\x56\x44\xe9\xca\x74"
"\xff\x77\xa5\x3c\xb7\x29\x80\x2f\x6e\xd4\xa5\xff\xa8\xba\x15\x98"
"\x90\xfc";
/*! Signature to verify */
static
Ipp8u signatureRef[] = "\x8d\xaa\x62\x7d\x3d\xe7\x59\x5d\x63\x05\x6c\x7e\xc6\x59\xe5\x44"
"\x06\xf1\x06\x10\x12\x8b\xaa\xe8\x21\xc8\xb2\xa0\xf3\x93\x6d\x54"
"\xdc\x3b\xdc\xe4\x66\x89\xf6\xb7\x95\x1b\xb1\x8e\x84\x05\x42\x76"
"\x97\x18\xd5\x71\x5d\x21\x0d\x85\xef\xbb\x59\x61\x92\x03\x2c\x42"
"\xbe\x4c\x29\x97\x2c\x85\x62\x75\xeb\x6d\x5a\x45\xf0\x5f\x51\x87"
"\x6f\xc6\x74\x3d\xed\xdd\x28\xca\xec\x9b\xb3\x0e\xa9\x9e\x02\xc3"
"\x48\x82\x69\x60\x4f\xe4\x97\xf7\x4c\xcd\x7c\x7f\xca\x16\x71\x89"
"\x71\x23\xcb\xd3\x0d\xef\x5d\x54\xa2\xb5\x53\x6a\xd9\x0a\x74\x7e";
/*! Main function */
int main(void)
{
/* Internal function status */
IppStatus status = ippStsNoErr;
/* Size in bits of RSA modulus */
const int bitSizeN = N.BitSize();
/* Size in bits of RSA public exponent */
const int bitSizeE = E.BitSize();
/* Allocate memory for public key. */
int keySize = 0;
ippsRSA_GetSizePublicKey(bitSizeN, bitSizeE, &keySize);
IppsRSAPublicKeyState* pPubKey = (IppsRSAPublicKeyState*)(new Ipp8u[keySize]);
ippsRSA_InitPublicKey(bitSizeN, bitSizeE, pPubKey, keySize);
if (pPubKey) {
do {
/* Set public key */
status = ippsRSA_SetPublicKey(N, E, pPubKey);
if (!checkStatus("ippsRSA_SetPublicKey", ippStsNoErr, status))
break;
/* Calculate temporary buffer size */
int pubBufSize = 0;
status = ippsRSA_GetBufferSizePublicKey(&pubBufSize, pPubKey);
if (!checkStatus("ippsRSA_GetBufferSizePublicKey", ippStsNoErr, status))
break;
Ipp8u* pScratchBuffer = new Ipp8u[pubBufSize];
/* Verify message with use of SHA-1 hash function. The verification result will be placed
* into isValid variable. */
int isValid = 0;
status = ippsRSAVerify_PSS_rmf(sourceMessage, sizeof(sourceMessage)-1,
signatureRef, &isValid,
pPubKey,
ippsHashMethod_SHA1(),
pScratchBuffer);
if (pScratchBuffer) delete [] pScratchBuffer;
if (!checkStatus("ippsRSAVerify_PSS_rmf", ippStsNoErr, status))
break;
/* If isValid is zero, then verification fails */
status = isValid ? ippStsNoErr : ippStsErr;
} while (0);
}
if (pPubKey) delete [] (Ipp8u*)pPubKey;
PRINT_EXAMPLE_STATUS("ippsRSAVerify_PSS_rmf", "RSA-PSS 1024 (SHA1) Verification", ippStsNoErr == status);
return status;
}

@ -0,0 +1,166 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief RSASSA-PSS signature generation scheme usage example.
*
* This example demonstrates message signature generation according to
* RSASSA-PSS scheme with 3072-bit RSA modulus and SHA-384 hash function.
* It uses Reduced Memory Footprint (_rmf) version of the function.
*
* The RSASSA-PSS scheme is implemented according to the PKCS#1 v2.1: RSA Cryptography Standard (June 2002),
* available at:
*
* https://tools.ietf.org/html/rfc3447.
*
*/
#include <cstring>
#include "ippcp.h"
#include "examples_common.h"
#include "bignum.h"
/*! 3072-bit RSA Modulus N = P*Q */
BigNumber N("0xA7A1882A7FB896786034D07FB1B9F6327C27BDD7CE6FE39C285AE3B6C34259ADC0DC4F7B9C7DEC3CA4A20D3407339EEDD\
7A12A421DA18F5954673CAC2FF059156ECC73C6861EC761E6A0F2A5A033A6768C6A42D8B459E1B4932349E84EFD92DF59B45935F3D0E3081\
7C66201AA99D07AE36C5D74F408D69CC08F044151FF4960E531360CB19077833ADF7BCE77ECFAA133C0CCC63C93B856814569E0B9884EE55\
4061B9A20AB46C38263C094DAE791AA61A17F8D16F0E85B7E5CE3B067ECE89E20BC4E8F1AE814B276D234E04F4E766F501DA74EA7E3817C2\
4EA35D016676CECE652B823B051625573CA92757FC720D254ECF1DCBBFD21D98307561ECAAB545480C7C52AD7E9FA6B597F5FE550559C2FE\
923205AC1761A99737CA02D7B19822E008A8969349C87FB874C81620E38F613C8521F0381FE5BA55B74827DAD3E1CF2AA29C6933629F2B28\
6AD11BE88FA6436E7E3F64A75E3595290DC0D1CD5EEE7AAAC54959CC53BD5A934A365E72DD81A2BD4FB9A67821BFFEDF2EF2BD94913DE8B");
/*! Public exponent */
BigNumber E("0x1415a7");
/*! Private exponent */
BigNumber D("0x073A5FC4CD642F6113DFFC4F84035CEE3A2B8ACC549703751A1D6A5EAA13487229A58EF7D7A522BB9F4F25510F1AA0F74\
C6A8FC8A5C5BE8B91A674EDE50E92F7E34A90A3C9DA999FFFB1D695E4588F451256C163484C151350CB9C7825A7D910845EE5CF826FECF9A\
7C0FBBBBA22BB4A531C131D2E7761BA898F002EBEF8AB87218511F81D3266E1EC07A7CA8622514C6DFDC86C67679A2C8F5F031DE9A0C22B5\
A88060B46EE0C64D3B9AF3C0A379BCD9C6A1B51CF6480456D3FD6DEF94CD2A6C171DD3F010E3C9D662BC857208248C94EBCB9FD997B9FF4A\
7E5FD95558569906525E741D78344F6F6CFDBD59D4FAA52EE3FA964FB7CCCB2D6BE1935D211FE1498217716273939A946081FD8509913FD4\
7747C5C2F03EFD4D6FC9C6FCFD8402E9F40A0A5B3DE3CA2B3C0FAC9456938FAA6CF2C20E3912E5981C9876D8CA1FF29B87A15EEAE0CCCE3F\
8A8F1E405091C083B98BCC5FE0D0DEAAE33C67C0394437F0ECCB385B7EFB17AEEBBA8AFAECCA30A2F63EAC8F0AC8F1EACAD85BBCAF3960B");
/*! Reference value of signature */
static const Ipp8u signatureRef[] =
"\x96\x87\x11\x5b\xe4\x78\xe4\xb6\x42\xcd\x36\x93\x92\xb9\xdd\x0f\x35\x76\xe7\x04\xaf\x72\x18\xb1\xf9\x4d\x7f\x8f\
\xe7\xf0\x70\x73\xe3\xe8\xe1\x18\x6f\xa7\x68\x97\x7d\x6b\x51\x4e\x51\x34\x59\xf2\x37\x3d\xf6\xec\x52\xe3\xde\x9b\
\xd8\x3f\xcc\x5c\xc3\xe6\xb9\x7f\x8b\x3f\xb5\x34\x16\x3c\x64\xf5\x26\x76\x20\x70\x0e\x9d\x8c\x52\xb3\xdf\x61\xa7\
\xc3\x74\x8e\xf1\x59\xd6\xb3\x90\x89\x5a\xfa\x3a\xf5\x91\x09\xa5\x47\x8d\x01\x6d\x96\xc4\x9f\x68\xdf\xc7\x35\xba\
\x2a\xaf\xd5\x01\x2c\x13\x51\x5e\xd6\x64\x4f\x0d\x41\x09\xc4\x55\x56\xe1\x4a\x38\x21\xe1\xaa\x24\xbe\xb8\xa8\x1a\
\x48\xda\x27\xf1\x31\xde\x84\xf7\xba\x51\x58\x1d\x81\xb8\xff\x31\xba\x92\xb8\xa1\xfd\xe8\x67\xf0\x7e\x32\xe6\xc2\
\x70\x92\x53\x44\x81\x74\xdd\x31\x32\x4d\xbc\x32\xb0\x5f\x07\x58\x7f\x76\xa9\x99\x7d\xec\xb8\x0f\x38\xd8\xc1\x3d\
\x0f\x6e\xb3\xc1\x0e\x3d\x96\xa2\x29\x3f\x74\x64\xf1\xe0\x46\x02\xef\x6e\x84\xc2\xd0\x24\x5d\x7d\xb2\x56\xa6\x7d\
\x13\x2a\x47\xca\xe9\xab\xe0\x6b\x61\xa8\x96\x8f\x50\xa1\x74\x99\x95\xdc\x15\xef\x0d\xcb\x1d\x5f\x59\x59\xe4\xd4\
\x54\xc8\x54\x7b\xbb\x4d\x19\x56\x98\xf4\x84\x61\x7b\xfd\x12\x2a\xca\xae\x2d\x0e\x8c\x76\xd2\x8b\x24\x00\x5a\xb0\
\x3c\xaa\x78\x1e\xa9\x7b\x1c\x4d\x93\x96\xa1\x6f\x79\x98\xee\xe7\xdd\xd9\xde\x4c\xab\xe5\x70\x32\xd9\x43\x8a\x5d\
\x99\xc6\xb3\x4a\x95\x61\x22\x35\x02\x63\xc7\xe9\x98\xbc\x61\xde\xc9\x13\x81\x01\x2e\x68\x6d\x07\x9e\x39\xe9\x6b\
\x1e\xa4\xbf\xdb\x7c\xdf\x63\x0d\xdb\x42\x2c\x6b\x58\x0e\x55\x06\xc9\xcc\x3d\x6c\x10\x0f\x20\x41\xd1\x7c\xea\xaa\
\xa5\x45\x89\x24\x9f\x04\xa1\x37\x0f\xfa\x3b\xf3\xff\x1a\xde\xb8\x90\x68\x86\x98";
/*! Message to be signed */
static const Ipp8u sourceMessage[] =
"\x92\x21\xf0\xfe\x91\x15\x84\x35\x54\xd5\x68\x5d\x9f\xe6\x9d\xc4\x9e\x95\xce\xb5\x79\x39\x86\xe4\x28\xb8\xa1\x0b\
\x89\x4c\x01\xd6\xaf\x87\x82\xfd\x7d\x95\x2f\xaf\x74\xc2\xb6\x37\xca\x3b\x19\xda\xbc\x19\xa7\xfe\x25\x9b\x2b\x92\
\x4e\xb3\x63\xa9\x08\xc5\xb3\x68\xf8\xab\x1b\x23\x33\xfc\x67\xc3\x0b\x8e\xa5\x6b\x28\x39\xdc\x5b\xda\xde\xfb\x14\
\xad\xa8\x10\xbc\x3e\x92\xba\xc5\x4e\x2a\xe1\xca\x15\x94\xa4\xb9\xd8\xd1\x93\x37\xbe\x42\x1f\x40\xe0\x67\x4e\x0e\
\x9f\xed\xb4\x3d\x3a\xe8\x9e\x2c\xa0\x5d\x90\xa6\x82\x03\xf2\xc2";
/*! Salt */
static const Ipp8u salt[] =
"\x61\xa7\x62\xf8\x96\x8d\x5f\x36\x7e\x2d\xbc\xac\xb4\x02\x16\x53\xdc\x75\x43\x7d\x90\x00\xe3\x16\x9d\x94\x37\x29\
\x70\x38\x37\xa5\xcb\xf4\xde\x62\xbd\xed\xc9\x5f\xd0\xd1\x00\x4e\x84\x75\x14\x52";
/*! Main function */
int main(void)
{
/* RSA Modulus N = P*Q in bits */
const int RSA_MODULUS = 3072;
/* Internal function status */
IppStatus status = ippStsNoErr;
/* Size in bits of RSA modulus */
const int bitSizeN = N.BitSize();
/* Size in bits of RSA private exponent */
const int bitSizeD = D.BitSize();
/* Allocate memory for signature.
* Size shall be equal to the RSA modulus size.
*/
const int signatureLen = bitSizeInBytes(RSA_MODULUS);
Ipp8u* pSignature = new Ipp8u[signatureLen];
/* Allocate memory private key.
* There are two types of private keys that are supported: Type1 and Type2.
* You can choose any of them, depending on your private key representation.
* This example uses Type1 key.
* For more information, see https://www.intel.com/content/www/us/en/docs/ipp-crypto/developer-reference/current/crypto-ref-getsize-public-private1-private2.html
*/
int keySize = 0;
ippsRSA_GetSizePrivateKeyType1(bitSizeN, bitSizeD, &keySize);
IppsRSAPrivateKeyState* pPrvKeyType1 = (IppsRSAPrivateKeyState*)(new Ipp8u[keySize]);
ippsRSA_InitPrivateKeyType1(bitSizeN, bitSizeD, pPrvKeyType1, keySize);
if (pPrvKeyType1) {
do {
/* Set private key */
status = ippsRSA_SetPrivateKeyType1(N, D, pPrvKeyType1);
if (!checkStatus("ippsRSA_SetPrivateKeyType1", ippStsNoErr, status))
break;
/* Calculate temporary buffer size */
int bufSize = 0;
status = ippsRSA_GetBufferSizePrivateKey(&bufSize, pPrvKeyType1);
if (!checkStatus("ippsRSA_GetBufferSizePrivateKey", ippStsNoErr, status))
break;
Ipp8u* pScratchBuffer = new Ipp8u[bufSize];
/* Sign message with use of SHA384 hash function */
status = ippsRSASign_PSS_rmf(sourceMessage, sizeof(sourceMessage)-1,
salt, sizeof(salt)-1,
pSignature,
pPrvKeyType1, NULL /* public key */,
ippsHashMethod_SHA384(),
pScratchBuffer);
if (pScratchBuffer) delete [] pScratchBuffer;
if (!checkStatus("ippsRSASign_PSS_rmf", ippStsNoErr, status))
break;
/* Compare signature with expected value */
if (0 != memcmp(signatureRef, pSignature, signatureLen)) {
printf("ERROR: Signature and reference value do not match\n");
status = ippStsErr;
}
} while (0);
}
if (pPrvKeyType1) delete [] (Ipp8u*)pPrvKeyType1;
if (pSignature) delete [] pSignature;
PRINT_EXAMPLE_STATUS("ippsRSASign_PSS_rmf", "RSA-PSS 3072 (SHA-384) Type1 Signature", ippStsNoErr == status);
return status;
}

@ -0,0 +1,126 @@
/*******************************************************************************
* Copyright (C) 2020 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief SMS4 Cipher Block Chaining mode of operation (CBC) example
*
* This example demonstrates usage of SMS4 block cipher
* run with CBC mode of operation. Decryption scheme.
*
* The CBC mode of operation is implemented according to the
* "NIST Special Publication 800-38A: Recommendation for Block Cipher Modes of
* Operation" document:
*
* https://csrc.nist.gov/publications/detail/sp/800-38a/final
*
*/
#include <string.h>
#include "ippcp.h"
#include "examples_common.h"
/*! SMS4 block size in bytes */
static const int SMS4_BLOCK_SIZE = 16;
/*! Key size in bytes */
static const int KEY_SIZE = 16;
/*! Message size in bytes */
static const int SRC_LEN = 16;
/*! Plain text */
static Ipp8u plainText[SRC_LEN] = {
0xAA,0xAA,0xAA,0xAA,0xBB,0xBB,0xBB,0xBB,
0xCC,0xCC,0xCC,0xCC,0xDD,0xDD,0xDD,0xDD
};
/*! Cipher text */
static Ipp8u cipherText[SRC_LEN] = {
0x78,0xEB,0xB1,0x1C,0xC4,0x0B,0x0A,0x48,
0x31,0x2A,0xAE,0xB2,0x04,0x02,0x44,0xCB
};
/*! 128-bit secret key */
static Ipp8u key[KEY_SIZE] = {
0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10
};
/*! Initialization vector for CBC mode.
* Size of initialization vector for SMS4-CBC shall be equal to the size of SMS4 block (16 bytes).
*/
static Ipp8u iv[SMS4_BLOCK_SIZE] = {
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F
};
/*! Main function */
int main(void)
{
/* Size of SMS4 context structure. It will be set up in ippsSMS4GetSize(). */
int ctxSize = 0;
Ipp8u pOut[SRC_LEN] = {};
/* Internal function status */
IppStatus status = ippStsNoErr;
/* Pointer to SMS4 context structure */
IppsSMS4Spec* pSMS4 = 0;
do {
/* 1. Get size needed for SMS4 context structure */
status = ippsSMS4GetSize(&ctxSize);
if (!checkStatus("ippsSMS4GetSize", ippStsNoErr, status))
return status;
/* 2. Allocate memory for SMS4 context structure */
pSMS4 = (IppsSMS4Spec*)(new Ipp8u[ctxSize]);
if (NULL == pSMS4) {
printf("ERROR: Cannot allocate memory (%d bytes) for SMS4 context\n", ctxSize);
return -1;
}
/* 3. Initialize SMS4 context */
status = ippsSMS4Init(key, sizeof(key), pSMS4, ctxSize);
if (!checkStatus("ippsSMS4Init", ippStsNoErr, status))
break;
/* 4. Decryption */
status = ippsSMS4DecryptCBC(cipherText, pOut, sizeof(cipherText), pSMS4, iv);
if (!checkStatus("ippsSMS4DecryptCBC", ippStsNoErr, status))
break;
/* Compare decrypted message and reference text */
if (0 != memcmp(pOut, plainText, sizeof(plainText))) {
printf("ERROR: Decrypted and reference messages do not match\n");
break;
}
} while (0);
/* 5. Remove secret and release resources */
ippsSMS4Init(0, KEY_SIZE, pSMS4, ctxSize);
if (pSMS4) delete [] (Ipp8u*)pSMS4;
PRINT_EXAMPLE_STATUS("ippsSMS4DecryptCBC", "SMS4-CBC Decryption", !status)
return status;
}

@ -0,0 +1,126 @@
/*******************************************************************************
* Copyright (C) 2020 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
*
* \brief SMS4 Cipher Block Chaining mode of operation (CBC) example
*
* This example demonstrates usage of SMS4 block cipher
* run with CBC mode of operation. Encryption scheme.
*
* The CBC mode of operation is implemented according to the
* "NIST Special Publication 800-38A: Recommendation for Block Cipher Modes of
* Operation" document:
*
* https://csrc.nist.gov/publications/detail/sp/800-38a/final
*
*/
#include <string.h>
#include "ippcp.h"
#include "examples_common.h"
/*! SMS4 block size in bytes */
static const int SMS4_BLOCK_SIZE = 16;
/*! Key size in bytes */
static const int KEY_SIZE = 16;
/*! Message size in bytes */
static const int SRC_LEN = 16;
/*! Plain text */
static Ipp8u plainText[SRC_LEN] = {
0xAA,0xAA,0xAA,0xAA,0xBB,0xBB,0xBB,0xBB,
0xCC,0xCC,0xCC,0xCC,0xDD,0xDD,0xDD,0xDD
};
/*! Cipher text */
static Ipp8u cipherText[SRC_LEN] = {
0x78,0xEB,0xB1,0x1C,0xC4,0x0B,0x0A,0x48,
0x31,0x2A,0xAE,0xB2,0x04,0x02,0x44,0xCB
};
/*! 128-bit secret key */
static Ipp8u key[KEY_SIZE] = {
0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF,
0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10
};
/*! Initialization vector for CBC mode.
* Size of initialization vector for SMS4-CBC shall be equal to the size of SMS4 block (16 bytes).
*/
static Ipp8u iv[SMS4_BLOCK_SIZE] = {
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F
};
/*! Main function */
int main(void)
{
/* Size of SMS4 context structure. It will be set up in ippsSMS4GetSize(). */
int ctxSize = 0;
Ipp8u pOut[SRC_LEN] = {};
/* Internal function status */
IppStatus status = ippStsNoErr;
/* Pointer to SMS4 context structure */
IppsSMS4Spec* pSMS4 = 0;
do {
/* 1. Get size needed for SMS4 context structure */
status = ippsSMS4GetSize(&ctxSize);
if (!checkStatus("ippsSMS4GetSize", ippStsNoErr, status))
return status;
/* 2. Allocate memory for SMS4 context structure */
pSMS4 = (IppsSMS4Spec*)(new Ipp8u[ctxSize]);
if (NULL == pSMS4) {
printf("ERROR: Cannot allocate memory (%d bytes) for SMS4 context\n", ctxSize);
return -1;
}
/* 3. Initialize SMS4 context */
status = ippsSMS4Init(key, sizeof(key), pSMS4, ctxSize);
if (!checkStatus("ippsSMS4Init", ippStsNoErr, status))
break;
/* 4. Encryption */
status = ippsSMS4EncryptCBC(plainText, pOut, sizeof(plainText), pSMS4, iv);
if (!checkStatus("ippsSMS4EncryptCBC", ippStsNoErr, status))
break;
/* Compare encrypted message and reference text */
if (0 != memcmp(pOut, cipherText, sizeof(cipherText))) {
printf("ERROR: Encrypted and reference messages do not match\n");
break;
}
} while (0);
/* 5. Remove secret and release resources */
ippsSMS4Init(0, KEY_SIZE, pSMS4, ctxSize);
if (pSMS4) delete [] (Ipp8u*)pSMS4;
PRINT_EXAMPLE_STATUS("ippsSMS4EncryptCBC", "SMS4-CBC Encryption", !status)
return status;
}

@ -0,0 +1,438 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#include "bignum.h"
#include <cstring>
#include <cstdlib>
#include "utils.h"
//////////////////////////////////////////////////////////////////////
//
// BigNumber
//
//////////////////////////////////////////////////////////////////////
BigNumber::~BigNumber()
{
delete [] (Ipp8u*)m_pBN;
}
bool BigNumber::create(const Ipp32u* pData, int length, IppsBigNumSGN sgn)
{
int size;
ippsBigNumGetSize(length, &size);
m_pBN = (IppsBigNumState*)( new Ipp8u[size] );
if(!m_pBN)
return false;
ippsBigNumInit(length, m_pBN);
if (pData)
ippsSet_BN(sgn, length, pData, m_pBN);
return true;
}
//
// constructors
//
BigNumber::BigNumber(Ipp32u value)
{
create(&value, 1, IppsBigNumPOS);
}
BigNumber::BigNumber(Ipp32s value)
{
Ipp32s avalue = abs(value);
create((Ipp32u*)&avalue, 1, (value<0)? IppsBigNumNEG : IppsBigNumPOS);
}
BigNumber::BigNumber(const IppsBigNumState* pBN)
{
IppsBigNumSGN bnSgn;
int bnBitLen;
Ipp32u* bnData;
ippsRef_BN(&bnSgn, &bnBitLen, &bnData, pBN);
create(bnData, BITSIZE_WORD(bnBitLen), bnSgn);
}
BigNumber::BigNumber(const Ipp32u* pData, int length, IppsBigNumSGN sgn)
{
create(pData, length, sgn);
}
static char HexDigitList[] = "0123456789ABCDEF";
BigNumber::BigNumber(const char* s)
{
bool neg = '-' == s[0];
if(neg) s++;
bool hex = ('0'==s[0]) && (('x'==s[1]) || ('X'==s[1]));
int dataLen;
Ipp32u base;
if(hex) {
s += 2;
base = 0x10;
dataLen = (int)(strlen_safe(s) + 7)/8;
}
else {
base = 10;
dataLen = (int)(strlen_safe(s) + 9)/10;
}
create(0, dataLen);
*(this) = Zero();
while(*s) {
char tmp[2] = {s[0],0};
Ipp32u digit = (Ipp32u)strcspn(HexDigitList, tmp);
*this = (*this) * base + BigNumber( digit );
s++;
}
if(neg)
(*this) = Zero()- (*this);
}
BigNumber::BigNumber(const BigNumber& bn)
{
IppsBigNumSGN bnSgn;
int bnBitLen;
Ipp32u* bnData;
ippsRef_BN(&bnSgn, &bnBitLen, &bnData, bn);
create(bnData, BITSIZE_WORD(bnBitLen), bnSgn);
}
//
// set value
//
void BigNumber::Set(const Ipp32u* pData, int length, IppsBigNumSGN sgn)
{
ippsSet_BN(sgn, length, pData, BN(*this));
}
//
// constants
//
const BigNumber& BigNumber::Zero()
{
static const BigNumber zero(0);
return zero;
}
const BigNumber& BigNumber::One()
{
static const BigNumber one(1);
return one;
}
const BigNumber& BigNumber::Two()
{
static const BigNumber two(2);
return two;
}
//
// arithmetic operators
//
BigNumber& BigNumber::operator =(const BigNumber& bn)
{
if(this != &bn) { // prevent self copy
IppsBigNumSGN bnSgn;
int bnBitLen;
Ipp32u* bnData;
ippsRef_BN(&bnSgn, &bnBitLen, &bnData, bn);
delete [] (Ipp8u*)m_pBN;
create(bnData, BITSIZE_WORD(bnBitLen), bnSgn);
}
return *this;
}
BigNumber& BigNumber::operator += (const BigNumber& bn)
{
int aBitLen;
ippsRef_BN(NULL, &aBitLen, NULL, *this);
int bBitLen;
ippsRef_BN(NULL, &bBitLen, NULL, bn);
int rBitLen = IPP_MAX(aBitLen, bBitLen) + 1;
BigNumber result(0, BITSIZE_WORD(rBitLen));
ippsAdd_BN(*this, bn, result);
*this = result;
return *this;
}
BigNumber& BigNumber::operator -= (const BigNumber& bn)
{
int aBitLen;
ippsRef_BN(NULL, &aBitLen, NULL, *this);
int bBitLen;
ippsRef_BN(NULL, &bBitLen, NULL, bn);
int rBitLen = IPP_MAX(aBitLen, bBitLen);
BigNumber result(0, BITSIZE_WORD(rBitLen));
ippsSub_BN(*this, bn, result);
*this = result;
return *this;
}
BigNumber& BigNumber::operator *= (const BigNumber& bn)
{
int aBitLen;
ippsRef_BN(NULL, &aBitLen, NULL, *this);
int bBitLen;
ippsRef_BN(NULL, &bBitLen, NULL, bn);
int rBitLen = aBitLen + bBitLen;
BigNumber result(0, BITSIZE_WORD(rBitLen));
ippsMul_BN(*this, bn, result);
*this = result;
return *this;
}
BigNumber& BigNumber::operator *= (Ipp32u n)
{
int aBitLen;
ippsRef_BN(NULL, &aBitLen, NULL, *this);
BigNumber result(0, BITSIZE_WORD(aBitLen+32));
BigNumber bn(n);
ippsMul_BN(*this, bn, result);
*this = result;
return *this;
}
BigNumber& BigNumber::operator %= (const BigNumber& bn)
{
BigNumber remainder(bn);
ippsMod_BN(BN(*this), BN(bn), BN(remainder));
*this = remainder;
return *this;
}
BigNumber& BigNumber::operator /= (const BigNumber& bn)
{
BigNumber quotient(*this);
BigNumber remainder(bn);
ippsDiv_BN(BN(*this), BN(bn), BN(quotient), BN(remainder));
*this = quotient;
return *this;
}
BigNumber operator + (const BigNumber& a, const BigNumber& b )
{
BigNumber r(a);
return r += b;
}
BigNumber operator - (const BigNumber& a, const BigNumber& b )
{
BigNumber r(a);
return r -= b;
}
BigNumber operator * (const BigNumber& a, const BigNumber& b )
{
BigNumber r(a);
return r *= b;
}
BigNumber operator * (const BigNumber& a, Ipp32u n)
{
BigNumber r(a);
return r *= n;
}
BigNumber operator / (const BigNumber& a, const BigNumber& b )
{
BigNumber q(a);
return q /= b;
}
BigNumber operator % (const BigNumber& a, const BigNumber& b )
{
BigNumber r(b);
ippsMod_BN(BN(a), BN(b), BN(r));
return r;
}
//
// modulo arithmetic
//
BigNumber BigNumber::Modulo(const BigNumber& a) const
{
return a % *this;
}
BigNumber BigNumber::InverseAdd(const BigNumber& a) const
{
BigNumber t = Modulo(a);
if(t==BigNumber::Zero())
return t;
else
return *this - t;
}
BigNumber BigNumber::InverseMul(const BigNumber& a) const
{
BigNumber r(*this);
ippsModInv_BN(BN(a), BN(*this), BN(r));
return r;
}
BigNumber BigNumber::ModAdd(const BigNumber& a, const BigNumber& b) const
{
BigNumber r = this->Modulo(a+b);
return r;
}
BigNumber BigNumber::ModSub(const BigNumber& a, const BigNumber& b) const
{
BigNumber r = this->Modulo(a + this->InverseAdd(b));
return r;
}
BigNumber BigNumber::ModMul(const BigNumber& a, const BigNumber& b) const
{
BigNumber r = this->Modulo(a*b);
return r;
}
//
// comparison
//
int BigNumber::compare(const BigNumber &bn) const
{
Ipp32u result;
BigNumber tmp = *this - bn;
ippsCmpZero_BN(BN(tmp), &result);
return (result==IS_ZERO)? 0 : (result==GREATER_THAN_ZERO)? 1 : -1;
}
bool operator < (const BigNumber &a, const BigNumber &b) { return a.compare(b) < 0; }
bool operator > (const BigNumber &a, const BigNumber &b) { return a.compare(b) > 0; }
bool operator == (const BigNumber &a, const BigNumber &b) { return 0 == a.compare(b);}
bool operator != (const BigNumber &a, const BigNumber &b) { return 0 != a.compare(b);}
// easy tests
//
bool BigNumber::IsOdd() const
{
Ipp32u* bnData;
ippsRef_BN(NULL, NULL, &bnData, *this);
return bnData[0]&1;
}
//
// size of BigNumber
//
int BigNumber::LSB() const
{
if( *this == BigNumber::Zero() )
return 0;
vector<Ipp32u> v;
num2vec(v);
int lsb = 0;
vector<Ipp32u>::iterator i;
for(i=v.begin(); i!=v.end(); i++) {
Ipp32u x = *i;
if(0==x)
lsb += 32;
else {
while(0==(x&1)) {
lsb++;
x >>= 1;
}
break;
}
}
return lsb;
}
int BigNumber::MSB() const
{
if( *this == BigNumber::Zero() )
return 0;
vector<Ipp32u> v;
num2vec(v);
int msb = (int)v.size()*32 -1;
vector<Ipp32u>::reverse_iterator i;
for(i=v.rbegin(); i!=v.rend(); i++) {
Ipp32u x = *i;
if(0==x)
msb -=32;
else {
while(!(x&0x80000000)) {
msb--;
x <<= 1;
}
break;
}
}
return msb;
}
int Bit(const vector<Ipp32u>& v, int n)
{
return 0 != ( v[n>>5] & (1<<(n&0x1F)) );
}
//
// conversions and output
//
void BigNumber::num2vec( vector<Ipp32u>& v ) const
{
int bnBitLen;
Ipp32u* bnData;
ippsRef_BN(NULL, &bnBitLen, &bnData, *this);
int len = BITSIZE_WORD(bnBitLen);;
for(int n=0; n<len; n++)
v.push_back( bnData[n] );
}
void BigNumber::num2hex( string& s ) const
{
IppsBigNumSGN bnSgn;
int bnBitLen;
Ipp32u* bnData;
ippsRef_BN(&bnSgn, &bnBitLen, &bnData, *this);
int len = BITSIZE_WORD(bnBitLen);
if (bnSgn == ippBigNumNEG) s.append(1, '-');
s.append(1, '0');
s.append(1, 'x');
for(int n=len; n>0; n--) {
Ipp32u x = bnData[n-1];
for(int nd=8; nd>0; nd--) {
char c = HexDigitList[(x>>(nd-1)*4)&0xF];
s.append(1, c);
}
}
}
ostream& operator << ( ostream &os, const BigNumber& a)
{
string s;
a.num2hex(s);
os << s.c_str();
return os;
}

@ -0,0 +1,107 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#if !defined _BIGNUMBER_H_
#define _BIGNUMBER_H_
#include "ippcp.h"
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
class BigNumber
{
public:
BigNumber(Ipp32u value=0);
BigNumber(Ipp32s value);
BigNumber(const IppsBigNumState* pBN);
BigNumber(const Ipp32u* pData, int length=1, IppsBigNumSGN sgn=IppsBigNumPOS);
BigNumber(const BigNumber& bn);
BigNumber(const char *s);
virtual ~BigNumber();
// set value
void Set(const Ipp32u* pData, int length=1, IppsBigNumSGN sgn=IppsBigNumPOS);
// conversion to IppsBigNumState
friend IppsBigNumState* BN(const BigNumber& bn) {return bn.m_pBN;}
operator IppsBigNumState* () const { return m_pBN; }
// some useful constatns
static const BigNumber& Zero();
static const BigNumber& One();
static const BigNumber& Two();
// arithmetic operators probably need
BigNumber& operator = (const BigNumber& bn);
BigNumber& operator += (const BigNumber& bn);
BigNumber& operator -= (const BigNumber& bn);
BigNumber& operator *= (Ipp32u n);
BigNumber& operator *= (const BigNumber& bn);
BigNumber& operator /= (const BigNumber& bn);
BigNumber& operator %= (const BigNumber& bn);
friend BigNumber operator + (const BigNumber& a, const BigNumber& b);
friend BigNumber operator - (const BigNumber& a, const BigNumber& b);
friend BigNumber operator * (const BigNumber& a, const BigNumber& b);
friend BigNumber operator * (const BigNumber& a, Ipp32u);
friend BigNumber operator % (const BigNumber& a, const BigNumber& b);
friend BigNumber operator / (const BigNumber& a, const BigNumber& b);
// modulo arithmetic
BigNumber Modulo(const BigNumber& a) const;
BigNumber ModAdd(const BigNumber& a, const BigNumber& b) const;
BigNumber ModSub(const BigNumber& a, const BigNumber& b) const;
BigNumber ModMul(const BigNumber& a, const BigNumber& b) const;
BigNumber InverseAdd(const BigNumber& a) const;
BigNumber InverseMul(const BigNumber& a) const;
// comparisons
friend bool operator < (const BigNumber& a, const BigNumber& b);
friend bool operator > (const BigNumber& a, const BigNumber& b);
friend bool operator == (const BigNumber& a, const BigNumber& b);
friend bool operator != (const BigNumber& a, const BigNumber& b);
friend bool operator <= (const BigNumber& a, const BigNumber& b) {return !(a>b);}
friend bool operator >= (const BigNumber& a, const BigNumber& b) {return !(a<b);}
// easy tests
bool IsOdd() const;
bool IsEven() const { return !IsOdd(); }
// size of BigNumber
int MSB() const;
int LSB() const;
int BitSize() const { return MSB()+1; }
int DwordSize() const { return (BitSize()+31)>>5;}
friend int Bit(const vector<Ipp32u>& v, int n);
// conversion and output
void num2hex( string& s ) const; // convert to hex string
void num2vec( vector<Ipp32u>& v ) const; // convert to 32-bit word vector
friend ostream& operator << (ostream& os, const BigNumber& a);
protected:
bool create(const Ipp32u* pData, int length, IppsBigNumSGN sgn=IppsBigNumPOS);
int compare(const BigNumber& ) const;
IppsBigNumState* m_pBN;
};
// convert bit size into 32-bit words
#define BITSIZE_WORD(n) ((((n)+31)>>5))
#endif // _BIGNUMBER_H_

@ -0,0 +1,90 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/* Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography) */
/*!
*
* \file
* \brief Common header for Intel IPP Cryptography examples
*
*/
#ifndef EXAMPLES_COMMON_H_
#define EXAMPLES_COMMON_H_
#include <stdio.h>
/*! Macro that prints status message depending on condition */
#define PRINT_EXAMPLE_STATUS(function_name, description, success_condition) \
printf("+--------------------------------------------------------------|\n"); \
printf(" Function: %s\n", function_name); \
printf(" Description: %s\n", description); \
if (success_condition) { \
printf(" Status: PASSED!\n"); \
} else { \
printf(" Status: FAILED!\n"); \
} \
printf("+--------------------------------------------------------------|\n");
/*!
* Helper function to compare expected and actual function return statuses and display
* an error mesage if those are different.
*
* \param[in] Function name to display
* \param[in] Expected status
* \param[in] Actual status
*
* \return zero if statuses are not equal, otherwise - non-zero value
*/
inline int checkStatus(const char* funcName, IppStatus expectedStatus, IppStatus status)
{
if (expectedStatus != status) {
printf("%s: unexpected return status\n", funcName);
printf("Expected: %s\n", ippcpGetStatusString(expectedStatus));
printf("Received: %s\n", ippcpGetStatusString(status));
return 0;
}
return 1;
}
/*!
* Helper function to convert bit size into byte size.
*
* \param[in] Size in bits
*
* \return size in bytes
*/
inline int bitSizeInBytes(int nBits)
{
return (nBits + 7) >> 3;
}
/*!
* Helper function to convert bit size into word size.
*
* \param[in] Size in bits
*
* \return size in words
*/
inline int bitSizeInWords(int nBits)
{
return (nBits + 31) >> 5;
}
#endif /* #ifndef EXAMPLES_COMMON_H_ */

@ -0,0 +1,39 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
* \brief The source file contains the implementation of Request class which simulates a queue in the example of using the multi buffer RSA.
*
*/
#include "bignum.h"
#include "requests.h"
#include "examples_common.h"
/* Allocated memory for cipher and decipher texts is not less than RSA modulus size and source plain text */
Request::Request(const BigNumber& pPlainText, const BigNumber& N, const BigNumber& E, const BigNumber& D)
: m_plainText(pPlainText)
, m_N(N)
, m_E(E)
, m_D(D)
, m_cipherText(N)
, m_decipherText(pPlainText)
, m_isCompatible(true) {}
Request::~Request(){}

@ -0,0 +1,98 @@
/*******************************************************************************
* Copyright (C) 2019 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*!
*
* \file
* \brief The header contains the declaration of Request class which simulates a queue in the example of using the multi buffer RSA.
*
*/
#if !defined _REQUESTS_H_
#define _REQUESTS_H_
#include "bignum.h"
class Request {
BigNumber m_plainText;
BigNumber m_cipherText;
BigNumber m_decipherText;
BigNumber m_N;
BigNumber m_E;
BigNumber m_D;
bool m_isCompatible;
public:
Request(const BigNumber& pPlainText, const BigNumber& N, const BigNumber& E, const BigNumber& D);
~Request();
IppsBigNumState* GetPlainText() const
{
return m_plainText;
}
IppsBigNumState* GetCipherText() const
{
return m_cipherText;
}
IppsBigNumState* GetDecipherText() const
{
return m_decipherText;
}
int GetBitSizeN() const
{
return m_N.BitSize();
}
const BigNumber& GetValueN() const
{
return m_N;
}
int GetBitSizeE() const
{
return m_E.BitSize();
}
const BigNumber& GetValueE() const
{
return m_E;
}
int GetBitSizeD() const
{
return m_D.BitSize();
}
const BigNumber& GetValueD() const
{
return m_D;
}
void SetCompatibilityStatus(bool status)
{
m_isCompatible = status;
}
bool IsCompatible() const
{
return m_isCompatible;
}
};
#endif /* #ifndef _REQUESTS_H_ */

@ -0,0 +1,47 @@
/*******************************************************************************
* Copyright (C) 2021 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#include "utils.h"
size_t strlen_safe(const char* dest, size_t dmax) {
size_t count;
/* check null pointer */
if (NULL == dest) {
return 0UL;
}
/* check max equal zero */
if (0UL == dmax) {
return 0UL;
}
/* check dmax > 4Kb */
if (dmax > RSIZE_MAX_STR) {
return 0UL;
}
count = 0UL;
while (*dest && dmax) {
++count;
--dmax;
++dest;
}
return count;
}

@ -0,0 +1,35 @@
/*******************************************************************************
* Copyright (C) 2021 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
#ifndef _UTILS_H_
#define _UTILS_H_
#include <stddef.h>
#define RSIZE_MAX_STR (4UL << 10) /* 4Kb */
/**
* \brief
* The strnlen_s function computes the length of the string pointed to by dest.
* \param[in] dest pointer to string
* \param[in] dmax restricted maximum length. (default 4Kb)
* \return size_t
* The function returns the string length, excluding the terminating
* null character. If dest is NULL, then strnlen_s returns 0.
*/
size_t strlen_safe(const char* dest, size_t dmax = RSIZE_MAX_STR);
#endif // _UTILS_H_

File diff suppressed because it is too large Load Diff

@ -0,0 +1,860 @@
/*******************************************************************************
* Copyright (C) 2012 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*
//
// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
//
// Purpose: Basic Types and Macro Definitions
//
*/
#ifndef IPPBASE_H__
#define IPPBASE_H__
#ifdef __cplusplus
extern "C" {
#endif
#if defined (_WIN64)
#define INTEL_PLATFORM "intel64/"
#elif defined (_WIN32)
#define INTEL_PLATFORM "ia32/"
#endif
#if !defined( IPPAPI )
/* Specify explicit calling convention for public functions */
#if defined( IPP_W32DLL ) && (defined( _WIN32 ) || defined( _WIN64 ))
#if defined( _MSC_VER ) || defined( __ICL )
#define IPPAPI( type,name,arg ) \
__declspec(dllimport) type IPP_CALL name arg;
#else
#define IPPAPI( type,name,arg ) type IPP_CALL name arg;
#endif
#else
#define IPPAPI( type,name,arg ) type IPP_CALL name arg;
#endif
#endif
/* icc 2021 supports short float data type, icx supports _Float16 data type */
#define _FLOAT_16 2
#define _SHORT_FLOAT 1
#define _NO_FLOAT_16 0
#if defined(__INTEL_LLVM_COMPILER) && defined(__AVX512FP16__)
# define COMPILER_SUPPORT_SHORT_FLOAT _FLOAT_16
#else
# if defined(__INTEL_COMPILER)
# if(__INTEL_COMPILER >= 2021)
# define COMPILER_SUPPORT_SHORT_FLOAT _SHORT_FLOAT
# endif
# endif
#endif
#if !(defined(COMPILER_SUPPORT_SHORT_FLOAT))
# define COMPILER_SUPPORT_SHORT_FLOAT _NO_FLOAT_16
#endif
#if !defined(_NO_IPP_DEPRECATED)
#if (defined( __ICL ) || defined( __ECL ) || defined(_MSC_VER)) && !defined( _PCS ) && !defined( _PCS_GENSTUBS )
#if( __INTEL_COMPILER >= 1100 ) /* icl 11.0 supports additional comment */
#if( _MSC_VER >= 1400 )
#define IPP_DEPRECATED( comment ) __declspec( deprecated ( comment ))
#else
#pragma message ("your icl version supports additional comment for deprecated functions but it can't be displayed")
#pragma message ("because internal _MSC_VER macro variable setting requires compatibility with MSVC7.1")
#pragma message ("use -Qvc8 switch for icl command line to see these additional comments")
#define IPP_DEPRECATED( comment ) __declspec( deprecated )
#endif
#elif( _MSC_FULL_VER >= 140050727 )&&( !defined( __INTEL_COMPILER ))&&( !defined(__INTEL_LLVM_COMPILER)) /* VS2005 supports additional comment */
#define IPP_DEPRECATED( comment ) __declspec( deprecated ( comment ))
#elif( _MSC_VER <= 1200 )&&( !defined( __INTEL_COMPILER ))&&( !defined(__INTEL_LLVM_COMPILER)) /* VS 6 doesn't support deprecation */
#define IPP_DEPRECATED( comment )
#else
#define IPP_DEPRECATED( comment ) __declspec( deprecated )
#endif
#elif (defined(__ICC) || defined(__ECC) || defined( __GNUC__ )) && !defined( _PCS ) && !defined( _PCS_GENSTUBS )
#if defined( __GNUC__ )
#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405
#define IPP_DEPRECATED( message ) __attribute__(( deprecated( message )))
#else
#define IPP_DEPRECATED( message ) __attribute__(( deprecated ))
#endif
#else
#define IPP_DEPRECATED( comment ) __attribute__(( deprecated ))
#endif
#else
#define IPP_DEPRECATED( comment )
#endif
#else
#define IPP_DEPRECATED( comment )
#endif
#if (defined( __ICL ) || defined( __ECL ) || defined(_MSC_VER))
#if !defined( IPP_NO_DEFAULT_LIB )
#if ((defined( _IPP_SEQUENTIAL_DYNAMIC ) && !defined( _IPP_SEQUENTIAL_STATIC )) || \
(!defined( _IPP_SEQUENTIAL_DYNAMIC ) && defined( _IPP_SEQUENTIAL_STATIC )))
#elif (!defined( _IPP_SEQUENTIAL_DYNAMIC ) && !defined( _IPP_SEQUENTIAL_STATIC ))
#define IPP_NO_DEFAULT_LIB
#else
#error Illegal combination of _IPP_SEQUENTIAL_DYNAMIC/_IPP_SEQUENTIAL_STATIC, only one definition can be defined
#endif
#endif
#else
#define IPP_NO_DEFAULT_LIB
#if (defined(_IPP_SEQUENTIAL_DYNAMIC) || defined(_IPP_SEQUENTIAL_STATIC))
#pragma message ("defines _IPP_SEQUENTIAL_DYNAMIC/_IPP_SEQUENTIAL_STATIC do not have any effect in current configuration")
#endif
#endif
#if defined (_MSC_VER)
#define IPP_CDECL __cdecl
#elif (defined (__INTEL_COMPILER) || defined (__INTEL_LLVM_COMPILER) || defined (__GNUC__ ) || defined (__clang__)) && defined (_ARCH_IA32)
#define IPP_CDECL __attribute((cdecl))
#else
#define IPP_CDECL
#endif
#if defined( _WIN32 ) || defined( _WIN64 )
#define IPP_STDCALL __stdcall
#define IPP_CALL IPP_STDCALL
#define IPP_INT64 __int64
#define IPP_UINT64 unsigned __int64
#else
#define IPP_STDCALL
#define IPP_CALL IPP_CDECL
#define IPP_INT64 long long
#define IPP_UINT64 unsigned long long
#endif
#define IPP_COUNT_OF( obj ) (sizeof(obj)/sizeof(obj[0]))
#define IPP_PI ( 3.14159265358979323846 ) /* ANSI C does not support M_PI */
#define IPP_2PI ( 6.28318530717958647692 ) /* 2*pi */
#define IPP_PI2 ( 1.57079632679489661923 ) /* pi/2 */
#define IPP_PI4 ( 0.78539816339744830961 ) /* pi/4 */
#define IPP_PI180 ( 0.01745329251994329577 ) /* pi/180 */
#define IPP_RPI ( 0.31830988618379067154 ) /* 1/pi */
#define IPP_SQRT2 ( 1.41421356237309504880 ) /* sqrt(2) */
#define IPP_SQRT3 ( 1.73205080756887729353 ) /* sqrt(3) */
#define IPP_LN2 ( 0.69314718055994530942 ) /* ln(2) */
#define IPP_LN3 ( 1.09861228866810969139 ) /* ln(3) */
#define IPP_E ( 2.71828182845904523536 ) /* e */
#define IPP_RE ( 0.36787944117144232159 ) /* 1/e */
#define IPP_EPS23 ( 1.19209289e-07f )
#define IPP_EPS52 ( 2.2204460492503131e-016 )
#define IPP_MAX_8U ( 0xFF )
#define IPP_MAX_16U ( 0xFFFF )
#define IPP_MAX_32U ( 0xFFFFFFFF )
#define IPP_MIN_8U ( 0 )
#define IPP_MIN_16U ( 0 )
#define IPP_MIN_32U ( 0 )
#define IPP_MIN_8S (-128 )
#define IPP_MAX_8S ( 127 )
#define IPP_MIN_16S (-32768 )
#define IPP_MAX_16S ( 32767 )
#define IPP_MIN_32S (-2147483647 - 1 )
#define IPP_MAX_32S ( 2147483647 )
#define IPP_MIN_64U ( 0 )
#if defined( _WIN32 ) || defined ( _WIN64 )
#define IPP_MAX_64S ( 9223372036854775807i64 )
#define IPP_MIN_64S (-9223372036854775807i64 - 1 )
#define IPP_MAX_64U ( 0xffffffffffffffffL ) /* 18446744073709551615 */
#else
#define IPP_MAX_64S ( 9223372036854775807LL )
#define IPP_MIN_64S (-9223372036854775807LL - 1 )
#define IPP_MAX_64U ( 0xffffffffffffffffLL ) /* 18446744073709551615 */
#endif
#define IPP_MINABS_32F ( 1.175494351e-38f )
#define IPP_MAXABS_32F ( 3.402823466e+38f )
#define IPP_EPS_32F ( 1.192092890e-07f )
#define IPP_MINABS_64F ( 2.2250738585072014e-308 )
#define IPP_MAXABS_64F ( 1.7976931348623158e+308 )
#define IPP_EPS_64F ( 2.2204460492503131e-016 )
#define IPP_MAX( a, b ) ( ((a) > (b)) ? (a) : (b) )
#define IPP_MIN( a, b ) ( ((a) < (b)) ? (a) : (b) )
#define IPP_ABS( a ) ( ((a) < 0) ? (-(a)) : (a) )
typedef struct {
int major; /* e.g. 1 */
int minor; /* e.g. 2 */
int majorBuild; /* e.g. 3 */
unsigned int revision; /* e.g. 0xf6f5e5bc */
char targetCpu[4]; /* corresponding to Intel® processor */
const char* Name; /* e.g. "ippsw7" */
const char* Version; /* e.g. "v1.2 Beta" */
const char* BuildDate; /* e.g. "Jul 20 99" */
} IppLibraryVersion;
typedef unsigned char Ipp8u;
typedef unsigned short Ipp16u;
typedef unsigned int Ipp32u;
typedef signed char Ipp8s;
typedef signed short Ipp16s;
typedef signed int Ipp32s;
typedef float Ipp32f;
typedef IPP_INT64 Ipp64s;
typedef IPP_UINT64 Ipp64u;
typedef double Ipp64f;
#if (COMPILER_SUPPORT_SHORT_FLOAT == _FLOAT_16)
typedef _Float16 Ipp16f;
#endif
#if (COMPILER_SUPPORT_SHORT_FLOAT == _SHORT_FLOAT)
typedef short float Ipp16f;
#endif
#if (COMPILER_SUPPORT_SHORT_FLOAT == _NO_FLOAT_16)
typedef Ipp16s Ipp16f;
#endif
typedef struct {
Ipp8s re;
Ipp8s im;
} Ipp8sc;
typedef struct {
Ipp16s re;
Ipp16s im;
} Ipp16sc;
typedef struct {
Ipp16u re;
Ipp16u im;
} Ipp16uc;
typedef struct {
Ipp32s re;
Ipp32s im;
} Ipp32sc;
typedef struct {
Ipp32f re;
Ipp32f im;
} Ipp32fc;
typedef struct {
Ipp64s re;
Ipp64s im;
} Ipp64sc;
typedef struct {
Ipp64f re;
Ipp64f im;
} Ipp64fc;
typedef struct {
Ipp16f re;
Ipp16f im;
} Ipp16fc;
typedef enum {
ippUndef = -1,
ipp1u = 0,
ipp8u = 1,
ipp8uc = 2,
ipp8s = 3,
ipp8sc = 4,
ipp16u = 5,
ipp16uc = 6,
ipp16s = 7,
ipp16sc = 8,
ipp32u = 9,
ipp32uc = 10,
ipp32s = 11,
ipp32sc = 12,
ipp32f = 13,
ipp32fc = 14,
ipp64u = 15,
ipp64uc = 16,
ipp64s = 17,
ipp64sc = 18,
ipp64f = 19,
ipp64fc = 20,
ipp16fc = 21 /* This is necessary for TS */
} IppDataType;
typedef enum {
ippFalse = 0,
ippTrue = 1
} IppBool;
#ifdef __cplusplus
}
#endif
#endif /* IPPBASE_H__ */
#ifndef IPP_CPU_FEATURES__
#define IPP_CPU_FEATURES__
#define ippCPUID_MMX 0x00000001 /* Intel® architecture with MMX(TM) technology supported */
#define ippCPUID_SSE 0x00000002 /* Intel® Streaming SIMD Extensions (Intel® SSE) instruction set */
#define ippCPUID_SSE2 0x00000004 /* Intel® Streaming SIMD Extensions 2 (Intel® SSE2) instruction set */
#define ippCPUID_SSE3 0x00000008 /* Intel® Streaming SIMD Extensions 3 (Intel® SSE3) instruction set */
#define ippCPUID_SSSE3 0x00000010 /* Supplemental Streaming SIMD Extensions 3 (SSSE3) instruction set */
#define ippCPUID_MOVBE 0x00000020 /* Intel® instruction MOVBE */
#define ippCPUID_SSE41 0x00000040 /* Intel® Streaming SIMD Extensions 4.1 (Intel® SSE4.1) instruction set */
#define ippCPUID_SSE42 0x00000080 /* Intel® Streaming SIMD Extensions 4.2 (Intel® SSE4.2) instruction set */
#define ippCPUID_AVX 0x00000100 /* Intel® Advanced Vector Extensions instruction set */
#define ippAVX_ENABLEDBYOS 0x00000200 /* Intel® Advanced Vector Extensions instruction set is supported by OS */
#define ippCPUID_AES 0x00000400 /* */
#define ippCPUID_CLMUL 0x00000800 /* Intel® instruction PCLMULQDQ */
#define ippCPUID_ABR 0x00001000 /* Reserved */
#define ippCPUID_RDRAND 0x00002000 /* Intel® instruction RDRAND */
#define ippCPUID_F16C 0x00004000 /* Intel® instruction F16C */
#define ippCPUID_AVX2 0x00008000 /* Intel® Advanced Vector Extensions 2 */
#define ippCPUID_ADCOX 0x00010000 /* Intel® instructions ADOX/ADCX */
#define ippCPUID_RDSEED 0x00020000 /* Intel® instruction RDSEED */
#define ippCPUID_PREFETCHW 0x00040000 /* Intel® instruction PREFETCHW */
#define ippCPUID_SHA 0x00080000 /* Intel® Secure Hash Algorithm Extensions */
#define ippCPUID_AVX512F 0x00100000 /* Intel® Advanced Vector Extensions 512 Foundation instruction set */
#define ippCPUID_AVX512CD 0x00200000 /* Intel® Advanced Vector Extensions 512 CD instruction set */
#define ippCPUID_AVX512ER 0x00400000 /* Intel® Advanced Vector Extensions 512 ER instruction set */
#define ippCPUID_AVX512PF 0x00800000 /* Intel® Advanced Vector Extensions 512 PF instruction set */
#define ippCPUID_AVX512BW 0x01000000 /* Intel® Advanced Vector Extensions 512 BW instruction set */
#define ippCPUID_AVX512DQ 0x02000000 /* Intel® Advanced Vector Extensions 512 DQ instruction set */
#define ippCPUID_AVX512VL 0x04000000 /* Intel® Advanced Vector Extensions 512 VL instruction set */
#define ippCPUID_AVX512VBMI 0x08000000 /* Intel® Advanced Vector Extensions 512 Bit Manipulation instructions */
#define ippCPUID_MPX 0x10000000 /* Intel® Memory Protection Extensions */
#define ippCPUID_AVX512_4FMADDPS 0x20000000 /* Intel® Advanced Vector Extensions 512 DL floating-point single precision */
#define ippCPUID_AVX512_4VNNIW 0x40000000 /* Intel® Advanced Vector Extensions 512 DL enhanced word variable precision */
#define ippCPUID_KNC 0x80000000 /* Intel® Xeon® Phi(TM) Coprocessor */
#if defined( _WIN32 ) || defined ( _WIN64 )
#define INT64_SUFFIX(name) name##L
#else
#define INT64_SUFFIX(name) name##LL
#endif
#define ippCPUID_AVX512IFMA INT64_SUFFIX(0x100000000) /* Intel® Advanced Vector Extensions 512 IFMA (PMADD52) instruction set */
#define ippCPUID_NOCHECK INT64_SUFFIX(0x8000000000000000) /* Force ippSetCpuFeatures to set CPU features without check */
#define ippCPUID_GETINFO_A INT64_SUFFIX(0x616f666e69746567) /* Force ippGetCpuFeatures to work as cpuid instruction */
#define ippAVX512_ENABLEDBYOS INT64_SUFFIX(0x200000000) /* Intel® Advanced Vector Extensions 512 is supported by OS */
#define ippCPUID_AVX512GFNI INT64_SUFFIX(0x400000000) /* */
#define ippCPUID_AVX512VAES INT64_SUFFIX(0x800000000) /* */
#define ippCPUID_AVX512VCLMUL INT64_SUFFIX(0x1000000000) /* */
#define ippCPUID_AVX512VBMI2 INT64_SUFFIX(0x2000000000) /* Intel® Advanced Vector Extensions 512 Bit Manipulation instructions 2 */
#define ippCPUID_AVX512_FP16 INT64_SUFFIX(0x1000000000) /* Intel(R) Advanced Vector Extensions 512 16-bit floating point (FP16) instruction set */
#define ippCPUID_AVX2VAES INT64_SUFFIX(0x4000000000) /* Intel® Advanced Vector Extensions 256 Bit Vector AES instructions */
#define ippCPUID_AVX2VCLMUL INT64_SUFFIX(0x8000000000) /* Intel® instruction VPCLMULQDQ */
#endif /* IPP_CPU_FEATURES__ */
/* Macros are necessary to build custom Intel® IPP Cryptography static 1cpu library (enable specific features at compile-time) */
#if (!defined(_MERGED_BLD) && defined(IPPCP_CUSTOM_BUILD))
#ifndef IPP_CUSTOM_CPU_FEATURES__
#define IPP_CUSTOM_CPU_FEATURES__
#ifndef IPPCP_AES_ON
#define IPPCP_AES_ON (0)
#endif
#ifndef IPPCP_CLMUL_ON
#define IPPCP_CLMUL_ON (0)
#endif
#ifndef IPPCP_VAES_ON
#define IPPCP_VAES_ON (0)
#endif
#ifndef IPPCP_VCLMUL_ON
#define IPPCP_VCLMUL_ON (0)
#endif
#define IPP_CUSTOM_ENABLED_FEATURES (ippCPUID_AES*IPPCP_AES_ON | ippCPUID_CLMUL*IPPCP_CLMUL_ON | ippCPUID_AVX512VAES*IPPCP_VAES_ON | ippCPUID_AVX512VCLMUL*IPPCP_VCLMUL_ON)
#endif /* IPP_CUSTOM_CPU_FEATURES__ */
#endif /* !defined(_MERGED_BLD) && defined(IPPCP_CUSTOM_BUILD) */
#ifndef IPPSTATUS_H__
#define IPPSTATUS_H__
#ifdef __cplusplus
extern "C" {
#endif
typedef signed int IppStatus;
/* start of common with ippCrypto part - any changes MUST be done in both repositories - IPP & ippCrypto */
#define ippStsCpuNotSupportedErr -9999 /* The target CPU is not supported. */
#define ippStsUnknownStatusCodeErr -216 /* Unknown status code. */
#define ippStsLoadDynErr -221 /* Error when loading the dynamic library. */
#define ippStsLengthErr -15 /* Incorrect value for string length. */
#define ippStsNotSupportedModeErr -14 /* The requested mode is currently not supported. */
#define ippStsContextMatchErr -13 /* Context parameter does not match the operation. */
#define ippStsScaleRangeErr -12 /* Scale bounds are out of range. */
#define ippStsOutOfRangeErr -11 /* Argument is out of range, or point is outside the image. */
#define ippStsDivByZeroErr -10 /* An attempt to divide by zero. */
#define ippStsMemAllocErr -9 /* Memory allocated for the operation is not enough. */
#define ippStsNullPtrErr -8 /* Null pointer error. */
#define ippStsRangeErr -7 /* Incorrect values for bounds: the lower bound is greater than the upper bound. */
#define ippStsSizeErr -6 /* Incorrect value for data size. */
#define ippStsBadArgErr -5 /* Incorrect arg/param of the function. */
#define ippStsNoMemErr -4 /* Not enough memory for the operation. */
#define ippStsErr -2 /* Unknown/unspecified error */
/* no errors */
#define ippStsNoErr 0 /* No errors. */
/* warnings */
#define ippStsNoOperation 1 /* No operation has been executed. */
#define ippStsDivByZero 2 /* Zero value(s) for the divisor in the Div function. */
#define ippStsWaterfall 43 /* Cannot load required library, waterfall is used. */
#define ippStsFeaturesCombination 51 /* Wrong combination of features. */
/* end of common with ippCrypto part */
#ifdef __cplusplus
}
#endif
#endif /* IPPSTATUS_H__ */
/* ippCrypto specific statuses - any changes MUST be done in both repositories - IPP & ippCrypto */
#define ippStsInvalidPoint -1017 /* ippStsInvalidPoint ECC: Invalid point (out of EC).*/
#define ippStsQuadraticNonResidueErr -1016 /* SQRT operation on quadratic non-residue value. */
#define ippStsPointAtInfinity -1015 /* Point at infinity is detected. */
#define ippStsOFBSizeErr -1014 /* Incorrect value for crypto OFB block size. */
#define ippStsIncompleteContextErr -1013 /* Crypto: set up of context is not complete. */
#define ippStsCTRSizeErr -1012 /* Incorrect value for crypto CTR block size. */
#define ippStsEphemeralKeyErr -1011 /* ECC: Invalid ephemeral key. */
#define ippStsMessageErr -1010 /* ECC: Invalid message digest. */
#define ippStsShareKeyErr -1009 /* ECC: Invalid share key. */
#define ippStsInvalidPrivateKey -1008 /* ECC: Invalid private key. */
#define ippStsOutOfECErr -1007 /* ECC: Point out of EC. */
#define ippStsECCInvalidFlagErr -1006 /* ECC: Invalid Flag. */
#define ippStsUnderRunErr -1005 /* Error in data under run. */
#define ippStsPaddingErr -1004 /* Detected padding error indicates the possible data corruption. */
#define ippStsCFBSizeErr -1003 /* Incorrect value for crypto CFB block size. */
#define ippStsPaddingSchemeErr -1002 /* Invalid padding scheme. */
#define ippStsBadModulusErr -1001 /* Bad modulus caused a failure in module inversion. */
#define ippStsInsufficientEntropy 25 /* Generation of the prime/key failed due to insufficient entropy in the random seed and stimulus bit string. */
#define ippStsNotSupportedCpu 36 /* The CPU is not supported. */
#define ippStsMbWarning 53 /* Error(s) in statuses array. */
/* end of ippCrypto specific statuses - any changes MUST be done in both repositories - IPP & ippCrypto */
#if (!defined IPPCPDEFS_H__) || defined( _OWN_BLDPCS )
#define IPPCPDEFS_H__
#ifdef __cplusplus
extern "C" {
#endif
#if !defined( _OWN_BLDPCS )
typedef Ipp32u IppAlgId;
/*
// =========================================================
// Symmetric Ciphers
// =========================================================
*/
typedef enum {
ippPaddingNONE = 0, /*NONE = 0,*/ IppsCPPaddingNONE = 0,
ippPaddingPKCS7 = 1, /*PKCS7 = 1,*/ IppsCPPaddingPKCS7 = 1,
ippPaddingZEROS = 2, /*ZEROS = 2,*/ IppsCPPaddingZEROS = 2
} IppsPadding, IppsCPPadding;
typedef struct _cpDES IppsDESSpec;
typedef struct _cpRijndael128 IppsAESSpec;
typedef struct _cpRijndael128 IppsRijndael128Spec;
typedef struct _cpSMS4 IppsSMS4Spec;
/* TDES */
#define DES_BLOCKSIZE (64) /* cipher blocksize (bits) */
#define TDES_BLOCKSIZE DES_BLOCKSIZE
#define DES_KEYSIZE (64) /* cipher keysize (bits) */
#define TDES_KEYSIZE DES_KEYSIZE
/* AES */
#define IPP_AES_BLOCK_BITSIZE (128) /* cipher blocksizes (bits) */
/* Rijndael */
typedef enum {
ippRijndaelKey128 = 128, IppsRijndaelKey128 = 128, /* 128-bit key */
ippRijndaelKey192 = 192, IppsRijndaelKey192 = 192, /* 192-bit key */
ippRijndaelKey256 = 256, IppsRijndaelKey256 = 256 /* 256-bit key */
} IppsRijndaelKeyLength;
/* AES-CCM (authentication & confidence) */
typedef struct _cpAES_CCM IppsAES_CCMState;
/* AES-GCM (authentication & confidence) */
typedef struct _cpAES_GCM IppsAES_GCMState;
/* AES-XTS (confidence) */
typedef struct _cpAES_XTS IppsAES_XTSSpec;
/* SMS4-CCM (authentication & confidence) */
typedef struct _cpSMS4_CCM IppsSMS4_CCMState;
/*
// =========================================================
// ARCFOUR Stream Cipher
// =========================================================
*/
typedef struct _cpARCfour IppsARCFourState;
#define IPP_ARCFOUR_KEYMAX_SIZE (256) /* max key length (bytes) */
#define MAX_ARCFOUR_KEY_LEN IPP_ARCFOUR_KEYMAX_SIZE /* obsolete */
/*
// =========================================================
// One-Way Hash Functions
// =========================================================
*/
typedef enum {
ippHashAlg_Unknown,
ippHashAlg_SHA1,
ippHashAlg_SHA256,
ippHashAlg_SHA224,
ippHashAlg_SHA512,
ippHashAlg_SHA384,
ippHashAlg_MD5,
ippHashAlg_SM3,
ippHashAlg_SHA512_224,
ippHashAlg_SHA512_256,
ippHashAlg_MaxNo
} IppHashAlgId;
#define IPP_ALG_HASH_UNKNOWN (ippHashAlg_Unknown) /* unknown */
#define IPP_ALG_HASH_SHA1 (ippHashAlg_SHA1) /* SHA1 */
#define IPP_ALG_HASH_SHA256 (ippHashAlg_SHA256) /* SHA256 */
#define IPP_ALG_HASH_SHA224 (ippHashAlg_SHA224) /* SHA224 or SHA256/224 */
#define IPP_ALG_HASH_SHA512 (ippHashAlg_SHA512) /* SHA512 */
#define IPP_ALG_HASH_SHA384 (ippHashAlg_SHA384) /* SHA384 or SHA512/384 */
#define IPP_ALG_HASH_MD5 (ippHashAlg_MD5) /* MD5 */
#define IPP_ALG_HASH_SM3 (ippHashAlg_SM3) /* SM3 */
#define IPP_ALG_HASH_SHA512_224 (ippHashAlg_SHA512_224) /* SHA512/224 */
#define IPP_ALG_HASH_SHA512_256 (ippHashAlg_SHA512_256) /* SHA512/256 */
#define IPP_ALG_HASH_LIMIT (ippHashAlg_MaxNo) /* hash alg limiter*/
typedef struct _cpSHA1 IppsSHA1State;
typedef struct _cpSHA256 IppsSHA256State;
typedef struct _cpSHA256 IppsSHA224State;
typedef struct _cpSHA512 IppsSHA512State;
typedef struct _cpSHA512 IppsSHA384State;
typedef struct _cpMD5 IppsMD5State;
typedef struct _cpSM3 IppsSM3State;
typedef struct _cpHashCtx IppsHashState;
typedef struct _cpHashMethod_rmf IppsHashMethod;
typedef struct _cpHashCtx_rmf IppsHashState_rmf;
#define IPP_SHA1_DIGEST_BITSIZE 160 /* digest size (bits) */
#define IPP_SHA256_DIGEST_BITSIZE 256
#define IPP_SHA224_DIGEST_BITSIZE 224
#define IPP_SHA384_DIGEST_BITSIZE 384
#define IPP_SHA512_DIGEST_BITSIZE 512
#define IPP_MD5_DIGEST_BITSIZE 128
#define IPP_SM3_DIGEST_BITSIZE 256
#define IPP_SHA512_224_DIGEST_BITSIZE 224
#define IPP_SHA512_256_DIGEST_BITSIZE 256
/*
// =========================================================
// Keyed-Hash Message Authentication Codes
// =========================================================
*/
typedef struct _cpHMAC IppsHMACState;
typedef struct _cpHMAC IppsHMACSHA1State;
typedef struct _cpHMAC IppsHMACSHA256State;
typedef struct _cpHMAC IppsHMACSHA224State;
typedef struct _cpHMAC IppsHMACSHA384State;
typedef struct _cpHMAC IppsHMACSHA512State;
typedef struct _cpHMAC IppsHMACMD5State;
typedef struct _cpHMAC_rmf IppsHMACState_rmf;
/*
// =========================================================
// Data Authentication Codes
// =========================================================
*/
typedef struct _cpAES_CMAC IppsAES_CMACState;
/*
// =========================================================
// Big Number Integer Arithmetic
// =========================================================
*/
#define BN_MAXBITSIZE (16*1024) /* bn max size (bits) */
typedef enum {
ippBigNumNEG = 0, IppsBigNumNEG = 0,
ippBigNumPOS = 1, IppsBigNumPOS = 1
} IppsBigNumSGN;
typedef enum {
ippBinaryMethod = 0, IppsBinaryMethod = 0,
ippSlidingWindows = 1, IppsSlidingWindows = 1
} IppsExpMethod;
typedef struct _cpBigNum IppsBigNumState;
typedef struct _cpMontgomery IppsMontState;
typedef struct _cpPRNG IppsPRNGState;
typedef struct _cpPrime IppsPrimeState;
/* External Bit Supplier */
typedef IppStatus (IPP_CALL *IppBitSupplier)(Ipp32u* pRand, int nBits, void* pEbsParams);
#define IPP_IS_EQ (0)
#define IPP_IS_GT (1)
#define IPP_IS_LT (2)
#define IPP_IS_NE (3)
#define IPP_IS_NA (4)
#define IPP_IS_PRIME (5)
#define IPP_IS_COMPOSITE (6)
#define IPP_IS_VALID (7)
#define IPP_IS_INVALID (8)
#define IPP_IS_INCOMPLETE (9)
#define IPP_IS_ATINFINITY (10)
#define IS_ZERO IPP_IS_EQ
#define GREATER_THAN_ZERO IPP_IS_GT
#define LESS_THAN_ZERO IPP_IS_LT
#define IS_PRIME IPP_IS_PRIME
#define IS_COMPOSITE IPP_IS_COMPOSITE
#define IS_VALID_KEY IPP_IS_VALID
#define IS_INVALID_KEY IPP_IS_INVALID
#define IS_INCOMPLETED_KEY IPP_IS_INCOMPLETE
/*
// =========================================================
// RSA Cryptography
// =========================================================
*/
#define MIN_RSA_SIZE (8)
#define MAX_RSA_SIZE (16*1024)
typedef struct _cpRSA IppsRSAState;
/* key types */
typedef enum {
ippRSApublic = 0x20000000, IppRSApublic = 0x20000000,
ippRSAprivate = 0x40000000, IppRSAprivate = 0x40000000
} IppRSAKeyType;
/* key component's tag */
typedef enum {
ippRSAkeyN = 0x01, IppRSAkeyN = 0x01,
ippRSAkeyE = 0x02, IppRSAkeyE = 0x02,
ippRSAkeyD = 0x04, IppRSAkeyD = 0x04,
ippRSAkeyP = 0x08, IppRSAkeyP = 0x08,
ippRSAkeyQ = 0x10, IppRSAkeyQ = 0x10,
ippRSAkeyDp = 0x20, IppRSAkeyDp = 0x20,
ippRSAkeyDq = 0x40, IppRSAkeyDq = 0x40,
ippRSAkeyQinv = 0x80, IppRSAkeyQinv = 0x80
} IppRSAKeyTag;
typedef struct _cpRSA_public_key IppsRSAPublicKeyState;
typedef struct _cpRSA_private_key IppsRSAPrivateKeyState;
/*
// =========================================================
// DL Cryptography
// =========================================================
*/
#define MIN_DLP_BITSIZE (512)
#define MIN_DLP_BITSIZER (160)
#define MIN_DLPDH_BITSIZE (512)
#define MIN_DLPDH_BITSIZER (160)
#define DEF_DLPDH_BITSIZER (160)
#define MIN_DLPDSA_BITSIZE (512)
#define MAX_DLPDSA_BITSIZE (1024)
#define MIN_DLPDSA_BITSIZER (160)
#define DEF_DLPDSA_BITSIZER (160)
#define MAX_DLPDSA_BITSIZER (160)
#define MIN_DLPDSA_SEEDSIZE (160)
typedef struct _cpDLP IppsDLPState;
/* domain parameter tags */
typedef enum {
ippDLPkeyP = 0x01, IppDLPkeyP = 0x01,
ippDLPkeyR = 0x02, IppDLPkeyR = 0x02,
ippDLPkeyG = 0x04, IppDLPkeyG = 0x04
} IppDLPKeyTag;
typedef enum {
ippDLValid, /* validation pass successfully */
ippDLBaseIsEven, /* !(P is odd) */
ippDLOrderIsEven, /* !(R is odd) */
ippDLInvalidBaseRange, /* !(2^(L-1) < P < 2^L) */
ippDLInvalidOrderRange, /* !(2^(M-1) < R < 2^M) */
ippDLCompositeBase,
ippDLCompositeOrder,
ippDLInvalidCofactor, /* !( R|(P-1) ) */
ippDLInvalidGenerator, /* !( G^R == 1 (mod P) ) */
/* !(1 < G < (P-1)) */
ippDLInvalidPrivateKey, /* !(1 < private < (R-1)) */
ippDLInvalidPublicKey, /* !(1 < public <=(P-1)) */
ippDLInvalidKeyPair, /* !(G^private == public */
ippDLInvalidSignature /* invalid signature */
} IppDLResult;
/*
// =========================================================
// EC Cryptography
// =========================================================
*/
#define EC_GFP_MAXBITSIZE (1024)
/* operation result */
typedef enum {
ippECValid, /* validation pass successfully */
ippECCompositeBase, /* field based on composite */
ippECComplicatedBase, /* number of non-zero terms in the polynomial (> PRIME_ARR_MAX) */
ippECIsZeroDiscriminant,/* zero discriminant */
ippECCompositeOrder, /* composite order of base point */
ippECInvalidOrder, /* invalid base point order */
ippECIsWeakMOV, /* weak Meneze-Okamoto-Vanstone reduction attack */
ippECIsWeakSSSA, /* weak Semaev-Smart,Satoh-Araki reduction attack */
ippECIsSupersingular, /* supersingular curve */
ippECInvalidPrivateKey, /* !(0 < Private < order) */
ippECInvalidPublicKey, /* (order*PublicKey != Infinity) */
ippECInvalidKeyPair, /* (Private*BasePoint != PublicKey) */
ippECPointOutOfGroup, /* out of group (order*P != Infinity) */
ippECPointIsAtInfinite, /* point (P=(Px,Py)) at Infinity */
ippECPointIsNotValid, /* point (P=(Px,Py)) out-of EC */
ippECPointIsEqual, /* compared points are equal */
ippECPointIsNotEqual, /* compared points are different */
ippECInvalidSignature /* invalid signature */
} IppECResult;
/* domain parameter set/get flags */
typedef enum {
ippECarbitrary =0x00000, IppECCArbitrary = 0x00000, /* arbitrary ECC */
ippECPstd = 0x10000, IppECCPStd = 0x10000, /* random (recommended) EC over FG(p): */
ippECPstd112r1 = ippECPstd, IppECCPStd112r1 = IppECCPStd, /* secp112r1 curve */
ippECPstd112r2 = ippECPstd+1, IppECCPStd112r2 = IppECCPStd+1, /* secp112r2 curve */
ippECPstd128r1 = ippECPstd+2, IppECCPStd128r1 = IppECCPStd+2, /* secp128r1 curve */
ippECPstd128r2 = ippECPstd+3, IppECCPStd128r2 = IppECCPStd+3, /* secp128r2 curve */
ippECPstd160r1 = ippECPstd+4, IppECCPStd160r1 = IppECCPStd+4, /* secp160r1 curve */
ippECPstd160r2 = ippECPstd+5, IppECCPStd160r2 = IppECCPStd+5, /* secp160r2 curve */
ippECPstd192r1 = ippECPstd+6, IppECCPStd192r1 = IppECCPStd+6, /* secp192r1 curve */
ippECPstd224r1 = ippECPstd+7, IppECCPStd224r1 = IppECCPStd+7, /* secp224r1 curve */
ippECPstd256r1 = ippECPstd+8, IppECCPStd256r1 = IppECCPStd+8, /* secp256r1 curve */
ippECPstd384r1 = ippECPstd+9, IppECCPStd384r1 = IppECCPStd+9, /* secp384r1 curve */
ippECPstd521r1 = ippECPstd+10, IppECCPStd521r1 = IppECCPStd+10, /* secp521r1 curve */
ippECPstdSM2 = ippECPstd+11, IppECCPStdSM2 = IppECCPStd+11, /* TMP SM2 curve */
ippEC_TPM_SM2_P256= ippECPstd+11,
ippEC_TPM_BN_P256 = ippECPstd+12, /* TPM BN_P256 curve */
/* curves over binary finit fields are not supported in Intel® IPP 9.0 */
IppECCBStd = 0x20000, /* random (recommended) EC over FG(2^m): */
IppECCBStd113r1 = IppECCBStd, /* sect113r1 curve */
IppECCBStd113r2 = IppECCBStd+1, /* sect113r2 curve */
IppECCBStd131r1 = IppECCBStd+2, /* sect131r1 curve */
IppECCBStd131r2 = IppECCBStd+3, /* sect131r2 curve */
IppECCBStd163r1 = IppECCBStd+4, /* sect163r1 curve */
IppECCBStd163r2 = IppECCBStd+5, /* sect163r2 curve */
IppECCBStd193r1 = IppECCBStd+6, /* sect193r1 curve */
IppECCBStd193r2 = IppECCBStd+7, /* sect193r2 curve */
IppECCBStd233r1 = IppECCBStd+8, /* sect233r1 curve */
IppECCBStd283r1 = IppECCBStd+9, /* sect283r1 curve */
IppECCBStd409r1 = IppECCBStd+10, /* sect409r1 curve */
IppECCBStd571r1 = IppECCBStd+11, /* sect571r1 curve */
IppECCKStd = 0x40000, /* Koblitz (recommended) EC over FG(2^m): */
IppECCBStd163k1 = IppECCKStd, /* Koblitz 163 curve */
IppECCBStd233k1 = IppECCKStd+1, /* Koblitz 233 curve */
IppECCBStd239k1 = IppECCKStd+2, /* Koblitz 239 curve */
IppECCBStd283k1 = IppECCKStd+3, /* Koblitz 283 curve */
IppECCBStd409k1 = IppECCKStd+4, /* Koblitz 409 curve */
IppECCBStd571k1 = IppECCKStd+5 /* Koblitz 571 curve */
} IppsECType, IppECCType;
/*
// GF over prime and its extension
*/
#define IPP_MIN_GF_CHAR (3) /* min characteristic of GF */
#define IPP_MIN_GF_BITSIZE (2) /* min bitsize of element over prime GF */
#define IPP_MAX_GF_BITSIZE (1024) /* max bitsize of element over prime GF */
#define IPP_MIN_GF_EXTDEG (2) /* min GF extension degree */
#define IPP_MAX_GF_EXTDEG (8) /* max GF extension degree */
#define IPP_MAX_EXPONENT_NUM (6) /* max number of exponents, equals to LOG_CACHE_LINE_SIZE */
typedef struct _cpGFpMethod IppsGFpMethod;
typedef struct _cpGFp IppsGFpState;
typedef struct _cpGFpElement IppsGFpElement;
typedef struct _cpGFpEC IppsGFpECState;
typedef struct _cpGFpECPoint IppsGFpECPoint;
typedef struct _cpGFpEC IppsECCPState;
typedef struct _cpGFpECPoint IppsECCPPointState;
typedef struct {
int hashSize;
int msgBlockSize;
} IppsHashInfo;
typedef struct {
//const IppsGFpState* pBasicGF;
//const IppsGFpState* pGroundGF;
int parentGFdegree;
int basicGFdegree;
int basicElmBitSize;
} IppsGFpInfo;
/* SM3 Digest Bytes Size */
#define IPP_SM3_DIGEST_BYTESIZE ((IPP_SM3_DIGEST_BITSIZE + 7) / 8)
typedef struct _cpStateECES_SM2 IppsECESState_SM2;
typedef enum {
ippKESM2Requester = 0xF, /* corresponds to A user/participant */
ippKESM2Responder /* corresponds to B user/participant */
} IppsKeyExchangeRoleSM2;
typedef struct _GFpECKeyExchangeSM2 IppsGFpECKeyExchangeSM2State;
#endif /* !defined( _OWN_BLDPCS ) */
IPPAPI( IppStatus, ippcpGetCpuFeatures, ( Ipp64u* pFeaturesMask ))
IPPAPI( IppStatus, ippcpSetCpuFeatures, ( Ipp64u features ))
IPPAPI( Ipp64u, ippcpGetEnabledCpuFeatures, ( void ) )
IPPAPI( IppStatus, ippcpSetNumThreads, ( int numThr ))
IPPAPI( IppStatus, ippcpInit,( void ))
IPPAPI( IppStatus, ippcpGetNumThreads, (int* pNumThr) )
IPPAPI( const char*, ippcpGetStatusString, ( IppStatus StsCode ))
IPPAPI( int, ippcpGetEnabledNumThreads, ( void ) )
IPPAPI( Ipp64u, ippcpGetCpuClocks, (void) )
#ifdef __cplusplus
}
#endif
#endif /* !defined IPPCPDEFS_H__ || defined( _OWN_BLDPCS ) */

@ -0,0 +1,41 @@
/*******************************************************************************
* Copyright (C) 2001 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
/*
//
// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
//
// Purpose: Describes the Intel IPP Cryptography version
//
*/
#if !defined( IPPVERSION_H__ )
#define IPPVERSION_H__
#define IPP_VERSION_MAJOR 2021
#define IPP_VERSION_MINOR 9
#define IPP_VERSION_UPDATE 0
// Major interface version
#define IPP_INTERFACE_VERSION_MAJOR 11
// Minor interface version
#define IPP_INTERFACE_VERSION_MINOR 9
#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) " )"
#endif /* IPPVERSION_H__ */

@ -0,0 +1,43 @@
#===============================================================================
# Copyright (C) 2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
#
if (UNIX)
set(CMAKE_ASM_NASM_DEBUG_OPTIONS -g)
if (APPLE)
set(CMAKE_ASM_NASM_OBJECT_FORMAT macho64)
else()
if (${ARCH} MATCHES "ia32")
set(CMAKE_ASM_NASM_OBJECT_FORMAT elf32)
else()
set(CMAKE_ASM_NASM_OBJECT_FORMAT elf64)
endif()
endif()
else() # Windows
if (${ARCH} MATCHES "ia32")
set(CMAKE_ASM_NASM_OBJECT_FORMAT win32) # MS extended COFF for Win32
else()
set(CMAKE_ASM_NASM_OBJECT_FORMAT win64)
endif()
endif()
set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> <INCLUDES> <FLAGS> <DEFINES> -f ${CMAKE_ASM_NASM_OBJECT_FORMAT} -o <OBJECT> <SOURCE>")
set(CMAKE_ASM_NASM_FLAGS_INIT "${LIBRARY_DEFINES}")

@ -0,0 +1,36 @@
#===============================================================================
# Copyright (C) 2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
# library detection routine (version compatibility rules).
#
set(PACKAGE_VERSION @IPPCP_INTERFACE_VERSION@)
set(PACKAGE_VERSION_EXACT False)
set(PACKAGE_VERSION_COMPATIBLE False)
if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT True)
set(PACKAGE_VERSION_COMPATIBLE True)
endif()
if(PACKAGE_FIND_VERSION_MAJOR EQUAL @IPPCP_INTERFACE_VERSION_MAJOR@
AND PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION)
set(PACKAGE_VERSION_COMPATIBLE True)
endif()

@ -0,0 +1,149 @@
#===============================================================================
# Copyright (C) 2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
# library detection routine.
#
# To use it, add the lines below to your CMakeLists.txt:
# find_package(IPPCP REQUIRED)
# target_link_libraries(mytarget ${IPPCP_LIBRARIES})
#
# List of the variables defined in this file:
# IPPCP_FOUND
# IPPCP_LIBRARIES - list of all imported targets
#
# Configuration variables available:
# IPPCP_SHARED - set this to True before find_package() to search for shared library.
# IPPCP_ARCH - set this to 'ia32' or 'intel64' before find_package() to use library of particular arch
# (this variable can be auto-defined)
#
# Initialize to default values
if (NOT IPPCP_LIBRARIES)
set(IPPCP_LIBRARIES "")
endif()
# Determine ARCH if not defined outside
if (NOT DEFINED IPPCP_ARCH)
set(IPPCP_ARCH "ia32")
if(CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8)
set(IPPCP_ARCH "intel64")
endif()
if(CMAKE_SIZEOF_VOID_P)
set(IPPCP_ARCH "intel64")
endif()
endif()
if (NOT IPPCP_FIND_COMPONENTS)
set(IPPCP_FIND_COMPONENTS "ippcp")
# crypto_mb library is only for intel64
if(${IPPCP_ARCH} MATCHES "intel64")
set(IPPCP_BIN_REL_PATH @IPPCP_BIN64_REL_PATH@)
set(IPPCP_LIB_REL_PATH @IPPCP_LIB64_REL_PATH@)
set(IPPCP_FIND_COMPONENTS "${IPPCP_FIND_COMPONENTS}" "crypto_mb")
else()
set(IPPCP_BIN_REL_PATH @IPPCP_BIN32_REL_PATH@)
set(IPPCP_LIB_REL_PATH @IPPCP_LIB32_REL_PATH@)
endif()
foreach (_component ${IPPCP_FIND_COMPONENTS})
set(IPPCP_FIND_REQUIRED_${_component} 1)
endforeach()
endif()
if (WIN32)
set(_ippcp_library_prefix "")
set(_ippcp_static_library_suffix "mt.lib")
set(_ippcp_shared_library_suffix ".dll")
set(_ippcp_import_library_suffix ".lib")
else()
set(_ippcp_library_prefix "lib")
set(_ippcp_static_library_suffix ".a")
if (APPLE)
set(_ippcp_shared_library_suffix ".dylib")
else()
set(_ippcp_shared_library_suffix ".so")
endif()
set(_ippcp_import_library_suffix "")
endif()
get_filename_component(_ippcrypto_root "${CMAKE_CURRENT_LIST_DIR}" REALPATH)
set(_ippcrypto_root "${_ippcrypto_root}/../../..")
macro(add_imported_library_target PATH_TO_LIBRARY PATH_TO_IMPORT_LIB LINKAGE_TYPE)
if (EXISTS "${PATH_TO_LIBRARY}")
if (NOT TARGET IPPCP::${_component})
add_library(IPPCP::${_component} ${LINKAGE_TYPE} IMPORTED)
get_filename_component(_include_dir "${_ippcrypto_root}/@IPPCP_INC_REL_PATH@" REALPATH)
if (EXISTS "${_include_dir}")
set_target_properties(IPPCP::${_component} PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${_include_dir}"
IMPORTED_LOCATION "${PATH_TO_LIBRARY}")
if (WIN32)
set_target_properties(IPPCP::${_component} PROPERTIES IMPORTED_IMPLIB "${PATH_TO_IMPORT_LIB}")
endif()
else()
message(WARNING "IPPCP: Include directory does not exist: '${_include_dir}'. Intel IPP Cryptography installation might be broken.")
endif()
unset(_include_dir)
endif()
list(APPEND IPPCP_LIBRARIES IPPCP::${_component})
set(IPPCP_${_component}_FOUND 1)
elseif (IPPCP_FIND_REQUIRED AND IPPCP_FIND_REQUIRED_${_component})
message(STATUS "Missed required Intel IPP Cryptography component: ${_component}")
message(STATUS " library not found:\n ${PATH_TO_LIBRARY}")
if (${LINKAGE_TYPE} MATCHES "SHARED")
message(STATUS "You may try to search for static library by unsetting IPPCP_SHARED variable.")
endif()
set(IPPCP_FOUND FALSE)
endif()
endmacro(add_imported_library_target)
foreach (_component ${IPPCP_FIND_COMPONENTS})
set(IPPCP_${_component}_FOUND 0)
if (IPPCP_SHARED)
set(_ippcp_library_suffix "${_ippcp_shared_library_suffix}")
set(_linkage_type "SHARED")
else()
set(_ippcp_library_suffix "${_ippcp_static_library_suffix}")
set(_linkage_type "STATIC")
endif()
if (WIN32 AND ${_linkage_type} MATCHES "SHARED")
get_filename_component(_lib "${_ippcrypto_root}/${IPPCP_BIN_REL_PATH}/${_ippcp_library_prefix}${_component}${_ippcp_library_suffix}" REALPATH)
get_filename_component(_imp_lib "${_ippcrypto_root}/${PPCP_LIB_REL_PATH}/${_ippcp_library_prefix}${_component}${_ippcp_import_library_suffix}" REALPATH)
else()
get_filename_component(_lib "${_ippcrypto_root}/${IPPCP_LIB_REL_PATH}/${_ippcp_library_prefix}${_component}${_ippcp_library_suffix}" REALPATH)
set(_imp_lib "")
endif()
add_imported_library_target("${_lib}" "${_imp_lib}" "${_linkage_type}")
endforeach()
list(REMOVE_DUPLICATES IPPCP_LIBRARIES)
unset(_ippcp_library_prefix)
unset(_ippcp_static_library_suffix)
unset(_ippcp_shared_library_suffix)
unset(_ippcp_import_library_suffix)
unset(_ippcp_library_suffix)
unset(_linkage_type)
unset(_lib)
unset(_imp_lib)

@ -0,0 +1,22 @@
#===============================================================================
# Copyright 2022 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#===============================================================================
[memory]
fun:*cpGetFeatures*
fun:*IntelCpu*
fun:*ppSetIppEnvironment*
src:tests/testlib/*
src:perf_tests/perflib/*

@ -0,0 +1,27 @@
#===============================================================================
# Copyright (C) 2021 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
prefix=@PREFIX_FOR_PC_FILE@
libdir=@LIBDIR_FOR_PC_FILE@
includedir=@INCDIR_FOR_PC_FILE@
Name: Intel® Integrated Performance Primitives (Intel® IPP) Cryptography Crypto Multi-Buffer Library
Description: This library consists of highly-optimized kernels taking advantage of Intel’s multi-buffer processing and Intel® AVX-512 instruction set.
URL: https://github.com/intel/ipp-crypto
Version: @IPPCP_VERSION@
Libs: -L${libdir} -l@CRYPTO_MB_PC_LIB_NAME@
Cflags: -I${includedir}

@ -0,0 +1,27 @@
#===============================================================================
# Copyright (C) 2021 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
prefix=@PREFIX_FOR_PC_FILE@
libdir=@LIBDIR_FOR_PC_FILE@
includedir=@INCDIR_FOR_PC_FILE@
Name: Intel® Integrated Performance Primitives (Intel® IPP) Cryptography Crypto Multi-Buffer Library
Description: This library consists of highly-optimized kernels taking advantage of Intel’s multi-buffer processing and Intel® AVX-512 instruction set.
URL: https://github.com/intel/ipp-crypto
Version: @IPPCP_VERSION@
Libs: ${libdir}/@STATIC_LIBRARY_PREFIX@@CRYPTO_MB_PC_LIB_NAME@@STATIC_LIBRARY_SUFFIX@
Cflags: -I${includedir}

@ -0,0 +1,27 @@
#===============================================================================
# Copyright (C) 2021 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
prefix=@PREFIX_FOR_PC_FILE@
libdir=@LIBDIR_FOR_PC_FILE@
includedir=@INCDIR_FOR_PC_FILE@
Name: Intel® Integrated Performance Primitives (Intel® IPP) Cryptography Library
Description: Secure, fast and lightweight library of building blocks for cryptography, highly-optimized for various Intel® CPUs.
URL: https://github.com/intel/ipp-crypto
Version: @IPPCP_VERSION@
Libs: -L${libdir} -l@IPPCP_PC_LIB_NAME@
Cflags: -I${includedir}

@ -0,0 +1,27 @@
#===============================================================================
# Copyright (C) 2021 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
prefix=@PREFIX_FOR_PC_FILE@
libdir=@LIBDIR_FOR_PC_FILE@
includedir=@INCDIR_FOR_PC_FILE@
Name: Intel® Integrated Performance Primitives (Intel® IPP) Cryptography Library
Description: Secure, fast and lightweight library of building blocks for cryptography, highly-optimized for various Intel® CPUs.
URL: https://github.com/intel/ipp-crypto
Version: @IPPCP_VERSION@
Libs: ${libdir}/@STATIC_LIBRARY_PREFIX@@IPPCP_PC_LIB_NAME@@STATIC_LIBRARY_SUFFIX@
Cflags: -I${includedir}

@ -0,0 +1,67 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
#
import re
import sys
import os
import hashlib
def readNextFunction(header, curLine, headerID): ## read next function with arguments
## find header ID macros
FunName = ''
FunArg = ''
FunType = ''
success = False
while (curLine < len(header) and success == False):
if not headerID and re.match( '\s*#\s*if\s*!\s*defined\s*\(\s*__IPP', header[curLine]):
headerID= re.sub( '.*__IPP', '__IPP', header[curLine] )
headerID= re.sub( "\)", '', headerID)
headerID= re.sub( '[\n\s]', '', headerID )
if re.match( '^\s*IPPAPI\s*\(.*', header[curLine] ) :
FunStr= header[curLine];
FunStr= re.sub('\n','',FunStr) ## remove EOL symbols
while not re.match('.*\)\s*\)\s*$', FunStr): ## concatinate strinng if string is not completed
curLine= curLine+1
FunStr= FunStr+header[curLine]
FunStr= re.sub('\n','',FunStr) ## remove EOL symbols
FunStr= re.sub('\s+', ' ', FunStr)
s= FunStr.split(',')
## Extract funtion name
FunName= s[1]
FunName= re.sub('\s', '', FunName)
## Extract function type
FunType= re.sub( '.*\(', '', s[0] )
#FunType= re.sub(' ', '', FunType )
## Extract function arguments
FunArg= re.sub('.*\(.*,.+,\s*\(', '(', FunStr)
FunArg= re.sub('\)\s*\)', ')', FunArg)
success = True
curLine = curLine + 1
return {'curLine':curLine, 'FunType':FunType, 'FunName':FunName, 'FunArg':FunArg, 'success':success }

@ -0,0 +1,175 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
#
import re
import sys
import os
import hashlib
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for fucntions in Header')
parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
parser.add_argument('-c', '--compiler', action='store', required=True, help='Compiler')
args = parser.parse_args()
Header = args.header
OutDir = args.out_directory
cpulist = args.cpu_list.split(';')
compiler = args.compiler
headerID= False ## Header ID define to avoid multiple include like: #if !defined( __IPPCP_H__ )
from gen_disp_common import readNextFunction
HDR= open( Header, 'r' )
h= HDR.readlines()
HDR.close()
## keep filename only
(incdir, Header)= os.path.split(Header)
## original header name to declare external functions as internal for dispatcher
OrgH= Header
isFunctionFound = True
curLine = 0
FunName = ""
FunArg = ""
if(compiler == "GNU" or compiler == "Clang" or compiler == "IntelLLVM"):
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files ASM
##################################################
ASMDISP= open( os.sep.join([OutDir, "jmp_" + FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] +".asm"]), 'w' )
# Symbol type setting for extern functions initially appeared in version 2.15
ASMDISP.write("%if ((__NASM_MAJOR__ > 2) || ((__NASM_MAJOR__ == 2) && (__NASM_MINOR__ > 14)))\n");
ASMDISP.write(" %xdefine elf_symbol_type :function\n");
ASMDISP.write("%else\n");
ASMDISP.write(" %xdefine elf_symbol_type\n");
ASMDISP.write("%endif\n");
for cpu in cpulist:
ASMDISP.write("extern "+cpu+"_"+FunName+"%+elf_symbol_type\n")
ASMDISP.write("extern ippcpJumpIndexForMergedLibs\n")
ASMDISP.write("extern ippcpInit%+elf_symbol_type\n\n")
ASMDISP.write("""
segment .data
align 4
dd in_{FunName}
arraddr_{FunName}:
""".format(FunName=FunName))
size = 4
for cpu in cpulist:
size = size + 4
ASMDISP.write(" dd "+cpu+"_"+FunName+"\n")
ASMDISP.write("""
segment .text
global {FunName}:function ({FunName}.LEnd{FunName} - {FunName})
in_{FunName}:
{endbr32}
call ippcpInit
align 16
{FunName}:
{endbr32}
mov eax, dword [ippcpJumpIndexForMergedLibs]
jmp dword [rel arraddr_{FunName} + eax*4]
.LEnd{FunName}:
""".format(FunName=FunName, size=size, endbr32='db 0xf3, 0x0f, 0x1e, 0xfb'))
ASMDISP.close()
else:
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files: C file with inline asm
##################################################
DISP= open( os.sep.join([OutDir, "jmp_"+FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] + ".c"]), 'w' )
DISP.write("""#include "ippcpdefs.h"\n\n""")
DISP.write("typedef void (*IPP_PROC)(void);\n\n")
DISP.write("extern int ippcpJumpIndexForMergedLibs;\n")
DISP.write("extern IPP_CALL ippcpInit();\n\n")
DISP.write("extern IppStatus in_"+FunName+FunArg+";\n")
for cpu in cpulist:
DISP.write("extern IppStatus "+cpu+"_"+FunName+FunArg+";\n")
DISP.write("""
__asm( " .data");
__asm( " .align 4");
__asm( "arraddr:");
__asm( " .long in_{FunName}");""".format(FunName=FunName))
size = 4
for cpu in cpulist:
size = size + 4
DISP.write("""\n__asm( " .long {cpu}_{FunName}");""".format(FunName=FunName, cpu=cpu))
DISP.write("""
__asm( " .type arraddr,@object");
__asm( " .size arraddr,{size}");
__asm( " .data");\n""".format(size=size))
DISP.write("""
#undef IPPAPI
#define IPPAPI(type,name,arg) __declspec(naked) void name arg
IPPAPI(IppStatus, {FunName},{FunArg})
{{
__asm( ".L0: mov ippcpJumpIndexForMergedLibs, %eax");
__asm( "mov (arraddr+4)(,%eax,4), %eax" );
__asm( "jmp *%eax" );
__asm( ".global in_{FunName}" );
__asm( "in_{FunName}:" );
{endbr32}
__asm( "call ippcpInit" );
__asm( "jmp .L0" );
}};
""".format(FunName=FunName, FunArg=FunArg, endbr32='__asm( ".byte 0xf3, 0x0f, 0x1e, 0xfb" );'))
DISP.close()

@ -0,0 +1,191 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
#
import re
import sys
import os
import hashlib
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for fucntions in Header')
parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
parser.add_argument('-c', '--compiler', action='store', required=True, help='Compiler')
args = parser.parse_args()
Header = args.header
OutDir = args.out_directory
cpulist = args.cpu_list.split(';')
compiler = args.compiler
headerID= False ## Header ID define to avoid multiple include like: #if !defined( __IPPCP_H__ )
from gen_disp_common import readNextFunction
HDR= open( Header, 'r' )
h= HDR.readlines()
HDR.close()
## keep filename only
(incdir, Header)= os.path.split(Header)
## original header name to declare external functions as internal for dispatcher
OrgH= Header
isFunctionFound = True
curLine = 0
FunName = ""
FunArg = ""
if(compiler == "GNU" or compiler == "Clang" or compiler == "IntelLLVM"):
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files ASM
##################################################
ASMDISP= open( os.sep.join([OutDir, "jmp_" + FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] +".asm"]), 'w' )
# Symbol type setting for extern functions initially appeared in version 2.15
ASMDISP.write("%if ((__NASM_MAJOR__ > 2) || ((__NASM_MAJOR__ == 2) && (__NASM_MINOR__ > 14)))\n");
ASMDISP.write(" %xdefine elf_symbol_type :function\n");
ASMDISP.write("%else\n");
ASMDISP.write(" %xdefine elf_symbol_type\n");
ASMDISP.write("%endif\n");
for cpu in cpulist:
ASMDISP.write("extern "+cpu+"_"+FunName+"%+elf_symbol_type\n")
ASMDISP.write("extern ippcpJumpIndexForMergedLibs\n")
ASMDISP.write("extern ippcpInit%+elf_symbol_type\n\n")
ASMDISP.write("""
segment .data
align 4
dd .Lin_{FunName}
.Larraddr_{FunName}:
""".format(FunName=FunName))
for cpu in cpulist:
ASMDISP.write(" dd "+cpu+"_"+FunName+"\n")
ASMDISP.write("""
segment .text
extern _GLOBAL_OFFSET_TABLE_
global {FunName}:function ({FunName}.LEnd{FunName} - {FunName})
.Lin_{FunName}:
{endbr32}
push ebx
mov ebx, eax
call ippcpInit wrt ..plt
pop ebx
align 16
{FunName}:
{endbr32}
call .L1
.L1:
pop eax
add eax, _GLOBAL_OFFSET_TABLE_ + $$ - .L1 wrt ..gotpc
mov edx, [eax + ippcpJumpIndexForMergedLibs wrt ..got]
mov edx, [edx]
jmp dword [eax + edx*4 + .Larraddr_{FunName} wrt ..gotoff]
.LEnd{FunName}:
""".format(FunName=FunName, endbr32='db 0xf3, 0x0f, 0x1e, 0xfb'))
ASMDISP.close()
else:
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files: C file with inline asm
##################################################
DISP= open( os.sep.join([OutDir, "jmp_"+FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] + ".c"]), 'w' )
DISP.write("""#include "ippcpdefs.h"\n\n""")
DISP.write("typedef void (*IPP_PROC)(void);\n\n")
DISP.write("extern int ippcpJumpIndexForMergedLibs;\n")
DISP.write("extern IPP_CALL ippcpInit();\n\n")
DISP.write("extern IppStatus IPP_CALL in_"+FunName+FunArg+";\n")
for cpu in cpulist:
DISP.write("extern IppStatus IPP_CALL "+cpu+"_"+FunName+FunArg+";\n")
DISP.write("""
__asm( " .data");
__asm( " .align 4");
__asm( "arraddr:");
__asm( " .long in_{FunName}");""".format(FunName=FunName))
size = 4
for cpu in cpulist:
size = size + 4
DISP.write("""\n__asm( " .long {cpu}_{FunName}");""".format(FunName=FunName, cpu=cpu))
DISP.write("""
__asm( " .type arraddr,@object");
__asm( " .size arraddr,{size}");
__asm( " .data");\n""".format(size=size))
DISP.write("""
#undef IPPAPI
#define IPPAPI(type,name,arg) __declspec(naked) void IPP_CALL name arg
__declspec(naked) IPP_PROC {FunName}{FunArg}
{{
__asm( ".L0: call .L1");
__asm( ".L1: pop %eax");
__asm( "add $_GLOBAL_OFFSET_TABLE_ - .L1, %eax" );
__asm( "movd ippcpJumpIndexForMergedLibs@GOT(%eax), %xmm0" );
__asm( "movd %xmm0, %edx" );
__asm( "mov (%edx), %edx" );
__asm( "mov (arraddr@GOTOFF+4)(%eax,%edx,4), %edx" );
__asm( "jmp *%edx" );
__asm( ".global in_{FunName}" );
__asm( "in_{FunName}:" );
{endbr32}
__asm( "push %ebx" );
__asm( "mov %eax, %ebx" );
__asm( "call ippcpInit@PLT" );
__asm( "pop %ebx" );
__asm( "jmp .L0" );
}};
""".format(FunName=FunName, FunArg=FunArg, endbr32='__asm( ".byte 0xf3, 0x0f, 0x1e, 0xfb" );'))
DISP.close()

@ -0,0 +1,175 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
#
import re
import sys
import os
import hashlib
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for fucntions in Header')
parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
parser.add_argument('-c', '--compiler', action='store', required=True, help='Compiler')
args = parser.parse_args()
Header = args.header
OutDir = args.out_directory
cpulist = args.cpu_list.split(';')
compiler = args.compiler
headerID= False ## Header ID define to avoid multiple include like: #if !defined( __IPPCP_H__ )
from gen_disp_common import readNextFunction
HDR= open( Header, 'r' )
h= HDR.readlines()
HDR.close()
## keep filename only
(incdir, Header)= os.path.split(Header)
## original header name to declare external functions as internal for dispatcher
OrgH= Header
isFunctionFound = True
curLine = 0
FunType = ""
FunName = ""
FunArg = ""
if(compiler == "GNU" or compiler == "Clang" or compiler == "IntelLLVM"):
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunType = result['FunType']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files ASM
##################################################
ASMDISP= open( os.sep.join([OutDir, "jmp_" + FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] +".asm"]), 'w' )
# Symbol type setting for extern functions initially appeared in version 2.15
ASMDISP.write("%if ((__NASM_MAJOR__ > 2) || ((__NASM_MAJOR__ == 2) && (__NASM_MINOR__ > 14)))\n");
ASMDISP.write(" %xdefine elf_symbol_type :function\n");
ASMDISP.write("%else\n");
ASMDISP.write(" %xdefine elf_symbol_type\n");
ASMDISP.write("%endif\n");
for cpu in cpulist:
ASMDISP.write("extern "+cpu+"_"+FunName+"%+elf_symbol_type\n")
ASMDISP.write("extern ippcpJumpIndexForMergedLibs\n")
ASMDISP.write("extern ippcpSafeInit%+elf_symbol_type\n\n")
ASMDISP.write("""
segment .data
align 8
dq .Lin_{FunName}
.Larraddr_{FunName}:
""".format(FunName=FunName))
for cpu in cpulist:
ASMDISP.write(" dq "+cpu+"_"+FunName+"\n")
ASMDISP.write("""
segment .text
global {FunName}:function ({FunName}.LEnd{FunName} - {FunName})
.Lin_{FunName}:
{endbr64}
call ippcpSafeInit
align 16
{FunName}:
{endbr64}
movsxd rax, dword [ippcpJumpIndexForMergedLibs]
lea r11, [rel .Larraddr_{FunName}]
mov r11, qword [r11 + rax*8]
jmp r11
.LEnd{FunName}:
""".format(FunName=FunName, endbr64='db 0xf3, 0x0f, 0x1e, 0xfa'))
ASMDISP.close()
else:
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunType = result['FunType']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files: C file with inline asm
##################################################
DISP= open( os.sep.join([OutDir, "jmp_"+FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] + ".c"]), 'w' )
DISP.write("""#include "ippcp.h"\n\n#pragma warning(disable : 1478 1786) // deprecated\n\n""")
DISP.write("typedef "+FunType+" (*IPP_PROC)"+FunArg+";\n\n")
DISP.write("extern int ippcpJumpIndexForMergedLibs;\n")
DISP.write("extern IppStatus ippcpSafeInit( void );\n\n")
DISP.write("extern "+FunType+" in_"+FunName+FunArg+";\n")
for cpu in cpulist:
DISP.write("extern "+FunType+" "+cpu+"_"+FunName+FunArg+";\n")
DISP.write("static IPP_PROC arraddr[] =\n{{\n (IPP_PROC)in_{}".format(FunName))
for cpu in cpulist:
DISP.write(",\n (IPP_PROC)"+cpu+"_"+FunName+"")
DISP.write("\n};")
DISP.write("""
#undef IPPAPI
#define IPPAPI(type,name,arg) __declspec(naked) type name arg
IPPAPI({FunType}, {FunName},{FunArg})
{{
__asm{{
movsxd rax, dword ptr ippcpJumpIndexForMergedLibs
mov rax, qword ptr [8*rax+8+arraddr]
jmp rax
}}
}}
IPPAPI({FunType}, in_{FunName},{FunArg})
{{
__asm{{
call ippcpSafeInit
lea rax, {FunName}
jmp rax
}}
}};
""".format(FunType=FunType, FunName=FunName, FunArg=FunArg))
DISP.close()

@ -0,0 +1,174 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
#
import re
import sys
import os
import hashlib
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for fucntions in Header')
parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
parser.add_argument('-c', '--compiler', action='store', required=True, help='Compiler')
args = parser.parse_args()
Header = args.header
OutDir = args.out_directory
cpulist = args.cpu_list.split(';')
compiler = args.compiler
headerID= False ## Header ID define to avoid multiple include like: #if !defined( __IPPCP_H__ )
from gen_disp_common import readNextFunction
HDR= open( Header, 'r' )
h= HDR.readlines()
HDR.close()
## keep filename only
(incdir, Header)= os.path.split(Header)
## original header name to declare external functions as internal for dispatcher
OrgH= Header
isFunctionFound = True
curLine = 0
FunType = ""
FunName = ""
FunArg = ""
if(compiler == "GNU" or compiler == "Clang" or compiler == "IntelLLVM"):
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunType = result['FunType']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files ASM
##################################################
ASMDISP= open( os.sep.join([OutDir, "jmp_" + FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] +".asm"]), 'w' )
# Symbol type setting for extern functions initially appeared in version 2.15
ASMDISP.write("%if ((__NASM_MAJOR__ > 2) || ((__NASM_MAJOR__ == 2) && (__NASM_MINOR__ > 14)))\n");
ASMDISP.write(" %xdefine elf_symbol_type :function\n");
ASMDISP.write("%else\n");
ASMDISP.write(" %xdefine elf_symbol_type\n");
ASMDISP.write("%endif\n");
for cpu in cpulist:
ASMDISP.write("extern "+cpu+"_"+FunName+"%+elf_symbol_type\n")
ASMDISP.write("extern ippcpJumpIndexForMergedLibs\n")
ASMDISP.write("extern ippcpSafeInit%+elf_symbol_type\n\n")
ASMDISP.write("""
segment .data
align 8
dq .Lin_{FunName}
.Larraddr_{FunName}:
""".format(FunName=FunName))
for cpu in cpulist:
ASMDISP.write(" dq "+cpu+"_"+FunName+"\n")
ASMDISP.write("""
segment .text
global {FunName}:function ({FunName}.LEnd{FunName} - {FunName})
.Lin_{FunName}:
{endbr64}
call ippcpSafeInit wrt ..plt
align 16
{FunName}:
{endbr64}
mov rax, qword [rel ippcpJumpIndexForMergedLibs wrt ..gotpc]
movsxd rax, dword [rax]
lea r11, [rel .Larraddr_{FunName}]
mov r11, qword [r11+rax*8]
jmp r11
.LEnd{FunName}:
""".format(FunName=FunName, endbr64='db 0xf3, 0x0f, 0x1e, 0xfa'))
ASMDISP.close()
else:
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunType = result['FunType']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files: C file with inline asm
##################################################
DISP= open( os.sep.join([OutDir, "jmp_"+FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] + ".c"]), 'w' )
DISP.write("""#include "ippcp.h"\n\n#pragma warning(disable : 1478 1786) // deprecated\n\n""")
DISP.write("typedef "+FunType+" (*IPP_PROC)"+FunArg+";\n\n")
DISP.write("extern int ippcpJumpIndexForMergedLibs;\n")
DISP.write("extern IppStatus ippcpSafeInit( void );\n\n")
DISP.write("extern "+FunType+" in_"+FunName+FunArg+";\n")
for cpu in cpulist:
DISP.write("extern "+FunType+" "+cpu+"_"+FunName+FunArg+";\n")
DISP.write("static IPP_PROC arraddr[] =\n{{\n (IPP_PROC)in_{}".format(FunName))
for cpu in cpulist:
DISP.write(",\n (IPP_PROC)"+cpu+"_"+FunName+"")
DISP.write("\n};")
DISP.write("""
#undef IPPAPI
#define IPPAPI(type,name,arg) __declspec(naked) type name arg
IPPAPI({FunType}, {FunName},{FunArg})
{{
register unsigned long long i __asm__("rax");
i = (unsigned long long)arraddr[ippcpJumpIndexForMergedLibs+1];
_asm{{ jmp rax }}
}};
IPPAPI({FunType}, in_{FunName},{FunArg})
{{
__asm{{
call ippcpSafeInit
mov rax, qword ptr [{FunName}]
jmp rax
}}
}};
""".format(FunType=FunType, FunName=FunName, FunArg=FunArg))
DISP.close()

@ -0,0 +1,168 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
#
import re
import sys
import os
import hashlib
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for fucntions in Header')
parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
parser.add_argument('-c', '--compiler', action='store', help='Compiler') # is not used
args = parser.parse_args()
Header = args.header
OutDir = args.out_directory
cpulist = args.cpu_list.split(';')
compiler = args.compiler
headerID= False ## Header ID define to avoid multiple include like: #if !defined( __IPPCP_H__ )
from gen_disp_common import readNextFunction
HDR= open( Header, 'r' )
h= HDR.readlines()
HDR.close()
## keep filename only
(incdir, Header)= os.path.split(Header)
## original header name to declare external functions as internal for dispatcher
OrgH= Header
isFunctionFound = True
curLine = 0
FunType = ""
FunName = ""
FunArg = ""
if(compiler == "AppleClang"):
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunType = result['FunType']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files ASM
##################################################
ASMDISP= open( os.sep.join([OutDir, "jmp_" + FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] +".asm"]), 'w' )
for cpu in cpulist:
ASMDISP.write("extern "+"_"+cpu+"_"+FunName+"\n")
ASMDISP.write("extern _ippcpJumpIndexForMergedLibs\n")
ASMDISP.write("extern _ippcpSafeInit\n\n")
ASMDISP.write("""
segment .data
align 8
dq .Lin_{FunName}
.Larraddr_{FunName}:
""".format(FunName=FunName))
for cpu in cpulist:
ASMDISP.write(" dq "+"_"+cpu+"_"+FunName+"\n")
ASMDISP.write("""
segment .text
global _{FunName}
.Lin_{FunName}:
{endbr64}
call _ippcpSafeInit
align 16
_{FunName}:
{endbr64}
mov rax, qword [rel _ippcpJumpIndexForMergedLibs wrt ..gotpcrel]
movsxd rax, dword [rax]
lea r11, [rel .Larraddr_{FunName}]
mov r11, qword [r11+rax*8]
jmp r11
.LEnd{FunName}:
""".format(FunName=FunName, endbr64='db 0xf3, 0x0f, 0x1e, 0xfa'))
ASMDISP.close()
else:
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunType = result['FunType']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files: C file with inline asm
##################################################
DISP= open( os.sep.join([OutDir, "jmp_"+FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] + ".c"]), 'w' )
DISP.write("""#include "ippcp.h"\n\n#pragma warning(disable : 1478 1786) // deprecated\n\n""")
DISP.write("typedef "+FunType+" (*IPP_PROC)"+FunArg+";\n\n")
DISP.write("extern int ippcpJumpIndexForMergedLibs;\n")
DISP.write("extern IppStatus ippcpSafeInit( void );\n\n")
DISP.write("extern "+FunType+" in_"+FunName+FunArg+";\n")
for cpu in cpulist:
DISP.write("extern "+FunType+" "+cpu+"_"+FunName+FunArg+";\n")
DISP.write("static IPP_PROC arraddr[] =\n{{\n (IPP_PROC)in_{}".format(FunName))
for cpu in cpulist:
DISP.write(",\n (IPP_PROC)"+cpu+"_"+FunName+"")
DISP.write("\n};")
DISP.write("""
#undef IPPAPI
#define IPPAPI(type,name,arg) __declspec(naked) type name arg
IPPAPI({FunType}, {FunName},{FunArg})
{{
register unsigned long long i __asm__("rax");
i = (unsigned long long)arraddr[ippcpJumpIndexForMergedLibs+1];
__asm{{ jmp rax }}
}};
IPPAPI({FunType}, in_{FunName},{FunArg})
{{
__asm{{
call ippcpSafeInit
mov rax, qword ptr [{FunName}]
jmp rax
}}
}};
""".format(FunType=FunType, FunName=FunName, FunArg=FunArg))
DISP.close()

@ -0,0 +1,117 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
#
import re
import sys
import os
import hashlib
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for fucntions in Header')
parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
parser.add_argument('-c', '--compiler', action='store', help='Compiler') # is not used
args = parser.parse_args()
Header = args.header
OutDir = args.out_directory
cpulist = args.cpu_list.split(';')
headerID= False ## Header ID define to avoid multiple include like: #if !defined( __IPPCP_H__ )
from gen_disp_common import readNextFunction
HDR= open( Header, 'r' )
h= HDR.readlines()
HDR.close()
## keep filename only
(incdir, Header)= os.path.split(Header)
## original header name to declare external functions as internal for dispatcher
OrgH= Header
isFunctionFound = True
curLine = 0
FunName = ""
FunType = ""
FunArg = ""
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunType = result['FunType']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files: C file with inline asm
##################################################
DISP= open( os.sep.join([OutDir, "jmp_"+FunName+"_" + hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8] + ".c"]), 'w' )
DISP.write("""#include "ippcpdefs.h" """)
DISP.write("\n\ntypedef " + FunType + "(*IPP_PROC)(void);\n\n")
DISP.write("extern int ippcpJumpIndexForMergedLibs;\n")
DISP.write("extern IppStatus IPP_CALL ippcpInit();\n\n")
DISP.write("extern " + FunType + " IPP_CALL in_"+FunName+FunArg+";\n")
for cpu in cpulist:
DISP.write("extern " + FunType + " IPP_CALL "+cpu+"_"+FunName+FunArg+";\n")
DISP.write("static IPP_PROC arraddr[] =\n{{\n (IPP_PROC)in_{}".format(FunName))
for cpu in cpulist:
DISP.write(",\n (IPP_PROC)"+cpu+"_"+FunName+"")
DISP.write("\n};")
DISP.write("""
#ifdef _MSC_VER
#pragma warning(disable: 4100) // for MSVC, unreferenced param
#endif
#undef IPPAPI
#define IPPAPI(type,name,arg) __declspec(naked) type __stdcall name arg
IPPAPI({FunType}, {FunName},{FunArg})
{{
__asm {{mov eax, dword ptr ippcpJumpIndexForMergedLibs}}
__asm {{mov eax, arraddr[eax*4+4]}}
__asm {{jmp eax}}
}};
IPPAPI({FunType}, in_{FunName},{FunArg})
{{
__asm {{call ippcpInit}}
__asm {{mov eax, dword ptr ippcpJumpIndexForMergedLibs }}
__asm {{mov eax, arraddr[eax*4+4]}}
__asm {{jmp eax}}
}};
""".format(FunType=FunType, FunName=FunName, FunArg=FunArg))
DISP.close()

@ -0,0 +1,107 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
#
import re
import sys
import os
import hashlib
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--header', action='store', required=True, help='Intel IPP Cryptography dispatcher will be generated for fucntions in Header')
parser.add_argument('-o', '--out-directory', action='store', required=True, help='Output folder for generated files')
parser.add_argument('-l', '--cpu-list', action='store', required=True, help='Actual CPU list: semicolon separated string')
parser.add_argument('-c', '--compiler', action='store', help='Compiler') # is not used
args = parser.parse_args()
Header = args.header
OutDir = args.out_directory
cpulist = args.cpu_list.split(';')
headerID= False ## Header ID define to avoid multiple include like: #if !defined( __IPPCP_H__ )
from gen_disp_common import readNextFunction
HDR= open( Header, 'r' )
h= HDR.readlines()
HDR.close()
## keep filename only
(incdir, Header)= os.path.split(Header)
## original header name to declare external functions as internal for dispatcher
OrgH= Header
isFunctionFound = True
curLine = 0
FunName = ""
FunArg = ""
while (isFunctionFound == True):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunName = result['FunName']
FunArg = result['FunArg']
isFunctionFound = result['success']
if (isFunctionFound == True):
##################################################
## create dispatcher files: C file with inline asm
##################################################
filename = "jmp_{}_{}".format(FunName, hashlib.sha512(FunName.encode('utf-8')).hexdigest()[:8])
DISP= open( os.sep.join([OutDir, filename + ".asm"]), 'w' )
for cpu in cpulist:
DISP.write("extern "+cpu+"_"+FunName+"\n")
DISP.write("extern ippcpJumpIndexForMergedLibs\n")
DISP.write("extern ippcpSafeInit\n\n")
DISP.write("segment data\n\n")
DISP.write(" DQ in_"+FunName+"\n")
DISP.write(FunName+"_arraddr:\n")
for cpu in cpulist:
DISP.write(" DQ "+cpu+"_"+FunName+"\n")
DISP.write("""
segment text
global {FunName}
in_{FunName}:
{endbr64}
call ippcpSafeInit
align 16
{FunName}:
{endbr64}
movsxd rax, dword [rel ippcpJumpIndexForMergedLibs]
lea r10, [rel {FunName}_arraddr]
mov r10, qword [r10+rax*8]
jmp r10
""".format(FunName=FunName, endbr64='db 0xf3, 0x0f, 0x1e, 0xfa'))
DISP.close()

@ -0,0 +1,86 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
#
import sys
import os
import datetime
sys.path.append(os.path.join(sys.path[0], '../dispatcher'))
from gen_disp_common import readNextFunction
Header = sys.argv[1]
OutDir = sys.argv[2]
Header = os.path.abspath(Header)
Filename = ""
HDR= open(Header, 'r')
h= HDR.readlines()
HDR.close()
headerID= False
FunName = ""
if not os.path.exists(OutDir):
os.makedirs(OutDir)
Filename="ippcp"
Filenames=["h9", "p8", "s8", "w7", "e9", "k0", "k1", "l9", "m7", "n0", "n8", "y8", "g9"]
for name in Filenames:
OutFile = os.sep.join([OutDir, Filename + "_"+ name + ".h"])
OUT= open( OutFile, 'w' )
OUT.write("""/*******************************************************************************
* Copyright {year} Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
""".format(year=datetime.datetime.today().year))
curLine = 0
isFunctionFound = True
while (isFunctionFound):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunName = result['FunName']
isFunctionFound = result['success']
if (isFunctionFound):
OUT.write("#define " + FunName + " " + name +"_" + FunName + "\n")
OUT.close()

@ -0,0 +1,81 @@
#===============================================================================
# Copyright (C) 2017 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the 'License');
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an 'AS IS' BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions
# and limitations under the License.
#
#===============================================================================
#
# Intel(R) Integrated Performance Primitives Cryptography (Intel(R) IPP Cryptography)
#
import sys
import os
import datetime
sys.path.append(os.path.join(sys.path[0], '../dispatcher'))
from gen_disp_common import readNextFunction
Header = sys.argv[1]
OutDir = sys.argv[2]
Header = os.path.abspath(Header)
Filename = ""
HDR= open(Header, 'r')
h= HDR.readlines()
HDR.close()
headerID= False
FunName = ""
if not os.path.exists(OutDir):
os.makedirs(OutDir)
Filename = "ippcp_cpuspc"
OutFile = os.sep.join([OutDir, Filename + ".h"])
OUT= open( OutFile, 'w' )
OUT.write("""/*******************************************************************************
* Copyright {year} Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*******************************************************************************/
""".format(year=datetime.datetime.today().year))
curLine = 0
isFunctionFound = True
while (isFunctionFound):
result = readNextFunction(h, curLine, headerID)
curLine = result['curLine']
FunName = result['FunName']
isFunctionFound = result['success']
if (isFunctionFound):
OUT.write("#define " + FunName + " " + "OWNAPI(" + FunName + ")\n")
OUT.close()

@ -0,0 +1,175 @@
;===============================================================================
; Copyright (C) 2015 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the 'License');
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
; http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing,
; software distributed under the License is distributed on an 'AS IS' BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions
; and limitations under the License.
;
;===============================================================================
%ifndef __ASMDEFS_INC__
%define __ASMDEFS_INC__ 1
%assign _IPP_PX 0 ; pure C-code ia32
%assign _IPP_M5 1 ; Intel(R) Quark(TM) processor - ia32
%assign _IPP_W7 8 ; Intel(R) Streaming SIMD Extensions 2 - ia32
%assign _IPP_T7 16 ; Intel(R) Streaming SIMD Extensions 3 - ia32
%assign _IPP_V8 32 ; Supplemental Streaming SIMD Extensions 3 (SSSE3)
%assign _IPP_S8 33 ; SSSE3 + MOVBE instruction - ia32
%assign _IPP_P8 64 ; Intel(R) Streaming SIMD Extensions 4.2 - ia32
%assign _IPP_G9 128 ; Intel(R) Advanced Vector Extensions - ia32
%assign _IPP_H9 256 ; Intel(R) Advanced Vector Extensions 2 - ia32
%assign _IPP_I0 512 ; Intel(R) Advanced Vector Extensions 512 - Intel(R) Xeon Phi(TM) processor (formerly Knight Landing) - ia32
%assign _IPP_S0 1024 ; Intel(R) Advanced Vector Extensions 512 - Intel(R) Xeon(R) processor (formerly Skylake) - ia32
%assign _IPP32E_PX _IPP_PX ; pure C-code x64
%assign _IPP32E_M7 32 ; Intel(R) Streaming SIMD Extensions 3 - intel64
%assign _IPP32E_U8 64 ; Supplemental Streaming SIMD Extensions 3 (SSSE3) - intel64
%assign _IPP32E_N8 65 ; SSSE3 + MOVBE instruction - intel64
%assign _IPP32E_Y8 128 ; Intel(R) Streaming SIMD Extensions 4.2 - intel64
%assign _IPP32E_E9 256 ; Intel(R) Advanced Vector Extensions - intel64
%assign _IPP32E_L9 512 ; Intel(R) Advanced Vector Extensions 2 - intel64
%assign _IPP32E_N0 1024 ; Intel(R) Advanced Vector Extensions 512 - Intel(R) Xeon Phi(TM) processor (formerly Knight Landing) - intel64
%assign _IPP32E_K0 2048 ; Intel(R) Advanced Vector Extensions 512 - Intel(R) Xeon(R) processor (formerly Skylake) - intel64
%assign _IPP32E_K1 4096 ; Intel(R) Advanced Vector Extensions 512 - Intel(R) Xeon(R) processor (formerly Icelake) - intel64
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_PX
%ifdef _M5 ; Intel(R) Quark(TM) processor - ia32
%assign _IPP _IPP_M5
%elifdef _W7 ; Intel(R) Streaming SIMD Extensions 2 - ia32
%assign _IPP _IPP_W7
%elifdef _T7 ; Intel(R) Streaming SIMD Extensions 3 - ia32
%assign _IPP _IPP_T7
%elifdef _V8 ; Supplemental Streaming SIMD Extensions 3 (SSSE3)
%assign _IPP _IPP_V8
%elifdef _S8 ; SSSE3 + MOVBE instruction - ia32
%assign _IPP _IPP_S8
%elifdef _P8 ; Intel(R) Streaming SIMD Extensions 4.2 - ia32
%assign _IPP _IPP_P8
%elifdef _G9 ; Intel(R) Advanced Vector Extensions - ia32
%assign IPP_ALIGN_FACTOR 32
%assign _IPP _IPP_G9
%elifdef _H9 ; Intel(R) Advanced Vector Extensions 2 - ia32
%assign IPP_ALIGN_FACTOR 32
%assign _IPP _IPP_H9
%elifdef _S0 ; Intel(R) Advanced Vector Extensions 512 - Intel(R) Xeon(R) processor (formerly Skylake) - ia32
%assign IPP_ALIGN_FACTOR 64
%assign _IPP _IPP_S0
%elifdef _M7 ; Intel(R) Streaming SIMD Extensions 3 - intel64
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_M7
%elifdef _U8 ; Supplemental Streaming SIMD Extensions 3 (SSSE3) - intel64
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_U8
%elifdef _N8 ; SSSE3 + MOVBE instruction - intel64
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_N8
%elifdef _Y8 ; Intel(R) Streaming SIMD Extensions 4.2 - intel64
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_Y8
%elifdef _E9 ; Intel(R) Advanced Vector Extensions - intel64
%assign IPP_ALIGN_FACTOR 32
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_E9
%elifdef _L9 ; Intel(R) Advanced Vector Extensions 2 - intel64
%assign IPP_ALIGN_FACTOR 32
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_L9
%elifdef _N0 ; Intel(R) Advanced Vector Extensions 512 (formerly Knights Landing) - intel64
%assign IPP_ALIGN_FACTOR 64
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_N0
%elifdef _K0 ; Intel(R) Advanced Vector Extensions 512 - Intel(R) Xeon(R) processor (formerly Skylake) - intel64
%assign IPP_ALIGN_FACTOR 64
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_K0
%elifdef _K1 ; Intel(R) Advanced Vector Extensions 512 - Intel(R) Xeon(R) processor (formerly Icelake) - intel64
%assign IPP_ALIGN_FACTOR 64
%assign _IPP _IPP_PX
%assign _IPP32E _IPP32E_K1
%else
%assign _IPP _IPP_PX ; pure C-code
%endif
%if (_IPP > _IPP_H9) || (_IPP32E > _IPP32E_L9)
%assign IPP_ALIGN_FACTOR 64
%elif (_IPP > _IPP_P8) || (_IPP32E > _IPP32E_Y8)
%assign IPP_ALIGN_FACTOR 32
%else
%assign IPP_ALIGN_FACTOR 16
%endif
; noexec stack
%ifdef LINUX32
%ifndef OSX32
section .note.GNU-stack noalloc noexec nowrite progbits
%endif
%endif
; noexec stack
%ifdef LINUX32E
%ifndef OSXEM64T
%ifndef _ARCH_KNC
section .note.GNU-stack noalloc noexec nowrite progbits
%endif
%endif
%endif
%ifidn __OUTPUT_FORMAT__, elf32
%assign IPP_BINARY_FORMAT 0
%elifidn __OUTPUT_FORMAT__, elf64
%assign IPP_BINARY_FORMAT 1
%elifidn __OUTPUT_FORMAT__, macho64
%assign IPP_BINARY_FORMAT 2
%elifidn __OUTPUT_FORMAT__, win32
%assign IPP_BINARY_FORMAT 3
%elifidn __OUTPUT_FORMAT__, win64
%assign IPP_BINARY_FORMAT 4
%else
%fatal Unsupported output format: __OUTPUT_FORMAT__. Shall be: elf32, elf64, win32, win64, macho64
%endif
%ifdef _MERGED_BLD
%assign _OWN_MERGED_BLD 1
%endif ; _MERGED_BLD
; data compilation definitions: merged builds shall compile data only as
; part of one single object build to avoid multiple definition warnings at link time
%ifndef _MERGED_BLD
%assign _IPP_DATA 1
%else
%if (_IPP == _IPP_G9) || (_IPP32E == _IPP32E_E9)
%assign _IPP_DATA 1
%endif
%endif ; _MERGED_BLD
; Definitions of sizeof(type)
%iassign ZWORD_size 64 ; zmm-word
%iassign YWORD_size 32 ; ymm-word
%iassign OWORD_size 16 ; octo-word
%iassign TWORD_size 10 ; ten-bytes word
%iassign QWORD_size 8 ; quad-word
%iassign DWORD_size 4 ; double-word
%iassign WORD_size 2
%iassign BYTE_size 1
%idefine YMMWORD YWORD
%idefine XMMWORD OWORD
%iassign YMMWORD_size YWORD_size
%iassign XMMWORD_size OWORD_size
%idefine sizeof(_x_) _x_%+_size
%endif
;;;;;;;;;;;;;;;;;;;;;;;;;; End of file "asmdefs.inc" ;;;;;;;;;;;;;;;;;;;;;;;;;;

@ -0,0 +1,293 @@
/*******************************************************************************
* Copyright (C) 2009 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the 'License');
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an 'AS IS' BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions
* and limitations under the License.
*
*******************************************************************************/
//
// Intel® Integrated Performance Primitives Cryptography (Intel® IPP Cryptography)
//
#ifndef __DISPATCHER_H__
#define __DISPATCHER_H__
#if defined( __cplusplus )
extern "C" {
#endif
/*
Intel IPP Cryptography libraries and CPU features mask fitness. Implemented only for IA32 and Intel64 (emt)
*/
#if defined( _ARCH_IA32 )
#define M5_FM ( 0 )
#ifdef _IPP_QUARK
#define PX_FM ( 0 )
#else
#define PX_FM ( ippCPUID_MMX | ippCPUID_SSE )
#endif
#define W7_FM ( PX_FM | ippCPUID_SSE2 )
#define V8_FM ( W7_FM | ippCPUID_SSE3 | ippCPUID_SSSE3 )
#define S8_FM ( V8_FM | ippCPUID_MOVBE )
#define P8_FM ( V8_FM | ippCPUID_SSE41 | ippCPUID_SSE42 | ippCPUID_AES | ippCPUID_CLMUL | ippCPUID_SHA )
#define G9_FM ( P8_FM | ippCPUID_AVX | ippAVX_ENABLEDBYOS | ippCPUID_RDRAND | ippCPUID_F16C )
#define H9_FM ( G9_FM | ippCPUID_MOVBE | ippCPUID_AVX2 | ippCPUID_ADCOX | ippCPUID_RDSEED | ippCPUID_PREFETCHW )
#define I0_FM ( H9_FM | ippCPUID_AVX512F | ippCPUID_AVX512CD | ippCPUID_AVX512PF | ippCPUID_AVX512ER | ippAVX512_ENABLEDBYOS )
#define S0_FM ( H9_FM | ippCPUID_AVX512F | ippCPUID_AVX512CD | ippCPUID_AVX512VL | ippCPUID_AVX512BW | ippCPUID_AVX512DQ | ippAVX512_ENABLEDBYOS )
#elif defined (_ARCH_EM64T)
#define PX_FM ( ippCPUID_MMX | ippCPUID_SSE | ippCPUID_SSE2 )
#define M7_FM ( PX_FM | ippCPUID_SSE3 )
#define U8_FM ( M7_FM | ippCPUID_SSSE3 )
#define N8_FM ( U8_FM | ippCPUID_MOVBE )
#define Y8_FM ( U8_FM | ippCPUID_SSE41 | ippCPUID_SSE42 | ippCPUID_AES | ippCPUID_CLMUL | ippCPUID_SHA )
#define E9_FM ( Y8_FM | ippCPUID_AVX | ippAVX_ENABLEDBYOS | ippCPUID_RDRAND | ippCPUID_F16C )
#define L9_FM ( E9_FM | ippCPUID_MOVBE | ippCPUID_AVX2 | ippCPUID_ADCOX | ippCPUID_RDSEED | ippCPUID_PREFETCHW )
#define N0_FM ( L9_FM | ippCPUID_AVX512F | ippCPUID_AVX512CD | ippCPUID_AVX512PF | ippCPUID_AVX512ER | ippAVX512_ENABLEDBYOS )
#define K0_FM ( L9_FM | ippCPUID_AVX512F | ippCPUID_AVX512CD | ippCPUID_AVX512VL | ippCPUID_AVX512BW | ippCPUID_AVX512DQ | ippAVX512_ENABLEDBYOS )
#elif defined (_ARCH_LRB2)
#define PX_FM ( ippCPUID_KNC )
#else
#error undefined architecture
#endif
#define PX_MSK ( 0 )
#define MMX_MSK ( ippCPUID_MMX )
#define SSE_MSK ( MMX_MSK | ippCPUID_SSE )
#define SSE2_MSK ( SSE_MSK | ippCPUID_SSE2 )
#define SSE3_MSK ( SSE2_MSK | ippCPUID_SSE3 )
#define SSSE3_MSK ( SSE3_MSK | ippCPUID_SSSE3 )
#define ATOM_MSK ( SSE3_MSK | ippCPUID_SSSE3 | ippCPUID_MOVBE )
#define SSE41_MSK ( SSSE3_MSK | ippCPUID_SSE41 )
#define SSE42_MSK ( SSE41_MSK | ippCPUID_SSE42 )
#define AVX_MSK ( SSE42_MSK | ippCPUID_AVX )
#define AVX2_MSK ( AVX_MSK | ippCPUID_AVX2 )
#define AVX3X_MSK ( AVX2_MSK | ippCPUID_AVX512F | ippCPUID_AVX512CD | ippCPUID_AVX512VL | ippCPUID_AVX512BW | ippCPUID_AVX512DQ )
#define AVX3M_MSK ( AVX2_MSK | ippCPUID_AVX512F | ippCPUID_AVX512CD | ippCPUID_AVX512PF | ippCPUID_AVX512ER )
#define AVX3I_MSK ( AVX3X_MSK | ippCPUID_SHA | ippCPUID_AVX512VBMI | ippCPUID_AVX512VBMI2 | ippCPUID_AVX512IFMA | ippCPUID_AVX512GFNI | ippCPUID_AVX512VAES | ippCPUID_AVX512VCLMUL )
#if defined( _ARCH_IA32 ) && !defined( OSX32 )
enum lib_enum {
LIB_W7=0, LIB_S8=1, LIB_P8=2, LIB_G9=3, LIB_H9=4, LIB_NOMORE
};
#define LIB_PX LIB_W7
#elif defined( OSX32 )
enum lib_enum {
LIB_S8=0, LIB_P8=1, LIB_G9=2, LIB_H9=3, LIB_NOMORE
};
#define LIB_PX LIB_S8
#define LIB_W7 LIB_S8
#elif defined( _ARCH_EM64T ) && !defined( OSXEM64T ) && !defined( WIN32E ) /* Linux* OS Intel64 supports N0 */
enum lib_enum {
LIB_M7=0, LIB_N8=1, LIB_Y8=2, LIB_E9=3, LIB_L9=4, LIB_N0=5, LIB_K0=6, LIB_K1=7,LIB_NOMORE
};
#define LIB_PX LIB_M7
#elif defined( _ARCH_EM64T ) && !defined( OSXEM64T ) /* Windows* OS Intel64 doesn't support N0 */
enum lib_enum {
LIB_M7=0, LIB_N8=1, LIB_Y8=2, LIB_E9=3, LIB_L9=4, LIB_K0=5, LIB_K1=6, LIB_NOMORE
};
#define LIB_PX LIB_M7
#define LIB_N0 LIB_L9
#elif defined( OSXEM64T )
enum lib_enum {
LIB_Y8=0, LIB_E9=1, LIB_L9=2, LIB_K0=3, LIB_K1=4, LIB_NOMORE
};
#define LIB_PX LIB_Y8
#define LIB_M7 LIB_Y8
#define LIB_N8 LIB_Y8
#define LIB_N0 LIB_L9
#elif defined( _ARCH_LRB2 )
enum lib_enum {
LIB_PX=0, LIB_B2=1, LIB_NOMORE
};
#define LIB_MIC LIB_B2
#else
#error "lib_enum isn't defined!"
#endif
#if defined( _ARCH_IA32 )
#if defined( OSX32 ) /* OSX supports starting with Intel® architecture formerly codenamed Penryn only */
#define LIB_MMX LIB_S8
#define LIB_SSE LIB_S8
#define LIB_SSE2 LIB_S8
#define LIB_SSE3 LIB_S8
#define LIB_ATOM LIB_S8
#define LIB_SSSE3 LIB_S8
#define LIB_SSE41 LIB_S8
#define LIB_SSE42 LIB_P8
#define LIB_AVX LIB_G9
#define LIB_AVX2 LIB_H9
#define LIB_AVX3M LIB_H9 /* no ia32 library for Intel® Xeon® Phi(TM) processor (formerly Knight Landing) */
#define LIB_AVX3X LIB_H9 /* no ia32 library for Intel® Xeon® processor (formerly Skylake) */
#define LIB_AVX3I LIB_H9 /* no ia32 library for Intel® Xeon® processor (formerly Icelake) */
#else
#define LIB_MMX LIB_W7
#define LIB_SSE LIB_W7
#define LIB_SSE2 LIB_W7
#define LIB_SSE3 LIB_W7
#define LIB_ATOM LIB_S8
#define LIB_SSSE3 LIB_S8
#define LIB_SSE41 LIB_S8 /* P8 is oriented for new Intel Atom® processor (formerly Silvermont) */
#define LIB_SSE42 LIB_P8
#define LIB_AVX LIB_G9
#define LIB_AVX2 LIB_H9
#define LIB_AVX3M LIB_H9 /* no ia32 library for Intel® Xeon® Phi(TM) processor (formerly Knight Landing) */
#define LIB_AVX3X LIB_H9 /* no ia32 library for Intel® Xeon® processor (formerly Skylake) */
#define LIB_AVX3I LIB_H9 /* no ia32 library for Intel® Xeon® processor (formerly Icelake) */
#endif
#elif defined (_ARCH_EM64T)
#if defined( OSXEM64T ) /* OSX supports starting PNR only */
#define LIB_MMX LIB_N8
#define LIB_SSE LIB_N8
#define LIB_SSE2 LIB_N8
#define LIB_SSE3 LIB_N8
#define LIB_ATOM LIB_N8
#define LIB_SSSE3 LIB_N8
#define LIB_SSE41 LIB_N8
#define LIB_SSE42 LIB_Y8
#define LIB_AVX LIB_E9
#define LIB_AVX2 LIB_L9
#define LIB_AVX3M LIB_L9
#define LIB_AVX3X LIB_K0
#define LIB_AVX3I LIB_K1
#else
#define LIB_MMX LIB_M7
#define LIB_SSE LIB_M7
#define LIB_SSE2 LIB_M7
#define LIB_SSE3 LIB_M7
#define LIB_ATOM LIB_N8
#define LIB_SSSE3 LIB_N8
#define LIB_SSE41 LIB_N8 /* Y8 is oriented for new Intel Atom® processor (formerly Silvermont) */
#define LIB_SSE42 LIB_Y8
#define LIB_AVX LIB_E9
#define LIB_AVX2 LIB_L9
#define LIB_AVX3M LIB_N0
#define LIB_AVX3X LIB_K0
#define LIB_AVX3I LIB_K1
#endif
#elif defined (_ARCH_LRB2)
#define LIB_MIC LIB_B2
#endif
//gres: #if defined( _IPP_DYNAMIC )
#if defined( _PCS )
#if defined( _ARCH_IA32 )
/* Describe Intel CPUs and libraries */
typedef enum{CPU_W7=0, CPU_S8, CPU_P8, CPU_G9, CPU_H9, CPU_NOMORE} cpu_enum;
typedef enum{DLL_W7=0, DLL_S8, DLL_P8, DLL_G9, DLL_H9, DLL_NOMORE} dll_enum;
/* New cpu can use some libraries for old cpu */
static const dll_enum dllUsage[][DLL_NOMORE+1] = {
/* DLL_H9, DLL_G9, DLL_P8, DLL_S8, DLL_W7, DLL_NOMORE */
/*CPU_W7*/ { DLL_W7, DLL_NOMORE },
/*CPU_S8*/ { DLL_S8, DLL_W7, DLL_NOMORE },
/*CPU_P8*/ { DLL_P8, DLL_S8, DLL_W7, DLL_NOMORE },
/*CPU_G9*/ { DLL_G9, DLL_P8, DLL_S8, DLL_W7, DLL_NOMORE },
/*CPU_H9*/ { DLL_H9, DLL_G9, DLL_P8, DLL_S8, DLL_W7, DLL_NOMORE }
};
#elif defined (_ARCH_EM64T)
/* Describe Intel CPUs and libraries */
typedef enum{CPU_M7=0, CPU_N8, CPU_Y8, CPU_E9, CPU_L9, CPU_N0, CPU_K0, CPU_K1, CPU_NOMORE} cpu_enum;
typedef enum{DLL_M7=0, DLL_N8, DLL_Y8, DLL_E9, DLL_L9, DLL_N0, DLL_K0, DLL_K1, DLL_NOMORE} dll_enum;
/* New cpu can use some libraries for old cpu */
static const dll_enum dllUsage[][DLL_NOMORE+1] = {
/* DLL_K1, DLL_K0, DLL_N0, DLL_L9, DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE */
/*CPU_M7*/ { DLL_M7, DLL_NOMORE },
/*CPU_N8*/ { DLL_N8, DLL_M7, DLL_NOMORE },
/*CPU_Y8*/ { DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE },
/*CPU_E9*/ { DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE },
/*CPU_L9*/ { DLL_L9, DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE },
/*CPU_N0*/ { DLL_N0, DLL_L9, DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE },
/*CPU_K0*/ { DLL_K0, DLL_N0, DLL_L9, DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE }
/*CPU_K1*/ { DLL_K1, DLL_K0, DLL_N0, DLL_L9, DLL_E9, DLL_Y8, DLL_N8, DLL_M7, DLL_NOMORE }
};
#endif
#if defined( _PCS )
/* Names of the Intel libraries which can be loaded */
#if defined ( WIN32 )
static const _TCHAR* dllNames[DLL_NOMORE] = {
_T(IPP_LIB_PREFIX()) _T("w7") _T(".dll"),
_T(IPP_LIB_PREFIX()) _T("s8") _T(".dll"),
_T(IPP_LIB_PREFIX()) _T("p8") _T(".dll"),
_T(IPP_LIB_PREFIX()) _T("g9") _T(".dll"),
_T(IPP_LIB_PREFIX()) _T("h9") _T(".dll")
};
#elif defined(LINUX32)
static const _TCHAR* dllNames[DLL_NOMORE] = {
_T("lib") _T(IPP_LIB_PREFIX()) _T("w7.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("s8.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("p8.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("g9.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("h9.so")
};
#elif defined( OSX32 )
static const _TCHAR* dllNames[DLL_NOMORE] = {
_T("lib") _T(IPP_LIB_PREFIX()) _T("s8") _T(".dylib"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("p8") _T(".dylib"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("g9") _T(".dylib"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("h9") _T(".dylib")
};
#elif defined( WIN32E )
static const _TCHAR* dllNames[DLL_NOMORE] = {
_T(IPP_LIB_PREFIX()) _T("m7") _T(".dll"),
_T(IPP_LIB_PREFIX()) _T("n8") _T(".dll"),
_T(IPP_LIB_PREFIX()) _T("y8") _T(".dll"),
_T(IPP_LIB_PREFIX()) _T("e9") _T(".dll"),
_T(IPP_LIB_PREFIX()) _T("l9") _T(".dll"), /* no support for N0 on win */
_T(IPP_LIB_PREFIX()) _T("k0") _T(".dll"),
_T(IPP_LIB_PREFIX()) _T("k1") _T(".dll")
};
#elif defined( OSXEM64T )
static const _TCHAR* dllNames[DLL_NOMORE] = {
_T("lib") _T(IPP_LIB_PREFIX()) _T("n8") _T(".dylib"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("y8") _T(".dylib"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("e9") _T(".dylib"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("l9") _T(".dylib"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("k0") _T(".dylib"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("k1") _T(".dylib")
};
#elif defined( LINUX32E )
static const _TCHAR* dllNames[DLL_NOMORE] = {
_T("lib") _T(IPP_LIB_PREFIX()) _T("m7.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("n8.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("y8.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("e9.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("l9.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("n0.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("k0.so"),
_T("lib") _T(IPP_LIB_PREFIX()) _T("k1.so")
};
#endif
#endif /* _PCS */
#else /*_IPP_DYNAMIC */
#endif
#if defined( __cplusplus )
}
#endif
#endif /* __DISPATCHER_H__ */

@ -0,0 +1,532 @@
;===============================================================================
; Copyright (C) 2015 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the 'License');
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
; http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing,
; software distributed under the License is distributed on an 'AS IS' BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions
; and limitations under the License.
;
;===============================================================================
%include "asmdefs.inc"
%include "ia_common.inc"
%include "utils.inc"
%ifndef __IA_32E_INC__
%define __IA_32E_INC__ 1
%ifndef LINUX32E
%ifndef WIN32E
%fatal <Platform is not defined { LINUX32E or WIN32E }> \
LINUX32E or WIN32E - Linux ABI (parameter passing in rdi, rsi, rdx, rcx, r8, r9...)
%endif
%endif
; Force RIP-relative addressing
; default rel
%ifdef LINUX32E
%ifdef STACK_ABI
%assign IPP_ABI 2
%else
%assign IPP_ABI 3
%endif
%endif
%ifdef WIN32E
%ifdef STACK_ABI
%assign IPP_ABI 1
%else
%assign IPP_ABI 0
%endif
%endif
; Decorates function name with appropriate CPU prefix (for the merged library).
; The macro is context-dependent and returns decorated name in the %$decorated_func_name
; context variable along with the decoration length in the %$decoration_length context variable.
%macro CPU_PREFIX_DECORATE 1.nolist
%ifnctx _CPU_PREFIX_DECORATE_CTX_
%fatal "Not in the context: _CPU_PREFIX_DECORATE_CTX_"
%endif
; Add CPU-specific suffix for the dispatched library
%ifdef _OWN_MERGED_BLD
%if (_IPP32E == _IPP32E_PX)
%xdefine %%func_name mx_%1
%assign %%decoration_length 3
%endif
%if (_IPP32E == _IPP32E_M7)
%xdefine %%func_name m7_%1
%assign %%decoration_length 3
%endif
%if (_IPP32E == _IPP32E_U8)
%xdefine %%func_name u8_%1
%assign %%decoration_length 3
%endif
%if (_IPP32E == _IPP32E_N8)
%xdefine %%func_name n8_%1
%assign %%decoration_length 3
%endif
%if (_IPP32E == _IPP32E_Y8)
%xdefine %%func_name y8_%1
%assign %%decoration_length 3
%endif
%if (_IPP32E == _IPP32E_E9)
%xdefine %%func_name e9_%1
%assign %%decoration_length 3
%endif
%if (_IPP32E == _IPP32E_L9)
%xdefine %%func_name l9_%1
%assign %%decoration_length 3
%endif
%if (_IPP32E == _IPP32E_N0)
%xdefine %%func_name n0_%1
%assign %%decoration_length 3
%endif
%if (_IPP32E == _IPP32E_K0)
%xdefine %%func_name k0_%1
%assign %%decoration_length 3
%endif
%if (_IPP32E == _IPP32E_K1)
%xdefine %%func_name k1_%1
%assign %%decoration_length 3
%endif
%else
%xdefine %%func_name %1
%assign %%decoration_length 0
%endif
%ifndef %%func_name
%fatal "CPU_PREFIX_DECORATE: unknown decoration for : _IPP32E = " _IPP32E
%endif
%xdefine %$decorated_func_name %[%%func_name]
%assign %$decoration_length %%decoration_length
%endmacro
; Lists of non-volatile registers that needs to be preserved in a function call
%define NONVOLATILE_REGS_LIN64_GPR rbx,rbp,r12,r13,r14,r15
%define NONVOLATILE_REGS_WIN64_GPR rbx,rbp,r12,r13,r14,r15,rsi,rdi
%define NONVOLATILE_REGS_WIN64_XMM xmm6,xmm7,xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15
%define NONVOLATILE_REGS_WIN64_YMM ymm6,ymm7,ymm8,ymm9,ymm10,ymm11,ymm12,ymm13,ymm14,ymm15
; Saves non-volatile GPR registers on stack.
; Input - list of used registers.
%macro USES_GPR 1+.nolist
%assign GPR_FRAME 0
%define GPR_CUR
%if (IPP_ABI < 2) ; Win64
%define %%nonvolatile_regs_list %[NONVOLATILE_REGS_WIN64_GPR]
%else ; Lin64
%define %%nonvolatile_regs_list %[NONVOLATILE_REGS_LIN64_GPR]
%endif
BEGIN_INTERSECT
INTERSECT {%1},{%%nonvolatile_regs_list}
; List of non-volatile GPR registers in the order they will be pushed on stack
%xdefine GPR_CUR %[%$intersection]
%assign GPR_FRAME %$cardinality * 8
END_INTERSECT
; Push non-volatile GPRs on stack
FOREACH GPR_CUR,{push}
%endmacro
; Restore preliminary saved by USES_GPR non-volatile GPR registers from the stack.
; The macro shall be called after function processing.
%macro REST_GPR 0.nolist
%ifndef GPR_CUR
%fatal "REST_GPR: no GPR_CUR defined"
%endif
; Pop saved registers from the stack
RFOREACH GPR_CUR,{pop}
%endmacro
; Saves XMM register on stack (SSE version).
; An offset from RSP, where the register will be saved, shall be provided in the calling context.
%macro PUSH_XMM_REG 1.nolist
movdqa [rsp + %$rsp_offset], %1
%assign %$rsp_offset %$rsp_offset + 16
%endmacro
; Saves non-volatile XMM registers on stack and allocates stack size for
; local variables if needed.
; Input - list of used registers (can be empty).
%macro USES_XMM 0-*.nolist
; LOCAL_FRAME - stack size required for all local variables of the procedure. Shall be defined before USES_XMM macro call if
; local variables are used in the procedure.
%ifndef LOCAL_FRAME
%assign LOCAL_FRAME 0
%endif
; to align size for local variables size on 16-bytes
%assign LOCAL_FRAME (LOCAL_FRAME + 15) & (-16)
%assign S_FRAME 0
%define XMM_CUR
; Convert parameters to the list variable if there are arguments
%if (%0 > 0)
%xdefine %%param_list %1
%rotate 1
%rep %0-1
%xdefine %%param_list %[%%param_list],%1
%rotate 1
%endrep
%endif
%if (IPP_ABI < 2) ; Win64
%assign %%T_FRAME 0
BEGIN_INTERSECT
INTERSECT {%%param_list},{%[NONVOLATILE_REGS_WIN64_XMM]}
%define XMM_CUR %[%$intersection]
%assign %%T_FRAME %$cardinality * 16
END_INTERSECT
; Adjust offset depending on function frame
%if ((%%T_FRAME > 0) || (LOCAL_FRAME > 0))
%assign S_FRAME %%T_FRAME + LOCAL_FRAME
%if (((S_FRAME + GPR_FRAME ) & 8) == 0)
%assign S_FRAME S_FRAME + 8
%endif
%endif
; Allocate space on stack and push XMM registers
%if (S_FRAME > 0)
sub rsp, S_FRAME
%push %??
%assign %$rsp_offset LOCAL_FRAME
FOREACH %[XMM_CUR],{PUSH_XMM_REG}
%pop %??
%endif
%else
; Linux x86_64 ABI does not count <X,Y,Z>MM registers as non-volatile, so they do not need to be
; preserved, so just allocate stack space for local variables and duplicated register parameters if needed.
%if (IPP_ABI == 2) ; LINUX32S
%assign S_FRAME LOCAL_FRAME + 48 ; 48 = 6 * 8 - stack frame for 6 register inputs
%if (((S_FRAME + GPR_FRAME) & 8 ) == 0)
%assign S_FRAME S_FRAME + 8
%endif
%assign INP_FRAME S_FRAME - 48 ; for Linux32s-key stack-frame for 6 registers inputs
%else ; LINUX32E
%if (LOCAL_FRAME > 0)
%assign S_FRAME LOCAL_FRAME
%if (((S_FRAME + GPR_FRAME) & 8 ) == 0)
%assign S_FRAME S_FRAME + 8
%endif
%endif
%endif
%if (S_FRAME > 0)
sub rsp, S_FRAME
%endif
%endif
%endmacro
; Pop input list of XMM registers from the stack.
; The offset from RSP, where the registers will be taken from, shall be provided in the calling context.
%macro POP_XMM_REG 1.nolist
movdqa %1, [rsp + %$rsp_offset]
%assign %$rsp_offset %$rsp_offset + 16
%endmacro
; Restore preliminary saved by USES_XMM non-volatile XMM registers from the stack.
; The macro shall be called after function processing.
%macro REST_XMM 0.nolist
%if (IPP_ABI < 2)
%if (S_FRAME > 0)
%push %??
%assign %$rsp_offset LOCAL_FRAME
FOREACH %[XMM_CUR],{POP_XMM_REG}
%pop %??
%endif
%endif
%if (S_FRAME > 0)
add rsp, S_FRAME
%endif
%if (_IPP32E >= _IPP32E_E9)
%if (_IPP32E != _IPP32E_N0)
vzeroupper
%endif
%endif
%endmacro
; Saves XMM or YMM register on stack (AVX version).
; An offset from RSP, where the registers will be saved, shall be provided in the calling context.
%macro PUSH_XMM_AVX_REG 1.nolist
; Process registers depending on type
%defstr %%reg_str %1 ; convert register token to the string
%substr %%reg_type %%reg_str 1, 3 ; take first 3 elems of the string
%ifidni %%reg_type, 'xmm'
vmovdqa oword [rsp + %$rsp_offset], %1
%assign %$rsp_offset %$rsp_offset + 16
%elifidni %%reg_type, 'ymm'
vmovdqu ymmword [rsp + %$rsp_offset], %1
%assign %$rsp_offset %$rsp_offset + 32
%else
%fatal PUSH_XMM_AVX_REG: inconsistent usage - only XMM/YMM registers supported, found: %%reg_type
%endif
%endmacro
; Saves non-volatile XMM/YMM registers on stack and allocates stack size for
; local variables if needed (AVX version).
; Input - list of used registers (can be empty).
%macro USES_XMM_AVX 0-*.nolist
; LOCAL_FRAME - stack size required for all local variables of the procedure. Shall be defined before USES_XMM macro call if
; local variables are used in the procedure.
%ifndef LOCAL_FRAME
%assign LOCAL_FRAME 0
%endif
; to align size for local variables size on 16-bytes
%assign LOCAL_FRAME (LOCAL_FRAME + 15) & (-16)
%assign S_FRAME 0
%define XMM_CUR
%define YMM_CUR
; Convert parameters to the list variable if there are arguments
%if (%0 > 0)
%xdefine %%param_list %1
%rotate 1
%rep %0-1
%xdefine %%param_list %[%%param_list],%1
%rotate 1
%endrep
%endif
%if (IPP_ABI < 2) ; Win64
%assign %%T_FRAME 0
; Process XMM registers
BEGIN_INTERSECT
INTERSECT {%%param_list},{%[NONVOLATILE_REGS_WIN64_XMM]}
%define XMM_CUR %[%$intersection]
%assign %%T_FRAME %$cardinality * 16
END_INTERSECT
; Process YMM registers
BEGIN_INTERSECT
INTERSECT {%%param_list},{%[NONVOLATILE_REGS_WIN64_YMM]}
%define YMM_CUR %[%$intersection]
%assign %%T_FRAME %%T_FRAME + %$cardinality * 32
END_INTERSECT
; Adjust offset depending on function frame
%if ((%%T_FRAME > 0) || (LOCAL_FRAME > 0))
%assign S_FRAME %%T_FRAME + LOCAL_FRAME
%if (((S_FRAME + GPR_FRAME ) & 8) == 0)
%assign S_FRAME S_FRAME + 8
%endif
%endif
; Allocate space on stack and push registers
%if (S_FRAME > 0)
sub rsp, S_FRAME
CONCATENATE {%[XMM_CUR]},{%[YMM_CUR]},%%XMM_YMM_CUR
%push %??
%assign %$rsp_offset LOCAL_FRAME
FOREACH %[%%XMM_YMM_CUR],{PUSH_XMM_AVX_REG}
%pop %??
%endif
%else
; Linux x86_64 ABI does not count <X,Y,Z>MM registers as non-volatile, so they do not need to be
; preserved, so just allocate stack space for local variables and duplicated register parameters if needed.
%if (IPP_ABI == 2) ; LINUX32S
%assign S_FRAME LOCAL_FRAME + 48 ; 48 = 6 * 8 - stack frame for 6 register inputs
%if (((S_FRAME + GPR_FRAME) & 8 ) == 0)
%assign S_FRAME S_FRAME + 8
%endif
%assign INP_FRAME S_FRAME - 48 ; for Linux32s-key stack-frame for 6 registers inputs
%else ; LINUX32E
%if (LOCAL_FRAME > 0)
%assign S_FRAME LOCAL_FRAME
%if (((S_FRAME + GPR_FRAME) & 8 ) == 0)
%assign S_FRAME S_FRAME + 8
%endif
%endif
%endif
%if (S_FRAME > 0)
sub rsp, S_FRAME
%endif
%endif
%endmacro
; Pop XMM or YMM register from the stack.
; The offset from RSP, where the registers will be taken from, shall be provided in the calling context.
%macro POP_XMM_AVX_REG 1.nolist
; Process registers depending on type
%defstr %%reg_str %1 ; convert register token to the string
%substr %%reg_type %%reg_str 1, 3 ; take first 3 elems of the string
%ifidni %%reg_type, 'xmm'
vmovdqa %1, oword [rsp + %$rsp_offset]
%assign %$rsp_offset %$rsp_offset + 16
%elifidni %%reg_type, 'ymm'
vmovdqu %1, ymmword [rsp + %$rsp_offset]
%assign %$rsp_offset %$rsp_offset + 32
%else
%fatal POP_XMM_AVX_REG: inconsistent usage - only XMM/YMM registers supported, found: %%reg_type
%endif
%endmacro
; Restore preliminary saved by USES_XMM_AVX non-volatile XMM/YMM registers from the stack.
; The macro shall be called after function processing.
%macro REST_XMM_AVX 0.nolist
%if (IPP_ABI < 2)
%if (S_FRAME > 0)
CONCATENATE {%[XMM_CUR]},{%[YMM_CUR]},%%XMM_YMM_CUR
%push %??
%assign %$rsp_offset LOCAL_FRAME
FOREACH %[%%XMM_YMM_CUR],{POP_XMM_AVX_REG}
%pop %??
%endif
%endif
%if (S_FRAME > 0)
add rsp, S_FRAME
%endif
%if (_IPP32E != _IPP32E_N0)
vzeroupper
%endif
%endmacro
; Helper macro to align different ABIs parameters for uniform usage
%macro COMP_ABI 1.nolist
%if (IPP_ABI == 0) ;; if defined WIN32E
%if (%1 > 0)
mov rdi, rcx ;; ARG_1
%endif
%if (%1 > 1)
mov rsi, rdx ;; ARG_2
%endif
%if (%1 > 2)
mov rdx, r8 ;; ARG_3
%endif
%if (%1 > 3)
mov rcx, r9 ;; ARG_4
%endif
%if (%1 > 4)
mov r8, [rsp + S_FRAME + GPR_FRAME + 40] ;; ARG_5
%endif
%if (%1 > 5)
mov r9, [rsp + S_FRAME + GPR_FRAME + 48] ;; ARG_6
%endif
%if (%1 > 6)
%assign FIRST_P S_FRAME + GPR_FRAME + 56 ;; ARG_7
%assign ARG_7 S_FRAME + GPR_FRAME + 56
%endif
%endif
%if (IPP_ABI == 1) ;; if defined WIN32S
%assign FIRST_P S_FRAME + GPR_FRAME + 8
%if (%1 > 0)
mov [rsp + FIRST_P],rcx
%assign ARG_1 FIRST_P
%endif
%if (%1 > 1)
mov [rsp + FIRST_P + 8],rdx
%assign ARG_2 ARG_1 + 8
%endif
%if (%1 > 2)
mov [rsp + FIRST_P + 16],r8
%assign ARG_3 ARG_2 + 8
%endif
%if (%1 > 3)
mov [rsp + FIRST_P + 24],r9
%assign ARG_4 ARG_3 + 8
%endif
%if (%1 > 4)
%assign ARG_5 ARG_4 + 8
%endif
%if (%1 > 5)
%assign ARG_6 ARG_5 + 8
%endif
%if (%1 > 6)
%assign ARG_7 ARG_6 + 8 ;; ARG_7
%endif
%endif
%if (IPP_ABI == 2) ;; if defined LINUX32S
%assign FIRST_P INP_FRAME
%if (%1 > 0)
mov [rsp + FIRST_P],rdi
%assign ARG_1 FIRST_P
%endif
%if (%1 > 1)
mov [rsp + FIRST_P + 8],rsi
%assign ARG_2 ARG_1 + 8
%endif
%if (%1 > 2)
mov [rsp + FIRST_P + 16],rdx
%assign ARG_3 ARG_2 + 8
%endif
%if (%1 > 3)
mov [rsp + FIRST_P + 24],rcx
%assign ARG_4 ARG_3 + 8
%endif
%if (%1 > 4)
mov [rsp + FIRST_P + 32],r8
%assign ARG_5 ARG_4 + 8
%endif
%if (%1 > 5)
mov [rsp + FIRST_P + 40],r9
%assign ARG_6 ARG_5 + 8
%endif
%if (%1 > 6)
%assign ARG_7 S_FRAME+GPR_FRAME+8
%endif
%endif
%if (IPP_ABI == 3)
%if (%1 > 6) ;; ARG_1 = rdi ARG_2 = rsi ARG_3 = rdx ARG_4 = rcx ARG_5 = r8 ARG_6 = r9
%assign FIRST_P S_FRAME + GPR_FRAME + 8 ;; ARG_7
%assign ARG_7 S_FRAME + GPR_FRAME + 8
%endif
%endif
%if (%1 > 7)
%assign ARG_8 ARG_7 + 8 ;; ARG_8
%endif
%if (%1 > 8)
%assign ARG_9 ARG_8 + 8 ;; ARG_9
%endif
%if (%1 > 9)
%assign ARG_10 ARG_9 + 8 ;; ARG_10
%endif
%if (%1 > 10)
%assign ARG_11 ARG_10 + 8 ;; ARG_11
%endif
%if (%1 > 11)
%assign ARG_12 ARG_11 + 8 ;; ARG_12
%endif
%if (%1 > 12)
%assign ARG_13 ARG_12 + 8 ;; ARG_13
%endif
%if (%1 > 13)
%assign ARG_14 ARG_13 + 8 ;; ARG_14
%endif
%if (%1 > 14)
%assign ARG_15 ARG_14 + 8 ;; ARG_15
%endif
%if (%1 > 15)
%assign ARG_16 ARG_15 + 8 ;; ARG_16
%endif
%if (%1 > 16)
%assign ARG_17 ARG_16 + 8 ;; ARG_17
%endif
%if (%1 > 17)
%assign ARG_18 ARG_17 + 8 ;; ARG_18
%endif
%endmacro
%macro LD_ADDR 2.nolist
%xdefine %%reg %1
%xdefine %%addr %2
%ifdef xxIPP_PIC
call %%LABEL
%%LABEL: pop %%reg
sub %%reg, %%LABEL-%%addr
%else
lea %%reg, [%%addr]
%endif
%endmacro
%endif

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save