26
26
#include < lib/support/DefaultStorageKeyAllocator.h>
27
27
#include < lib/support/TestPersistentStorageDelegate.h>
28
28
29
+ #if CHIP_CRYPTO_PSA
30
+ #include < crypto/CHIPCryptoPALPSA.h>
31
+ #endif
32
+
29
33
using namespace chip ;
30
34
using namespace chip ::app::Clusters::IcdManagement;
31
35
@@ -65,7 +69,30 @@ constexpr uint8_t kKeyBuffer3a[] = {
65
69
0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3a , 0x3b , 0x3c , 0x3d , 0x3e , 0x3f
66
70
};
67
71
68
- TEST (TestICDMonitoringTable, TestEntryAssignationOverload)
72
+ struct TestICDMonitoringTable : public ::testing::Test
73
+ {
74
+ void SetUp () override
75
+ {
76
+ #if CHIP_CRYPTO_PSA
77
+ ASSERT_EQ (psa_crypto_init (), PSA_SUCCESS);
78
+ #endif
79
+ }
80
+
81
+ void ValidateHmac128 (const Crypto::Hmac128KeyHandle & saved, const Crypto::Hmac128KeyHandle & loaded)
82
+ {
83
+ #if CHIP_CRYPTO_PSA
84
+ EXPECT_NE (saved.As <psa_key_id_t >(), loaded.As <psa_key_id_t >());
85
+ EXPECT_GE (loaded.As <psa_key_id_t >(), to_underlying (Crypto::KeyIdBase::ICDKeyRangeStart));
86
+ EXPECT_LE (loaded.As <psa_key_id_t >(), to_underlying (Crypto::KeyIdBase::Maximum));
87
+ #else
88
+ EXPECT_EQ (memcmp (saved.As <Crypto::Symmetric128BitsKeyByteArray>(), loaded.As <Crypto::Symmetric128BitsKeyByteArray>(),
89
+ sizeof (Crypto::Symmetric128BitsKeyByteArray)),
90
+ 0 );
91
+ #endif
92
+ }
93
+ };
94
+
95
+ TEST_F (TestICDMonitoringTable, TestEntryAssignationOverload)
69
96
{
70
97
TestSessionKeystoreImpl keystore;
71
98
ICDMonitoringEntry entry (&keystore);
@@ -100,7 +127,7 @@ TEST(TestICDMonitoringTable, TestEntryAssignationOverload)
100
127
EXPECT_TRUE (entry2.IsKeyEquivalent (ByteSpan (kKeyBuffer1a )));
101
128
}
102
129
103
- TEST (TestICDMonitoringTable, TestEntryMaximumSize)
130
+ TEST_F (TestICDMonitoringTable, TestEntryMaximumSize)
104
131
{
105
132
TestPersistentStorageDelegate storage;
106
133
TestSessionKeystoreImpl keystore;
@@ -114,7 +141,7 @@ TEST(TestICDMonitoringTable, TestEntryMaximumSize)
114
141
EXPECT_EQ (CHIP_NO_ERROR, table.Set (0 , entry));
115
142
}
116
143
117
- TEST (TestICDMonitoringTable, TestEntryKeyFunctions)
144
+ TEST_F (TestICDMonitoringTable, TestEntryKeyFunctions)
118
145
{
119
146
TestSessionKeystoreImpl keystore;
120
147
ICDMonitoringEntry entry (&keystore);
@@ -140,7 +167,7 @@ TEST(TestICDMonitoringTable, TestEntryKeyFunctions)
140
167
EXPECT_EQ (entry.DeleteKey (), CHIP_NO_ERROR);
141
168
}
142
169
143
- TEST (TestICDMonitoringTable, TestSaveAndLoadRegistrationValue)
170
+ TEST_F (TestICDMonitoringTable, TestSaveAndLoadRegistrationValue)
144
171
{
145
172
TestPersistentStorageDelegate storage;
146
173
TestSessionKeystoreImpl keystore;
@@ -178,9 +205,7 @@ TEST(TestICDMonitoringTable, TestSaveAndLoadRegistrationValue)
178
205
EXPECT_EQ (kClientNodeId12 , entry.monitoredSubject );
179
206
EXPECT_EQ (ClientTypeEnum::kPermanent , entry.clientType );
180
207
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer1a )));
181
- EXPECT_EQ (memcmp (entry1.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
182
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
183
- 0 );
208
+ ValidateHmac128 (entry1.hmacKeyHandle , entry.hmacKeyHandle );
184
209
185
210
// Retrieve second entry
186
211
EXPECT_EQ (CHIP_NO_ERROR, loading.Get (1 , entry));
@@ -189,9 +214,7 @@ TEST(TestICDMonitoringTable, TestSaveAndLoadRegistrationValue)
189
214
EXPECT_EQ (kClientNodeId11 , entry.monitoredSubject );
190
215
EXPECT_EQ (ClientTypeEnum::kEphemeral , entry.clientType );
191
216
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer2a )));
192
- EXPECT_EQ (memcmp (entry2.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
193
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
194
- 0 );
217
+ ValidateHmac128 (entry2.hmacKeyHandle , entry.hmacKeyHandle );
195
218
196
219
// No more entries
197
220
EXPECT_EQ (CHIP_ERROR_NOT_FOUND, loading.Get (2 , entry));
@@ -213,9 +236,7 @@ TEST(TestICDMonitoringTable, TestSaveAndLoadRegistrationValue)
213
236
EXPECT_EQ (kClientNodeId11 , entry.monitoredSubject );
214
237
EXPECT_EQ (ClientTypeEnum::kEphemeral , entry.clientType );
215
238
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer2a )));
216
- EXPECT_EQ (memcmp (entry2.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
217
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
218
- 0 );
239
+ ValidateHmac128 (entry2.hmacKeyHandle , entry.hmacKeyHandle );
219
240
220
241
// Retrieve second entry
221
242
EXPECT_EQ (CHIP_NO_ERROR, loading.Get (1 , entry));
@@ -224,12 +245,10 @@ TEST(TestICDMonitoringTable, TestSaveAndLoadRegistrationValue)
224
245
EXPECT_EQ (kClientNodeId11 , entry.monitoredSubject );
225
246
EXPECT_EQ (ClientTypeEnum::kPermanent , entry.clientType );
226
247
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer1b )));
227
- EXPECT_EQ (memcmp (entry4.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
228
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
229
- 0 );
248
+ ValidateHmac128 (entry4.hmacKeyHandle , entry.hmacKeyHandle );
230
249
}
231
250
232
- TEST (TestICDMonitoringTable, TestSaveAllInvalidRegistrationValues)
251
+ TEST_F (TestICDMonitoringTable, TestSaveAllInvalidRegistrationValues)
233
252
{
234
253
TestPersistentStorageDelegate storage;
235
254
TestSessionKeystoreImpl keystore;
@@ -271,7 +290,7 @@ TEST(TestICDMonitoringTable, TestSaveAllInvalidRegistrationValues)
271
290
EXPECT_EQ (CHIP_ERROR_INVALID_ARGUMENT, table.Set (0 , entry5));
272
291
}
273
292
274
- TEST (TestICDMonitoringTable, TestSaveLoadRegistrationValueForMultipleFabrics)
293
+ TEST_F (TestICDMonitoringTable, TestSaveLoadRegistrationValueForMultipleFabrics)
275
294
{
276
295
TestPersistentStorageDelegate storage;
277
296
TestSessionKeystoreImpl keystore;
@@ -314,32 +333,26 @@ TEST(TestICDMonitoringTable, TestSaveLoadRegistrationValueForMultipleFabrics)
314
333
EXPECT_EQ (kClientNodeId11 , entry.checkInNodeID );
315
334
EXPECT_EQ (kClientNodeId12 , entry.monitoredSubject );
316
335
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer1a )));
317
- EXPECT_EQ (memcmp (entry1.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
318
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
319
- 0 );
336
+ ValidateHmac128 (entry1.hmacKeyHandle , entry.hmacKeyHandle );
320
337
321
338
// Retrieve fabric1, second entry
322
339
EXPECT_EQ (CHIP_NO_ERROR, table1.Get (1 , entry));
323
340
EXPECT_EQ (kTestFabricIndex1 , entry.fabricIndex );
324
341
EXPECT_EQ (kClientNodeId12 , entry.checkInNodeID );
325
342
EXPECT_EQ (kClientNodeId11 , entry.monitoredSubject );
326
343
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer1b )));
327
- EXPECT_EQ (memcmp (entry2.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
328
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
329
- 0 );
344
+ ValidateHmac128 (entry2.hmacKeyHandle , entry.hmacKeyHandle );
330
345
331
346
// Retrieve fabric2, first entry
332
347
EXPECT_EQ (CHIP_NO_ERROR, table2.Get (0 , entry));
333
348
EXPECT_EQ (kTestFabricIndex2 , entry.fabricIndex );
334
349
EXPECT_EQ (kClientNodeId21 , entry.checkInNodeID );
335
350
EXPECT_EQ (kClientNodeId22 , entry.monitoredSubject );
336
351
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer2a )));
337
- EXPECT_EQ (memcmp (entry3.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
338
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
339
- 0 );
352
+ ValidateHmac128 (entry3.hmacKeyHandle , entry.hmacKeyHandle );
340
353
}
341
354
342
- TEST (TestICDMonitoringTable, TestDeleteValidEntryFromStorage)
355
+ TEST_F (TestICDMonitoringTable, TestDeleteValidEntryFromStorage)
343
356
{
344
357
TestPersistentStorageDelegate storage;
345
358
TestSessionKeystoreImpl keystore;
@@ -379,19 +392,15 @@ TEST(TestICDMonitoringTable, TestDeleteValidEntryFromStorage)
379
392
EXPECT_EQ (kClientNodeId11 , entry.checkInNodeID );
380
393
EXPECT_EQ (kClientNodeId12 , entry.monitoredSubject );
381
394
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer1a )));
382
- EXPECT_EQ (memcmp (entry1.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
383
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
384
- 0 );
395
+ ValidateHmac128 (entry1.hmacKeyHandle , entry.hmacKeyHandle );
385
396
386
397
// Retrieve second entry (not modified)
387
398
EXPECT_EQ (CHIP_NO_ERROR, table1.Get (1 , entry));
388
399
EXPECT_EQ (kTestFabricIndex1 , entry.fabricIndex );
389
400
EXPECT_EQ (kClientNodeId12 , entry.checkInNodeID );
390
401
EXPECT_EQ (kClientNodeId11 , entry.monitoredSubject );
391
402
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer2a )));
392
- EXPECT_EQ (memcmp (entry2.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
393
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
394
- 0 );
403
+ ValidateHmac128 (entry2.hmacKeyHandle , entry.hmacKeyHandle );
395
404
396
405
// Remove (existing)
397
406
EXPECT_EQ (CHIP_NO_ERROR, table1.Remove (0 ));
@@ -405,19 +414,15 @@ TEST(TestICDMonitoringTable, TestDeleteValidEntryFromStorage)
405
414
EXPECT_EQ (kClientNodeId12 , entry.checkInNodeID );
406
415
EXPECT_EQ (kClientNodeId11 , entry.monitoredSubject );
407
416
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer2a )));
408
- EXPECT_EQ (memcmp (entry2.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
409
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
410
- 0 );
417
+ ValidateHmac128 (entry2.hmacKeyHandle , entry.hmacKeyHandle );
411
418
412
419
// Retrieve fabric2, first entry
413
420
EXPECT_EQ (CHIP_NO_ERROR, table2.Get (0 , entry));
414
421
EXPECT_EQ (kTestFabricIndex2 , entry.fabricIndex );
415
422
EXPECT_EQ (kClientNodeId21 , entry.checkInNodeID );
416
423
EXPECT_EQ (kClientNodeId22 , entry.monitoredSubject );
417
424
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer1b )));
418
- EXPECT_EQ (memcmp (entry3.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
419
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
420
- 0 );
425
+ ValidateHmac128 (entry3.hmacKeyHandle , entry.hmacKeyHandle );
421
426
422
427
// Remove all (fabric 1)
423
428
EXPECT_EQ (CHIP_NO_ERROR, table1.RemoveAll ());
@@ -429,9 +434,7 @@ TEST(TestICDMonitoringTable, TestDeleteValidEntryFromStorage)
429
434
EXPECT_EQ (kClientNodeId21 , entry.checkInNodeID );
430
435
EXPECT_EQ (kClientNodeId22 , entry.monitoredSubject );
431
436
EXPECT_TRUE (entry.IsKeyEquivalent (ByteSpan (kKeyBuffer1b )));
432
- EXPECT_EQ (memcmp (entry3.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(),
433
- entry.hmacKeyHandle .As <Crypto::Symmetric128BitsKeyByteArray>(), sizeof (Crypto::Symmetric128BitsKeyByteArray)),
434
- 0 );
437
+ ValidateHmac128 (entry3.hmacKeyHandle , entry.hmacKeyHandle );
435
438
436
439
// Remove all (fabric 2)
437
440
EXPECT_EQ (CHIP_NO_ERROR, table2.RemoveAll ());
0 commit comments