mirror of https://github.com/wolfSSL/wolfTPM.git
Cover the ST33 command set probe in unit tests
parent
4ae80c56dd
commit
50dfdcec95
|
|
@ -41,6 +41,8 @@ int st33_blob0_family(word32 fwVerMajor)
|
|||
case 9: /* ST33KTPM2X */
|
||||
case 10: /* ST33KTPM2A */
|
||||
return ST33_BLOB0_FAMILY_KTPM;
|
||||
/* Uncharacterized majors stay unknown so no size or family rule is
|
||||
* asserted against them, even ones the tool can name */
|
||||
default:
|
||||
return ST33_BLOB0_FAMILY_UNKNOWN;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -289,6 +289,7 @@ static const char* TPM2_ST33_PartLine(word16 fwVerMajor)
|
|||
case 74: return "ST33TPHF2X (older firmware line)";
|
||||
case 9: return "ST33KTPM2X";
|
||||
case 10: return "ST33KTPM2A";
|
||||
/* Named for display only, and left out of the family classifiers */
|
||||
case 11: return "ST33KTPMQ";
|
||||
default: return "unrecognized ST33 firmware line";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11974,6 +11974,8 @@ static int tpm2_st33_family(word16 fwVerMajor)
|
|||
case 9: /* ST33KTPM2X */
|
||||
case 10: /* ST33KTPM2A */
|
||||
return ST33_FW_FAMILY_KTPM;
|
||||
/* Uncharacterized majors stay unknown so no size or family rule is
|
||||
* asserted against them, even ones the tool can name */
|
||||
default:
|
||||
return ST33_FW_FAMILY_UNKNOWN;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -284,6 +284,9 @@ static void test_wolfTPM2_ST33_FirmwareUpgrade(void)
|
|||
{
|
||||
int rc;
|
||||
int rcEx;
|
||||
int isImpl;
|
||||
int fromTpm = 0;
|
||||
TPM_CC ccStart, ccData, ccStartRule, ccDataRule;
|
||||
WOLFTPM2_DEV dev;
|
||||
WOLFTPM2_CAPS caps;
|
||||
#if !defined(WOLFTPM2_NO_WOLFCRYPT) && defined(WOLFSSL_SHA384)
|
||||
|
|
@ -392,6 +395,38 @@ static void test_wolfTPM2_ST33_FirmwareUpgrade(void)
|
|||
}
|
||||
#endif /* !WOLFTPM2_NO_WOLFCRYPT && WOLFSSL_SHA384 */
|
||||
|
||||
/* The probe rebuilds a command code from TPMA_CC. Every TPM implements
|
||||
* GetCapability and none a top of range vendor code, so no ST33 needed */
|
||||
isImpl = -1;
|
||||
AssertIntEQ(wolfTPM2_ST33_CmdImplemented(TPM_CC_GetCapability, &isImpl),
|
||||
TPM_RC_SUCCESS);
|
||||
AssertIntEQ(isImpl, 1);
|
||||
isImpl = -1;
|
||||
AssertIntEQ(wolfTPM2_ST33_CmdImplemented((TPM_CC)(CC_VEND + 0x7FFE),
|
||||
&isImpl), TPM_RC_SUCCESS);
|
||||
AssertIntEQ(isImpl, 0);
|
||||
AssertIntEQ(wolfTPM2_ST33_CmdImplemented(TPM_CC_GetCapability, NULL),
|
||||
BAD_FUNC_ARG);
|
||||
|
||||
/* Selection stays self consistent on any TPM: a settled command list
|
||||
* gives a real pair, an unsettled one gives exactly the version rule */
|
||||
AssertIntEQ(wolfTPM2_ST33_GetFwUpgradeCommands(&caps, 9, &ccStart, &ccData,
|
||||
&fromTpm), TPM_RC_SUCCESS);
|
||||
if (fromTpm) {
|
||||
AssertIntEQ(ccStart == TPM_CC_FieldUpgradeStartVendor_ST33 ||
|
||||
ccStart == TPM_CC_FieldUpgradeStart, 1);
|
||||
AssertIntEQ(ccData == TPM_CC_FieldUpgradeDataVendor_ST33 ||
|
||||
ccData == TPM_CC_FieldUpgradeData, 1);
|
||||
}
|
||||
else {
|
||||
AssertIntEQ(wolfTPM2_ST33_FwUpgradeCommands(caps.fwVerMinor, 1, 9,
|
||||
&ccStartRule, &ccDataRule), TPM_RC_SUCCESS);
|
||||
AssertIntEQ((int)ccStart, (int)ccStartRule);
|
||||
AssertIntEQ((int)ccData, (int)ccDataRule);
|
||||
}
|
||||
AssertIntEQ(wolfTPM2_ST33_GetFwUpgradeCommands(&caps, 9, NULL, &ccData,
|
||||
NULL), BAD_FUNC_ARG);
|
||||
|
||||
wolfTPM2_Cleanup(&dev);
|
||||
|
||||
printf("Test ST33 FW: %-40s Passed\n", "API Availability:");
|
||||
|
|
|
|||
Loading…
Reference in New Issue