@@ -226,6 +226,10 @@ static void test_wolfTPM2_ST33_FirmwareUpgrade(void)
226226 WOLFTPM2_DEV dev ;
227227 WOLFTPM2_CAPS caps ;
228228 int lms_state = 0 ; /* 0=non-LMS (< 512), 1=LMS required (>= 512) */
229+ uint8_t dummy_sig [1 ] = {0 };
230+ #ifndef WOLFTPM2_NO_WOLFCRYPT
231+ uint8_t dummy_manifest [10 ] = {0 };
232+ #endif
229233
230234 /* Initialize TPM */
231235 rc = wolfTPM2_Init (& dev , TPM2_IoCb , NULL );
@@ -249,30 +253,98 @@ static void test_wolfTPM2_ST33_FirmwareUpgrade(void)
249253 #endif
250254 }
251255
252- /* Test NULL parameter handling */
256+ /* ===== Test NULL dev parameter handling ===== */
257+
258+ /* wolfTPM2_FirmwareUpgradeCancel - NULL dev */
253259 rc = wolfTPM2_FirmwareUpgradeCancel (NULL );
254260 AssertIntNE (rc , 0 );
255261
256- rc = wolfTPM2_FirmwareUpgradeHash (NULL , TPM_ALG_SHA256 , NULL , 0 , NULL ,
262+ /* wolfTPM2_FirmwareUpgradeHash - NULL dev */
263+ rc = wolfTPM2_FirmwareUpgradeHash (NULL , TPM_ALG_SHA384 , NULL , 0 , NULL ,
257264 0 , NULL , NULL );
258265 AssertIntNE (rc , 0 );
259266
260- rc = wolfTPM2_FirmwareUpgradeWithLMS (NULL , NULL , 0 , NULL , NULL , NULL , 0 );
267+ /* wolfTPM2_FirmwareUpgradeHashWithLMS - NULL dev */
268+ rc = wolfTPM2_FirmwareUpgradeHashWithLMS (NULL , TPM_ALG_SHA384 , NULL , 0 ,
269+ NULL , 0 , NULL , NULL , NULL , 0 );
270+ AssertIntNE (rc , 0 );
271+
272+ /* wolfTPM2_FirmwareUpgradeRecover - NULL dev */
273+ rc = wolfTPM2_FirmwareUpgradeRecover (NULL , NULL , 0 , NULL , NULL );
261274 AssertIntNE (rc , 0 );
262275
263276#ifndef WOLFTPM2_NO_WOLFCRYPT
277+ /* wolfTPM2_FirmwareUpgrade - NULL dev */
264278 rc = wolfTPM2_FirmwareUpgrade (NULL , NULL , 0 , NULL , NULL );
265279 AssertIntNE (rc , 0 );
266280
267- rc = wolfTPM2_FirmwareUpgradeRecover (NULL , NULL , 0 , NULL , NULL );
281+ /* wolfTPM2_FirmwareUpgradeWithLMS - NULL dev */
282+ rc = wolfTPM2_FirmwareUpgradeWithLMS (NULL , NULL , 0 , NULL , NULL , NULL , 0 );
283+ AssertIntNE (rc , 0 );
284+ #endif /* !WOLFTPM2_NO_WOLFCRYPT */
285+
286+ /* ===== Test NULL/invalid parameter combinations ===== */
287+
288+ /* wolfTPM2_FirmwareUpgradeHash - valid dev, NULL manifest */
289+ rc = wolfTPM2_FirmwareUpgradeHash (& dev , TPM_ALG_SHA384 , NULL , 0 , NULL ,
290+ 0 , NULL , NULL );
291+ AssertIntNE (rc , 0 );
292+
293+ /* wolfTPM2_FirmwareUpgradeHashWithLMS - valid dev, NULL lms_signature */
294+ rc = wolfTPM2_FirmwareUpgradeHashWithLMS (& dev , TPM_ALG_SHA384 , NULL , 0 ,
295+ NULL , 0 , NULL , NULL , NULL , 0 );
268296 AssertIntNE (rc , 0 );
269- #endif
270297
298+ /* wolfTPM2_FirmwareUpgradeHashWithLMS - valid dev, zero-length lms_signature */
299+ rc = wolfTPM2_FirmwareUpgradeHashWithLMS (& dev , TPM_ALG_SHA384 , NULL , 0 ,
300+ NULL , 0 , NULL , NULL , dummy_sig , 0 );
301+ AssertIntNE (rc , 0 );
302+
303+ /* wolfTPM2_FirmwareUpgradeRecover - valid dev, NULL manifest */
304+ rc = wolfTPM2_FirmwareUpgradeRecover (& dev , NULL , 0 , NULL , NULL );
305+ AssertIntNE (rc , 0 );
306+
307+ /* wolfTPM2_FirmwareUpgradeCancel - valid dev (may succeed or fail
308+ * depending on TPM state) */
309+ rc = wolfTPM2_FirmwareUpgradeCancel (& dev );
310+ /* Note: This may return success or error depending on TPM state -
311+ * just verify it doesn't crash */
312+ (void )rc ;
313+
314+ #ifndef WOLFTPM2_NO_WOLFCRYPT
315+ /* wolfTPM2_FirmwareUpgrade - valid dev, NULL manifest */
316+ rc = wolfTPM2_FirmwareUpgrade (& dev , NULL , 0 , NULL , NULL );
317+ AssertIntNE (rc , 0 );
318+
319+ /* wolfTPM2_FirmwareUpgrade - valid dev, NULL callback */
320+ rc = wolfTPM2_FirmwareUpgrade (& dev , dummy_manifest , sizeof (dummy_manifest ),
321+ NULL , NULL );
322+ AssertIntNE (rc , 0 );
323+
324+ /* wolfTPM2_FirmwareUpgradeWithLMS - valid dev, NULL lms_signature */
325+ rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , NULL , 0 , NULL , NULL , NULL , 0 );
326+ AssertIntNE (rc , 0 );
327+
328+ /* wolfTPM2_FirmwareUpgradeWithLMS - valid dev, zero-length lms_signature */
329+ rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , NULL , 0 , NULL , NULL ,
330+ dummy_sig , 0 );
331+ AssertIntNE (rc , 0 );
332+
333+ /* Test ST33-specific path if we have an ST33 TPM */
271334 if (caps .mfg == TPM_MFG_STM ) {
272- rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , NULL , 0 , NULL , NULL ,
273- NULL , 0 );
335+ /* wolfTPM2_FirmwareUpgradeWithLMS - valid dev with dummy signature
336+ * but NULL manifest */
337+ rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , NULL , 0 , NULL , NULL ,
338+ dummy_sig , sizeof (dummy_sig ));
339+ AssertIntNE (rc , 0 );
340+
341+ /* wolfTPM2_FirmwareUpgradeWithLMS - valid dev with dummy signature
342+ * but NULL callback */
343+ rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , dummy_manifest ,
344+ sizeof (dummy_manifest ), NULL , NULL , dummy_sig , sizeof (dummy_sig ));
274345 AssertIntNE (rc , 0 );
275346 }
347+ #endif /* !WOLFTPM2_NO_WOLFCRYPT */
276348
277349 rc = 0 ;
278350
0 commit comments