@@ -226,6 +226,8 @@ 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_manifest [10 ] = {0 };
230+ uint8_t dummy_sig [1 ] = {0 };
229231
230232 /* Initialize TPM */
231233 rc = wolfTPM2_Init (& dev , TPM2_IoCb , NULL );
@@ -249,30 +251,98 @@ static void test_wolfTPM2_ST33_FirmwareUpgrade(void)
249251 #endif
250252 }
251253
252- /* Test NULL parameter handling */
254+ /* ===== Test NULL dev parameter handling ===== */
255+
256+ /* wolfTPM2_FirmwareUpgradeCancel - NULL dev */
253257 rc = wolfTPM2_FirmwareUpgradeCancel (NULL );
254258 AssertIntNE (rc , 0 );
255259
256- rc = wolfTPM2_FirmwareUpgradeHash (NULL , TPM_ALG_SHA256 , NULL , 0 , NULL ,
260+ /* wolfTPM2_FirmwareUpgradeHash - NULL dev */
261+ rc = wolfTPM2_FirmwareUpgradeHash (NULL , TPM_ALG_SHA384 , NULL , 0 , NULL ,
257262 0 , NULL , NULL );
258263 AssertIntNE (rc , 0 );
259264
260- rc = wolfTPM2_FirmwareUpgradeWithLMS (NULL , NULL , 0 , NULL , NULL , NULL , 0 );
265+ /* wolfTPM2_FirmwareUpgradeHashWithLMS - NULL dev */
266+ rc = wolfTPM2_FirmwareUpgradeHashWithLMS (NULL , TPM_ALG_SHA384 , NULL , 0 ,
267+ NULL , 0 , NULL , NULL , NULL , 0 );
268+ AssertIntNE (rc , 0 );
269+
270+ /* wolfTPM2_FirmwareUpgradeRecover - NULL dev */
271+ rc = wolfTPM2_FirmwareUpgradeRecover (NULL , NULL , 0 , NULL , NULL );
261272 AssertIntNE (rc , 0 );
262273
263274#ifndef WOLFTPM2_NO_WOLFCRYPT
275+ /* wolfTPM2_FirmwareUpgrade - NULL dev */
264276 rc = wolfTPM2_FirmwareUpgrade (NULL , NULL , 0 , NULL , NULL );
265277 AssertIntNE (rc , 0 );
266278
267- rc = wolfTPM2_FirmwareUpgradeRecover (NULL , NULL , 0 , NULL , NULL );
279+ /* wolfTPM2_FirmwareUpgradeWithLMS - NULL dev */
280+ rc = wolfTPM2_FirmwareUpgradeWithLMS (NULL , NULL , 0 , NULL , NULL , NULL , 0 );
268281 AssertIntNE (rc , 0 );
269- #endif
282+ #endif /* !WOLFTPM2_NO_WOLFCRYPT */
283+
284+ /* ===== Test NULL/invalid parameter combinations ===== */
285+
286+ /* wolfTPM2_FirmwareUpgradeHash - valid dev, NULL manifest */
287+ rc = wolfTPM2_FirmwareUpgradeHash (& dev , TPM_ALG_SHA384 , NULL , 0 , NULL ,
288+ 0 , NULL , NULL );
289+ AssertIntNE (rc , 0 );
290+
291+ /* wolfTPM2_FirmwareUpgradeHashWithLMS - valid dev, NULL lms_signature */
292+ rc = wolfTPM2_FirmwareUpgradeHashWithLMS (& dev , TPM_ALG_SHA384 , NULL , 0 ,
293+ NULL , 0 , NULL , NULL , NULL , 0 );
294+ AssertIntNE (rc , 0 );
295+
296+ /* wolfTPM2_FirmwareUpgradeHashWithLMS - valid dev, zero-length lms_signature */
297+ rc = wolfTPM2_FirmwareUpgradeHashWithLMS (& dev , TPM_ALG_SHA384 , NULL , 0 ,
298+ NULL , 0 , NULL , NULL , dummy_sig , 0 );
299+ AssertIntNE (rc , 0 );
300+
301+ /* wolfTPM2_FirmwareUpgradeRecover - valid dev, NULL manifest */
302+ rc = wolfTPM2_FirmwareUpgradeRecover (& dev , NULL , 0 , NULL , NULL );
303+ AssertIntNE (rc , 0 );
304+
305+ /* wolfTPM2_FirmwareUpgradeCancel - valid dev (may succeed or fail
306+ * depending on TPM state) */
307+ rc = wolfTPM2_FirmwareUpgradeCancel (& dev );
308+ /* Note: This may return success or error depending on TPM state -
309+ * just verify it doesn't crash */
310+ (void )rc ;
270311
312+ #ifndef WOLFTPM2_NO_WOLFCRYPT
313+ /* wolfTPM2_FirmwareUpgrade - valid dev, NULL manifest */
314+ rc = wolfTPM2_FirmwareUpgrade (& dev , NULL , 0 , NULL , NULL );
315+ AssertIntNE (rc , 0 );
316+
317+ /* wolfTPM2_FirmwareUpgrade - valid dev, NULL callback */
318+ rc = wolfTPM2_FirmwareUpgrade (& dev , dummy_manifest , sizeof (dummy_manifest ),
319+ NULL , NULL );
320+ AssertIntNE (rc , 0 );
321+
322+ /* wolfTPM2_FirmwareUpgradeWithLMS - valid dev, NULL lms_signature */
323+ rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , NULL , 0 , NULL , NULL , NULL , 0 );
324+ AssertIntNE (rc , 0 );
325+
326+ /* wolfTPM2_FirmwareUpgradeWithLMS - valid dev, zero-length lms_signature */
327+ rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , NULL , 0 , NULL , NULL ,
328+ dummy_sig , 0 );
329+ AssertIntNE (rc , 0 );
330+
331+ /* Test ST33-specific path if we have an ST33 TPM */
271332 if (caps .mfg == TPM_MFG_STM ) {
272- rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , NULL , 0 , NULL , NULL ,
273- NULL , 0 );
333+ /* wolfTPM2_FirmwareUpgradeWithLMS - valid dev with dummy signature
334+ * but NULL manifest */
335+ rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , NULL , 0 , NULL , NULL ,
336+ dummy_sig , sizeof (dummy_sig ));
337+ AssertIntNE (rc , 0 );
338+
339+ /* wolfTPM2_FirmwareUpgradeWithLMS - valid dev with dummy signature
340+ * but NULL callback */
341+ rc = wolfTPM2_FirmwareUpgradeWithLMS (& dev , dummy_manifest ,
342+ sizeof (dummy_manifest ), NULL , NULL , dummy_sig , sizeof (dummy_sig ));
274343 AssertIntNE (rc , 0 );
275344 }
345+ #endif /* !WOLFTPM2_NO_WOLFCRYPT */
276346
277347 rc = 0 ;
278348
0 commit comments