assert_se(tpm2_supports_alg(c, TPM2_ALG_AES));
assert_se(tpm2_supports_alg(c, TPM2_ALG_CFB));
- /* Test invalid commands */
- assert_se(!tpm2_supports_command(c, TPM2_CC_FIRST - 1));
- assert_se(!tpm2_supports_command(c, TPM2_CC_LAST + 1));
-
- /* Test valid commands */
+ /* Test invalid commands. TPM specification Part 2 ("Structures") section "TPM_CC (Command Codes)"
+ * states bits 31:30 and 28:16 are reserved and must be 0. */
+ assert_se(!tpm2_supports_command(c, UINT32_C(0x80000000)));
+ assert_se(!tpm2_supports_command(c, UINT32_C(0x40000000)));
+ assert_se(!tpm2_supports_command(c, UINT32_C(0x00100000)));
+ assert_se(!tpm2_supports_command(c, UINT32_C(0x80000144)));
+ assert_se(!tpm2_supports_command(c, UINT32_C(0x40000144)));
+ assert_se(!tpm2_supports_command(c, UINT32_C(0x00100144)));
+
+ /* Test valid commands. We should be able to expect all TPMs support these. */
+ assert_se(tpm2_supports_command(c, TPM2_CC_Startup));
+ assert_se(tpm2_supports_command(c, TPM2_CC_StartAuthSession));
assert_se(tpm2_supports_command(c, TPM2_CC_Create));
assert_se(tpm2_supports_command(c, TPM2_CC_CreatePrimary));
assert_se(tpm2_supports_command(c, TPM2_CC_Unseal));