mirror of
https://github.com/stefanberger/libtpms
synced 2025-12-26 06:12:50 +00:00
tpm2: Add definitions for new algorithms and curves
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
This commit is contained in:
parent
e28feca41f
commit
bc565b962f
@ -100,17 +100,40 @@
|
||||
# define SM2_P256_ID TPM_ECC_SM2_P256
|
||||
# define SM2_P256_KEY_SIZE 256
|
||||
|
||||
// Table "Defines for BP_P256_R1 ECC Values" (TCG Algorithm Registry)
|
||||
# define BP_P256_R1_ID TPM_ECC_BP_P256_R1
|
||||
# define BP_P256_R1_KEY_SIZE 256
|
||||
|
||||
// Table "Defines for BP_P384_R1 ECC Values" (TCG Algorithm Registry)
|
||||
# define BP_P384_R1_ID TPM_ECC_BP_P384_R1
|
||||
# define BP_P384_R1_KEY_SIZE 384
|
||||
|
||||
// Table "Defines for BP_P512_R1 ECC Values" (TCG Algorithm Registry)
|
||||
# define BP_P512_R1_ID TPM_ECC_BP_P512_R1
|
||||
# define BP_P512_R1_KEY_SIZE 512
|
||||
|
||||
// Table "Defines for CURVE_25519 ECC Values" (TCG Algorithm Registry)
|
||||
# define CURVE_25519_ID TPM_ECC_CURVE_25519
|
||||
# define CURVE_25519_KEY_SIZE 256
|
||||
|
||||
// Table "Defines for CURVE_448 ECC Values" (TCG Algorithm Registry)
|
||||
# define CURVE_448_ID TPM_ECC_CURVE_448
|
||||
# define CURVE_448_KEY_SIZE 448
|
||||
|
||||
// Derived ECC Value
|
||||
# define ECC_CURVES \
|
||||
{ \
|
||||
TPM_ECC_NIST_P192, TPM_ECC_NIST_P224, TPM_ECC_NIST_P256, \
|
||||
TPM_ECC_NIST_P384, TPM_ECC_NIST_P521, TPM_ECC_BN_P256, \
|
||||
TPM_ECC_BN_P638, TPM_ECC_SM2_P256}
|
||||
TPM_ECC_BN_P638, TPM_ECC_SM2_P256, TPM_ECC_BP_P256_R1, \
|
||||
TPM_ECC_BP_P384_R1, TPM_ECC_BP_P512_R1, TPM_ECC_CURVE_25519, \
|
||||
TPM_ECC_CURVE_448 \
|
||||
}
|
||||
|
||||
# define ECC_CURVE_COUNT \
|
||||
(ECC_NIST_P192 + ECC_NIST_P224 + ECC_NIST_P256 + ECC_NIST_P384 + ECC_NIST_P521 \
|
||||
+ ECC_BN_P256 + ECC_BN_P638 + ECC_SM2_P256)
|
||||
+ ECC_BN_P256 + ECC_BN_P638 + ECC_SM2_P256 + ECC_BP_P256_R1 + ECC_BP_P384_R1 \
|
||||
+ ECC_BP_P512_R1 + ECC_CURVE_25519 + ECC_CURVE_448)
|
||||
|
||||
// Avoid expanding MAX_ECC_KEY_BITS into a long expression, the compiler slows down
|
||||
// and on some compilers runs out of heap space.
|
||||
@ -121,9 +144,16 @@
|
||||
// 521
|
||||
# elif ECC_NIST_P521
|
||||
# define MAX_ECC_KEY_BITS NIST_P521_KEY_SIZE
|
||||
# elif ECC_BP_P512_R1
|
||||
# define MAX_ECC_KEY_BITS BP_P512_R1_KEY_SIZE
|
||||
// 448
|
||||
# elif ECC_CURVE_448
|
||||
# define MAX_ECC_KEY_BITS CURVE_448_KEY_SIZE
|
||||
// 384
|
||||
# elif ECC_NIST_P384
|
||||
# define MAX_ECC_KEY_BITS NIST_P384_KEY_SIZE
|
||||
# elif ECC_BP_P384_R1
|
||||
# define MAX_ECC_KEY_BITS BP_P384_R1_KEY_SIZE
|
||||
// 256
|
||||
# elif ECC_NIST_P256
|
||||
# define MAX_ECC_KEY_BITS NIST_P256_KEY_SIZE
|
||||
@ -131,6 +161,10 @@
|
||||
# define MAX_ECC_KEY_BITS BN_P256_KEY_SIZE
|
||||
# elif TPM_ECC_SM2_P256
|
||||
# define MAX_ECC_KEY_BITS SM2_P256_KEY_SIZE
|
||||
# elif TPM_ECC_CURVE_25519
|
||||
# define MAX_ECC_KEY_BITS CURVE_25519_KEY_SIZE
|
||||
# elif TPM_ECC_BP_P256_R1
|
||||
# define MAX_ECC_KEY_BITS BP_P256_R1_KEY_SIZE
|
||||
// 224
|
||||
# elif ECC_NIST_P224
|
||||
# define MAX_ECC_KEY_BITS NIST_P224_KEY_SIZE
|
||||
|
||||
@ -119,6 +119,8 @@ typedef UINT16 TPM_ALG_ID;
|
||||
#define TPM_ALG_SHA384 (TPM_ALG_ID)(ALG_SHA384_VALUE)
|
||||
#define ALG_SHA512_VALUE 0x000D
|
||||
#define TPM_ALG_SHA512 (TPM_ALG_ID)(ALG_SHA512_VALUE)
|
||||
#define ALG_SHA256_192_VALUE 0x000E
|
||||
#define TPM_ALG_SHA256_192 (TPM_ALG_ID)(ALG_SHA256_192_VALUE)
|
||||
#define ALG_NULL_VALUE 0x0010
|
||||
#define TPM_ALG_NULL (TPM_ALG_ID)(ALG_NULL_VALUE)
|
||||
#define ALG_SM3_256_VALUE 0x0012
|
||||
@ -163,6 +165,16 @@ typedef UINT16 TPM_ALG_ID;
|
||||
#define TPM_ALG_SHA3_384 (TPM_ALG_ID)(ALG_SHA3_384_VALUE)
|
||||
#define ALG_SHA3_512_VALUE 0x0029
|
||||
#define TPM_ALG_SHA3_512 (TPM_ALG_ID)(ALG_SHA3_512_VALUE)
|
||||
#define ALG_SHAKE128_VALUE 0x002A
|
||||
#define TPM_ALG_SHAKE128 (TPM_ALG_ID)(ALG_SHAKE128_VALUE)
|
||||
#define ALG_SHAKE256_VALUE 0x002B
|
||||
#define TPM_ALG_SHAKE256 (TPM_ALG_ID)(ALG_SHAKE256_VALUE)
|
||||
#define ALG_SHAKE256_192_VALUE 0x002C
|
||||
#define TPM_ALG_SHAKE256_192 (TPM_ALG_ID)(ALG_SHAKE256_192_VALUE)
|
||||
#define ALG_SHAKE256_256_VALUE 0x002D
|
||||
#define TPM_ALG_SHAKE256_256 (TPM_ALG_ID)(ALG_SHAKE256_256_VALUE)
|
||||
#define ALG_SHAKE256_512_VALUE 0x002E
|
||||
#define TPM_ALG_SHAKE256_512 (TPM_ALG_ID)(ALG_SHAKE256_512_VALUE)
|
||||
#define ALG_CMAC_VALUE 0x003F
|
||||
#define TPM_ALG_CMAC (TPM_ALG_ID)(ALG_CMAC_VALUE)
|
||||
#define ALG_CTR_VALUE 0x0040
|
||||
@ -175,10 +187,28 @@ typedef UINT16 TPM_ALG_ID;
|
||||
#define TPM_ALG_CFB (TPM_ALG_ID)(ALG_CFB_VALUE)
|
||||
#define ALG_ECB_VALUE 0x0044
|
||||
#define TPM_ALG_ECB (TPM_ALG_ID)(ALG_ECB_VALUE)
|
||||
#define ALG_CCM_VALUE 0x0050
|
||||
#define TPM_ALG_CCM (TPM_ALG_ID)(ALG_CCM_VALUE)
|
||||
#define ALG_GCM_VALUE 0x0051
|
||||
#define TPM_ALG_GCM (TPM_ALG_ID)(ALG_GCM_VALUE)
|
||||
#define ALG_KW_VALUE 0x0052
|
||||
#define TPM_ALG_KW (TPM_ALG_ID)(ALG_KW_VALUE)
|
||||
#define ALG_KWP_VALUE 0x0053
|
||||
#define TPM_ALG_KWP (TPM_ALG_ID)(ALG_KWP_VALUE)
|
||||
#define ALG_EAX_VALUE 0x0054
|
||||
#define TPM_ALG_EAX (TPM_ALG_ID)(ALG_EAX_VALUE)
|
||||
#define ALG_EDDSA_VALUE 0x0060
|
||||
#define TPM_ALG_EDDSA (TPM_ALG_ID)(ALG_EDDSA_VALUE)
|
||||
#define ALG_EDDSA_PH_VALUE 0x0061
|
||||
#define TPM_ALG_EDDSA_PH (TPM_ALG_ID)(ALG_EDDSA_PH_VALUE)
|
||||
#define ALG_LMS_VALUE 0x0070
|
||||
#define TPM_ALG_LMS (TPM_ALG_ID)(ALG_LMS_VALUE)
|
||||
#define ALG_XMSS_VALUE 0x0071
|
||||
#define TPM_ALG_XMSS (TPM_ALG_ID)(ALG_XMSS_VALUE)
|
||||
// Values derived from Table "Definition of TPM_ALG_ID Constants" (Part 2: Structures)
|
||||
#define ALG_FIRST_VALUE 0x0001
|
||||
#define TPM_ALG_FIRST (TPM_ALG_ID)(ALG_FIRST_VALUE)
|
||||
#define ALG_LAST_VALUE 0x0044
|
||||
#define ALG_LAST_VALUE 0x0071
|
||||
#define TPM_ALG_LAST (TPM_ALG_ID)(ALG_LAST_VALUE)
|
||||
|
||||
// Table "Definition of TPM_ECC_CURVE Constants" (Part 2: Structures)
|
||||
@ -194,6 +224,11 @@ typedef UINT16 TPM_ECC_CURVE;
|
||||
#define TPM_ECC_BN_P256 (TPM_ECC_CURVE)(0x0010)
|
||||
#define TPM_ECC_BN_P638 (TPM_ECC_CURVE)(0x0011)
|
||||
#define TPM_ECC_SM2_P256 (TPM_ECC_CURVE)(0x0020)
|
||||
#define TPM_ECC_BP_P256_R1 (TPM_ECC_CURVE)(0x0030)
|
||||
#define TPM_ECC_BP_P384_R1 (TPM_ECC_CURVE)(0x0031)
|
||||
#define TPM_ECC_BP_P512_R1 (TPM_ECC_CURVE)(0x0032)
|
||||
#define TPM_ECC_CURVE_25519 (TPM_ECC_CURVE)(0x0040)
|
||||
#define TPM_ECC_CURVE_448 (TPM_ECC_CURVE)(0x0041)
|
||||
|
||||
// Table "Definition of TPM_CC Constants" (Part 2: Structures)
|
||||
typedef UINT32 TPM_CC;
|
||||
@ -1598,6 +1633,9 @@ typedef union
|
||||
#if ALG_SHA256
|
||||
BYTE sha256[SHA256_DIGEST_SIZE];
|
||||
#endif // ALG_SHA256
|
||||
#if ALG_SHA256_192
|
||||
BYTE sha256_192[SHA256_192_DIGEST_SIZE];
|
||||
#endif // ALG_SHA256_192
|
||||
#if ALG_SHA3_256
|
||||
BYTE sha3_256[SHA3_256_DIGEST_SIZE];
|
||||
#endif // ALG_SHA3_256
|
||||
@ -1613,6 +1651,15 @@ typedef union
|
||||
#if ALG_SHA512
|
||||
BYTE sha512[SHA512_DIGEST_SIZE];
|
||||
#endif // ALG_SHA512
|
||||
#if ALG_SHAKE256_192
|
||||
BYTE shake256_192[SHAKE256_192_DIGEST_SIZE];
|
||||
#endif // ALG_SHAKE256_192
|
||||
#if ALG_SHAKE256_256
|
||||
BYTE shake256_256[SHAKE256_256_DIGEST_SIZE];
|
||||
#endif // ALG_SHAKE256_256
|
||||
#if ALG_SHAKE256_512
|
||||
BYTE shake256_512[SHAKE256_512_DIGEST_SIZE];
|
||||
#endif // ALG_SHAKE256_512
|
||||
#if ALG_SM3_256
|
||||
BYTE sm3_256[SM3_256_DIGEST_SIZE];
|
||||
#endif // ALG_SM3_256
|
||||
@ -2220,6 +2267,10 @@ typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_ECDSA;
|
||||
#define TYPE_OF_TPMS_SIG_SCHEME_ECDSA TPMS_SCHEME_HASH
|
||||
typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_ECSCHNORR;
|
||||
#define TYPE_OF_TPMS_SIG_SCHEME_ECSCHNORR TPMS_SCHEME_HASH
|
||||
typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_EDDSA;
|
||||
#define TYPE_OF_TPMS_SIG_SCHEME_EDDSA TPMS_SCHEME_HASH
|
||||
typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_EDDSA_PH;
|
||||
#define TYPE_OF_TPMS_SIG_SCHEME_EDDSA_PH TPMS_SCHEME_HASH
|
||||
typedef TPMS_SCHEME_HASH TPMS_SIG_SCHEME_SM2;
|
||||
#define TYPE_OF_TPMS_SIG_SCHEME_SM2 TPMS_SCHEME_HASH
|
||||
|
||||
@ -2246,6 +2297,18 @@ typedef union
|
||||
#if ALG_ECSCHNORR
|
||||
TPMS_SIG_SCHEME_ECSCHNORR ecschnorr;
|
||||
#endif // ALG_ECSCHNORR
|
||||
#if ALG_EDDSA
|
||||
TPMS_SIG_SCHEME_EDDSA eddsa;
|
||||
#endif // ALG_EDDSA
|
||||
#if ALG_EDDSA_PH
|
||||
TPMS_SIG_SCHEME_EDDSA_PH eddsa_ph;
|
||||
#endif // ALG_EDDSA_PH
|
||||
#if ALG_LMS
|
||||
TPMS_SIG_SCHEME_LMS lms;
|
||||
#endif // ALG_LMS
|
||||
#if ALG_XMSS
|
||||
TPMS_SIG_SCHEME_XMSS xmss;
|
||||
#endif // ALG_XMSS
|
||||
TPMS_SCHEME_HASH any;
|
||||
} TPMU_SIG_SCHEME;
|
||||
|
||||
@ -2336,6 +2399,18 @@ typedef union
|
||||
#if ALG_ECMQV
|
||||
TPMS_KEY_SCHEME_ECMQV ecmqv;
|
||||
#endif // ALG_ECMQV
|
||||
#if ALG_EDDSA
|
||||
TPMS_SIG_SCHEME_EDDSA eddsa;
|
||||
#endif // ALG_EDDSA
|
||||
#if ALG_EDDSA_PH
|
||||
TPMS_SIG_SCHEME_EDDSA_PH eddsa_ph;
|
||||
#endif // ALG_EDDSA_PH
|
||||
#if ALG_LMS
|
||||
TPMS_SIG_SCHEME_LMS lms;
|
||||
#endif // ALG_LMS
|
||||
#if ALG_XMSS
|
||||
TPMS_SIG_SCHEME_XMSS xmss;
|
||||
#endif // ALG_XMSS
|
||||
} TPMU_ASYM_SCHEME;
|
||||
|
||||
typedef struct
|
||||
@ -2450,6 +2525,10 @@ typedef TPMS_SIGNATURE_ECC TPMS_SIGNATURE_ECDSA;
|
||||
#define TYPE_OF_TPMS_SIGNATURE_ECDSA TPMS_SIGNATURE_ECC
|
||||
typedef TPMS_SIGNATURE_ECC TPMS_SIGNATURE_ECSCHNORR;
|
||||
#define TYPE_OF_TPMS_SIGNATURE_ECSCHNORR TPMS_SIGNATURE_ECC
|
||||
typedef TPMS_SIGNATURE_ECC TPMS_SIGNATURE_EDDSA;
|
||||
#define TYPE_OF_TPMS_SIGNATURE_EDDSA TPMS_SIGNATURE_ECC
|
||||
typedef TPMS_SIGNATURE_ECC TPMS_SIGNATURE_EDDSA_PH;
|
||||
#define TYPE_OF_TPMS_SIGNATURE_EDDSA_PH TPMS_SIGNATURE_ECC
|
||||
typedef TPMS_SIGNATURE_ECC TPMS_SIGNATURE_SM2;
|
||||
#define TYPE_OF_TPMS_SIGNATURE_SM2 TPMS_SIGNATURE_ECC
|
||||
|
||||
@ -2476,6 +2555,18 @@ typedef union
|
||||
#if ALG_ECSCHNORR
|
||||
TPMS_SIGNATURE_ECSCHNORR ecschnorr;
|
||||
#endif // ALG_ECSCHNORR
|
||||
#if ALG_EDDSA
|
||||
TPMS_SIGNATURE_EDDSA eddsa;
|
||||
#endif // ALG_EDDSA
|
||||
#if ALG_EDDSA_PH
|
||||
TPMS_SIGNATURE_EDDSA_PH eddsa_ph;
|
||||
#endif // ALG_EDDSA_PH
|
||||
#if ALG_LMS
|
||||
TPMS_SIGNATURE_LMS lms;
|
||||
#endif // ALG_LMS
|
||||
#if ALG_XMSS
|
||||
TPMS_SIGNATURE_XMSS xmss;
|
||||
#endif // ALG_XMSS
|
||||
TPMS_SCHEME_HASH any;
|
||||
} TPMU_SIGNATURE;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user