@@ -1351,27 +1351,28 @@ CHIP_ERROR ValidateCertificateChain(const uint8_t * rootCertificate, size_t root
1351
1351
1352
1352
inline bool IsTimeGreaterThanEqual (const mbedtls_x509_time * const timeA, const mbedtls_x509_time * const timeB)
1353
1353
{
1354
- return timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) > timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) ||
1355
- (timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) &&
1356
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon) > timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon)) ||
1357
- (timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) &&
1358
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon) &&
1359
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (day) > timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (day)) ||
1360
- (timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) &&
1361
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon) &&
1362
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (day) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (day) &&
1363
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (hour) > timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (hour)) ||
1364
- (timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) &&
1365
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon) &&
1366
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (day) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (day) &&
1367
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (hour) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (hour) &&
1368
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (min) > timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (min)) ||
1369
- (timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (year) &&
1370
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (mon) &&
1371
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (day) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (day) &&
1372
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (hour) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (hour) &&
1373
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (min) == timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (min) &&
1374
- timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (sec) >= timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (sec));
1354
+
1355
+ // checks if two values are different and if yes, then returns first > second.
1356
+ #define RETURN_STRICTLY_GREATER_IF_DIFFERENT (component ) \
1357
+ { \
1358
+ auto valueA = timeA->CHIP_CRYPTO_PAL_PRIVATE_X509 (component); \
1359
+ auto valueB = timeB->CHIP_CRYPTO_PAL_PRIVATE_X509 (component); \
1360
+ \
1361
+ if (valueA != valueB) \
1362
+ { \
1363
+ return valueA > valueB; \
1364
+ } \
1365
+ }
1366
+
1367
+ RETURN_STRICTLY_GREATER_IF_DIFFERENT (year);
1368
+ RETURN_STRICTLY_GREATER_IF_DIFFERENT (mon);
1369
+ RETURN_STRICTLY_GREATER_IF_DIFFERENT (day);
1370
+ RETURN_STRICTLY_GREATER_IF_DIFFERENT (hour);
1371
+ RETURN_STRICTLY_GREATER_IF_DIFFERENT (min);
1372
+ RETURN_STRICTLY_GREATER_IF_DIFFERENT (sec);
1373
+
1374
+ // all above are equal
1375
+ return true ;
1375
1376
}
1376
1377
1377
1378
CHIP_ERROR IsCertificateValidAtIssuance (const ByteSpan & referenceCertificate, const ByteSpan & toBeEvaluatedCertificate)
0 commit comments