35 lines
1.2 KiB
C
35 lines
1.2 KiB
C
// 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
|