fork of https://github.com/rust-rocksdb/rust-rocksdb for nextgraph
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
861 lines
37 KiB
861 lines
37 KiB
1 year ago
|
/*******************************************************************************
|
||
|
* 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 ) */
|