@@ -56,12 +56,15 @@ static int add_payload_type(uint8_t part, uint32_t version, uint32_t size,
5656 uint16_t img_type );
5757
5858#ifdef CUSTOM_ENCRYPT_KEY
59+ static int mock_get_encrypt_key_ret = 0 ;
5960static int mock_set_encrypt_key_ret = 0 ;
6061static int mock_set_encrypt_key_calls = 0 ;
6162
6263int wolfBoot_get_encrypt_key (uint8_t * k , uint8_t * nonce )
6364{
6465 int i ;
66+ if (mock_get_encrypt_key_ret != 0 )
67+ return mock_get_encrypt_key_ret ;
6568 for (i = 0 ; i < ENCRYPT_KEY_SIZE ; i ++ ) {
6669 k [i ] = (uint8_t )(i + 1 );
6770 }
@@ -138,6 +141,7 @@ static void reset_mock_stats(void)
138141{
139142 wolfBoot_staged_ok = 0 ;
140143#ifdef CUSTOM_ENCRYPT_KEY
144+ mock_get_encrypt_key_ret = 0 ;
141145 mock_set_encrypt_key_ret = 0 ;
142146 mock_set_encrypt_key_calls = 0 ;
143147#endif
@@ -560,6 +564,26 @@ START_TEST (test_final_swap_propagates_encrypt_key_persist_failure)
560564 cleanup_flash ();
561565}
562566END_TEST
567+
568+ START_TEST (test_final_swap_propagates_encrypt_key_read_failure )
569+ {
570+ int ret ;
571+
572+ reset_mock_stats ();
573+ prepare_flash ();
574+
575+ add_payload (PART_BOOT , 1 , TEST_SIZE_SMALL );
576+ add_payload (PART_UPDATE , 2 , TEST_SIZE_SMALL );
577+
578+ mock_get_encrypt_key_ret = -7 ;
579+ ret = wolfBoot_swap_and_final_erase (0 );
580+
581+ ck_assert_int_eq (ret , -7 );
582+ ck_assert_int_eq (mock_set_encrypt_key_calls , 0 );
583+
584+ cleanup_flash ();
585+ }
586+ END_TEST
563587#endif
564588
565589START_TEST (test_sunnyday_noupdate )
@@ -1013,6 +1037,7 @@ Suite *wolfboot_suite(void)
10131037#ifdef UNIT_TEST_FALLBACK_ONLY
10141038#ifdef EXT_ENCRYPTED
10151039 tcase_add_test (fallback_verify , test_fallback_image_verification_rejects_corruption );
1040+ tcase_add_test (fallback_verify , test_final_swap_propagates_encrypt_key_read_failure );
10161041 tcase_add_test (fallback_verify , test_final_swap_propagates_encrypt_key_persist_failure );
10171042 suite_add_tcase (s , fallback_verify );
10181043#endif
@@ -1050,6 +1075,7 @@ Suite *wolfboot_suite(void)
10501075#endif
10511076#ifdef EXT_ENCRYPTED
10521077 tcase_add_test (fallback_verify , test_fallback_image_verification_rejects_corruption );
1078+ tcase_add_test (fallback_verify , test_final_swap_propagates_encrypt_key_read_failure );
10531079 tcase_add_test (fallback_verify , test_final_swap_propagates_encrypt_key_persist_failure );
10541080#endif
10551081
0 commit comments