Skip to content

Commit af46ff8

Browse files
kapi-nonordicjm
authored andcommitted
tests: bluetooth: fast_pair: storage: add eik to factory reset
Added the Ephemeral Identity Key (EIK) storage item from the Find My Device Network extension to the Fast Pair Storage factory reset test suite. Signed-off-by: Kamil Piszczek <[email protected]>
1 parent 37cffb6 commit af46ff8

File tree

2 files changed

+75
-0
lines changed
  • tests/subsys/bluetooth/fast_pair/storage/factory_reset

2 files changed

+75
-0
lines changed

tests/subsys/bluetooth/fast_pair/storage/factory_reset/Kconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ config BT_FAST_PAIR_STORAGE_FMDN_CLOCK
1010
Unit test enables this option to be able to use API of the Beacon Clock used in the FMDN
1111
extension.
1212

13+
config BT_FAST_PAIR_STORAGE_FMDN_EIK
14+
default y
15+
help
16+
Unit test enables this option to be able to use API of the Ephemeral Identity Key (EIK)
17+
used in the FMDN extension.
18+
1319
config BT_FAST_PAIR_STORAGE_PN
1420
default y
1521
help

tests/subsys/bluetooth/fast_pair/storage/factory_reset/src/main.c

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
198220
static 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

215239
static 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+
337383
static 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

400461
ZTEST(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

Comments
 (0)