Skip to content

Commit 7401aea

Browse files
Yossi LevyYossi Levy
authored andcommitted
Remove reset tests. Small change to cmac claculation in get_derived_key
1 parent b95c5f7 commit 7401aea

File tree

3 files changed

+24
-187
lines changed

3 files changed

+24
-187
lines changed

features/device_key/TESTS/device_key/functionality/main.cpp

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ using namespace utest::v1;
3838
#define MSG_KEY_DEVICE_TEST_STEP4 "check_consistency_step4"
3939
#define MSG_KEY_DEVICE_TEST_SUITE_ENDED "Test suite ended"
4040

41-
void generate_derived_key_consistency_16_byte_key_reset_test(char *key);
42-
void generate_derived_key_consistency_32_byte_key_reset_test(char *key);
41+
void generate_derived_key_consistency_16_byte_key_long_consistency_test(char *key);
42+
void generate_derived_key_consistency_32_byte_key_long_consistency_test(char *key);
4343

4444
/*
4545
* Injection of a dummy key when there is no TRNG
@@ -58,33 +58,26 @@ int inject_dummy_rot_key()
5858
#endif
5959
}
6060

61-
void generate_derived_key_reset_test()
61+
void generate_derived_key_long_consistency_test()
6262
{
63-
greentea_send_kv(MSG_KEY_DEVICE_READY, MSG_VALUE_DUMMY);
64-
6563
static char key[MSG_KEY_LEN + 1] = { };
6664
static char value[MSG_VALUE_LEN + 1] = { };
67-
memset(key, 0, MSG_KEY_LEN + 1);
68-
memset(value, 0, MSG_VALUE_LEN + 1);
69-
70-
greentea_parse_kv(key, value, MSG_KEY_LEN, MSG_VALUE_LEN);
7165

72-
if (strcmp(key, MSG_KEY_DEVICE_TEST_STEP1) == 0 || strcmp(key, MSG_KEY_DEVICE_TEST_STEP2) == 0) {
73-
generate_derived_key_consistency_16_byte_key_reset_test(key);
74-
return generate_derived_key_reset_test();
75-
}
76-
77-
if (strcmp(key, MSG_KEY_DEVICE_TEST_STEP3) == 0 || strcmp(key, MSG_KEY_DEVICE_TEST_STEP4) == 0) {
78-
return generate_derived_key_consistency_32_byte_key_reset_test(key);
79-
}
66+
strcpy(key, MSG_KEY_DEVICE_TEST_STEP1);
67+
generate_derived_key_consistency_16_byte_key_long_consistency_test(key);
68+
strcpy(key, MSG_KEY_DEVICE_TEST_STEP2);
69+
generate_derived_key_consistency_16_byte_key_long_consistency_test(key);
70+
strcpy(key, MSG_KEY_DEVICE_TEST_STEP3);
71+
generate_derived_key_consistency_32_byte_key_long_consistency_test(key);
72+
strcpy(key, MSG_KEY_DEVICE_TEST_STEP4);
73+
generate_derived_key_consistency_32_byte_key_long_consistency_test(key);
8074

81-
TEST_ASSERT_MESSAGE(false, key); //Indicates error!!!
8275
}
8376

8477
/*
8578
* Test the consistency of derived 16 byte key result after device reset.
8679
*/
87-
void generate_derived_key_consistency_16_byte_key_reset_test(char *key)
80+
void generate_derived_key_consistency_16_byte_key_long_consistency_test(char *key)
8881
{
8982
unsigned char output1[DEVICE_KEY_16BYTE];
9083
unsigned char output2[DEVICE_KEY_16BYTE];
@@ -115,8 +108,6 @@ void generate_derived_key_consistency_16_byte_key_reset_test(char *key)
115108
ret = nvstore.set(15, DEVICE_KEY_16BYTE, output1);
116109
TEST_ASSERT_EQUAL_INT32(0, ret);
117110

118-
system_reset();
119-
TEST_ASSERT_MESSAGE(false, "system_reset() did not reset the device as expected.");
120111
} else if (strcmp(key, MSG_KEY_DEVICE_TEST_STEP2) == 0) {
121112

122113
//Second step: Read from NVStore at index 15 there should be a derived key there.
@@ -136,7 +127,6 @@ void generate_derived_key_consistency_16_byte_key_reset_test(char *key)
136127
ret = nvstore.reset();
137128
TEST_ASSERT_EQUAL_INT(DEVICEKEY_SUCCESS, ret);
138129

139-
greentea_send_kv(MSG_KEY_DEVICE_FINISH, MSG_VALUE_DUMMY);
140130
} else {
141131
TEST_ASSERT_MESSAGE(false, "Unknown test step received");
142132
}
@@ -145,7 +135,7 @@ void generate_derived_key_consistency_16_byte_key_reset_test(char *key)
145135
/*
146136
* Test the consistency of derived 32 byte key result after device reset.
147137
*/
148-
void generate_derived_key_consistency_32_byte_key_reset_test(char *key)
138+
void generate_derived_key_consistency_32_byte_key_long_consistency_test(char *key)
149139
{
150140
unsigned char output1[DEVICE_KEY_32BYTE];
151141
unsigned char output2[DEVICE_KEY_32BYTE];
@@ -176,8 +166,6 @@ void generate_derived_key_consistency_32_byte_key_reset_test(char *key)
176166
ret = nvstore.set(15, DEVICE_KEY_32BYTE, output1);
177167
TEST_ASSERT_EQUAL_INT32(0, ret);
178168

179-
system_reset();
180-
TEST_ASSERT_MESSAGE(false, "system_reset() did not reset the device as expected.");
181169
} else if (strcmp(key, MSG_KEY_DEVICE_TEST_STEP4) == 0) {
182170

183171
//Fourth step: Read from NVStore at index 15 there should be a derived key there.
@@ -197,7 +185,6 @@ void generate_derived_key_consistency_32_byte_key_reset_test(char *key)
197185
ret = nvstore.reset();
198186
TEST_ASSERT_EQUAL_INT(DEVICEKEY_SUCCESS, ret);
199187

200-
greentea_send_kv(MSG_KEY_DEVICE_FINISH, MSG_VALUE_DUMMY);
201188
} else {
202189
TEST_ASSERT_MESSAGE(false, "Unknown test step received");
203190
}
@@ -461,7 +448,7 @@ utest::v1::status_t greentea_failure_handler(const Case *const source, const fai
461448

462449
//Currently there can be only one test that contains reset and it has to be the first test!
463450
Case cases[] = {
464-
Case("Device Key - derived key reset", generate_derived_key_reset_test, greentea_failure_handler),
451+
Case("Device Key - long consistency test", generate_derived_key_long_consistency_test, greentea_failure_handler),
465452
Case("Device Key - inject value wrong size", device_inject_root_of_trust_wrong_size_test, greentea_failure_handler),
466453
Case("Device Key - inject value 16 byte size", device_inject_root_of_trust_16_byte_size_test, greentea_failure_handler),
467454
Case("Device Key - inject value 32 byte size", device_inject_root_of_trust_32_byte_size_test, greentea_failure_handler),
@@ -475,7 +462,7 @@ Case cases[] = {
475462

476463
utest::v1::status_t greentea_test_setup(const size_t number_of_cases)
477464
{
478-
GREENTEA_SETUP(14, "devicekey_reset");
465+
GREENTEA_SETUP(14, "default_auto");
479466
return greentea_test_setup_handler(number_of_cases);
480467
}
481468

@@ -484,7 +471,6 @@ Specification specification(greentea_test_setup, cases, greentea_test_teardown_h
484471
int main()
485472
{
486473
bool ret = Harness::run(specification);
487-
greentea_send_kv(MSG_KEY_DEVICE_TEST_SUITE_ENDED, MSG_VALUE_DUMMY);
488474

489475
return ret;
490476
}

features/device_key/TESTS/host_tests/devicekey_reset.py

Lines changed: 0 additions & 150 deletions
This file was deleted.

features/device_key/source/DeviceKey.cpp

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,14 +175,14 @@ int DeviceKey::get_derived_key(uint32_t *ikey_buff, size_t ikey_size, const unsi
175175

176176
const mbedtls_cipher_info_t *cipher_info = mbedtls_cipher_info_from_type(mbedtls_cipher_type);
177177

178-
mbedtls_cipher_init(&ctx);
179-
ret = mbedtls_cipher_setup(&ctx, cipher_info);
180-
if (ret != 0) {
181-
goto finish;
182-
}
183-
184178
do {
185179

180+
mbedtls_cipher_init(&ctx);
181+
ret = mbedtls_cipher_setup(&ctx, cipher_info);
182+
if (ret != 0) {
183+
goto finish;
184+
}
185+
186186
ret = mbedtls_cipher_cmac_starts(&ctx, (unsigned char *)ikey_buff, ikey_size * 8);
187187
if (ret != 0) {
188188
goto finish;
@@ -215,14 +215,15 @@ int DeviceKey::get_derived_key(uint32_t *ikey_buff, size_t ikey_size, const unsi
215215
goto finish;
216216
}
217217

218+
mbedtls_cipher_free( &ctx );
219+
218220
counter++;
219221

220222
} while (DEVICE_KEY_16BYTE * counter < ikey_type);
221223

222224
finish:
223-
mbedtls_cipher_free( &ctx );
224-
225225
if (DEVICEKEY_SUCCESS != ret) {
226+
mbedtls_cipher_free( &ctx );
226227
return DEVICEKEY_ERR_CMAC_GENERIC_FAILURE;
227228
}
228229

0 commit comments

Comments
 (0)