// This file was extracted from the TCG Published
// Trusted Platform Module Library
// Part 4: Supporting Routines
// Family "2.0"
// Level 00 Revision 01.16
// October 30, 2014
#ifndef _CRYPTDATAECC_H_
#define _CRYPTDATAECC_H_
//
// Structure for the curve parameters. This is an analog to the TPMS_ALGORITHM_DETAIL_ECC
//
typedef struct {
const TPM2B *p; // a prime number
const TPM2B *a; // linear coefficient
const TPM2B *b; // constant term
const TPM2B *x; // generator x coordinate
const TPM2B *y; // generator y coordinate
const TPM2B *n; // the order of the curve
const TPM2B *h; // cofactor
} ECC_CURVE_DATA;
typedef struct
{
TPM_ECC_CURVE curveId;
UINT16 keySizeBits;
TPMT_KDF_SCHEME kdf;
TPMT_ECC_SCHEME sign;
const ECC_CURVE_DATA *curveData; // the address of the curve data
} ECC_CURVE;
extern const ECC_CURVE_DATA SM2_P256;
extern const ECC_CURVE_DATA NIST_P256;
extern const ECC_CURVE_DATA BN_P256;
extern const ECC_CURVE eccCurves[];
extern const UINT16 ECC_CURVE_COUNT;
#endif