// 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