mirror of
https://github.com/stefanberger/libtpms
synced 2026-08-11 21:50:09 +00:00
rev148: Rework bitfield structure accesses
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
This commit is contained in:
parent
d64fc706d5
commit
646bd34cb8
@ -279,11 +279,11 @@
|
||||
once every 292,471,208 years rather than once every 584,942,417 years. */
|
||||
#define EXPIRATION_BIT ((UINT64)1 << 63)
|
||||
/* Check for consistency of the bit ordering an bit fields */
|
||||
#if BIG_ENDIAN_TPM && MOST_SIGNIFICANT_BIT_0 && !defined NO_BIT_FIELD_STRUCTURES
|
||||
#if BIG_ENDIAN_TPM && MOST_SIGNIFICANT_BIT_0 && !USE_BIT_FIELD_STRUCTURES
|
||||
# error "Settings not consistent"
|
||||
#endif
|
||||
/* These macros are used to handle the variation in handling of bit fields. If */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES // The default, old version, with bit fields
|
||||
#if USE_BIT_FIELD_STRUCTURES // The default, old version, with bit fields
|
||||
# define IS_ATTRIBUTE(a, type, b) ((a.b != 0))
|
||||
# define SET_ATTRIBUTE(a, type, b) (a.b = SET)
|
||||
# define CLEAR_ATTRIBUTE(a, type, b) (a.b = CLEAR)
|
||||
|
||||
@ -196,15 +196,19 @@
|
||||
#ifndef SKIP_PROOF_ERRORS
|
||||
//#define SKIP_PROOF_ERRORS
|
||||
#endif
|
||||
/* This define is used to eliminate the use of bit-fields. It can be enable for big- or
|
||||
little-endian machines but is required of big-endian system that number bits in registers from
|
||||
left to right. Little-endian machines number from right to left with the least significant bit
|
||||
having assigned a bit number of 0. These are LSb0() machines (they are also little-endian so they
|
||||
are also least-significant byte 0 (LSB0) machines. Big-endian (MSB0) machines may number in
|
||||
either direction (MSb0() or LSb0()). For an MSB0+MSb0() machine this value should be defined */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
# define NO_BIT_FIELD_STRUCTURES
|
||||
|
||||
// This define is used to eliminate the use of bit-fields. It can be enabled for big- or
|
||||
// little-endian machines but is required of big-endian system that number bits in registers from
|
||||
// left to right. Little-endian machines number from right to left with the least significant bit
|
||||
// having assigned a bit number of 0. These are LSb0() machines (they are also little-endian so they
|
||||
// are also least-significant byte 0 (LSB0) machines. Big-endian (MSB0) machines may number in
|
||||
// either direction (MSb0() or LSb0())234. For an MSB0+MSb0() machine this value should be NO
|
||||
#if !(defined USE_BIT_FIELD_STRUCTURES) \
|
||||
|| ((USE_BIT_FIELD_STRUCTURES != NO) && (USE_BIT_FIELD_STRUCTURES != YES))
|
||||
# undef USE_BIT_FIELD_STRUCTURES
|
||||
# define USE_BIT_FIELD_STRUCTURES NO // Default: Either YES or NO
|
||||
#endif
|
||||
|
||||
/* Change these definitions to turn all algorithms or commands ON or OFF. That is, to turn all
|
||||
algorithms on, set ALG_NO to YES. This is mostly useful as a debug feature. */
|
||||
#define ALG_YES YES
|
||||
|
||||
@ -494,30 +494,28 @@ typedef TPM_HANDLE TPM_HC;
|
||||
#define HR_AC (TPM_HC)((TPM_HT_AC<<HR_SHIFT))
|
||||
#define AC_FIRST (TPM_HC)((HR_AC+0))
|
||||
#define AC_LAST (TPM_HC)((HR_AC+0x0000FFFF))
|
||||
|
||||
/* Table 2:30 - Definition of TPMA_ALGORITHM Bits */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_ALGORITHM{
|
||||
unsigned asymmetric : 1 ;
|
||||
unsigned symmetric : 1 ;
|
||||
unsigned hash : 1 ;
|
||||
unsigned object : 1 ;
|
||||
unsigned Reserved_at_bit_4 : 4 ;
|
||||
unsigned Reserved_bits_at_4 : 4 ;
|
||||
unsigned signing : 1 ;
|
||||
unsigned encrypting : 1 ;
|
||||
unsigned method : 1 ;
|
||||
unsigned Reserved_at_bit_11 : 21;
|
||||
unsigned Reserved_bits_at_11 : 21;
|
||||
} TPMA_ALGORITHM;
|
||||
/* This is the initializer for a TPMA_ALGORITHM structure. */
|
||||
#define TPMA_ALGORITHM_INITIALIZER(algorithm_asymmetric, algorithm_symmetric, \
|
||||
algorithm_hash, algorithm_object, \
|
||||
algorithm_Reserved_at_bit_4, \
|
||||
algorithm_signing, algorithm_encrypting, \
|
||||
algorithm_method, \
|
||||
algorithm_Reserved_at_bit_11) \
|
||||
{algorithm_asymmetric, algorithm_symmetric, algorithm_hash, \
|
||||
algorithm_object, algorithm_Reserved_at_bit_4, algorithm_signing, \
|
||||
algorithm_encrypting, algorithm_method, algorithm_Reserved_at_bit_11}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
#define TPMA_ALGORITHM_INITIALIZER( \
|
||||
asymmetric, symmetric, hash, object, bits_at_4, \
|
||||
signing, encrypting, method, bits_at_11) \
|
||||
{asymmetric, symmetric, hash, object, bits_at_4, \
|
||||
signing, encrypting, method, bits_at_11}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
typedef UINT32 TPMA_ALGORITHM;
|
||||
#define TPMA_ALGORITHM_asymmetric ((TPMA_ALGORITHM)1 << 0)
|
||||
#define TPMA_ALGORITHM_symmetric ((TPMA_ALGORITHM)1 << 1)
|
||||
@ -527,290 +525,265 @@ typedef UINT32 TPMA_ALGORITHM;
|
||||
#define TPMA_ALGORITHM_encrypting ((TPMA_ALGORITHM)1 << 9)
|
||||
#define TPMA_ALGORITHM_method ((TPMA_ALGORITHM)1 << 10)
|
||||
#define TPMA_ALGORITHM_reserved 0xfffff8f0
|
||||
#define TPMA_ALGORITHM_INITIALIZER( \
|
||||
asymmetric, symmetric, hash, object, bits_at_4, \
|
||||
signing, encrypting, method, bits_at_11) \
|
||||
((asymmetric << 0) + (symmetric << 1) + (hash << 2) + \
|
||||
(object << 3) + (signing << 8) + (encrypting << 9) + \
|
||||
(method << 10))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* This is the initializer for a TPMA_ALGORITHM bit array. */
|
||||
#define TPMA_ALGORITHM_INITIALIZER(algorithm_asymmetric, algorithm_symmetric, \
|
||||
algorithm_hash, algorithm_object, \
|
||||
algorithm_Reserved_at_bit_4, \
|
||||
algorithm_signing, algorithm_encrypting, \
|
||||
algorithm_method, \
|
||||
algorithm_Reserved_at_bit_11) \
|
||||
((algorithm_asymmetric << 0) + (algorithm_symmetric << 1) + \
|
||||
(algorithm_hash << 2) + (algorithm_object << 3) + \
|
||||
(algorithm_signing << 8) + (algorithm_encrypting << 9) + \
|
||||
(algorithm_method << 10))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* Table 2:31 - Definition of TPMA_OBJECT Bits (BitsTable()) */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_OBJECT{
|
||||
unsigned Reserved_at_bit_0 : 1 ;
|
||||
unsigned fixedTPM : 1 ;
|
||||
unsigned stClear : 1 ;
|
||||
unsigned Reserved_at_bit_3 : 1 ;
|
||||
unsigned fixedParent : 1 ;
|
||||
unsigned sensitiveDataOrigin : 1 ;
|
||||
unsigned userWithAuth : 1 ;
|
||||
unsigned adminWithPolicy : 1 ;
|
||||
unsigned Reserved_at_bit_8 : 2 ;
|
||||
unsigned noDA : 1 ;
|
||||
unsigned encryptedDuplication : 1 ;
|
||||
unsigned Reserved_at_bit_12 : 4 ;
|
||||
unsigned restricted : 1 ;
|
||||
unsigned decrypt : 1 ;
|
||||
unsigned sign : 1 ;
|
||||
unsigned Reserved_at_bit_19 : 13;
|
||||
} TPMA_OBJECT;
|
||||
/* This is the initializer for a TPMA_OBJECT structure. */
|
||||
#define TPMA_OBJECT_INITIALIZER(object_Reserved_at_bit_0, object_fixedTPM, \
|
||||
object_stClear, object_Reserved_at_bit_3, \
|
||||
object_fixedParent, object_sensitiveDataOrigin, \
|
||||
object_userWithAuth, object_adminWithPolicy, \
|
||||
object_Reserved_at_bit_8, object_noDA, \
|
||||
object_encryptedDuplication, \
|
||||
object_Reserved_at_bit_12, object_restricted, \
|
||||
object_decrypt, object_sign, \
|
||||
object_Reserved_at_bit_19) \
|
||||
{object_Reserved_at_bit_0, object_fixedTPM, object_stClear, \
|
||||
object_Reserved_at_bit_3, object_fixedParent, \
|
||||
object_sensitiveDataOrigin, object_userWithAuth, object_adminWithPolicy, \
|
||||
object_Reserved_at_bit_8, object_noDA, object_encryptedDuplication, \
|
||||
object_Reserved_at_bit_12, object_restricted, object_decrypt, \
|
||||
object_sign, object_Reserved_at_bit_19}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT32 TPMA_OBJECT;
|
||||
#define TPMA_OBJECT_fixedTPM ((TPMA_OBJECT)1 << 1)
|
||||
#define TPMA_OBJECT_stClear ((TPMA_OBJECT)1 << 2)
|
||||
#define TPMA_OBJECT_fixedParent ((TPMA_OBJECT)1 << 4)
|
||||
#define TPMA_OBJECT_sensitiveDataOrigin ((TPMA_OBJECT)1 << 5)
|
||||
#define TPMA_OBJECT_userWithAuth ((TPMA_OBJECT)1 << 6)
|
||||
#define TPMA_OBJECT_adminWithPolicy ((TPMA_OBJECT)1 << 7)
|
||||
#define TPMA_OBJECT_noDA ((TPMA_OBJECT)1 << 10)
|
||||
#define TPMA_OBJECT_encryptedDuplication ((TPMA_OBJECT)1 << 11)
|
||||
#define TPMA_OBJECT_restricted ((TPMA_OBJECT)1 << 16)
|
||||
#define TPMA_OBJECT_decrypt ((TPMA_OBJECT)1 << 17)
|
||||
#define TPMA_OBJECT_sign ((TPMA_OBJECT)1 << 18)
|
||||
#define TPMA_OBJECT_encrypt ((TPMA_OBJECT)1 << 18)
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_OBJECT { // Table 2:31
|
||||
unsigned Reserved_bit_at_0 : 1;
|
||||
unsigned fixedTPM : 1;
|
||||
unsigned stClear : 1;
|
||||
unsigned Reserved_bit_at_3 : 1;
|
||||
unsigned fixedParent : 1;
|
||||
unsigned sensitiveDataOrigin : 1;
|
||||
unsigned userWithAuth : 1;
|
||||
unsigned adminWithPolicy : 1;
|
||||
unsigned Reserved_bits_at_8 : 2;
|
||||
unsigned noDA : 1;
|
||||
unsigned encryptedDuplication : 1;
|
||||
unsigned Reserved_bits_at_12 : 4;
|
||||
unsigned restricted : 1;
|
||||
unsigned decrypt : 1;
|
||||
unsigned sign : 1;
|
||||
unsigned Reserved_bits_at_19 : 13;
|
||||
} TPMA_OBJECT; /* Bits */
|
||||
// This is the initializer for a TPMA_OBJECT structure
|
||||
#define TPMA_OBJECT_INITIALIZER( \
|
||||
bit_at_0, fixedtpm, stclear, \
|
||||
bit_at_3, fixedparent, sensitivedataorigin, \
|
||||
userwithauth, adminwithpolicy, bits_at_8, \
|
||||
noda, encryptedduplication, bits_at_12, \
|
||||
restricted, decrypt, sign, \
|
||||
bits_at_19) \
|
||||
{bit_at_0, fixedtpm, stclear, \
|
||||
bit_at_3, fixedparent, sensitivedataorigin, \
|
||||
userwithauth, adminwithpolicy, bits_at_8, \
|
||||
noda, encryptedduplication, bits_at_12, \
|
||||
restricted, decrypt, sign, \
|
||||
bits_at_19}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:31 TPMA_OBJECT using bit masking
|
||||
typedef UINT32 TPMA_OBJECT;
|
||||
#define TPMA_OBJECT_fixedTPM ((TPMA_OBJECT)1 << 1)
|
||||
#define TPMA_OBJECT_stClear ((TPMA_OBJECT)1 << 2)
|
||||
#define TPMA_OBJECT_fixedParent ((TPMA_OBJECT)1 << 4)
|
||||
#define TPMA_OBJECT_sensitiveDataOrigin ((TPMA_OBJECT)1 << 5)
|
||||
#define TPMA_OBJECT_userWithAuth ((TPMA_OBJECT)1 << 6)
|
||||
#define TPMA_OBJECT_adminWithPolicy ((TPMA_OBJECT)1 << 7)
|
||||
#define TPMA_OBJECT_noDA ((TPMA_OBJECT)1 << 10)
|
||||
#define TPMA_OBJECT_encryptedDuplication ((TPMA_OBJECT)1 << 11)
|
||||
#define TPMA_OBJECT_restricted ((TPMA_OBJECT)1 << 16)
|
||||
#define TPMA_OBJECT_decrypt ((TPMA_OBJECT)1 << 17)
|
||||
#define TPMA_OBJECT_sign ((TPMA_OBJECT)1 << 18)
|
||||
#define TPMA_OBJECT_reserved 0xfff8f309
|
||||
// This is the initializer for a TPMA_OBJECT bit array.
|
||||
#define TPMA_OBJECT_INITIALIZER( \
|
||||
bit_at_0, fixedtpm, stclear, \
|
||||
bit_at_3, fixedparent, sensitivedataorigin, \
|
||||
userwithauth, adminwithpolicy, bits_at_8, \
|
||||
noda, encryptedduplication, bits_at_12, \
|
||||
restricted, decrypt, sign, \
|
||||
bits_at_19) \
|
||||
((fixedtpm << 1) + (stclear << 2) + \
|
||||
(fixedparent << 4) + (sensitivedataorigin << 5) + \
|
||||
(userwithauth << 6) + (adminwithpolicy << 7) + \
|
||||
(noda << 10) + (encryptedduplication << 11) + \
|
||||
(restricted << 16) + (decrypt << 17) + \
|
||||
(sign << 18))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
|
||||
|
||||
/* This is the initializer for a TPMA_OBJECT bit array. */
|
||||
#define TPMA_OBJECT_INITIALIZER(object_Reserved_at_bit_0, object_fixedTPM, \
|
||||
object_stClear, object_Reserved_at_bit_3, \
|
||||
object_fixedParent, object_sensitiveDataOrigin, \
|
||||
object_userWithAuth, object_adminWithPolicy, \
|
||||
object_Reserved_at_bit_8, object_noDA, \
|
||||
object_encryptedDuplication, \
|
||||
object_Reserved_at_bit_12, object_restricted, \
|
||||
object_decrypt, object_sign, \
|
||||
object_Reserved_at_bit_19) \
|
||||
((object_fixedTPM << 1) + (object_stClear << 2) + \
|
||||
(object_fixedParent << 4) + (object_sensitiveDataOrigin << 5) + \
|
||||
(object_userWithAuth << 6) + (object_adminWithPolicy << 7) + \
|
||||
(object_noDA << 10) + (object_encryptedDuplication << 11) + \
|
||||
(object_restricted << 16) + (object_decrypt << 17) + \
|
||||
(object_sign << 18))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
/* Table 2:32 - Definition of TPMA_SESSION Bits */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_SESSION{
|
||||
unsigned continueSession : 1 ;
|
||||
unsigned auditExclusive : 1 ;
|
||||
unsigned auditReset : 1 ;
|
||||
unsigned Reserved_at_bit_3 : 2 ;
|
||||
unsigned decrypt : 1 ;
|
||||
unsigned encrypt : 1 ;
|
||||
unsigned audit : 1 ;
|
||||
} TPMA_SESSION;
|
||||
/* This is the initializer for a TPMA_SESSION structure. */
|
||||
#define TPMA_SESSION_INITIALIZER(session_continueSession, session_auditExclusive, \
|
||||
session_auditReset, session_Reserved_at_bit_3, \
|
||||
session_decrypt, session_encrypt, \
|
||||
session_audit) \
|
||||
{session_continueSession, session_auditExclusive, session_auditReset, \
|
||||
session_Reserved_at_bit_3, session_decrypt, session_encrypt, \
|
||||
session_audit}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT8 TPMA_SESSION;
|
||||
#define TPMA_SESSION_continueSession ((TPMA_SESSION)1 << 0)
|
||||
#define TPMA_SESSION_auditExclusive ((TPMA_SESSION)1 << 1)
|
||||
#define TPMA_SESSION_auditReset ((TPMA_SESSION)1 << 2)
|
||||
#define TPMA_SESSION_decrypt ((TPMA_SESSION)1 << 5)
|
||||
#define TPMA_SESSION_encrypt ((TPMA_SESSION)1 << 6)
|
||||
#define TPMA_SESSION_audit ((TPMA_SESSION)1 << 7)
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_SESSION { // Table 2:32
|
||||
unsigned continueSession : 1;
|
||||
unsigned auditExclusive : 1;
|
||||
unsigned auditReset : 1;
|
||||
unsigned Reserved_bits_at_3 : 2;
|
||||
unsigned decrypt : 1;
|
||||
unsigned encrypt : 1;
|
||||
unsigned audit : 1;
|
||||
} TPMA_SESSION; /* Bits */
|
||||
// This is the initializer for a TPMA_SESSION structure
|
||||
#define TPMA_SESSION_INITIALIZER( \
|
||||
continuesession, auditexclusive, auditreset, bits_at_3, \
|
||||
decrypt, encrypt, audit) \
|
||||
{continuesession, auditexclusive, auditreset, bits_at_3, \
|
||||
decrypt, encrypt, audit}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:32 TPMA_SESSION using bit masking
|
||||
typedef UINT8 TPMA_SESSION;
|
||||
#define TPMA_SESSION_continueSession ((TPMA_SESSION)1 << 0)
|
||||
#define TPMA_SESSION_auditExclusive ((TPMA_SESSION)1 << 1)
|
||||
#define TPMA_SESSION_auditReset ((TPMA_SESSION)1 << 2)
|
||||
#define TPMA_SESSION_decrypt ((TPMA_SESSION)1 << 5)
|
||||
#define TPMA_SESSION_encrypt ((TPMA_SESSION)1 << 6)
|
||||
#define TPMA_SESSION_audit ((TPMA_SESSION)1 << 7)
|
||||
#define TPMA_SESSION_reserved 0x18
|
||||
// This is the initializer for a TPMA_SESSION bit array.
|
||||
#define TPMA_SESSION_INITIALIZER( \
|
||||
continuesession, auditexclusive, auditreset, bits_at_3, \
|
||||
decrypt, encrypt, audit) \
|
||||
((continuesession << 0) + (auditexclusive << 1) + \
|
||||
(auditreset << 2) + (decrypt << 5) + \
|
||||
(encrypt << 6) + (audit << 7))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* This is the initializer for a TPMA_SESSION bit array. */
|
||||
#define TPMA_SESSION_INITIALIZER(session_continueSession, session_auditExclusive, \
|
||||
session_auditReset, session_Reserved_at_bit_3, \
|
||||
session_decrypt, session_encrypt, \
|
||||
session_audit) \
|
||||
((session_continueSession << 0) + (session_auditExclusive << 1) + \
|
||||
(session_auditReset << 2) + (session_decrypt << 5) + \
|
||||
(session_encrypt << 6) + (session_audit << 7))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
/* Table 2:33 - Definition of TPMA_LOCALITY Bits */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_LOCALITY{
|
||||
unsigned TPM_LOC_ZERO : 1 ;
|
||||
unsigned TPM_LOC_ONE : 1 ;
|
||||
unsigned TPM_LOC_TWO : 1 ;
|
||||
unsigned TPM_LOC_THREE : 1 ;
|
||||
unsigned TPM_LOC_FOUR : 1 ;
|
||||
unsigned Extended : 3 ;
|
||||
} TPMA_LOCALITY;
|
||||
/* This is the initializer for a TPMA_LOCALITY structure. */
|
||||
#define TPMA_LOCALITY_INITIALIZER(locality_TPM_LOC_ZERO, locality_TPM_LOC_ONE, \
|
||||
locality_TPM_LOC_TWO, locality_TPM_LOC_THREE, \
|
||||
locality_TPM_LOC_FOUR, locality_Extended) \
|
||||
{locality_TPM_LOC_ZERO, locality_TPM_LOC_ONE, locality_TPM_LOC_TWO, \
|
||||
locality_TPM_LOC_THREE, locality_TPM_LOC_FOUR, locality_Extended}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT8 TPMA_LOCALITY;
|
||||
#define TPMA_LOCALITY_TPM_LOC_ZERO ((TPMA_LOCALITY)1 << 0)
|
||||
#define TPMA_LOCALITY_TPM_LOC_ONE ((TPMA_LOCALITY)1 << 1)
|
||||
#define TPMA_LOCALITY_TPM_LOC_TWO ((TPMA_LOCALITY)1 << 2)
|
||||
#define TPMA_LOCALITY_TPM_LOC_THREE ((TPMA_LOCALITY)1 << 3)
|
||||
#define TPMA_LOCALITY_TPM_LOC_FOUR ((TPMA_LOCALITY)1 << 4)
|
||||
#define TPMA_LOCALITY_Extended_SHIFT 5
|
||||
#define TPMA_LOCALITY_Extended ((TPMA_LOCALITY)0x7 << 5)
|
||||
/* This is the initializer for a TPMA_LOCALITY bit array. */
|
||||
#define TPMA_LOCALITY_INITIALIZER(locality_TPM_LOC_ZERO, locality_TPM_LOC_ONE, \
|
||||
locality_TPM_LOC_TWO, locality_TPM_LOC_THREE, \
|
||||
locality_TPM_LOC_FOUR, locality_Extended) \
|
||||
((locality_TPM_LOC_ZERO << 0) + (locality_TPM_LOC_ONE << 1) + \
|
||||
(locality_TPM_LOC_TWO << 2) + (locality_TPM_LOC_THREE << 3) + \
|
||||
(locality_TPM_LOC_FOUR << 4) + (locality_Extended << 5))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_LOCALITY { // Table 2:33
|
||||
unsigned TPM_LOC_ZERO : 1;
|
||||
unsigned TPM_LOC_ONE : 1;
|
||||
unsigned TPM_LOC_TWO : 1;
|
||||
unsigned TPM_LOC_THREE : 1;
|
||||
unsigned TPM_LOC_FOUR : 1;
|
||||
unsigned Extended : 3;
|
||||
} TPMA_LOCALITY; /* Bits */
|
||||
// This is the initializer for a TPMA_LOCALITY structure
|
||||
#define TPMA_LOCALITY_INITIALIZER( \
|
||||
tpm_loc_zero, tpm_loc_one, tpm_loc_two, tpm_loc_three, \
|
||||
tpm_loc_four, extended) \
|
||||
{tpm_loc_zero, tpm_loc_one, tpm_loc_two, tpm_loc_three, \
|
||||
tpm_loc_four, extended}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:33 TPMA_LOCALITY using bit masking
|
||||
typedef UINT8 TPMA_LOCALITY;
|
||||
#define TPMA_LOCALITY_TPM_LOC_ZERO ((TPMA_LOCALITY)1 << 0)
|
||||
#define TPMA_LOCALITY_TPM_LOC_ONE ((TPMA_LOCALITY)1 << 1)
|
||||
#define TPMA_LOCALITY_TPM_LOC_TWO ((TPMA_LOCALITY)1 << 2)
|
||||
#define TPMA_LOCALITY_TPM_LOC_THREE ((TPMA_LOCALITY)1 << 3)
|
||||
#define TPMA_LOCALITY_TPM_LOC_FOUR ((TPMA_LOCALITY)1 << 4)
|
||||
#define TPMA_LOCALITY_Extended_SHIFT 5
|
||||
#define TPMA_LOCALITY_Extended ((TPMA_LOCALITY)0x7 << 5)
|
||||
// This is the initializer for a TPMA_LOCALITY bit array.
|
||||
#define TPMA_LOCALITY_INITIALIZER( \
|
||||
tpm_loc_zero, tpm_loc_one, tpm_loc_two, tpm_loc_three, \
|
||||
tpm_loc_four, extended) \
|
||||
((tpm_loc_zero << 0) + (tpm_loc_one << 1) + (tpm_loc_two << 2) + \
|
||||
(tpm_loc_three << 3) + (tpm_loc_four << 4) + (extended << 5))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* Table 2:34 - Definition of TPMA_PERMANENT Bits (BitsTable()) */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_PERMANENT{
|
||||
unsigned ownerAuthSet : 1 ;
|
||||
unsigned endorsementAuthSet : 1 ;
|
||||
unsigned lockoutAuthSet : 1 ;
|
||||
unsigned Reserved_at_bit_3 : 5 ;
|
||||
unsigned disableClear : 1 ;
|
||||
unsigned inLockout : 1 ;
|
||||
unsigned tpmGeneratedEPS : 1 ;
|
||||
unsigned Reserved_at_bit_11 : 21;
|
||||
} TPMA_PERMANENT;
|
||||
/* This is the initializer for a TPMA_PERMANENT structure. */
|
||||
#define TPMA_PERMANENT_INITIALIZER(permanent_ownerAuthSet, \
|
||||
permanent_endorsementAuthSet, \
|
||||
permanent_lockoutAuthSet, \
|
||||
permanent_Reserved_at_bit_3, \
|
||||
permanent_disableClear, permanent_inLockout, \
|
||||
permanent_tpmGeneratedEPS, \
|
||||
permanent_Reserved_at_bit_11) \
|
||||
{permanent_ownerAuthSet, permanent_endorsementAuthSet, \
|
||||
permanent_lockoutAuthSet, permanent_Reserved_at_bit_3, \
|
||||
permanent_disableClear, permanent_inLockout, permanent_tpmGeneratedEPS, \
|
||||
permanent_Reserved_at_bit_11}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT32 TPMA_PERMANENT;
|
||||
#define TPMA_PERMANENT_ownerAuthSet ((TPMA_PERMANENT)1 << 0)
|
||||
#define TPMA_PERMANENT_endorsementAuthSet ((TPMA_PERMANENT)1 << 1)
|
||||
#define TPMA_PERMANENT_lockoutAuthSet ((TPMA_PERMANENT)1 << 2)
|
||||
#define TPMA_PERMANENT_disableClear ((TPMA_PERMANENT)1 << 8)
|
||||
#define TPMA_PERMANENT_inLockout ((TPMA_PERMANENT)1 << 9)
|
||||
#define TPMA_PERMANENT_tpmGeneratedEPS ((TPMA_PERMANENT)1 << 10)
|
||||
/* This is the initializer for a TPMA_PERMANENT bit array. */
|
||||
#define TPMA_PERMANENT_INITIALIZER(permanent_ownerAuthSet, \
|
||||
permanent_endorsementAuthSet, \
|
||||
permanent_lockoutAuthSet, \
|
||||
permanent_Reserved_at_bit_3, \
|
||||
permanent_disableClear, permanent_inLockout, \
|
||||
permanent_tpmGeneratedEPS, \
|
||||
permanent_Reserved_at_bit_11) \
|
||||
((permanent_ownerAuthSet << 0) + (permanent_endorsementAuthSet << 1) + \
|
||||
(permanent_lockoutAuthSet << 2) + (permanent_disableClear << 8) + \
|
||||
(permanent_inLockout << 9) + (permanent_tpmGeneratedEPS << 10))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_PERMANENT { // Table 2:34
|
||||
unsigned ownerAuthSet : 1;
|
||||
unsigned endorsementAuthSet : 1;
|
||||
unsigned lockoutAuthSet : 1;
|
||||
unsigned Reserved_bits_at_3 : 5;
|
||||
unsigned disableClear : 1;
|
||||
unsigned inLockout : 1;
|
||||
unsigned tpmGeneratedEPS : 1;
|
||||
unsigned Reserved_bits_at_11 : 21;
|
||||
} TPMA_PERMANENT; /* Bits */
|
||||
// This is the initializer for a TPMA_PERMANENT structure
|
||||
#define TPMA_PERMANENT_INITIALIZER( \
|
||||
ownerauthset, endorsementauthset, lockoutauthset, \
|
||||
bits_at_3, disableclear, inlockout, \
|
||||
tpmgeneratedeps, bits_at_11) \
|
||||
{ownerauthset, endorsementauthset, lockoutauthset, \
|
||||
bits_at_3, disableclear, inlockout, \
|
||||
tpmgeneratedeps, bits_at_11}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:34 TPMA_PERMANENT using bit masking
|
||||
typedef UINT32 TPMA_PERMANENT;
|
||||
#define TPMA_PERMANENT_ownerAuthSet ((TPMA_PERMANENT)1 << 0)
|
||||
#define TPMA_PERMANENT_endorsementAuthSet ((TPMA_PERMANENT)1 << 1)
|
||||
#define TPMA_PERMANENT_lockoutAuthSet ((TPMA_PERMANENT)1 << 2)
|
||||
#define TPMA_PERMANENT_disableClear ((TPMA_PERMANENT)1 << 8)
|
||||
#define TPMA_PERMANENT_inLockout ((TPMA_PERMANENT)1 << 9)
|
||||
#define TPMA_PERMANENT_tpmGeneratedEPS ((TPMA_PERMANENT)1 << 10)
|
||||
// This is the initializer for a TPMA_PERMANENT bit array.
|
||||
#define TPMA_PERMANENT_INITIALIZER( \
|
||||
ownerauthset, endorsementauthset, lockoutauthset, \
|
||||
bits_at_3, disableclear, inlockout, \
|
||||
tpmgeneratedeps, bits_at_11) \
|
||||
((ownerauthset << 0) + (endorsementauthset << 1) + \
|
||||
(lockoutauthset << 2) + (disableclear << 8) + \
|
||||
(inlockout << 9) + (tpmgeneratedeps << 10))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* Table 2:35 - Definition of TPMA_STARTUP_CLEAR Bits */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_STARTUP_CLEAR{
|
||||
unsigned phEnable : 1 ;
|
||||
unsigned shEnable : 1 ;
|
||||
unsigned ehEnable : 1 ;
|
||||
unsigned phEnableNV : 1 ;
|
||||
unsigned Reserved_at_bit_4 : 27;
|
||||
unsigned orderly : 1 ;
|
||||
} TPMA_STARTUP_CLEAR;
|
||||
/* This is the initializer for a TPMA_STARTUP_CLEAR structure. */
|
||||
#define TPMA_STARTUP_CLEAR_INITIALIZER(startup_clear_phEnable, \
|
||||
startup_clear_shEnable, \
|
||||
startup_clear_ehEnable, \
|
||||
startup_clear_phEnableNV, \
|
||||
startup_clear_Reserved_at_bit_4, \
|
||||
startup_clear_orderly) \
|
||||
{startup_clear_phEnable, startup_clear_shEnable, startup_clear_ehEnable, \
|
||||
startup_clear_phEnableNV, startup_clear_Reserved_at_bit_4, \
|
||||
startup_clear_orderly}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT32 TPMA_STARTUP_CLEAR;
|
||||
#define TPMA_STARTUP_CLEAR_phEnable ((TPMA_STARTUP_CLEAR)1 << 0)
|
||||
#define TPMA_STARTUP_CLEAR_shEnable ((TPMA_STARTUP_CLEAR)1 << 1)
|
||||
#define TPMA_STARTUP_CLEAR_ehEnable ((TPMA_STARTUP_CLEAR)1 << 2)
|
||||
#define TPMA_STARTUP_CLEAR_phEnableNV ((TPMA_STARTUP_CLEAR)1 << 3)
|
||||
#define TPMA_STARTUP_CLEAR_orderly ((TPMA_STARTUP_CLEAR)1 << 31)
|
||||
/* This is the initializer for a TPMA_STARTUP_CLEAR bit array. */
|
||||
#define TPMA_STARTUP_CLEAR_INITIALIZER(startup_clear_phEnable, \
|
||||
startup_clear_shEnable, \
|
||||
startup_clear_ehEnable, \
|
||||
startup_clear_phEnableNV, \
|
||||
startup_clear_Reserved_at_bit_4, \
|
||||
startup_clear_orderly) \
|
||||
((startup_clear_phEnable << 0) + (startup_clear_shEnable << 1) + \
|
||||
(startup_clear_ehEnable << 2) + (startup_clear_phEnableNV << 3) + \
|
||||
(startup_clear_orderly << 31))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_STARTUP_CLEAR { // Table 2:35
|
||||
unsigned phEnable : 1;
|
||||
unsigned shEnable : 1;
|
||||
unsigned ehEnable : 1;
|
||||
unsigned phEnableNV : 1;
|
||||
unsigned Reserved_bits_at_4 : 27;
|
||||
unsigned orderly : 1;
|
||||
} TPMA_STARTUP_CLEAR; /* Bits */
|
||||
// This is the initializer for a TPMA_STARTUP_CLEAR structure
|
||||
#define TPMA_STARTUP_CLEAR_INITIALIZER( \
|
||||
phenable, shenable, ehenable, phenablenv, bits_at_4, orderly) \
|
||||
{phenable, shenable, ehenable, phenablenv, bits_at_4, orderly}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:35 TPMA_STARTUP_CLEAR using bit masking
|
||||
typedef UINT32 TPMA_STARTUP_CLEAR;
|
||||
#define TPMA_STARTUP_CLEAR_phEnable ((TPMA_STARTUP_CLEAR)1 << 0)
|
||||
#define TPMA_STARTUP_CLEAR_shEnable ((TPMA_STARTUP_CLEAR)1 << 1)
|
||||
#define TPMA_STARTUP_CLEAR_ehEnable ((TPMA_STARTUP_CLEAR)1 << 2)
|
||||
#define TPMA_STARTUP_CLEAR_phEnableNV ((TPMA_STARTUP_CLEAR)1 << 3)
|
||||
#define TPMA_STARTUP_CLEAR_orderly ((TPMA_STARTUP_CLEAR)1 << 31)
|
||||
// This is the initializer for a TPMA_STARTUP_CLEAR bit array.
|
||||
#define TPMA_STARTUP_CLEAR_INITIALIZER( \
|
||||
phenable, shenable, ehenable, phenablenv, bits_at_4, orderly) \
|
||||
((phenable << 0) + (shenable << 1) + (ehenable << 2) + \
|
||||
(phenablenv << 3) + (orderly << 31))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* Table 2:36 - Definition of TPMA_MEMORY Bits */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_MEMORY{
|
||||
unsigned sharedRAM : 1 ;
|
||||
unsigned sharedNV : 1 ;
|
||||
unsigned objectCopiedToRam : 1 ;
|
||||
unsigned Reserved_at_bit_3 : 29;
|
||||
} TPMA_MEMORY;
|
||||
/* This is the initializer for a TPMA_MEMORY structure. */
|
||||
#define TPMA_MEMORY_INITIALIZER(memory_sharedRAM, memory_sharedNV, \
|
||||
memory_objectCopiedToRam, \
|
||||
memory_Reserved_at_bit_3) \
|
||||
{memory_sharedRAM, memory_sharedNV, memory_objectCopiedToRam, \
|
||||
memory_Reserved_at_bit_3}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT32 TPMA_MEMORY;
|
||||
#define TPMA_MEMORY_sharedRAM ((TPMA_MEMORY)1 << 0)
|
||||
#define TPMA_MEMORY_sharedNV ((TPMA_MEMORY)1 << 1)
|
||||
#define TPMA_MEMORY_objectCopiedToRam ((TPMA_MEMORY)1 << 2)
|
||||
/* This is the initializer for a TPMA_MEMORY bit array. */
|
||||
#define TPMA_MEMORY_INITIALIZER(memory_sharedRAM, memory_sharedNV, \
|
||||
memory_objectCopiedToRam, \
|
||||
memory_Reserved_at_bit_3) \
|
||||
((memory_sharedRAM << 0) + (memory_sharedNV << 1) + \
|
||||
(memory_objectCopiedToRam << 2))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_MEMORY { // Table 2:36
|
||||
unsigned sharedRAM : 1;
|
||||
unsigned sharedNV : 1;
|
||||
unsigned objectCopiedToRam : 1;
|
||||
unsigned Reserved_bits_at_3 : 29;
|
||||
} TPMA_MEMORY; /* Bits */
|
||||
// This is the initializer for a TPMA_MEMORY structure
|
||||
#define TPMA_MEMORY_INITIALIZER( \
|
||||
sharedram, sharednv, objectcopiedtoram, bits_at_3) \
|
||||
{sharedram, sharednv, objectcopiedtoram, bits_at_3}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:36 TPMA_MEMORY using bit masking
|
||||
typedef UINT32 TPMA_MEMORY;
|
||||
#define TPMA_MEMORY_sharedRAM ((TPMA_MEMORY)1 << 0)
|
||||
#define TPMA_MEMORY_sharedNV ((TPMA_MEMORY)1 << 1)
|
||||
#define TPMA_MEMORY_objectCopiedToRam ((TPMA_MEMORY)1 << 2)
|
||||
// This is the initializer for a TPMA_MEMORY bit array.
|
||||
#define TPMA_MEMORY_INITIALIZER( \
|
||||
sharedram, sharednv, objectcopiedtoram, bits_at_3) \
|
||||
((sharedram << 0) + (sharednv << 1) + (objectcopiedtoram << 2))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* Table 2:37 - Definition of TPMA_CC Bits */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_CC{
|
||||
unsigned commandIndex : 16;
|
||||
unsigned Reserved_at_bit_16 : 6 ;
|
||||
unsigned nv : 1 ;
|
||||
unsigned extensive : 1 ;
|
||||
unsigned flushed : 1 ;
|
||||
unsigned cHandles : 3 ;
|
||||
unsigned rHandle : 1 ;
|
||||
unsigned V : 1 ;
|
||||
unsigned Reserved_at_bit_30 : 2 ;
|
||||
} TPMA_CC;
|
||||
/* This is the initializer for a TPMA_CC structure. */
|
||||
#define TPMA_CC_INITIALIZER(cc_commandIndex, cc_Reserved_at_bit_16, cc_nv, \
|
||||
cc_extensive, cc_flushed, cc_cHandles, cc_rHandle, \
|
||||
cc_V, cc_Reserved_at_bit_30) \
|
||||
{cc_commandIndex, cc_Reserved_at_bit_16, cc_nv, cc_extensive, cc_flushed, \
|
||||
cc_cHandles, cc_rHandle, cc_V, cc_Reserved_at_bit_30}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT32 TPMA_CC;
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_CC { // Table 2:37
|
||||
unsigned commandIndex : 16;
|
||||
unsigned Reserved_bits_at_16 : 6;
|
||||
unsigned nv : 1;
|
||||
unsigned extensive : 1;
|
||||
unsigned flushed : 1;
|
||||
unsigned cHandles : 3;
|
||||
unsigned rHandle : 1;
|
||||
unsigned V : 1;
|
||||
unsigned Reserved_bits_at_30 : 2;
|
||||
} TPMA_CC; /* Bits */
|
||||
// This is the initializer for a TPMA_CC structure
|
||||
#define TPMA_CC_INITIALIZER( \
|
||||
commandindex, bits_at_16, nv, extensive, flushed, \
|
||||
chandles, rhandle, v, bits_at_30) \
|
||||
{commandindex, bits_at_16, nv, extensive, flushed, \
|
||||
chandles, rhandle, v, bits_at_30}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:37 TPMA_CC using bit masking
|
||||
typedef UINT32 TPMA_CC;
|
||||
#define TPMA_CC_commandIndex_SHIFT 0
|
||||
#define TPMA_CC_commandIndex ((TPMA_CC)0xffff << 0)
|
||||
#define TPMA_CC_nv ((TPMA_CC)1 << 22)
|
||||
@ -821,30 +794,31 @@ typedef UINT32 TPMA_CC;
|
||||
#define TPMA_CC_rHandle ((TPMA_CC)1 << 28)
|
||||
#define TPMA_CC_V ((TPMA_CC)1 << 29)
|
||||
#define TPMA_CC_reserved 0xc03f0000
|
||||
/* This is the initializer for a TPMA_CC bit array. */
|
||||
#define TPMA_CC_INITIALIZER(cc_commandIndex, cc_Reserved_at_bit_16, cc_nv, \
|
||||
cc_extensive, cc_flushed, cc_cHandles, cc_rHandle, \
|
||||
cc_V, cc_Reserved_at_bit_30) \
|
||||
((cc_commandIndex << 0) + (cc_nv << 22) + (cc_extensive << 23) + \
|
||||
(cc_flushed << 24) + (cc_cHandles << 25) + (cc_rHandle << 28) + \
|
||||
(cc_V << 29))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
// This is the initializer for a TPMA_CC bit array.
|
||||
#define TPMA_CC_INITIALIZER( \
|
||||
commandindex, bits_at_16, nv, extensive, flushed, \
|
||||
chandles, rhandle, v, bits_at_30) \
|
||||
((commandindex << 0) + (nv << 22) + (extensive << 23) + \
|
||||
(flushed << 24) + (chandles << 25) + (rhandle << 28) + \
|
||||
(v << 29))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* Table 2:38 - Definition of TPMA_MODES Bits */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_MODES{
|
||||
unsigned FIPS_140_2 : 1 ;
|
||||
unsigned Reserved_at_bit_1 : 31;
|
||||
} TPMA_MODES;
|
||||
/* This is the initializer for a TPMA_MODES structure. */
|
||||
#define TPMA_MODES_INITIALIZER(modes_FIPS_140_2, modes_Reserved_at_bit_1) \
|
||||
{modes_FIPS_140_2, modes_Reserved_at_bit_1}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT32 TPMA_MODES;
|
||||
#define TPMA_MODES_FIPS_140_2 ((TPMA_MODES)1 << 0)
|
||||
/* This is the initializer for a TPMA_MODES bit array. */
|
||||
#define TPMA_MODES_INITIALIZER(modes_FIPS_140_2, modes_Reserved_at_bit_1) \
|
||||
((modes_FIPS_140_2 << 0))+ ((modes_FIPS_140_2 << 0))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_MODES { // Table 2:38
|
||||
unsigned FIPS_140_2 : 1;
|
||||
unsigned Reserved_bits_at_1 : 31;
|
||||
} TPMA_MODES; /* Bits */
|
||||
// This is the initializer for a TPMA_MODES structure
|
||||
#define TPMA_MODES_INITIALIZER(fips_140_2, bits_at_1) {fips_140_2, bits_at_1}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:38 TPMA_MODES using bit masking
|
||||
typedef UINT32 TPMA_MODES;
|
||||
#define TPMA_MODES_FIPS_140_2 ((TPMA_MODES)1 << 0)
|
||||
// This is the initializer for a TPMA_MODES bit array.
|
||||
#define TPMA_MODES_INITIALIZER(fips_140_2, bits_at_1) ((fips_140_2 << 0))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* Table 2:39 - Definition of TPMI_YES_NO Type */
|
||||
typedef BYTE TPMI_YES_NO;
|
||||
/* Table 2:40 - Definition of TPMI_DH_OBJECT Type */
|
||||
@ -1792,128 +1766,131 @@ typedef union {
|
||||
} t;
|
||||
TPM2B b;
|
||||
} TPM2B_ID_OBJECT;
|
||||
/* Table 2:202 - Definition of TPM_NV_INDEX Bits */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
#if 0
|
||||
typedef struct TPM_NV_INDEX{
|
||||
unsigned index : 24;
|
||||
unsigned RH_NV : 8 ;
|
||||
} TPM_NV_INDEX;
|
||||
#endif
|
||||
/* This is the initializer for a TPMA_NV_INDEX structure. */
|
||||
#define TPM_NV_INDEX_INITIALIZER(tpm_nv_index_index, tpm_nv_index_RH_NV) \
|
||||
{tpm_nv_index_index, tpm_nv_index_RH_NV}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT32 TPM_NV_INDEX;
|
||||
#define TPM_NV_INDEX_index_SHIFT 0
|
||||
#define TPM_NV_INDEX_index ((TPM_NV_INDEX)0xffffff << 00)
|
||||
#define TPM_NV_INDEX_RH_NV_SHIFT 24
|
||||
#define TPM_NV_INDEX_RH_NV ((TPM_NV_INDEX)0xff << 24)
|
||||
/* This is the initializer for a TPMA_NV_INDEX bit array. */
|
||||
#define TPM_NV_INDEX_INITIALIZER(tpm_nv_index_index, tpm_nv_index_RH_NV) \
|
||||
((tpm_nv_index_index << 00) + (tpm_nv_index_RH_NV << 24))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
/* Table 2:203 - Definition of TPM_NT Constants */
|
||||
typedef UINT32 TPM_NT;
|
||||
#define TPM_NT_ORDINARY (TPM_NT)(0x0)
|
||||
#define TPM_NT_COUNTER (TPM_NT)(0x1)
|
||||
#define TPM_NT_BITS (TPM_NT)(0x2)
|
||||
#define TPM_NT_EXTEND (TPM_NT)(0x4)
|
||||
#define TPM_NT_PIN_FAIL (TPM_NT)(0x8)
|
||||
#define TPM_NT_PIN_PASS (TPM_NT)(0x9)
|
||||
/* Table 2:204 - Definition of TPMS_NV_PIN_COUNTER_PARAMETERS Structure */
|
||||
|
||||
/* Table 2:205 - Definition of TPM_NV_INDEX Bits */
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPM_NV_INDEX { // Table 2:205
|
||||
unsigned index : 24;
|
||||
unsigned RH_NV : 8;
|
||||
} TPM_NV_INDEX; /* Bits */
|
||||
// This is the initializer for a TPM_NV_INDEX structure
|
||||
#define TPM_NV_INDEX_INITIALIZER(index, rh_nv) {index, rh_nv}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:205 TPM_NV_INDEX using bit masking
|
||||
typedef UINT32 TPM_NV_INDEX;
|
||||
#define TPM_NV_INDEX_index_SHIFT 0
|
||||
#define TPM_NV_INDEX_index ((TPM_NV_INDEX)0xffffff << 0)
|
||||
#define TPM_NV_INDEX_RH_NV_SHIFT 24
|
||||
#define TPM_NV_INDEX_RH_NV ((TPM_NV_INDEX)0xff << 24)
|
||||
// This is the initializer for a TPM_NV_INDEX bit array.
|
||||
#define TPM_NV_INDEX_INITIALIZER(index, rh_nv) ((index << 0) + (rh_nv << 24))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
// Table 2:206 - Definition of TPM_NT Constants
|
||||
typedef UINT32 TPM_NT;
|
||||
#define TPM_NT_ORDINARY (TPM_NT)(0x0)
|
||||
#define TPM_NT_COUNTER (TPM_NT)(0x1)
|
||||
#define TPM_NT_BITS (TPM_NT)(0x2)
|
||||
#define TPM_NT_EXTEND (TPM_NT)(0x4)
|
||||
#define TPM_NT_PIN_FAIL (TPM_NT)(0x8)
|
||||
#define TPM_NT_PIN_PASS (TPM_NT)(0x9)
|
||||
// Table 2:207
|
||||
typedef struct {
|
||||
UINT32 pinCount;
|
||||
UINT32 pinLimit;
|
||||
} TPMS_NV_PIN_COUNTER_PARAMETERS;
|
||||
/* Table 2:205 - Definition of TPMA_NV Bits */
|
||||
#ifndef NO_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_NV{
|
||||
unsigned PPWRITE : 1 ;
|
||||
unsigned OWNERWRITE : 1 ;
|
||||
unsigned AUTHWRITE : 1 ;
|
||||
unsigned POLICYWRITE : 1 ;
|
||||
unsigned TPM_NT : 4 ;
|
||||
unsigned Reserved_at_bit_8 : 2 ;
|
||||
unsigned POLICY_DELETE : 1 ;
|
||||
unsigned WRITELOCKED : 1 ;
|
||||
unsigned WRITEALL : 1 ;
|
||||
unsigned WRITEDEFINE : 1 ;
|
||||
unsigned WRITE_STCLEAR : 1 ;
|
||||
unsigned GLOBALLOCK : 1 ;
|
||||
unsigned PPREAD : 1 ;
|
||||
unsigned OWNERREAD : 1 ;
|
||||
unsigned AUTHREAD : 1 ;
|
||||
unsigned POLICYREAD : 1 ;
|
||||
unsigned Reserved_at_bit_20 : 5 ;
|
||||
unsigned NO_DA : 1 ;
|
||||
unsigned ORDERLY : 1 ;
|
||||
unsigned CLEAR_STCLEAR : 1 ;
|
||||
unsigned READLOCKED : 1 ;
|
||||
unsigned WRITTEN : 1 ;
|
||||
unsigned PLATFORMCREATE : 1 ;
|
||||
unsigned READ_STCLEAR : 1 ;
|
||||
} TPMA_NV;
|
||||
/* This is the initializer for a TPMA_NV structure. */
|
||||
#define TPMA_NV_INITIALIZER(nv_PPWRITE, nv_OWNERWRITE, nv_AUTHWRITE, \
|
||||
nv_POLICYWRITE, nv_TPM_NT, nv_Reserved_at_bit_8, \
|
||||
nv_POLICY_DELETE, nv_WRITELOCKED, nv_WRITEALL, \
|
||||
nv_WRITEDEFINE, nv_WRITE_STCLEAR, nv_GLOBALLOCK, \
|
||||
nv_PPREAD, nv_OWNERREAD, nv_AUTHREAD, nv_POLICYREAD, \
|
||||
nv_Reserved_at_bit_20, nv_NO_DA, nv_ORDERLY, \
|
||||
nv_CLEAR_STCLEAR, nv_READLOCKED, nv_WRITTEN, \
|
||||
nv_PLATFORMCREATE, nv_READ_STCLEAR) \
|
||||
{nv_PPWRITE, nv_OWNERWRITE, nv_AUTHWRITE, nv_POLICYWRITE, nv_TPM_NT, \
|
||||
nv_Reserved_at_bit_8, nv_POLICY_DELETE, nv_WRITELOCKED, nv_WRITEALL, \
|
||||
nv_WRITEDEFINE, nv_WRITE_STCLEAR, nv_GLOBALLOCK, nv_PPREAD, \
|
||||
nv_OWNERREAD, nv_AUTHREAD, nv_POLICYREAD, nv_Reserved_at_bit_20, \
|
||||
nv_NO_DA, nv_ORDERLY, nv_CLEAR_STCLEAR, nv_READLOCKED, nv_WRITTEN, \
|
||||
nv_PLATFORMCREATE, nv_READ_STCLEAR}
|
||||
#else // NO_BIT_FIELD_STRUCTURES
|
||||
typedef UINT32 TPMA_NV;
|
||||
#define TPMA_NV_PPWRITE ((TPMA_NV)1 << 0)
|
||||
#define TPMA_NV_OWNERWRITE ((TPMA_NV)1 << 1)
|
||||
#define TPMA_NV_AUTHWRITE ((TPMA_NV)1 << 2)
|
||||
#define TPMA_NV_POLICYWRITE ((TPMA_NV)1 << 3)
|
||||
#define TPMA_NV_TPM_NT_SHIFT 4
|
||||
#define TPMA_NV_TPM_NT ((TPMA_NV)0xf << 4)
|
||||
#define TPMA_NV_POLICY_DELETE ((TPMA_NV)1 << 10)
|
||||
#define TPMA_NV_WRITELOCKED ((TPMA_NV)1 << 11)
|
||||
#define TPMA_NV_WRITEALL ((TPMA_NV)1 << 12)
|
||||
#define TPMA_NV_WRITEDEFINE ((TPMA_NV)1 << 13)
|
||||
#define TPMA_NV_WRITE_STCLEAR ((TPMA_NV)1 << 14)
|
||||
#define TPMA_NV_GLOBALLOCK ((TPMA_NV)1 << 15)
|
||||
#define TPMA_NV_PPREAD ((TPMA_NV)1 << 16)
|
||||
#define TPMA_NV_OWNERREAD ((TPMA_NV)1 << 17)
|
||||
#define TPMA_NV_AUTHREAD ((TPMA_NV)1 << 18)
|
||||
#define TPMA_NV_POLICYREAD ((TPMA_NV)1 << 19)
|
||||
#define TPMA_NV_NO_DA ((TPMA_NV)1 << 25)
|
||||
#define TPMA_NV_ORDERLY ((TPMA_NV)1 << 26)
|
||||
#define TPMA_NV_CLEAR_STCLEAR ((TPMA_NV)1 << 27)
|
||||
#define TPMA_NV_READLOCKED ((TPMA_NV)1 << 28)
|
||||
#define TPMA_NV_WRITTEN ((TPMA_NV)1 << 29)
|
||||
#define TPMA_NV_PLATFORMCREATE ((TPMA_NV)1 << 30)
|
||||
#define TPMA_NV_READ_STCLEAR ((TPMA_NV)1 << 31)
|
||||
#define TPMA_NV_RESERVED (0x00000300 | 0x01f00000)
|
||||
/* This is the initializer for a TPMA_NV bit array. */
|
||||
#define TPMA_NV_INITIALIZER(nv_PPWRITE, nv_OWNERWRITE, nv_AUTHWRITE, \
|
||||
nv_POLICYWRITE, nv_TPM_NT, nv_Reserved_at_bit_8, \
|
||||
nv_POLICY_DELETE, nv_WRITELOCKED, nv_WRITEALL, \
|
||||
nv_WRITEDEFINE, nv_WRITE_STCLEAR, nv_GLOBALLOCK, \
|
||||
nv_PPREAD, nv_OWNERREAD, nv_AUTHREAD, nv_POLICYREAD, \
|
||||
nv_Reserved_at_bit_20, nv_NO_DA, nv_ORDERLY, \
|
||||
nv_CLEAR_STCLEAR, nv_READLOCKED, nv_WRITTEN, \
|
||||
nv_PLATFORMCREATE, nv_READ_STCLEAR) \
|
||||
((nv_PPWRITE << 0) + (nv_OWNERWRITE << 1) + (nv_AUTHWRITE << 2) + \
|
||||
(nv_POLICYWRITE << 3) + (nv_TPM_NT << 4) + (nv_POLICY_DELETE << 10) + \
|
||||
(nv_WRITELOCKED << 11) + (nv_WRITEALL << 12) + (nv_WRITEDEFINE << 13) + \
|
||||
(nv_WRITE_STCLEAR << 14) + (nv_GLOBALLOCK << 15) + (nv_PPREAD << 16) + \
|
||||
(nv_OWNERREAD << 17) + (nv_AUTHREAD << 18) + (nv_POLICYREAD << 19) + \
|
||||
(nv_NO_DA << 25) + (nv_ORDERLY << 26) + (nv_CLEAR_STCLEAR << 27) + \
|
||||
(nv_READLOCKED << 28) + (nv_WRITTEN << 29) + (nv_PLATFORMCREATE << 30) + \
|
||||
(nv_READ_STCLEAR << 31))
|
||||
#endif // NO_BIT_FIELD_STRUCTURES
|
||||
/* Table 2:206 - Definition of TPMS_NV_PUBLIC Structure */
|
||||
} TPMS_NV_PIN_COUNTER_PARAMETERS; /* Structure */
|
||||
|
||||
/* Table 2:208 - Definition of TPMA_NV Bits */
|
||||
#if USE_BIT_FIELD_STRUCTURES
|
||||
typedef struct TPMA_NV { // Table 2:208
|
||||
unsigned PPWRITE : 1;
|
||||
unsigned OWNERWRITE : 1;
|
||||
unsigned AUTHWRITE : 1;
|
||||
unsigned POLICYWRITE : 1;
|
||||
unsigned TPM_NT : 4;
|
||||
unsigned Reserved_bits_at_8 : 2;
|
||||
unsigned POLICY_DELETE : 1;
|
||||
unsigned WRITELOCKED : 1;
|
||||
unsigned WRITEALL : 1;
|
||||
unsigned WRITEDEFINE : 1;
|
||||
unsigned WRITE_STCLEAR : 1;
|
||||
unsigned GLOBALLOCK : 1;
|
||||
unsigned PPREAD : 1;
|
||||
unsigned OWNERREAD : 1;
|
||||
unsigned AUTHREAD : 1;
|
||||
unsigned POLICYREAD : 1;
|
||||
unsigned Reserved_bits_at_20 : 5;
|
||||
unsigned NO_DA : 1;
|
||||
unsigned ORDERLY : 1;
|
||||
unsigned CLEAR_STCLEAR : 1;
|
||||
unsigned READLOCKED : 1;
|
||||
unsigned WRITTEN : 1;
|
||||
unsigned PLATFORMCREATE : 1;
|
||||
unsigned READ_STCLEAR : 1;
|
||||
} TPMA_NV; /* Bits */
|
||||
// This is the initializer for a TPMA_NV structure
|
||||
#define TPMA_NV_INITIALIZER( \
|
||||
ppwrite, ownerwrite, authwrite, policywrite, \
|
||||
tpm_nt, bits_at_8, policy_delete, writelocked, \
|
||||
writeall, writedefine, write_stclear, globallock, \
|
||||
ppread, ownerread, authread, policyread, \
|
||||
bits_at_20, no_da, orderly, clear_stclear, \
|
||||
readlocked, written, platformcreate, read_stclear) \
|
||||
{ppwrite, ownerwrite, authwrite, policywrite, \
|
||||
tpm_nt, bits_at_8, policy_delete, writelocked, \
|
||||
writeall, writedefine, write_stclear, globallock, \
|
||||
ppread, ownerread, authread, policyread, \
|
||||
bits_at_20, no_da, orderly, clear_stclear, \
|
||||
readlocked, written, platformcreate, read_stclear}
|
||||
#else // USE_BIT_FIELD_STRUCTURES
|
||||
// This implements Table 2:208 TPMA_NV using bit masking
|
||||
typedef UINT32 TPMA_NV;
|
||||
#define TPMA_NV_PPWRITE ((TPMA_NV)1 << 0)
|
||||
#define TPMA_NV_OWNERWRITE ((TPMA_NV)1 << 1)
|
||||
#define TPMA_NV_AUTHWRITE ((TPMA_NV)1 << 2)
|
||||
#define TPMA_NV_POLICYWRITE ((TPMA_NV)1 << 3)
|
||||
#define TPMA_NV_TPM_NT_SHIFT 4
|
||||
#define TPMA_NV_TPM_NT ((TPMA_NV)0xf << 4)
|
||||
#define TPMA_NV_POLICY_DELETE ((TPMA_NV)1 << 10)
|
||||
#define TPMA_NV_WRITELOCKED ((TPMA_NV)1 << 11)
|
||||
#define TPMA_NV_WRITEALL ((TPMA_NV)1 << 12)
|
||||
#define TPMA_NV_WRITEDEFINE ((TPMA_NV)1 << 13)
|
||||
#define TPMA_NV_WRITE_STCLEAR ((TPMA_NV)1 << 14)
|
||||
#define TPMA_NV_GLOBALLOCK ((TPMA_NV)1 << 15)
|
||||
#define TPMA_NV_PPREAD ((TPMA_NV)1 << 16)
|
||||
#define TPMA_NV_OWNERREAD ((TPMA_NV)1 << 17)
|
||||
#define TPMA_NV_AUTHREAD ((TPMA_NV)1 << 18)
|
||||
#define TPMA_NV_POLICYREAD ((TPMA_NV)1 << 19)
|
||||
#define TPMA_NV_NO_DA ((TPMA_NV)1 << 25)
|
||||
#define TPMA_NV_ORDERLY ((TPMA_NV)1 << 26)
|
||||
#define TPMA_NV_CLEAR_STCLEAR ((TPMA_NV)1 << 27)
|
||||
#define TPMA_NV_READLOCKED ((TPMA_NV)1 << 28)
|
||||
#define TPMA_NV_WRITTEN ((TPMA_NV)1 << 29)
|
||||
#define TPMA_NV_PLATFORMCREATE ((TPMA_NV)1 << 30)
|
||||
#define TPMA_NV_READ_STCLEAR ((TPMA_NV)1 << 31)
|
||||
#define TPMA_NV_RESERVED (0x00000300 | 0x01f00000)
|
||||
// This is the initializer for a TPMA_NV bit array.
|
||||
#define TPMA_NV_INITIALIZER( \
|
||||
ppwrite, ownerwrite, authwrite, policywrite, \
|
||||
tpm_nt, bits_at_8, policy_delete, writelocked, \
|
||||
writeall, writedefine, write_stclear, globallock, \
|
||||
ppread, ownerread, authread, policyread, \
|
||||
bits_at_20, no_da, orderly, clear_stclear, \
|
||||
readlocked, written, platformcreate, read_stclear) \
|
||||
((ppwrite << 0) + (ownerwrite << 1) + \
|
||||
(authwrite << 2) + (policywrite << 3) + \
|
||||
(tpm_nt << 4) + (policy_delete << 10) + \
|
||||
(writelocked << 11) + (writeall << 12) + \
|
||||
(writedefine << 13) + (write_stclear << 14) + \
|
||||
(globallock << 15) + (ppread << 16) + \
|
||||
(ownerread << 17) + (authread << 18) + \
|
||||
(policyread << 19) + (no_da << 25) + \
|
||||
(orderly << 26) + (clear_stclear << 27) + \
|
||||
(readlocked << 28) + (written << 29) + \
|
||||
(platformcreate << 30) + (read_stclear << 31))
|
||||
#endif // USE_BIT_FIELD_STRUCTURES
|
||||
|
||||
/* Table 2:209 - Definition of TPMS_NV_PUBLIC Structure */
|
||||
typedef struct {
|
||||
TPMI_RH_NV_INDEX nvIndex;
|
||||
TPMI_ALG_HASH nameAlg;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user