diff --git a/.github/workflows/make-test-swtpm.yml b/.github/workflows/make-test-swtpm.yml index f8fe999..e61e852 100644 --- a/.github/workflows/make-test-swtpm.yml +++ b/.github/workflows/make-test-swtpm.yml @@ -132,6 +132,12 @@ jobs: - name: make debug io run: make +# build pedantic + - name: configure pedantic + run: ./configure CFLAGS="-Wpedantic" + - name: make pedantic + run: make + # capture logs on failure - name: Upload failure logs if: failure() diff --git a/src/tpm2_tis.c b/src/tpm2_tis.c index 0c0a8ed..da6d04c 100644 --- a/src/tpm2_tis.c +++ b/src/tpm2_tis.c @@ -47,18 +47,18 @@ enum tpm_tis_status { TPM_STS_RESP_RETRY = 0x02, }; -enum tpm_tis_int_flags { - TPM_GLOBAL_INT_ENABLE = 0x80000000, - TPM_INTF_BURST_COUNT_STATIC = 0x100, - TPM_INTF_CMD_READY_INT = 0x080, - TPM_INTF_INT_EDGE_FALLING = 0x040, - TPM_INTF_INT_EDGE_RISING = 0x020, - TPM_INTF_INT_LEVEL_LOW = 0x010, - TPM_INTF_INT_LEVEL_HIGH = 0x008, - TPM_INTF_LOC_CHANGE_INT = 0x004, - TPM_INTF_STS_VALID_INT = 0x002, - TPM_INTF_DATA_AVAIL_INT = 0x001, -}; +/* enum tpm_tis_int_flags */ +#define TPM_GLOBAL_INT_ENABLE 0x80000000UL +#define TPM_INTF_BURST_COUNT_STATIC 0x100 +#define TPM_INTF_CMD_READY_INT 0x080 +#define TPM_INTF_INT_EDGE_FALLING 0x040 +#define TPM_INTF_INT_EDGE_RISING 0x020 +#define TPM_INTF_INT_LEVEL_LOW 0x010 +#define TPM_INTF_INT_LEVEL_HIGH 0x008 +#define TPM_INTF_LOC_CHANGE_INT 0x004 +#define TPM_INTF_STS_VALID_INT 0x002 +#define TPM_INTF_DATA_AVAIL_INT 0x001 + #ifndef TPM_BASE_ADDRESS #define TPM_BASE_ADDRESS (0xD40000u) diff --git a/wolftpm/tpm2.h b/wolftpm/tpm2.h index 63288ae..74d2134 100644 --- a/wolftpm/tpm2.h +++ b/wolftpm/tpm2.h @@ -66,15 +66,13 @@ typedef UINT32 TPM_GENERATED; /* ENUMERATIONS */ /* ---------------------------------------------------------------------------*/ -enum { - TPM_SPEC_FAMILY = 0x322E3000, - TPM_SPEC_LEVEL = 0, - TPM_SPEC_VERSION = 138, - TPM_SPEC_YEAR = 2016, - TPM_SPEC_DAY_OF_YEAR = 273, +#define TPM_SPEC_FAMILY 0x322E3000 +#define TPM_SPEC_LEVEL 0 +#define TPM_SPEC_VERSION 138 +#define TPM_SPEC_YEAR 2016 +#define TPM_SPEC_DAY_OF_YEAR 273 - TPM_GENERATED_VALUE = 0xff544347, -}; +#define TPM_GENERATED_VALUE 0xff544347 typedef enum { @@ -649,37 +647,38 @@ typedef enum { typedef UINT32 TPM_RH; /* Handle Value Constants */ -typedef enum { - HR_HANDLE_MASK = 0x00FFFFFF, - HR_RANGE_MASK = 0xFF000000, - HR_SHIFT = 24, - HR_PCR = ((UINT32)TPM_HT_PCR << HR_SHIFT), - HR_HMAC_SESSION = ((UINT32)TPM_HT_HMAC_SESSION << HR_SHIFT), - HR_POLICY_SESSION = ((UINT32)TPM_HT_POLICY_SESSION << HR_SHIFT), - HR_TRANSIENT = ((UINT32)TPM_HT_TRANSIENT << HR_SHIFT), - HR_PERSISTENT = ((UINT32)TPM_HT_PERSISTENT << HR_SHIFT), - HR_NV_INDEX = ((UINT32)TPM_HT_NV_INDEX << HR_SHIFT), - HR_PERMANENT = ((UINT32)TPM_HT_PERMANENT << HR_SHIFT), - PCR_FIRST = (HR_PCR + 0), - PCR_LAST = (PCR_FIRST + IMPLEMENTATION_PCR-1), - HMAC_SESSION_FIRST = (HR_HMAC_SESSION + 0), - HMAC_SESSION_LAST = (HMAC_SESSION_FIRST+MAX_ACTIVE_SESSIONS-1), - LOADED_SESSION_FIRST = HMAC_SESSION_FIRST, - LOADED_SESSION_LAST = HMAC_SESSION_LAST, - POLICY_SESSION_FIRST = (HR_POLICY_SESSION + 0), - POLICY_SESSION_LAST = (POLICY_SESSION_FIRST+MAX_ACTIVE_SESSIONS-1), - TRANSIENT_FIRST = (HR_TRANSIENT + 0), - ACTIVE_SESSION_FIRST = POLICY_SESSION_FIRST, - ACTIVE_SESSION_LAST = POLICY_SESSION_LAST, - TRANSIENT_LAST = (TRANSIENT_FIRST+MAX_LOADED_OBJECTS-1), - PERSISTENT_FIRST = (HR_PERSISTENT + 0), - PERSISTENT_LAST = (PERSISTENT_FIRST + 0x00FFFFFF), - PLATFORM_PERSISTENT = (PERSISTENT_FIRST + 0x00800000), - NV_INDEX_FIRST = (HR_NV_INDEX + 0), - NV_INDEX_LAST = (NV_INDEX_FIRST + 0x00FFFFFF), - PERMANENT_FIRST = TPM_RH_FIRST, - PERMANENT_LAST = TPM_RH_LAST, -} TPM_HC_T; +/* Using defines, not "enum TPM_HC_T" to avoid pedantic error: + * "ISO C restricts enumerator values to range of 'int'" + */ +#define HR_HANDLE_MASK 0x00FFFFFFUL +#define HR_RANGE_MASK 0xFF000000UL +#define HR_SHIFT 24 +#define HR_PCR ((UINT32)TPM_HT_PCR << HR_SHIFT) +#define HR_HMAC_SESSION ((UINT32)TPM_HT_HMAC_SESSION << HR_SHIFT) +#define HR_POLICY_SESSION ((UINT32)TPM_HT_POLICY_SESSION << HR_SHIFT) +#define HR_TRANSIENT ((UINT32)TPM_HT_TRANSIENT << HR_SHIFT) +#define HR_PERSISTENT ((UINT32)TPM_HT_PERSISTENT << HR_SHIFT) +#define HR_NV_INDEX ((UINT32)TPM_HT_NV_INDEX << HR_SHIFT) +#define HR_PERMANENT ((UINT32)TPM_HT_PERMANENT << HR_SHIFT) +#define PCR_FIRST (HR_PCR + 0) +#define PCR_LAST (PCR_FIRST + IMPLEMENTATION_PCR-1) +#define HMAC_SESSION_FIRST (HR_HMAC_SESSION + 0) +#define HMAC_SESSION_LAST (HMAC_SESSION_FIRST+MAX_ACTIVE_SESSIONS-1) +#define LOADED_SESSION_FIRST HMAC_SESSION_FIRST +#define LOADED_SESSION_LAST HMAC_SESSION_LAST +#define POLICY_SESSION_FIRST (HR_POLICY_SESSION + 0) +#define POLICY_SESSION_LAST (POLICY_SESSION_FIRST+MAX_ACTIVE_SESSIONS-1) +#define TRANSIENT_FIRST (HR_TRANSIENT + 0) +#define ACTIVE_SESSION_FIRST POLICY_SESSION_FIRST +#define ACTIVE_SESSION_LAST POLICY_SESSION_LAST +#define TRANSIENT_LAST (TRANSIENT_FIRST+MAX_LOADED_OBJECTS-1) +#define PERSISTENT_FIRST (HR_PERSISTENT + 0) +#define PERSISTENT_LAST (PERSISTENT_FIRST + 0x00FFFFFFUL) +#define PLATFORM_PERSISTENT (PERSISTENT_FIRST + 0x00800000UL) +#define NV_INDEX_FIRST (HR_NV_INDEX + 0) +#define NV_INDEX_LAST (NV_INDEX_FIRST + 0x00FFFFFFUL) +#define PERMANENT_FIRST TPM_RH_FIRST +#define PERMANENT_LAST TPM_RH_LAST typedef UINT32 TPM_HC; @@ -741,13 +740,14 @@ enum TPMA_PERMANENT_mask { }; typedef UINT32 TPMA_STARTUP_CLEAR; -enum TPMA_STARTUP_CLEAR_mask { - TPMA_STARTUP_CLEAR_phEnable = 0x00000001, - TPMA_STARTUP_CLEAR_shEnable = 0x00000002, - TPMA_STARTUP_CLEAR_ehEnable = 0x00000004, - TPMA_STARTUP_CLEAR_phEnableNV = 0x00000008, - TPMA_STARTUP_CLEAR_orderly = 0x80000000, -}; +/* Using defines, not "enum TPMA_STARTUP_CLEAR_mask" to avoid pedantic error: + * "ISO C restricts enumerator values to range of 'int'" + */ +#define TPMA_STARTUP_CLEAR_phEnable 0x00000001UL +#define TPMA_STARTUP_CLEAR_shEnable 0x00000002UL +#define TPMA_STARTUP_CLEAR_ehEnable 0x00000004UL +#define TPMA_STARTUP_CLEAR_phEnableNV 0x00000008UL +#define TPMA_STARTUP_CLEAR_orderly 0x80000000UL typedef UINT32 TPMA_MEMORY; enum TPMA_MEMORY_mask { @@ -1493,10 +1493,12 @@ typedef struct TPM2B_ID_OBJECT { /* NV Storage Structures */ typedef UINT32 TPM_NV_INDEX; -enum TPM_NV_INDEX_mask { - TPM_NV_INDEX_index = 0x00FFFFFF, - TPM_NV_INDEX_RH_NV = 0xFF000000, -}; +/* Using defines, not "enum TPM_NV_INDEX_mask" to avoid pedantic error: + * "ISO C restricts enumerator values to range of 'int'" + */ +#define TPM_NV_INDEX_index 0x00FFFFFFUL +#define TPM_NV_INDEX_RH_NV 0xFF000000UL + typedef enum TPM_NT { TPM_NT_ORDINARY = 0x0, @@ -1514,30 +1516,31 @@ typedef struct TPMS_NV_PIN_COUNTER_PARAMETERS { } TPMS_NV_PIN_COUNTER_PARAMETERS; typedef UINT32 TPMA_NV; -enum TPMA_NV_mask { - TPMA_NV_PPWRITE = 0x00000001, - TPMA_NV_OWNERWRITE = 0x00000002, - TPMA_NV_AUTHWRITE = 0x00000004, - TPMA_NV_POLICYWRITE = 0x00000008, - TPMA_NV_TPM_NT = 0x000000F0, - TPMA_NV_POLICY_DELETE = 0x00000400, - TPMA_NV_WRITELOCKED = 0x00000800, - TPMA_NV_WRITEALL = 0x00001000, - TPMA_NV_WRITEDEFINE = 0x00002000, - TPMA_NV_WRITE_STCLEAR = 0x00004000, - TPMA_NV_GLOBALLOCK = 0x00008000, - TPMA_NV_PPREAD = 0x00010000, - TPMA_NV_OWNERREAD = 0x00020000, - TPMA_NV_AUTHREAD = 0x00040000, - TPMA_NV_POLICYREAD = 0x00080000, - TPMA_NV_NO_DA = 0x02000000, - TPMA_NV_ORDERLY = 0x04000000, - TPMA_NV_CLEAR_STCLEAR = 0x08000000, - TPMA_NV_READLOCKED = 0x10000000, - TPMA_NV_WRITTEN = 0x20000000, - TPMA_NV_PLATFORMCREATE = 0x40000000, - TPMA_NV_READ_STCLEAR = 0x80000000, -}; +/* Using defines, not "enum TPMA_NV_mask" to avoid pedantic error: + * "ISO C restricts enumerator values to range of 'int'" + */ +#define TPMA_NV_PPWRITE 0x00000001UL +#define TPMA_NV_OWNERWRITE 0x00000002UL +#define TPMA_NV_AUTHWRITE 0x00000004UL +#define TPMA_NV_POLICYWRITE 0x00000008UL +#define TPMA_NV_TPM_NT 0x000000F0UL +#define TPMA_NV_POLICY_DELETE 0x00000400UL +#define TPMA_NV_WRITELOCKED 0x00000800UL +#define TPMA_NV_WRITEALL 0x00001000UL +#define TPMA_NV_WRITEDEFINE 0x00002000UL +#define TPMA_NV_WRITE_STCLEAR 0x00004000UL +#define TPMA_NV_GLOBALLOCK 0x00008000UL +#define TPMA_NV_PPREAD 0x00010000UL +#define TPMA_NV_OWNERREAD 0x00020000UL +#define TPMA_NV_AUTHREAD 0x00040000UL +#define TPMA_NV_POLICYREAD 0x00080000UL +#define TPMA_NV_NO_DA 0x02000000UL +#define TPMA_NV_ORDERLY 0x04000000UL +#define TPMA_NV_CLEAR_STCLEAR 0x08000000UL +#define TPMA_NV_READLOCKED 0x10000000UL +#define TPMA_NV_WRITTEN 0x20000000UL +#define TPMA_NV_PLATFORMCREATE 0x40000000UL +#define TPMA_NV_READ_STCLEAR 0x80000000UL typedef struct TPMS_NV_PUBLIC { TPMI_RH_NV_INDEX nvIndex;