@@ -16,6 +16,8 @@ LOG_MODULE_REGISTER(test_main);
1616#include "fp_storage_ak_priv.h"
1717#include "fp_storage_clock.h"
1818#include "fp_storage_clock_priv.h"
19+ #include "fp_storage_eik.h"
20+ #include "fp_storage_eik_priv.h"
1921#include "fp_storage_pn.h"
2022#include "fp_storage_pn_priv.h"
2123#include "fp_storage_manager.h"
@@ -191,10 +193,30 @@ static void fp_ram_clear(void)
191193{
192194 fp_storage_ak_ram_clear ();
193195 fp_storage_clock_ram_clear ();
196+ fp_storage_eik_ram_clear ();
194197 fp_storage_pn_ram_clear ();
195198 fp_storage_manager_ram_clear ();
196199}
197200
201+ static void fp_storage_validate_unloaded_eik (void )
202+ {
203+ int err ;
204+ int ret ;
205+ uint8_t eik [FP_STORAGE_EIK_LEN ];
206+
207+ err = fp_storage_eik_save (eik );
208+ zassert_equal (err , - EACCES , "Expected error before settings load" );
209+
210+ err = fp_storage_eik_delete ();
211+ zassert_equal (err , - EACCES , "Expected error before settings load" );
212+
213+ ret = fp_storage_eik_is_provisioned ();
214+ zassert_equal (ret , - EACCES , "Expected error before settings load" );
215+
216+ err = fp_storage_eik_get (eik );
217+ zassert_equal (err , - EACCES , "Expected error before settings load" );
218+ }
219+
198220static void fp_storage_validate_unloaded (void )
199221{
200222 int err ;
@@ -210,6 +232,8 @@ static void fp_storage_validate_unloaded(void)
210232 zassert_equal (err , - EACCES , "Expected error before settings load" );
211233 err = fp_storage_clock_current_checkpoint_get (& clock_checkpoint );
212234 zassert_equal (err , - EACCES , "Expected error before settings load" );
235+
236+ fp_storage_validate_unloaded_eik ();
213237}
214238
215239static void before_fn (void * f )
@@ -334,6 +358,28 @@ static void clock_checkpoint_validate_loaded(uint32_t clock_current, uint32_t cl
334358 zassert_equal (clock_checkpoint , clock_current , "Invalid clock current checkpoint" );
335359}
336360
361+ static void eik_store (const uint8_t * eik )
362+ {
363+ int err ;
364+
365+ err = fp_storage_eik_save (eik );
366+ zassert_ok (err , "Unexpected error in EIK store operation" );
367+ }
368+
369+ static void eik_validate_loaded (const uint8_t * eik )
370+ {
371+ int err ;
372+ int ret ;
373+ uint8_t eik_loaded [FP_STORAGE_EIK_LEN ];
374+
375+ ret = fp_storage_eik_is_provisioned ();
376+ zassert_equal (ret , 1 , "EIK unprovisioned or unexpected error during state check" );
377+
378+ err = fp_storage_eik_get (eik_loaded );
379+ zassert_ok (err , "Unexpected error in EIK get" );
380+ zassert_mem_equal (eik_loaded , eik , sizeof (eik_loaded ), "Invalid EIK" );
381+ }
382+
337383static void fp_storage_validate_empty (void )
338384{
339385 int err ;
@@ -342,6 +388,7 @@ static void fp_storage_validate_empty(void)
342388 struct fp_account_key account_key_list [ACCOUNT_KEY_MAX_CNT ];
343389 size_t read_cnt = ACCOUNT_KEY_MAX_CNT ;
344390 uint32_t clock_checkpoint ;
391+ uint8_t eik [FP_STORAGE_EIK_LEN ];
345392
346393 err = settings_validate (fp_settings_data_validate_empty_cb );
347394 zassert_ok (err , "Non-volatile Fast Pair data storage is not empty after reset" );
@@ -359,6 +406,11 @@ static void fp_storage_validate_empty(void)
359406 zassert_ok (err , "Unexpected error in clock current checkpoint get" );
360407 zassert_equal (clock_checkpoint , 0 , "Invalid clock current checkpoint" );
361408
409+ ret = fp_storage_eik_is_provisioned ();
410+ zassert_equal (ret , 0 , "Expected unprovisioned EIK" );
411+ err = fp_storage_eik_get (eik );
412+ zassert_equal (err , - ENODATA , "Expected no EIK data" );
413+
362414 err = fp_storage_pn_get (read_name );
363415 zassert_ok (err , "Unexpected error in name get" );
364416 ret = strcmp (read_name , "" );
@@ -373,17 +425,25 @@ static void fp_storage_self_test_run(void)
373425 static const uint32_t clock_current = 0xDEADBEEF ;
374426 static const uint32_t clock_boot_first ;
375427 static const uint32_t clock_boot_second = clock_current ;
428+ static const uint8_t eik [FP_STORAGE_EIK_LEN ] = {
429+ 0xDE , 0xAD , 0xBE , 0xEF , 0xDE , 0xAD , 0xBE , 0xEF ,
430+ 0xDE , 0xAD , 0xBE , 0xEF , 0xDE , 0xAD , 0xBE , 0xEF ,
431+ 0xDE , 0xAD , 0xBE , 0xEF , 0xDE , 0xAD , 0xBE , 0xEF ,
432+ 0xDE , 0xAD , 0xBE , 0xEF , 0xDE , 0xAD , 0xBE , 0xEF ,
433+ };
376434 int err ;
377435
378436 fp_storage_validate_empty ();
379437
380438 cu_account_keys_generate_and_store (seed , key_count );
381439 personalized_name_store (name );
382440 clock_checkpoint_store (clock_current );
441+ eik_store (eik );
383442
384443 cu_account_keys_validate_loaded (seed , key_count );
385444 personalized_name_validate_loaded (name );
386445 clock_checkpoint_validate_loaded (clock_current , clock_boot_first );
446+ eik_validate_loaded (eik );
387447
388448 fp_ram_clear ();
389449 fp_storage_validate_unloaded ();
@@ -395,6 +455,7 @@ static void fp_storage_self_test_run(void)
395455 cu_account_keys_validate_loaded (seed , key_count );
396456 personalized_name_validate_loaded (name );
397457 clock_checkpoint_validate_loaded (clock_current , clock_boot_second );
458+ eik_validate_loaded (eik );
398459}
399460
400461ZTEST (suite_fast_pair_storage_factory_reset_01 , test_01_store )
@@ -411,15 +472,23 @@ static void store_data_and_factory_reset(void)
411472 static const char * name = "store_data_and_factory_reset" ;
412473 static const uint32_t clock_current = 0xDEADBEEF ;
413474 static const uint32_t clock_boot ;
475+ static const uint8_t eik [FP_STORAGE_EIK_LEN ] = {
476+ 0xDE , 0xAD , 0xBE , 0xEF , 0xDE , 0xAD , 0xBE , 0xEF ,
477+ 0xDE , 0xAD , 0xBE , 0xEF , 0xDE , 0xAD , 0xBE , 0xEF ,
478+ 0xDE , 0xAD , 0xBE , 0xEF , 0xDE , 0xAD , 0xBE , 0xEF ,
479+ 0xDE , 0xAD , 0xBE , 0xEF , 0xDE , 0xAD , 0xBE , 0xEF ,
480+ };
414481 int err ;
415482
416483 cu_account_keys_generate_and_store (seed , key_count );
417484 personalized_name_store (name );
418485 clock_checkpoint_store (clock_current );
486+ eik_store (eik );
419487
420488 cu_account_keys_validate_loaded (seed , key_count );
421489 personalized_name_validate_loaded (name );
422490 clock_checkpoint_validate_loaded (clock_current , clock_boot );
491+ eik_validate_loaded (eik );
423492
424493 err = fp_storage_factory_reset ();
425494 zassert_ok (err , "Unexpected error in factory reset" );
0 commit comments