mirror of
https://github.com/corda/corda.git
synced 2025-01-08 14:03:06 +00:00
9441de4c38
This release is used in conjunction with the linux-sgx-driver Intial release: https://github.com/01org/linux-sgx-driver commit-id: 0e865ce5e6b297a787bcdc12d98bada8174be6d7 Intel-id: 33399 Signed-off-by: Angie Chinchilla <angie.v.chinchilla@intel.com>
212 lines
7.9 KiB
C
Executable File
212 lines
7.9 KiB
C
Executable File
/*
|
|
* Copyright (C) 2016 Intel Corporation. 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 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.
|
|
*
|
|
*/
|
|
|
|
#ifndef __IPPCPDEFS_H__
|
|
#define __IPPCPDEFS_H__
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
// AES
|
|
*/
|
|
#define IPP_AES_BLOCK_BITSIZE (128) /* cipher blocksizes (bits) */
|
|
|
|
typedef enum { /* cipher keysizes (bits) */
|
|
ippRijndaelKey128 = 128, IppsRijndaelKey128 = 128, /* 128-bit key */
|
|
ippRijndaelKey192 = 192, IppsRijndaelKey192 = 192, /* 192-bit key */
|
|
ippRijndaelKey256 = 256, IppsRijndaelKey256 = 256 /* 256-bit key */
|
|
} IppsRijndaelKeyLength;
|
|
|
|
typedef struct _cpRijndael128 IppsAESSpec;
|
|
typedef struct _cpAES_GCM IppsAES_GCMState;
|
|
typedef struct _cpAES_CMAC IppsAES_CMACState;
|
|
|
|
|
|
/*
|
|
// hash
|
|
*/
|
|
typedef enum {
|
|
ippHashAlg_Unknown,
|
|
ippHashAlg_SHA1,
|
|
ippHashAlg_SHA256,
|
|
ippHashAlg_SHA224,
|
|
ippHashAlg_SHA512,
|
|
ippHashAlg_SHA384,
|
|
ippHashAlg_MD5,
|
|
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_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*/
|
|
|
|
#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_SHA512_224_DIGEST_BITSIZE 224
|
|
#define IPP_SHA512_256_DIGEST_BITSIZE 256
|
|
|
|
typedef struct _cpHashCtx IppsHashState;
|
|
typedef struct _cpHMAC IppsHMACState;
|
|
|
|
|
|
/*
|
|
// Big Number Integer Arithmetic
|
|
*/
|
|
#define BN_MAXBITSIZE (16*1024) /* bn max size (bits) */
|
|
|
|
/* operation results */
|
|
#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
|
|
|
|
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 (__STDCALL *IppBitSupplier)(Ipp32u* pRand, int nBits, void* pEbsParams);
|
|
|
|
|
|
/*
|
|
// RSA
|
|
*/
|
|
#define MIN_RSA_SIZE (8)
|
|
#define MAX_RSA_SIZE (4096)
|
|
|
|
typedef struct _cpRSA IppsRSAState;
|
|
typedef struct _cpRSA_public_key IppsRSAPublicKeyState;
|
|
typedef struct _cpRSA_private_key IppsRSAPrivateKeyState;
|
|
|
|
|
|
/*
|
|
// EC Cryptography
|
|
*/
|
|
#define EC_GFP_MAXBITSIZE (1024)
|
|
|
|
typedef struct _cpECCP IppsECCPState;
|
|
typedef struct _cpECCPPoint IppsECCPPointState;
|
|
|
|
/* 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;
|
|
|
|
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 */
|
|
} IppsECType, IppECCType;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __IPPCPDEFS_H__ */
|