Repository: project-chip/connectedhomeip
Pull request #38329: Add Basic VID Verification Support to Fabric Table
Author: login: tcarmelveilleux
Labels: name: review - approved
Created: 2025-04-09T20:56:19Z | Merged: 2025-04-14T15:45:36Z

#### Changes

- Incremental addition of VID Verification support to FabricTable prior to OperationalCredentials cluster implementation.
- No support for VID Verification statement loading yet, but API scaffolding there.
- Fully support for global roots VID Verificaiton.

#### Testing

- Added unit test coverage based on validated test vectors.
- Other existing test vectors still pass.



Diff:
diff --git a/src/credentials/FabricTable.cpp b/src/credentials/FabricTable.cpp
index f6ba9d3226bf49..497e26012061ba 100644
--- a/src/credentials/FabricTable.cpp
+++ b/src/credentials/FabricTable.cpp
@@ -28,6 +28,7 @@
 #include <lib/support/DefaultStorageKeyAllocator.h>
 #include <lib/support/SafeInt.h>
 #include <lib/support/ScopedBuffer.h>
+#include <lib/support/TypeTraits.h>
 #include <platform/LockTracker.h>
 #include <tracing/macros.h>
 
@@ -2180,4 +2181,72 @@ CHIP_ERROR FabricTable::SetShouldAdvertiseIdentity(FabricIndex fabricIndex, Adve
     return CHIP_NO_ERROR;
 }
 
+CHIP_ERROR FabricTable::FetchVIDVerificationStatement(FabricIndex fabricIndex, MutableByteSpan & outVIDVerificationStatement) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVIDVerificationStatement.size() >= kVendorIdVerificationStatementV1Size, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VIDVerificationStatement loading support.
+    outVIDVerificationStatement.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::FetchVVSC(FabricIndex fabricIndex, MutableByteSpan & outVVSC) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVVSC.size() >= kMaxCHIPCertLength, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VVSC loading support.
+    outVVSC.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::SignVIDVerificationRequest(FabricIndex fabricIndex, const ByteSpan & clientChallenge,
+                                                   const ByteSpan & attestationChallenge,
+                                                   SignVIDVerificationResponseData & outResponse)
+{
+    FabricInfo * fabricInfo = GetMutableFabricByIndex(fabricIndex);
+    VerifyOrReturnError(fabricInfo != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
+
+    P256PublicKey rootPublicKey;
+    ReturnErrorOnFailure(fabricInfo->FetchRootPubkey(rootPublicKey));
+
+    // Step 1: Generate FabricBindingMessage for given fabric.
+    uint8_t fabricBindingMessageBuffer[kVendorFabricBindingMessageV1Size];
+    MutableByteSpan fabricBindingMessageSpan{ fabricBindingMessageBuffer };
+
+    ReturnErrorOnFailure(
+        GenerateVendorFabricBindingMessage(FabricBindingVersion::kVersion1, rootPublicKey, fabricInfo->GetFabricId(),
+                                           static_cast<uint16_t>(fabricInfo->GetVendorId()), fabricBindingMessageSpan));
+    VerifyOrReturnError(fabricBindingMessageSpan.size() == kVendorFabricBindingMessageV1Size, CHIP_ERROR_INTERNAL);
+
+    // Step 2: Recover VIDVerificationStatement, if any.
+    uint8_t vidVerificationStatementBuffer[kVendorIdVerificationStatementV1Size];
+    MutableByteSpan vidVerificationStatementSpan{ vidVerificationStatementBuffer };
+
+    ReturnErrorOnFailure(FetchVIDVerificationStatement(fabricIndex, vidVerificationStatementSpan));
+
+    // Step 3: Generate VidVerificationToBeSigned
+    uint8_t vidVerificationTbsBuffer[kVendorIdVerificationTbsV1MaxSize];
+    MutableByteSpan vidVerificationTbsSpan{ vidVerificationTbsBuffer };
+
+    P256ECDSASignature signature;
+    auto signatureBuffer = Platform::ScopedMemoryBufferWithSize<uint8_t>();
+    VerifyOrReturnError(signatureBuffer.Calloc(signature.Capacity()), CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    ReturnErrorOnFailure(GenerateVendorIdVerificationToBeSigned(fabricIndex, clientChallenge, attestationChallenge,
+                                                                fabricBindingMessageSpan, vidVerificationStatementSpan,
+                                                                vidVerificationTbsSpan));
+
+    // Step 4: Sign the statement with the operational key.
+    ReturnErrorOnFailure(SignWithOpKeypair(fabricIndex, vidVerificationTbsSpan, signature));
+    memcpy(signatureBuffer.Get(), signature.Bytes(), signature.Capacity());
+
+    outResponse.fabricIndex          = fabricIndex;
+    outResponse.fabricBindingVersion = fabricBindingMessageSpan[0];
+    outResponse.signature            = std::move(signatureBuffer);
+
+    return CHIP_NO_ERROR;
+}
+
 } // namespace chip
diff --git a/src/credentials/FabricTable.h b/src/credentials/FabricTable.h
index d456da5555bafa..c8ee2f8a1d7232 100644
--- a/src/credentials/FabricTable.h
+++ b/src/credentials/FabricTable.h
@@ -40,6 +40,7 @@
 #include <lib/support/BitFlags.h>
 #include <lib/support/CHIPMem.h>
 #include <lib/support/DLLUtil.h>
+#include <lib/support/ScopedBuffer.h>
 #include <lib/support/Span.h>
 
 namespace chip {
@@ -398,6 +399,16 @@ class DLL_EXPORT FabricTable
         Delegate * next = nullptr;
     };
 
+    /** Data to convey whenever a SignVIDVerificationRequest is executed. */
+    struct SignVIDVerificationResponseData
+    {
+        FabricIndex fabricIndex;
+        uint8_t fabricBindingVersion;
+        // The next field is a variable size buffer to account for different signature
+        // algorithms over time, which may have different sizes.
+        Platform::ScopedMemoryBufferWithSize<uint8_t> signature;
+    };
+
 public:
     FabricTable()  = default;
     ~FabricTable() = default;
@@ -644,6 +655,33 @@ class DLL_EXPORT FabricTable
      */
     CHIP_ERROR FetchNOCCert(FabricIndex fabricIndex, MutableByteSpan & outCert) const;
 
+    /**
+     * @brief Recover the VIDVerificationStatement for a fabric, if any exists.
+     *
+     * This includes returning a pending one if one exists.
+     *
+     * @param fabricIndex - Fabric index for which to find a VIDVerificationStatement
+     * @param outVIDVerificationStatement - Buffer to receive the VIDVerificationstatement. Must be large enough for the maximum
+     * size.
+     *
+     * @retval CHIP_NO_ERROR on success, **including if missing**.
+     * @retval other CHIP_ERROR value on internal errors
+     */
+    CHIP_ERROR FetchVIDVerificationStatement(FabricIndex fabricIndex, MutableByteSpan & outVIDVerificationStatement) const;
+
+    /**
+     * @brief Recover the VVSC (VID Verification Signing Certificate) for a fabric, if any exists.
+     *
+     * This includes returning a pending one if one exists.
+     *
+     * @param fabricIndex - Fabric index for which to find a VVSC
+     * @param outVIDVerificationStatement - Buffer to receive the VVSC in Matter TLV certificate format.
+     *
+     * @retval CHIP_NO_ERROR on success, **including if missing**.
+     * @retval other CHIP_ERROR value on internal errors
+     */
+    CHIP_ERROR FetchVVSC(FabricIndex fabricIndex, MutableByteSpan & outVVSC) const;
+
     /**
      * @brief Get the root public key by value for the given `fabricIndex`.
      *
@@ -674,7 +712,7 @@ class DLL_EXPORT FabricTable
      * This will use a pending key activated with `ActivatePendingOperationalKey` but
      * not yet persisted, if one is available for the fabric.
      *
-     * @param fabricIndex - Fabric index whose operational key touse
+     * @param fabricIndex - Fabric index whose operational key to use
      * @param message - Message to sign
      * @param outSignature - Signature object to receive the signature
      *
@@ -1049,6 +1087,19 @@ class DLL_EXPORT FabricTable
      */
     CHIP_ERROR SetShouldAdvertiseIdentity(FabricIndex fabricIndex, AdvertiseIdentity advertiseIdentity);
 
+    /**
+     * @brief Request a VID verification signature to be generated for a specific fabric in the FabricTable.
+     *
+     * @param[in] fabricIndex - Fabric Index for which to produce the response.
+     * @param[in] clientChallenge - Client-provided challenge.
+     * @param[in] attestationChallenge - Attestation challenge from the secure session.
+     * @param[inout] outResponse - Reference to a pre-allocated response object that will be populated on success.
+     * @retval CHIP_NO_ERROR on success
+     * @retval CHIP_ERROR_INVALID_ARGUMENT if the fabricIndex or clientChallenge is incorrectly formatted.
+     */
+    CHIP_ERROR SignVIDVerificationRequest(FabricIndex fabricIndex, const ByteSpan & clientChallenge,
+                                          const ByteSpan & attestationChallenge, SignVIDVerificationResponseData & outResponse);
+
 private:
     enum class StateFlags : uint16_t
     {
diff --git a/src/credentials/tests/TestFabricTable.cpp b/src/credentials/tests/TestFabricTable.cpp
index bfea9177fe6125..57104055814c85 100644
--- a/src/credentials/tests/TestFabricTable.cpp
+++ b/src/credentials/tests/TestFabricTable.cpp
@@ -206,6 +206,27 @@ const FabricInfo * FindFabric(FabricTable & fabricTable, ByteSpan rootPublicKey,
     return fabricTable.FindFabric(key, fabricId);
 }
 
+CHIP_ERROR VerifySignatureWithNocPublicKey(FabricTable & fabricTable, FabricIndex fabricIndex, ByteSpan message,
+                                           ByteSpan signatureBytes)
+{
+    uint8_t nocCertBuf[kMaxCHIPCertLength];
+    MutableByteSpan nocCertSpan{ nocCertBuf };
+
+    ReturnErrorOnFailure(fabricTable.FetchNOCCert(fabricIndex, nocCertSpan));
+
+    P256PublicKeySpan nocPublicKeySpan;
+    ReturnErrorOnFailure(ExtractPublicKeyFromChipCert(nocCertSpan, nocPublicKeySpan));
+
+    Crypto::P256PublicKey nocPublicKey(nocPublicKeySpan);
+
+    VerifyOrReturnError(signatureBytes.size() >= Crypto::P256ECDSASignature::Capacity(), CHIP_ERROR_BUFFER_TOO_SMALL);
+    Crypto::P256ECDSASignature signature;
+    memcpy(signature.Bytes(), signatureBytes.data(), signature.Capacity());
+    signature.SetLength(signature.Capacity());
+
+    return nocPublicKey.ECDSA_validate_msg_signature(message.data(), message.size(), signature);
+}
+
 struct TestFabricTable : public ::testing::Test
 {
 
@@ -218,6 +239,38 @@ struct TestFabricTable : public ::testing::Test
 #endif
     }
     static void TearDownTestSuite() { chip::Platform::MemoryShutdown(); }
+
+    FabricIndex CreateBasicFabricForVidVerification(FabricTable & fabricTable, Crypto::P256SerializedKeypair & rootKeyForTest,
+                                                    FabricId fabricId, uint16_t vendorId)
+    {
+        constexpr NodeId kNodeId = 1;
+
+        Credentials::TestOnlyLocalCertificateAuthority fabricCertAuthority;
+        VerifyOrDie(fabricCertAuthority.Init(rootKeyForTest).IsSuccess());
+
+        uint8_t csrBuf[chip::Crypto::kMIN_CSR_Buffer_Size];
+        MutableByteSpan csrSpan{ csrBuf };
+        VerifyOrDie(fabricTable.AllocatePendingOperationalKey(chip::NullOptional, csrSpan) == CHIP_NO_ERROR);
+
+        VerifyOrDie(fabricCertAuthority.SetIncludeIcac(true).GenerateNocChain(fabricId, kNodeId, csrSpan).GetStatus() ==
+                    CHIP_NO_ERROR);
+        ByteSpan rcac = fabricCertAuthority.GetRcac();
+        ByteSpan icac = fabricCertAuthority.GetIcac();
+        ByteSpan noc  = fabricCertAuthority.GetNoc();
+
+        VerifyOrDie(fabricTable.AddNewPendingTrustedRootCert(rcac) == CHIP_NO_ERROR);
+        FabricIndex newFabricIndex = kUndefinedFabricIndex;
+        VerifyOrDie(fabricTable.AddNewPendingFabricWithOperationalKeystore(noc, icac, vendorId, &newFabricIndex) == CHIP_NO_ERROR);
+        VerifyOrDie(fabricTable.CommitPendingFabricData() == CHIP_NO_ERROR);
+
+        // Validate contents
+        const auto * fabricInfo = fabricTable.FindFabricWithIndex(newFabricIndex);
+        VerifyOrDie(fabricInfo != nullptr);
+        VerifyOrDie(fabricInfo->GetFabricId() == fabricId);
+        VerifyOrDie(fabricInfo->GetVendorId() == vendorId);
+
+        return fabricInfo->GetFabricIndex();
+    }
 };
 
 TEST_F(TestFabricTable, TestLastKnownGoodTimeInit)
@@ -3019,7 +3072,7 @@ class TestFabricTableDelegate : public FabricTable::Delegate
     bool onRemovedCalled     = false;
 };
 
-TEST_F(TestFabricTable, Delete)
+TEST_F(TestFabricTable, DeleteFabricCallsDelegate)
 {
     Credentials::TestOnlyLocalCertificateAuthority fabricCertAuthority;
     EXPECT_TRUE(fabricCertAuthority.Init().IsSuccess());
@@ -3062,4 +3115,232 @@ TEST_F(TestFabricTable, Delete)
     fabricTable.RemoveFabricDelegate(&fabricDelegate);
 }
 
+TEST_F(TestFabricTable, VidVerificationSigningWorksWithoutVvs)
+{
+    chip::TestPersistentStorageDelegate storage;
+    Crypto::P256SerializedKeypair rootKeyForTestSerialized;
+
+    // Setup a known key so that test vectors are also known and validated.
+    // DO NOT CHANGE WITHOUT RE-AUDITING THE TEST VECTORS!
+    {
+        static const uint8_t kTestCert_Root02_PublicKey_Buffer[] = {
+            0x04, 0x27, 0x50, 0x0b, 0x20, 0x60, 0x52, 0xce, 0x33, 0x77, 0x6c, 0x63, 0x08, 0x3f, 0x1c, 0xf1, 0x03,
+            0x6e, 0xa4, 0xcc, 0x7f, 0xfd, 0x61, 0x7c, 0x17, 0x6d, 0x4c, 0xad, 0xf5, 0x51, 0xbb, 0xb4, 0xb0, 0xd9,
+            0x97, 0xca, 0xe5, 0x55, 0xdb, 0xf9, 0xbc, 0xa8, 0x56, 0xe4, 0xcc, 0x7a, 0x8e, 0xde, 0x91, 0xe0, 0xa7,
+            0x33, 0xe1, 0x67, 0xc0, 0x41, 0x67, 0xa6, 0xc2, 0xc9, 0xfa, 0x48, 0xf1, 0x4f, 0x0b,
+        };
+        const ByteSpan kTestCert_Root02_PublicKey{ kTestCert_Root02_PublicKey_Buffer };
+
+        static const uint8_t kTestCert_Root02_PrivateKey_Buffer[] = {
+            0xf9, 0xb7, 0x22, 0x87, 0xd6, 0xa4, 0x8d, 0xd5, 0x10, 0x93, 0xc4, 0x12, 0xe6, 0x1b, 0x43, 0xaf,
+            0xe1, 0x22, 0x15, 0x28, 0x96, 0x71, 0xbf, 0x33, 0x96, 0xff, 0x97, 0xf6, 0xb6, 0x21, 0xb2, 0xac,
+        };
+        const ByteSpan kTestCert_Root02_PrivateKey{ kTestCert_Root02_PrivateKey_Buffer };
+
+        memcpy(rootKeyForTestSerialized.Bytes(), kTestCert_Root02_PublicKey.data(), kTestCert_Root02_PublicKey.size());
+        memcpy(rootKeyForTestSerialized.Bytes() + kTestCert_Root02_PublicKey.size(), kTestCert_Root02_PrivateKey.data(),
+               kTestCert_Root02_PrivateKey.size());
+        rootKeyForTestSerialized.SetLength(rootKeyForTestSerialized.Capacity());
+    }
+
+    // Initialize a fabric table.
+    ScopedFabricTable fabricTableHolder;
+    EXPECT_EQ(fabricTableHolder.Init(&storage), CHIP_NO_ERROR);
+    FabricTable & fabricTable = fabricTableHolder.GetFabricTable();
+
+    EXPECT_EQ(fabricTable.FabricCount(), 0);
+
+    // Add a basic fabric, don't care about NodeID.
+    constexpr FabricId kFabricId1 = 0x1122334455667788;
+    constexpr uint16_t kVendorId1 = 0xFFF1u;
+
+    {
+        FabricIndex fabricIndex1 =
+            CreateBasicFabricForVidVerification(fabricTable, rootKeyForTestSerialized, kFabricId1, kVendorId1);
+        ASSERT_EQ(fabricIndex1, 1u);
+        ASSERT_EQ(fabricTable.FabricCount(), 1u);
+    }
+
+    // Add a second basic fabric, don't care about NodeID.
+    constexpr FabricId kFabricId2 = 0xA1A2A3A4A5A6A7A8;
+    constexpr uint16_t kVendorId2 = 0xFFF2u;
+    {
+        FabricIndex fabricIndex2 =
+            CreateBasicFabricForVidVerification(fabricTable, rootKeyForTestSerialized, kFabricId2, kVendorId2);
+        ASSERT_EQ(fabricIndex2, 2u);
+        ASSERT_EQ(fabricTable.FabricCount(), 2u);
+    }
+
+    // Ask for SignVIDVerification for both fabrics.
+    FabricTable::SignVIDVerificationResponseData responseData1;
+    {
+        FabricIndex kFabricIndex1 = 1u;
+
+        const uint8_t kAttestationChallenge1[16] = {
+            0x90, 0x4b, 0x82, 0xe6, 0x6e, 0x98, 0x57, 0x85, 0xb4, 0xa3, 0xff, 0x18, 0xc2, 0x59, 0x47, 0xf3,
+        };
+        ByteSpan kAttestationChallengeSpan1{ kAttestationChallenge1 };
+
+        const uint8_t kClientChallenge1[32] = {
+            0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
+            0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0,
+        };
+        ByteSpan kClientChallengeSpan1{ kClientChallenge1 };
+
+        ASSERT_EQ(
+            fabricTable.SignVIDVerificationRequest(kFabricIndex1, kClientChallengeSpan1, kAttestationChallengeSpan1, responseData1),
+            CHIP_NO_ERROR);
+
+        EXPECT_EQ(responseData1.fabricBindingVersion, to_underlying(Crypto::FabricBindingVersion::kVersion1));
+        EXPECT_EQ(responseData1.fabricIndex, kFabricIndex1);
+
+        const uint8_t kExpectedUnderlyingTbs1[126] = {
+            0x01, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1,
+            0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0x90, 0x4b, 0x82,
+            0xe6, 0x6e, 0x98, 0x57, 0x85, 0xb4, 0xa3, 0xff, 0x18, 0xc2, 0x59, 0x47, 0xf3, 0x01, 0x01, 0x04, 0x27, 0x50,
+            0x0b, 0x20, 0x60, 0x52, 0xce, 0x33, 0x77, 0x6c, 0x63, 0x08, 0x3f, 0x1c, 0xf1, 0x03, 0x6e, 0xa4, 0xcc, 0x7f,
+            0xfd, 0x61, 0x7c, 0x17, 0x6d, 0x4c, 0xad, 0xf5, 0x51, 0xbb, 0xb4, 0xb0, 0xd9, 0x97, 0xca, 0xe5, 0x55, 0xdb,
+            0xf9, 0xbc, 0xa8, 0x56, 0xe4, 0xcc, 0x7a, 0x8e, 0xde, 0x91, 0xe0, 0xa7, 0x33, 0xe1, 0x67, 0xc0, 0x41, 0x67,
+            0xa6, 0xc2, 0xc9, 0xfa, 0x48, 0xf1, 0x4f, 0x0b, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0xff, 0xf1,
+        };
+
+        EXPECT_EQ(VerifySignatureWithNocPublicKey(fabricTable, kFabricIndex1, ByteSpan{ kExpectedUnderlyingTbs1 },
+                                                  responseData1.signature.Span()),
+                  CHIP_NO_ERROR);
+    }
+
+    FabricTable::SignVIDVerificationResponseData responseData2;
+    {
+        FabricIndex kFabricIndex2 = 2u;
+
+        const uint8_t kAttestationChallenge2[16] = {
+            0x14, 0x5f, 0x2e, 0xf3, 0x9e, 0x3e, 0x4f, 0xfc, 0xf5, 0x64, 0x9c, 0x09, 0x09, 0xcb, 0xc8, 0xe4,
+        };
+        ByteSpan kAttestationChallengeSpan2{ kAttestationChallenge2 };
+
+        const uint8_t kClientChallenge2[32] = {
+            0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
+            0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0,
+        };
+        ByteSpan kClientChallengeSpan2{ kClientChallenge2 };
+
+        ASSERT_EQ(
+            fabricTable.SignVIDVerificationRequest(kFabricIndex2, kClientChallengeSpan2, kAttestationChallengeSpan2, responseData2),
+            CHIP_NO_ERROR);
+
+        EXPECT_EQ(responseData2.fabricBindingVersion, to_underlying(Crypto::FabricBindingVersion::kVersion1));
+        EXPECT_EQ(responseData2.fabricIndex, kFabricIndex2);
+
+        const uint8_t kExpectedUnderlyingTbs2[126] = {
+            0x01, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1,
+            0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0x14, 0x5f, 0x2e,
+            0xf3, 0x9e, 0x3e, 0x4f, 0xfc, 0xf5, 0x64, 0x9c, 0x09, 0x09, 0xcb, 0xc8, 0xe4, 0x02, 0x01, 0x04, 0x27, 0x50,
+            0x0b, 0x20, 0x60, 0x52, 0xce, 0x33, 0x77, 0x6c, 0x63, 0x08, 0x3f, 0x1c, 0xf1, 0x03, 0x6e, 0xa4, 0xcc, 0x7f,
+            0xfd, 0x61, 0x7c, 0x17, 0x6d, 0x4c, 0xad, 0xf5, 0x51, 0xbb, 0xb4, 0xb0, 0xd9, 0x97, 0xca, 0xe5, 0x55, 0xdb,
+            0xf9, 0xbc, 0xa8, 0x56, 0xe4, 0xcc, 0x7a, 0x8e, 0xde, 0x91, 0xe0, 0xa7, 0x33, 0xe1, 0x67, 0xc0, 0x41, 0x67,
+            0xa6, 0xc2, 0xc9, 0xfa, 0x48, 0xf1, 0x4f, 0x0b, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xff, 0xf2,
+        };
+
+        EXPECT_EQ(VerifySignatureWithNocPublicKey(fabricTable, kFabricIndex2, ByteSpan{ kExpectedUnderlyingTbs2 },
+                                                  responseData2.signature.Span()),
+                  CHIP_NO_ERROR);
+    }
+}
+
+TEST_F(TestFabricTable, VidVerificationSigningFailsOnBadInput)
+{
+    chip::TestPersistentStorageDelegate storage;
+    Crypto::P256SerializedKeypair rootKeyForTestSerialized;
+
+    // Setup a known key so that test vectors are also known and validated.
+    // DO NOT CHANGE WITHOUT RE-AUDITING THE TEST VECTORS!
+    {
+        static const uint8_t kTestCert_Root02_PublicKey_Buffer[] = {
+            0x04, 0x27, 0x50, 0x0b, 0x20, 0x60, 0x52, 0xce, 0x33, 0x77, 0x6c, 0x63, 0x08, 0x3f, 0x1c, 0xf1, 0x03,
+            0x6e, 0xa4, 0xcc, 0x7f, 0xfd, 0x61, 0x7c, 0x17, 0x6d, 0x4c, 0xad, 0xf5, 0x51, 0xbb, 0xb4, 0xb0, 0xd9,
+            0x97, 0xca, 0xe5, 0x55, 0xdb, 0xf9, 0xbc, 0xa8, 0x56, 0xe4, 0xcc, 0x7a, 0x8e, 0xde, 0x91, 0xe0, 0xa7,
+            0x33, 0xe1, 0x67, 0xc0, 0x41, 0x67, 0xa6, 0xc2, 0xc9, 0xfa, 0x48, 0xf1, 0x4f, 0x0b,
+        };
+        const ByteSpan kTestCert_Root02_PublicKey{ kTestCert_Root02_PublicKey_Buffer };
+
+        static const uint8_t kTestCert_Root02_PrivateKey_Buffer[] = {
+            0xf9, 0xb7, 0x22, 0x87, 0xd6, 0xa4, 0x8d, 0xd5, 0x10, 0x93, 0xc4, 0x12, 0xe6, 0x1b, 0x43, 0xaf,
+            0xe1, 0x22, 0x15, 0x28, 0x96, 0x71, 0xbf, 0x33, 0x96, 0xff, 0x97, 0xf6, 0xb6, 0x21, 0xb2, 0xac,
+        };
+        const ByteSpan kTestCert_Root02_PrivateKey{ kTestCert_Root02_PrivateKey_Buffer };
+
+        memcpy(rootKeyForTestSerialized.Bytes(), kTestCert_Root02_PublicKey.data(), kTestCert_Root02_PublicKey.size());
+        memcpy(rootKeyForTestSerialized.Bytes() + kTestCert_Root02_PublicKey.size(), kTestCert_Root02_PrivateKey.data(),
+               kTestCert_Root02_PrivateKey.size());
+        rootKeyForTestSerialized.SetLength(rootKeyForTestSerialized.Capacity());
+    }
+
+    // Initialize a fabric table.
+    ScopedFabricTable fabricTableHolder;
+    EXPECT_EQ(fabricTableHolder.Init(&storage), CHIP_NO_ERROR);
+    FabricTable & fabricTable = fabricTableHolder.GetFabricTable();
+
+    EXPECT_EQ(fabricTable.FabricCount(), 0);
+
+    // Add a basic fabric, don't care about NodeID.
+    constexpr FabricId kFabricId1 = 0x1122334455667788;
+    constexpr uint16_t kVendorId1 = 0xFFF1u;
+    FabricIndex kFabricIndex1     = 1u;
+
+    {
+        FabricIndex fabricIndex1 =
+            CreateBasicFabricForVidVerification(fabricTable, rootKeyForTestSerialized, kFabricId1, kVendorId1);
+        ASSERT_EQ(fabricIndex1, kFabricIndex1);
+        ASSERT_EQ(fabricTable.FabricCount(), 1u);
+    }
+
+    const uint8_t kAttestationChallenge[16] = {
+        0x90, 0x4b, 0x82, 0xe6, 0x6e, 0x98, 0x57, 0x85, 0xb4, 0xa3, 0xff, 0x18, 0xc2, 0x59, 0x47, 0xf3,
+    };
+    ByteSpan kAttestationChallengeSpan{ kAttestationChallenge };
+
+    const uint8_t kClientChallenge[32] = {
+        0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0,
+        0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0,
+    };
+    ByteSpan kClientChallengeSpan{ kClientChallenge };
+
+    // Non-existent fabricIndex should fail.
+    {
+        FabricTable::SignVIDVerificationResponseData responseData;
+
+        FabricIndex kNonExistentFabricIndex = 123u;
+        ASSERT_EQ(fabricTable.SignVIDVerificationRequest(kNonExistentFabricIndex, kClientChallengeSpan, kAttestationChallengeSpan,
+                                                         responseData),
+                  CHIP_ERROR_INVALID_ARGUMENT);
+    }
+
+    // Invalid attestationChallenge size should fail. Only check too small as the underlying data copied will be caught by just the
+    // signature failing.
+    {
+        FabricTable::SignVIDVerificationResponseData responseData;
+
+        ByteSpan attestationChallengeTooSmall{ kAttestationChallengeSpan.data(), kAttestationChallengeSpan.size() - 1 };
+        ASSERT_EQ(
+            fabricTable.SignVIDVerificationRequest(kFabricIndex1, kClientChallengeSpan, attestationChallengeTooSmall, responseData),
+            CHIP_ERROR_INVALID_ARGUMENT);
+    }
+
+    // Invalid client challenge size should fail.
+    {
+        FabricTable::SignVIDVerificationResponseData responseData;
+
+        ByteSpan clientChallengeTooSmall{ kClientChallengeSpan.data(), kClientChallengeSpan.size() - 1 };
+        ASSERT_EQ(
+            fabricTable.SignVIDVerificationRequest(kFabricIndex1, clientChallengeTooSmall, kAttestationChallengeSpan, responseData),
+            CHIP_ERROR_INVALID_ARGUMENT);
+
+        uint8_t clientChallengeBigBuffer[Crypto::kVendorIdVerificationClientChallengeSize + 1];
+        ByteSpan clientChallengeTooBig{ clientChallengeBigBuffer };
+        ASSERT_EQ(
+            fabricTable.SignVIDVerificationRequest(kFabricIndex1, clientChallengeTooBig, kAttestationChallengeSpan, responseData),
+            CHIP_ERROR_INVALID_ARGUMENT);
+    }
+}
+
 } // namespace


Reviews:
user: login: anush-apple
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-10T22:26:24Z
user: login: andy31415
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:02:09Z
user: login: andy31415
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:06:15Z
user: login: andy31415
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:07:17Z
user: login: andy31415
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:08:47Z
user: login: andy31415
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:09:49Z
user: login: andy31415
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:11:10Z
user: login: tcarmelveilleux
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:32:56Z
user: login: tcarmelveilleux
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:33:06Z
user: login: tcarmelveilleux
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:33:20Z
user: login: tcarmelveilleux
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:33:40Z
user: login: tcarmelveilleux
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-14T15:34:18Z

Review comments:
diff_hunk: @@ -2180,4 +2181,72 @@ CHIP_ERROR FabricTable::SetShouldAdvertiseIdentity(FabricIndex fabricIndex, Adve
     return CHIP_NO_ERROR;
 }
 
+CHIP_ERROR FabricTable::FetchVIDVerificationStatement(FabricIndex fabricIndex, MutableByteSpan & outVIDVerificationStatement) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVIDVerificationStatement.size() >= kVendorIdVerificationStatementV1Size, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VIDVerificationStatement loading support.
+    outVIDVerificationStatement.reduce_size(0);
+    return CHIP_NO_ERROR;
path: src/credentials/FabricTable.cpp
user: login: andy31415
body: would it make sense to have CHIP_ERROR_NOT_IMPLEMENTED for these TODOs? or do we want it to pass for now (in that case maybe a comment with the TODO saying we say succes on purpose may help.
created_at: 2025-04-14T15:02:09Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2180,4 +2181,72 @@ CHIP_ERROR FabricTable::SetShouldAdvertiseIdentity(FabricIndex fabricIndex, Adve
     return CHIP_NO_ERROR;
 }
 
+CHIP_ERROR FabricTable::FetchVIDVerificationStatement(FabricIndex fabricIndex, MutableByteSpan & outVIDVerificationStatement) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVIDVerificationStatement.size() >= kVendorIdVerificationStatementV1Size, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VIDVerificationStatement loading support.
+    outVIDVerificationStatement.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::FetchVVSC(FabricIndex fabricIndex, MutableByteSpan & outVVSC) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVVSC.size() >= kMaxCHIPCertLength, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VVSC loading support.
+    outVVSC.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::SignVIDVerificationRequest(FabricIndex fabricIndex, const ByteSpan & clientChallenge,
path: src/credentials/FabricTable.cpp
user: login: andy31415
body: should the spans be passed by value instead of const reference? They are basically "pointer + size" ... unsure if there is a benefit on space but it would make code shorter.

Our SDK is all over the place .. CaseSession.h and NetworkCommissioningDriver.h use by-value, where as others use const reference.

Pigweed has it's own version and they recommend by value to avoid indirection: https://pigweed.dev/pw_span/#guides
created_at: 2025-04-14T15:06:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2180,4 +2181,72 @@ CHIP_ERROR FabricTable::SetShouldAdvertiseIdentity(FabricIndex fabricIndex, Adve
     return CHIP_NO_ERROR;
 }
 
+CHIP_ERROR FabricTable::FetchVIDVerificationStatement(FabricIndex fabricIndex, MutableByteSpan & outVIDVerificationStatement) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVIDVerificationStatement.size() >= kVendorIdVerificationStatementV1Size, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VIDVerificationStatement loading support.
+    outVIDVerificationStatement.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::FetchVVSC(FabricIndex fabricIndex, MutableByteSpan & outVVSC) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVVSC.size() >= kMaxCHIPCertLength, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VVSC loading support.
+    outVVSC.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::SignVIDVerificationRequest(FabricIndex fabricIndex, const ByteSpan & clientChallenge,
+                                                   const ByteSpan & attestationChallenge,
+                                                   SignVIDVerificationResponseData & outResponse)
+{
+    FabricInfo * fabricInfo = GetMutableFabricByIndex(fabricIndex);
+    VerifyOrReturnError(fabricInfo != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
+
+    P256PublicKey rootPublicKey;
+    ReturnErrorOnFailure(fabricInfo->FetchRootPubkey(rootPublicKey));
+
+    // Step 1: Generate FabricBindingMessage for given fabric.
+    uint8_t fabricBindingMessageBuffer[kVendorFabricBindingMessageV1Size];
+    MutableByteSpan fabricBindingMessageSpan{ fabricBindingMessageBuffer };
+
+    ReturnErrorOnFailure(
+        GenerateVendorFabricBindingMessage(FabricBindingVersion::kVersion1, rootPublicKey, fabricInfo->GetFabricId(),
+                                           static_cast<uint16_t>(fabricInfo->GetVendorId()), fabricBindingMessageSpan));
+    VerifyOrReturnError(fabricBindingMessageSpan.size() == kVendorFabricBindingMessageV1Size, CHIP_ERROR_INTERNAL);
+
+    // Step 2: Recover VIDVerificationStatement, if any.
+    uint8_t vidVerificationStatementBuffer[kVendorIdVerificationStatementV1Size];
+    MutableByteSpan vidVerificationStatementSpan{ vidVerificationStatementBuffer };
+
+    ReturnErrorOnFailure(FetchVIDVerificationStatement(fabricIndex, vidVerificationStatementSpan));
+
+    // Step 3: Generate VidVerificationToBeSigned
+    uint8_t vidVerificationTbsBuffer[kVendorIdVerificationTbsV1MaxSize];
path: src/credentials/FabricTable.cpp
user: login: andy31415
body: how large are all these u8s? Are we generally guaranteed to have sufficient stack space (if not maybe we should platform-alloc)?
created_at: 2025-04-14T15:07:17Z
author_association: CONTRIBUTOR
diff_hunk: @@ -644,6 +655,33 @@ class DLL_EXPORT FabricTable
      */
     CHIP_ERROR FetchNOCCert(FabricIndex fabricIndex, MutableByteSpan & outCert) const;
 
+    /**
+     * @brief Recover the VIDVerificationStatement for a fabric, if any exists.
+     *
+     * This includes returning a pending one if one exists.
+     *
+     * @param fabricIndex - Fabric index for which to find a VIDVerificationStatement
+     * @param outVIDVerificationStatement - Buffer to receive the VIDVerificationstatement. Must be large enough for the maximum
+     * size.
+     *
+     * @retval CHIP_NO_ERROR on success, **including if missing**.
path: src/credentials/FabricTable.h
user: login: andy31415
body: can we say something on the is_missing case? Would the out size be 0 in that case?
created_at: 2025-04-14T15:08:47Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1049,6 +1087,19 @@ class DLL_EXPORT FabricTable
      */
     CHIP_ERROR SetShouldAdvertiseIdentity(FabricIndex fabricIndex, AdvertiseIdentity advertiseIdentity);
 
+    /**
+     * @brief Request a VID verification signature to be generated for a specific fabric in the FabricTable.
+     *
+     * @param[in] fabricIndex - Fabric Index for which to produce the response.
+     * @param[in] clientChallenge - Client-provided challenge.
+     * @param[in] attestationChallenge - Attestation challenge from the secure session.
+     * @param[inout] outResponse - Reference to a pre-allocated response object that will be populated on success.
path: src/credentials/FabricTable.h
user: login: andy31415
body: is this inout or only out? Do we use anything from the paramter? I think it is `[out]` only.
created_at: 2025-04-14T15:09:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2180,4 +2181,72 @@ CHIP_ERROR FabricTable::SetShouldAdvertiseIdentity(FabricIndex fabricIndex, Adve
     return CHIP_NO_ERROR;
 }
 
+CHIP_ERROR FabricTable::FetchVIDVerificationStatement(FabricIndex fabricIndex, MutableByteSpan & outVIDVerificationStatement) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVIDVerificationStatement.size() >= kVendorIdVerificationStatementV1Size, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VIDVerificationStatement loading support.
+    outVIDVerificationStatement.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::FetchVVSC(FabricIndex fabricIndex, MutableByteSpan & outVVSC) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVVSC.size() >= kMaxCHIPCertLength, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VVSC loading support.
+    outVVSC.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::SignVIDVerificationRequest(FabricIndex fabricIndex, const ByteSpan & clientChallenge,
path: src/credentials/FabricTable.cpp
user: login: tcarmelveilleux
body: Will do in follow-up.
created_at: 2025-04-14T15:32:56Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2180,4 +2181,72 @@ CHIP_ERROR FabricTable::SetShouldAdvertiseIdentity(FabricIndex fabricIndex, Adve
     return CHIP_NO_ERROR;
 }
 
+CHIP_ERROR FabricTable::FetchVIDVerificationStatement(FabricIndex fabricIndex, MutableByteSpan & outVIDVerificationStatement) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVIDVerificationStatement.size() >= kVendorIdVerificationStatementV1Size, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VIDVerificationStatement loading support.
+    outVIDVerificationStatement.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::FetchVVSC(FabricIndex fabricIndex, MutableByteSpan & outVVSC) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVVSC.size() >= kMaxCHIPCertLength, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VVSC loading support.
+    outVVSC.reduce_size(0);
+    return CHIP_NO_ERROR;
+}
+
+CHIP_ERROR FabricTable::SignVIDVerificationRequest(FabricIndex fabricIndex, const ByteSpan & clientChallenge,
+                                                   const ByteSpan & attestationChallenge,
+                                                   SignVIDVerificationResponseData & outResponse)
+{
+    FabricInfo * fabricInfo = GetMutableFabricByIndex(fabricIndex);
+    VerifyOrReturnError(fabricInfo != nullptr, CHIP_ERROR_INVALID_ARGUMENT);
+
+    P256PublicKey rootPublicKey;
+    ReturnErrorOnFailure(fabricInfo->FetchRootPubkey(rootPublicKey));
+
+    // Step 1: Generate FabricBindingMessage for given fabric.
+    uint8_t fabricBindingMessageBuffer[kVendorFabricBindingMessageV1Size];
+    MutableByteSpan fabricBindingMessageSpan{ fabricBindingMessageBuffer };
+
+    ReturnErrorOnFailure(
+        GenerateVendorFabricBindingMessage(FabricBindingVersion::kVersion1, rootPublicKey, fabricInfo->GetFabricId(),
+                                           static_cast<uint16_t>(fabricInfo->GetVendorId()), fabricBindingMessageSpan));
+    VerifyOrReturnError(fabricBindingMessageSpan.size() == kVendorFabricBindingMessageV1Size, CHIP_ERROR_INTERNAL);
+
+    // Step 2: Recover VIDVerificationStatement, if any.
+    uint8_t vidVerificationStatementBuffer[kVendorIdVerificationStatementV1Size];
+    MutableByteSpan vidVerificationStatementSpan{ vidVerificationStatementBuffer };
+
+    ReturnErrorOnFailure(FetchVIDVerificationStatement(fabricIndex, vidVerificationStatementSpan));
+
+    // Step 3: Generate VidVerificationToBeSigned
+    uint8_t vidVerificationTbsBuffer[kVendorIdVerificationTbsV1MaxSize];
path: src/credentials/FabricTable.cpp
user: login: tcarmelveilleux
body: 85 bytes
created_at: 2025-04-14T15:33:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -644,6 +655,33 @@ class DLL_EXPORT FabricTable
      */
     CHIP_ERROR FetchNOCCert(FabricIndex fabricIndex, MutableByteSpan & outCert) const;
 
+    /**
+     * @brief Recover the VIDVerificationStatement for a fabric, if any exists.
+     *
+     * This includes returning a pending one if one exists.
+     *
+     * @param fabricIndex - Fabric index for which to find a VIDVerificationStatement
+     * @param outVIDVerificationStatement - Buffer to receive the VIDVerificationstatement. Must be large enough for the maximum
+     * size.
+     *
+     * @retval CHIP_NO_ERROR on success, **including if missing**.
path: src/credentials/FabricTable.h
user: login: tcarmelveilleux
body: Will do in a follow-up.
created_at: 2025-04-14T15:33:19Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1049,6 +1087,19 @@ class DLL_EXPORT FabricTable
      */
     CHIP_ERROR SetShouldAdvertiseIdentity(FabricIndex fabricIndex, AdvertiseIdentity advertiseIdentity);
 
+    /**
+     * @brief Request a VID verification signature to be generated for a specific fabric in the FabricTable.
+     *
+     * @param[in] fabricIndex - Fabric Index for which to produce the response.
+     * @param[in] clientChallenge - Client-provided challenge.
+     * @param[in] attestationChallenge - Attestation challenge from the secure session.
+     * @param[inout] outResponse - Reference to a pre-allocated response object that will be populated on success.
path: src/credentials/FabricTable.h
user: login: tcarmelveilleux
body: We resize, but yes I will do out in a follow-up.
created_at: 2025-04-14T15:33:39Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2180,4 +2181,72 @@ CHIP_ERROR FabricTable::SetShouldAdvertiseIdentity(FabricIndex fabricIndex, Adve
     return CHIP_NO_ERROR;
 }
 
+CHIP_ERROR FabricTable::FetchVIDVerificationStatement(FabricIndex fabricIndex, MutableByteSpan & outVIDVerificationStatement) const
+{
+    VerifyOrReturnError(mOpCertStore != nullptr, CHIP_ERROR_INCORRECT_STATE);
+    VerifyOrReturnError(outVIDVerificationStatement.size() >= kVendorIdVerificationStatementV1Size, CHIP_ERROR_BUFFER_TOO_SMALL);
+
+    // TODO(#38308): Add VIDVerificationStatement loading support.
+    outVIDVerificationStatement.reduce_size(0);
+    return CHIP_NO_ERROR;
path: src/credentials/FabricTable.cpp
user: login: tcarmelveilleux
body: We want it to pass for now as if not there since the command to set them is unimplemented. Will update comment in a follow-up.
created_at: 2025-04-14T15:34:18Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-04-09T21:22:44Z
body: PR #38329: Size comparison from ff458d012d392bdf4d5cef0bbee56b5b0fe83c74 to a48ddbc8c466a3edfef06a61b4c56c281dd4be77
<!--ghr-comment-format:1-->

<details>
<summary>Full report (75 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)</summary>
<!--ghr-report:full-->

| platform    | target                                                | config                   | section   |   ff458d01 |   a48ddbc8 |   change |   % change |
|:------------|:------------------------------------------------------|:-------------------------|:----------|-----------:|-----------:|---------:|-----------:|
| bl602       | lighting-app                                          | bl602+mfd+littlefs+rpc   | FLASH     |    1098542 |    1098542 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      94850 |      94850 |        0 |        0.0 |
| bl702       | lighting-app                                          | bl702+eth                | FLASH     |     653456 |     653456 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      33533 |      33533 |        0 |        0.0 |
|             |                                                       | bl702+wifi               | FLASH     |     830712 |     830712 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      22257 |      22257 |        0 |        0.0 |
|             |                                                       | bl706+mfd+rpc+littlefs   | FLASH     |    1063238 |    1063238 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      32181 |      32181 |        0 |        0.0 |
| bl702l      | contact-sensor-app                                    | bl702l+mfd+littlefs      | FLASH     |     894036 |     894036 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      26920 |      26920 |        0 |        0.0 |
|             | lighting-app                                          | bl702l+mfd+littlefs      | FLASH     |     976912 |     976912 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      24668 |      24668 |        0 |        0.0 |
| cc13x4_26x4 | lighting-app                                          | LP_EM_CC1354P10_6        | FLASH     |     818644 |     818644 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     120288 |     120288 |        0 |        0.0 |
|             | lock-ftd                                              | LP_EM_CC1354P10_6        | FLASH     |     827500 |     827500 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     125384 |     125384 |        0 |        0.0 |
|             | pump-app                                              | LP_EM_CC1354P10_6        | FLASH     |     774440 |     774440 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     113756 |     113756 |        0 |        0.0 |
|             | pump-controller-app                                   | LP_EM_CC1354P10_6        | FLASH     |     758740 |     758740 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     113972 |     113972 |        0 |        0.0 |
| cc32xx      | air-purifier                                          | CC3235SF_LAUNCHXL        | FLASH     |     542086 |     542086 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     205144 |     205144 |        0 |        0.0 |
|             | lock                                                  | CC3235SF_LAUNCHXL        | FLASH     |     576106 |     576106 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     205392 |     205392 |        0 |        0.0 |
| cyw30739    | light                                                 | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     660189 |     660189 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      75428 |      75428 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     680041 |     680041 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      78068 |      78068 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     680041 |     680041 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      78068 |      78068 |        0 |        0.0 |
|             |                                                       | CYW930739M2EVB-02        | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     636973 |     636973 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      70496 |      70496 |        0 |        0.0 |
|             | light-switch                                          | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     620429 |     620429 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      71676 |      71676 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     640065 |     640065 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      74220 |      74220 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     640065 |     640065 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      74220 |      74220 |        0 |        0.0 |
|             | lock                                                  | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     639909 |     639909 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      74676 |      74676 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     659625 |     659625 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      77220 |      77220 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     659625 |     659625 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      77220 |      77220 |        0 |        0.0 |
|             | thermostat                                            | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     616273 |     616273 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      68764 |      68764 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     636125 |     636125 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      71404 |      71404 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     636125 |     636125 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      71404 |      71404 |        0 |        0.0 |
| efr32       | lock-app                                              | BRD4187C                 | FLASH     |     941128 |     941128 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     159944 |     159944 |        0 |        0.0 |
|             |                                                       | BRD4338a                 | FLASH     |     735128 |     735128 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     234852 |     234852 |        0 |        0.0 |
|             | window-app                                            | BRD4187C                 | FLASH     |    1033584 |    1033576 |       -8 |       -0.0 |
|             |                                                       |                          | RAM       |     128048 |     128048 |        0 |        0.0 |
| esp32       | all-clusters-app                                      | c3devkit                 | DRAM      |     103376 |     103376 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    1785360 |    1785360 |        0 |        0.0 |
|             |                                                       |                          | IRAM      |      83846 |      83846 |        0 |        0.0 |
|             |                                                       | m5stack                  | DRAM      |     121948 |     121948 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    1751998 |    1751986 |      -12 |       -0.0 |
|             |                                                       |                          | IRAM      |     117043 |     117043 |        0 |        0.0 |
| linux       | air-purifier-app                                      | debug                    | *unknown* |       4848 |       4848 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    2721773 |    2721805 |       32 |        0.0 |
|             |                                                       |                          | RAM       |     114184 |     114184 |        0 |        0.0 |
|             | all-clusters-app                                      | debug                    | *unknown* |       5656 |       5656 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    6191876 |    6191876 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     530376 |     530376 |        0 |        0.0 |
|             | all-clusters-minimal-app                              | debug                    | *unknown* |       5528 |       5528 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5377556 |    5377556 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     224432 |     224432 |        0 |        0.0 |
|             | bridge-app                                            | debug                    | *unknown* |       5544 |       5544 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4690584 |    4690584 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     202816 |     202816 |        0 |        0.0 |
|             | camera-app                                            | debug                    | *unknown* |       8832 |       8832 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    6698491 |    6698491 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     223824 |     223824 |        0 |        0.0 |
|             | camera-controller                                     | debug                    | *unknown* |       9120 |       9120 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   13687819 |   13687819 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     644240 |     644240 |        0 |        0.0 |
|             | chip-tool                                             | debug                    | *unknown* |       6256 |       6256 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   14070385 |   14070385 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     634416 |     634416 |        0 |        0.0 |
|             | chip-tool-ipv6only                                    | arm64                    | *unknown* |      22816 |      22816 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   12157768 |   12157768 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     687048 |     687048 |        0 |        0.0 |
|             | fabric-admin                                          | debug                    | *unknown* |       5936 |       5936 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   12215505 |   12215537 |       32 |        0.0 |
|             |                                                       |                          | RAM       |     633776 |     633776 |        0 |        0.0 |
|             | fabric-bridge-app                                     | debug                    | *unknown* |       4800 |       4800 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4522474 |    4522474 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     190112 |     190112 |        0 |        0.0 |
|             | fabric-sync                                           | debug                    | *unknown* |       5056 |       5056 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5660869 |    5660869 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     485384 |     485384 |        0 |        0.0 |
|             | lighting-app                                          | debug+rpc+ui             | *unknown* |       6264 |       6264 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5585633 |    5585633 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     207064 |     207064 |        0 |        0.0 |
|             | lock-app                                              | debug                    | *unknown* |       5496 |       5496 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4758300 |    4758300 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     194208 |     194208 |        0 |        0.0 |
|             | ota-provider-app                                      | debug                    | *unknown* |       4840 |       4840 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4380456 |    4380454 |       -2 |       -0.0 |
|             |                                                       |                          | RAM       |     182928 |     182928 |        0 |        0.0 |
|             | ota-requestor-app                                     | debug                    | *unknown* |       4792 |       4792 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4510740 |    4510738 |       -2 |       -0.0 |
|             |                                                       |                          | RAM       |     187400 |     187400 |        0 |        0.0 |
|             | shell                                                 | debug                    | *unknown* |       4272 |       4272 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    3006828 |    3006828 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     147456 |     147456 |        0 |        0.0 |
|             | thermostat-no-ble                                     | arm64                    | *unknown* |       9552 |       9552 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4199904 |    4199904 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     231912 |     231912 |        0 |        0.0 |
|             | tv-app                                                | debug                    | *unknown* |       5832 |       5832 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5997717 |    5997717 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     608800 |     608800 |        0 |        0.0 |
|             | tv-casting-app                                        | debug                    | *unknown* |       5416 |       5416 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   12229277 |   12229277 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     752112 |     752112 |        0 |        0.0 |
| nrfconnect  | all-clusters-app                                      | nrf52840dk_nrf52840      | FLASH     |     916304 |     916304 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     167443 |     167443 |        0 |        0.0 |
|             |                                                       | nrf7002dk_nrf5340_cpuapp | FLASH     |     909240 |     909240 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     145687 |     145687 |        0 |        0.0 |
|             | all-clusters-minimal-app                              | nrf52840dk_nrf52840      | FLASH     |     852812 |     852812 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     141223 |     141223 |        0 |        0.0 |
| nxp         | contact                                               | k32w0+release            | FLASH     |     588736 |     588736 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      70996 |      70996 |        0 |        0.0 |
|             |                                                       | mcxw71+release           | FLASH     |     607208 |     607208 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      63152 |      63152 |        0 |        0.0 |
|             | light                                                 | k32w0+release            | FLASH     |     614556 |     614556 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      70292 |      70292 |        0 |        0.0 |
|             |                                                       | k32w1+release            | FLASH     |     691376 |     691376 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      72000 |      72000 |        0 |        0.0 |
|             | lock                                                  | mcxw71+release           | FLASH     |     756424 |     756424 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      67564 |      67564 |        0 |        0.0 |
| psoc6       | all-clusters                                          | cy8ckit_062s2_43012      | FLASH     |    1661500 |    1661500 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     212328 |     212328 |        0 |        0.0 |
|             | all-clusters-minimal                                  | cy8ckit_062s2_43012      | FLASH     |    1565636 |    1565636 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     208544 |     208544 |        0 |        0.0 |
|             | light                                                 | cy8ckit_062s2_43012      | FLASH     |    1442620 |    1442620 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     197312 |     197312 |        0 |        0.0 |
|             | lock                                                  | cy8ckit_062s2_43012      | FLASH     |    1471468 |    1471468 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     224976 |     224976 |        0 |        0.0 |
| qpg         | lighting-app                                          | qpg6105+debug            | FLASH     |     665252 |     665252 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     105172 |     105172 |        0 |        0.0 |
|             | lock-app                                              | qpg6105+debug            | FLASH     |     623672 |     623672 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      99792 |      99792 |        0 |        0.0 |
| stm32       | light                                                 | STM32WB5MM-DK            | FLASH     |     461328 |     461328 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     141488 |     141488 |        0 |        0.0 |
| telink      | bridge-app                                            | tl7218x                  | FLASH     |     689336 |     689336 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     101852 |     101852 |        0 |        0.0 |
|             | light-app-ota-compress-lzma-factory-data              | tl3218x                  | FLASH     |     777338 |     777338 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      50120 |      50120 |        0 |        0.0 |
|             | light-app-ota-compress-lzma-shell-factory-data        | tl3218x                  | FLASH     |     767600 |     767600 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      40420 |      40420 |        0 |        0.0 |
|             | light-app-ota-shell-factory-data                      | tl7218x                  | FLASH     |     783974 |     756060 |   -27914 |       -3.6 |
|             |                                                       |                          | RAM       |     109308 |      97540 |   -11768 |      -10.8 |
|             | light-switch-app-ota-compress-lzma-factory-data       | tl7218x_retention        | FLASH     |     705188 |     683078 |   -22110 |       -3.1 |
|             |                                                       |                          | RAM       |      62620 |      51588 |   -11032 |      -17.6 |
|             | light-switch-app-ota-compress-lzma-shell-factory-data | tlsr9528a                | FLASH     |     741370 |     711528 |   -29842 |       -4.0 |
|             |                                                       |                          | RAM       |      85808 |      73408 |   -12400 |      -14.5 |
|             | light-switch-app-ota-shell-factory-data               | tl3218x_retention        | FLASH     |     709074 |     709074 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      37044 |      37044 |        0 |        0.0 |
|             | lighting-app-ota-factory-data                         | tlsr9118bdk40d           | FLASH     |     603110 |     603110 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     148704 |     148704 |        0 |        0.0 |
|             | lighting-app-ota-rpc-factory-data-4mb                 | tlsr9518adk80d           | FLASH     |     818588 |     791062 |   -27526 |       -3.4 |
|             |                                                       |                          | RAM       |     107568 |      96396 |   -11172 |      -10.4 |
| tizen       | all-clusters-app                                      | arm                      | *unknown* |       5152 |       5152 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    1785072 |    1785072 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      94280 |      94280 |        0 |        0.0 |
|             | chip-tool-ubsan                                       | arm                      | *unknown* |      11836 |      11836 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   20061198 |   20061198 |        0 |        0.0 |
|             |                                                       |                          | RAM       |    8794180 |    8794220 |       40 |        0.0 |

</details>

author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-12T14:36:37Z
body: PR #38329: Size comparison from 41be427e16e2e3b8b54c932536ff14bfb88e6ffa to bb8ee7957cd694d5fa49aa773aede804bfdd856a
<!--ghr-comment-format:1-->

<details>
<summary>Full report (75 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)</summary>
<!--ghr-report:full-->

| platform    | target                                                | config                   | section   |   41be427e |   bb8ee795 |   change |   % change |
|:------------|:------------------------------------------------------|:-------------------------|:----------|-----------:|-----------:|---------:|-----------:|
| bl602       | lighting-app                                          | bl602+mfd+littlefs+rpc   | FLASH     |    1098536 |    1098536 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      94850 |      94850 |        0 |        0.0 |
| bl702       | lighting-app                                          | bl702+eth                | FLASH     |     653450 |     653450 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      33533 |      33533 |        0 |        0.0 |
|             |                                                       | bl702+wifi               | FLASH     |     830706 |     830706 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      22257 |      22257 |        0 |        0.0 |
|             |                                                       | bl706+mfd+rpc+littlefs   | FLASH     |    1063488 |    1063488 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      32181 |      32181 |        0 |        0.0 |
| bl702l      | contact-sensor-app                                    | bl702l+mfd+littlefs      | FLASH     |     894286 |     894286 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      26920 |      26920 |        0 |        0.0 |
|             | lighting-app                                          | bl702l+mfd+littlefs      | FLASH     |     976906 |     976906 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      24668 |      24668 |        0 |        0.0 |
| cc13x4_26x4 | lighting-app                                          | LP_EM_CC1354P10_6        | FLASH     |     818692 |     818692 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     120288 |     120288 |        0 |        0.0 |
|             | lock-ftd                                              | LP_EM_CC1354P10_6        | FLASH     |     827564 |     827564 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     125384 |     125384 |        0 |        0.0 |
|             | pump-app                                              | LP_EM_CC1354P10_6        | FLASH     |     774504 |     774504 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     113756 |     113756 |        0 |        0.0 |
|             | pump-controller-app                                   | LP_EM_CC1354P10_6        | FLASH     |     758788 |     758788 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     113972 |     113972 |        0 |        0.0 |
| cc32xx      | air-purifier                                          | CC3235SF_LAUNCHXL        | FLASH     |     542142 |     542142 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     205144 |     205144 |        0 |        0.0 |
|             | lock                                                  | CC3235SF_LAUNCHXL        | FLASH     |     576170 |     576170 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     205392 |     205392 |        0 |        0.0 |
| cyw30739    | light                                                 | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     660245 |     660245 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      75428 |      75428 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     680105 |     680105 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      78068 |      78068 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     680105 |     680105 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      78068 |      78068 |        0 |        0.0 |
|             |                                                       | CYW930739M2EVB-02        | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     637029 |     637029 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      70496 |      70496 |        0 |        0.0 |
|             | light-switch                                          | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     620493 |     620493 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      71676 |      71676 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     640129 |     640129 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      74220 |      74220 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     640129 |     640129 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      74220 |      74220 |        0 |        0.0 |
|             | lock                                                  | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     639965 |     639965 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      74676 |      74676 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     659689 |     659689 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      77220 |      77220 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     659689 |     659689 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      77220 |      77220 |        0 |        0.0 |
|             | thermostat                                            | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     616337 |     616337 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      68764 |      68764 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     636189 |     636189 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      71404 |      71404 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     636189 |     636189 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      71404 |      71404 |        0 |        0.0 |
| efr32       | lock-app                                              | BRD4187C                 | FLASH     |     941160 |     941160 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     159944 |     159944 |        0 |        0.0 |
|             |                                                       | BRD4338a                 | FLASH     |     735176 |     735176 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     234852 |     234852 |        0 |        0.0 |
|             | window-app                                            | BRD4187C                 | FLASH     |    1033648 |    1033640 |       -8 |       -0.0 |
|             |                                                       |                          | RAM       |     128048 |     128048 |        0 |        0.0 |
| esp32       | all-clusters-app                                      | c3devkit                 | DRAM      |     103408 |     103408 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    1797962 |    1797962 |        0 |        0.0 |
|             |                                                       |                          | IRAM      |      83846 |      83846 |        0 |        0.0 |
|             |                                                       | m5stack                  | DRAM      |     121980 |     121980 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    1763670 |    1763662 |       -8 |       -0.0 |
|             |                                                       |                          | IRAM      |     117043 |     117043 |        0 |        0.0 |
| linux       | air-purifier-app                                      | debug                    | *unknown* |       4848 |       4848 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    2722093 |    2722125 |       32 |        0.0 |
|             |                                                       |                          | RAM       |     114184 |     114184 |        0 |        0.0 |
|             | all-clusters-app                                      | debug                    | *unknown* |       5656 |       5656 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    6238652 |    6238652 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     531048 |     531048 |        0 |        0.0 |
|             | all-clusters-minimal-app                              | debug                    | *unknown* |       5528 |       5528 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5378120 |    5378120 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     224432 |     224432 |        0 |        0.0 |
|             | bridge-app                                            | debug                    | *unknown* |       5544 |       5544 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4690872 |    4690872 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     202816 |     202816 |        0 |        0.0 |
|             | camera-app                                            | debug                    | *unknown* |       8832 |       8832 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    6705099 |    6705099 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     224336 |     224336 |        0 |        0.0 |
|             | camera-controller                                     | debug                    | *unknown* |       9120 |       9120 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   13689211 |   13689211 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     644272 |     644272 |        0 |        0.0 |
|             | chip-tool                                             | debug                    | *unknown* |       6256 |       6256 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   14070753 |   14070753 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     634448 |     634448 |        0 |        0.0 |
|             | chip-tool-ipv6only                                    | arm64                    | *unknown* |      22816 |      22816 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   12158040 |   12158040 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     687080 |     687080 |        0 |        0.0 |
|             | fabric-admin                                          | debug                    | *unknown* |       5936 |       5936 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   12215543 |   12215575 |       32 |        0.0 |
|             |                                                       |                          | RAM       |     633808 |     633808 |        0 |        0.0 |
|             | fabric-bridge-app                                     | debug                    | *unknown* |       4800 |       4800 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4522796 |    4522796 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     190112 |     190112 |        0 |        0.0 |
|             | fabric-sync                                           | debug                    | *unknown* |       5056 |       5056 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5661189 |    5661189 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     485416 |     485416 |        0 |        0.0 |
|             | lighting-app                                          | debug+rpc+ui             | *unknown* |       6264 |       6264 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5585921 |    5585921 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     207064 |     207064 |        0 |        0.0 |
|             | lock-app                                              | debug                    | *unknown* |       5496 |       5496 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4758620 |    4758620 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     194208 |     194208 |        0 |        0.0 |
|             | ota-provider-app                                      | debug                    | *unknown* |       4840 |       4840 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4380494 |    4380492 |       -2 |       -0.0 |
|             |                                                       |                          | RAM       |     182928 |     182928 |        0 |        0.0 |
|             | ota-requestor-app                                     | debug                    | *unknown* |       4792 |       4792 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4511062 |    4511060 |       -2 |       -0.0 |
|             |                                                       |                          | RAM       |     187400 |     187400 |        0 |        0.0 |
|             | shell                                                 | debug                    | *unknown* |       4272 |       4272 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    3013660 |    3013660 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     147712 |     147712 |        0 |        0.0 |
|             | thermostat-no-ble                                     | arm64                    | *unknown* |       9552 |       9552 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4200192 |    4200192 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     231912 |     231912 |        0 |        0.0 |
|             | tv-app                                                | debug                    | *unknown* |       5832 |       5832 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5998021 |    5998021 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     608832 |     608832 |        0 |        0.0 |
|             | tv-casting-app                                        | debug                    | *unknown* |       5416 |       5416 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   12229933 |   12229933 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     752144 |     752144 |        0 |        0.0 |
| nrfconnect  | all-clusters-app                                      | nrf52840dk_nrf52840      | FLASH     |     916584 |     916584 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     167469 |     167469 |        0 |        0.0 |
|             |                                                       | nrf7002dk_nrf5340_cpuapp | FLASH     |     909488 |     909488 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     145713 |     145713 |        0 |        0.0 |
|             | all-clusters-minimal-app                              | nrf52840dk_nrf52840      | FLASH     |     852928 |     852928 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     141223 |     141223 |        0 |        0.0 |
| nxp         | contact                                               | k32w0+release            | FLASH     |     588800 |     588800 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      70996 |      70996 |        0 |        0.0 |
|             |                                                       | mcxw71+release           | FLASH     |     607264 |     607264 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      63152 |      63152 |        0 |        0.0 |
|             | light                                                 | k32w0+release            | FLASH     |     614620 |     614620 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      70292 |      70292 |        0 |        0.0 |
|             |                                                       | k32w1+release            | FLASH     |     691432 |     691432 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      72000 |      72000 |        0 |        0.0 |
|             | lock                                                  | mcxw71+release           | FLASH     |     756480 |     756480 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      67564 |      67564 |        0 |        0.0 |
| psoc6       | all-clusters                                          | cy8ckit_062s2_43012      | FLASH     |    1661788 |    1661788 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     212352 |     212352 |        0 |        0.0 |
|             | all-clusters-minimal                                  | cy8ckit_062s2_43012      | FLASH     |    1565748 |    1565748 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     208544 |     208544 |        0 |        0.0 |
|             | light                                                 | cy8ckit_062s2_43012      | FLASH     |    1442668 |    1442668 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     197312 |     197312 |        0 |        0.0 |
|             | lock                                                  | cy8ckit_062s2_43012      | FLASH     |    1471516 |    1471516 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     224976 |     224976 |        0 |        0.0 |
| qpg         | lighting-app                                          | qpg6105+debug            | FLASH     |     665316 |     665316 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     105172 |     105172 |        0 |        0.0 |
|             | lock-app                                              | qpg6105+debug            | FLASH     |     623720 |     623720 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      99792 |      99792 |        0 |        0.0 |
| stm32       | light                                                 | STM32WB5MM-DK            | FLASH     |     461384 |     461384 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     141488 |     141488 |        0 |        0.0 |
| telink      | bridge-app                                            | tl7218x                  | FLASH     |     672404 |     672404 |        0 |        0.0 |
|             |                                                       |                          |           |     695522 |     695522 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      90712 |      90712 |        0 |        0.0 |
|             |                                                       |                          |           |     101860 |     101860 |        0 |        0.0 |
|             | light-app-ota-compress-lzma-factory-data              | tl3218x                  | FLASH     |     777394 |     777394 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      50120 |      50120 |        0 |        0.0 |
|             | light-app-ota-compress-lzma-shell-factory-data        | tl3218x                  | FLASH     |     767656 |     767656 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      40420 |      40420 |        0 |        0.0 |
|             | light-app-ota-shell-factory-data                      | tl7218x                  | FLASH     |     756116 |     756116 |        0 |        0.0 |
|             |                                                       |                          |           |     784030 |     784030 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      97540 |      97540 |        0 |        0.0 |
|             |                                                       |                          |           |     109308 |     109308 |        0 |        0.0 |
|             | light-switch-app-ota-compress-lzma-factory-data       | tl7218x_retention        | FLASH     |     683134 |     683134 |        0 |        0.0 |
|             |                                                       |                          |           |     705244 |     705244 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      51588 |      51588 |        0 |        0.0 |
|             |                                                       |                          |           |      62620 |      62620 |        0 |        0.0 |
|             | light-switch-app-ota-compress-lzma-shell-factory-data | tlsr9528a                | FLASH     |     711584 |     711584 |        0 |        0.0 |
|             |                                                       |                          |           |     741426 |     741426 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      73408 |      73408 |        0 |        0.0 |
|             |                                                       |                          |           |      85808 |      85808 |        0 |        0.0 |
|             | light-switch-app-ota-shell-factory-data               | tl3218x_retention        | FLASH     |     709130 |     709130 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      37044 |      37044 |        0 |        0.0 |
|             | lighting-app-ota-factory-data                         | tlsr9118bdk40d           | FLASH     |     603592 |     603592 |        0 |        0.0 |
|             |                                                       |                          |           |     603166 |     603166 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     138640 |     138640 |        0 |        0.0 |
|             |                                                       |                          |           |     148704 |     148704 |        0 |        0.0 |
|             | lighting-app-ota-rpc-factory-data-4mb                 | tlsr9518adk80d           | FLASH     |     791114 |     791118 |        4 |        0.0 |
|             |                                                       |                          |           |     818644 |     818648 |        4 |        0.0 |
|             |                                                       |                          | RAM       |      96396 |      96396 |        0 |        0.0 |
|             |                                                       |                          |           |     107568 |     107568 |        0 |        0.0 |
| tizen       | all-clusters-app                                      | arm                      | *unknown* |       5152 |       5152 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    1791040 |    1791040 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      94472 |      94472 |        0 |        0.0 |
|             | chip-tool-ubsan                                       | arm                      | *unknown* |      11836 |      11836 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   20061694 |   20061694 |        0 |        0.0 |
|             |                                                       |                          | RAM       |    8794384 |    8794424 |       40 |        0.0 |

</details>

author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-14T12:11:34Z
body: PR #38329: Size comparison from 41be427e16e2e3b8b54c932536ff14bfb88e6ffa to eb2ad97ba934ef86cde13714047cf66263ed14db
<!--ghr-comment-format:1-->

<details>
<summary>Full report (75 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)</summary>
<!--ghr-report:full-->

| platform    | target                                                | config                   | section   |   41be427e |   eb2ad97b |   change |   % change |
|:------------|:------------------------------------------------------|:-------------------------|:----------|-----------:|-----------:|---------:|-----------:|
| bl602       | lighting-app                                          | bl602+mfd+littlefs+rpc   | FLASH     |    1098536 |    1098536 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      94850 |      94850 |        0 |        0.0 |
| bl702       | lighting-app                                          | bl702+eth                | FLASH     |     653450 |     653450 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      33533 |      33533 |        0 |        0.0 |
|             |                                                       | bl702+wifi               | FLASH     |     830706 |     830706 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      22257 |      22257 |        0 |        0.0 |
|             |                                                       | bl706+mfd+rpc+littlefs   | FLASH     |    1063488 |    1063488 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      32181 |      32181 |        0 |        0.0 |
| bl702l      | contact-sensor-app                                    | bl702l+mfd+littlefs      | FLASH     |     894286 |     894286 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      26920 |      26920 |        0 |        0.0 |
|             | lighting-app                                          | bl702l+mfd+littlefs      | FLASH     |     976906 |     976906 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      24668 |      24668 |        0 |        0.0 |
| cc13x4_26x4 | lighting-app                                          | LP_EM_CC1354P10_6        | FLASH     |     818692 |     818692 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     120288 |     120288 |        0 |        0.0 |
|             | lock-ftd                                              | LP_EM_CC1354P10_6        | FLASH     |     827564 |     827564 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     125384 |     125384 |        0 |        0.0 |
|             | pump-app                                              | LP_EM_CC1354P10_6        | FLASH     |     774504 |     774504 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     113756 |     113756 |        0 |        0.0 |
|             | pump-controller-app                                   | LP_EM_CC1354P10_6        | FLASH     |     758788 |     758788 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     113972 |     113972 |        0 |        0.0 |
| cc32xx      | air-purifier                                          | CC3235SF_LAUNCHXL        | FLASH     |     542142 |     542142 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     205144 |     205144 |        0 |        0.0 |
|             | lock                                                  | CC3235SF_LAUNCHXL        | FLASH     |     576170 |     576170 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     205392 |     205392 |        0 |        0.0 |
| cyw30739    | light                                                 | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     660245 |     660245 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      75428 |      75428 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     680105 |     680105 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      78068 |      78068 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     680105 |     680105 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      78068 |      78068 |        0 |        0.0 |
|             |                                                       | CYW930739M2EVB-02        | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     637029 |     637029 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      70496 |      70496 |        0 |        0.0 |
|             | light-switch                                          | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     620493 |     620493 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      71676 |      71676 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     640129 |     640129 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      74220 |      74220 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     640129 |     640129 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      74220 |      74220 |        0 |        0.0 |
|             | lock                                                  | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     639965 |     639965 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      74676 |      74676 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     659689 |     659689 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      77220 |      77220 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     659689 |     659689 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      77220 |      77220 |        0 |        0.0 |
|             | thermostat                                            | CYW30739B2-P5-EVK-01     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     616337 |     616337 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      68764 |      68764 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-02     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     636189 |     636189 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      71404 |      71404 |        0 |        0.0 |
|             |                                                       | CYW30739B2-P5-EVK-03     | *unknown* |       2040 |       2040 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |     636189 |     636189 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      71404 |      71404 |        0 |        0.0 |
| efr32       | lock-app                                              | BRD4187C                 | FLASH     |     941160 |     941160 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     159944 |     159944 |        0 |        0.0 |
|             |                                                       | BRD4338a                 | FLASH     |     735176 |     735328 |      152 |        0.0 |
|             |                                                       |                          | RAM       |     234852 |     234852 |        0 |        0.0 |
|             | window-app                                            | BRD4187C                 | FLASH     |    1033648 |    1033720 |       72 |        0.0 |
|             |                                                       |                          | RAM       |     128048 |     128048 |        0 |        0.0 |
| esp32       | all-clusters-app                                      | c3devkit                 | DRAM      |     103408 |     103408 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    1797962 |    1797962 |        0 |        0.0 |
|             |                                                       |                          | IRAM      |      83846 |      83846 |        0 |        0.0 |
|             |                                                       | m5stack                  | DRAM      |     121980 |     121980 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    1763670 |    1763662 |       -8 |       -0.0 |
|             |                                                       |                          | IRAM      |     117043 |     117043 |        0 |        0.0 |
| linux       | air-purifier-app                                      | debug                    | *unknown* |       4848 |       4848 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    2722093 |    2722125 |       32 |        0.0 |
|             |                                                       |                          | RAM       |     114184 |     114184 |        0 |        0.0 |
|             | all-clusters-app                                      | debug                    | *unknown* |       5656 |       5656 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    6238652 |    6238620 |      -32 |       -0.0 |
|             |                                                       |                          | RAM       |     531048 |     531048 |        0 |        0.0 |
|             | all-clusters-minimal-app                              | debug                    | *unknown* |       5528 |       5528 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5378120 |    5378120 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     224432 |     224432 |        0 |        0.0 |
|             | bridge-app                                            | debug                    | *unknown* |       5544 |       5544 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4690872 |    4690872 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     202816 |     202816 |        0 |        0.0 |
|             | camera-app                                            | debug                    | *unknown* |       8832 |       8832 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    6705099 |    6705099 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     224336 |     224336 |        0 |        0.0 |
|             | camera-controller                                     | debug                    | *unknown* |       9120 |       9120 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   13689211 |   13689243 |       32 |        0.0 |
|             |                                                       |                          | RAM       |     644272 |     644272 |        0 |        0.0 |
|             | chip-tool                                             | debug                    | *unknown* |       6256 |       6256 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   14070753 |   14070881 |      128 |        0.0 |
|             |                                                       |                          | RAM       |     634448 |     634448 |        0 |        0.0 |
|             | chip-tool-ipv6only                                    | arm64                    | *unknown* |      22816 |      22816 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   12158040 |   12158120 |       80 |        0.0 |
|             |                                                       |                          | RAM       |     687080 |     687080 |        0 |        0.0 |
|             | fabric-admin                                          | debug                    | *unknown* |       5936 |       5936 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   12215543 |   12215639 |       96 |        0.0 |
|             |                                                       |                          | RAM       |     633808 |     633808 |        0 |        0.0 |
|             | fabric-bridge-app                                     | debug                    | *unknown* |       4800 |       4800 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4522796 |    4522796 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     190112 |     190112 |        0 |        0.0 |
|             | fabric-sync                                           | debug                    | *unknown* |       5056 |       5056 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5661189 |    5661189 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     485416 |     485416 |        0 |        0.0 |
|             | lighting-app                                          | debug+rpc+ui             | *unknown* |       6264 |       6264 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5585921 |    5585889 |      -32 |       -0.0 |
|             |                                                       |                          | RAM       |     207064 |     207064 |        0 |        0.0 |
|             | lock-app                                              | debug                    | *unknown* |       5496 |       5496 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4758620 |    4758588 |      -32 |       -0.0 |
|             |                                                       |                          | RAM       |     194208 |     194208 |        0 |        0.0 |
|             | ota-provider-app                                      | debug                    | *unknown* |       4840 |       4840 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4380494 |    4380492 |       -2 |       -0.0 |
|             |                                                       |                          | RAM       |     182928 |     182928 |        0 |        0.0 |
|             | ota-requestor-app                                     | debug                    | *unknown* |       4792 |       4792 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4511062 |    4511060 |       -2 |       -0.0 |
|             |                                                       |                          | RAM       |     187400 |     187400 |        0 |        0.0 |
|             | shell                                                 | debug                    | *unknown* |       4272 |       4272 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    3013660 |    3013660 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     147712 |     147712 |        0 |        0.0 |
|             | thermostat-no-ble                                     | arm64                    | *unknown* |       9552 |       9552 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    4200192 |    4200192 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     231912 |     231912 |        0 |        0.0 |
|             | tv-app                                                | debug                    | *unknown* |       5832 |       5832 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    5998021 |    5998021 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     608832 |     608832 |        0 |        0.0 |
|             | tv-casting-app                                        | debug                    | *unknown* |       5416 |       5416 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   12229933 |   12229965 |       32 |        0.0 |
|             |                                                       |                          | RAM       |     752144 |     752144 |        0 |        0.0 |
| nrfconnect  | all-clusters-app                                      | nrf52840dk_nrf52840      | FLASH     |     916584 |     916584 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     167469 |     167469 |        0 |        0.0 |
|             |                                                       | nrf7002dk_nrf5340_cpuapp | FLASH     |     909488 |     909488 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     145713 |     145713 |        0 |        0.0 |
|             | all-clusters-minimal-app                              | nrf52840dk_nrf52840      | FLASH     |     852928 |     852928 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     141223 |     141223 |        0 |        0.0 |
| nxp         | contact                                               | k32w0+release            | FLASH     |     588800 |     588800 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      70996 |      70996 |        0 |        0.0 |
|             |                                                       | mcxw71+release           | FLASH     |     607264 |     607264 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      63152 |      63152 |        0 |        0.0 |
|             | light                                                 | k32w0+release            | FLASH     |     614620 |     614620 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      70292 |      70292 |        0 |        0.0 |
|             |                                                       | k32w1+release            | FLASH     |     691432 |     691432 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      72000 |      72000 |        0 |        0.0 |
|             | lock                                                  | mcxw71+release           | FLASH     |     756480 |     756480 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      67564 |      67564 |        0 |        0.0 |
| psoc6       | all-clusters                                          | cy8ckit_062s2_43012      | FLASH     |    1661788 |    1661788 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     212352 |     212352 |        0 |        0.0 |
|             | all-clusters-minimal                                  | cy8ckit_062s2_43012      | FLASH     |    1565748 |    1565748 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     208544 |     208544 |        0 |        0.0 |
|             | light                                                 | cy8ckit_062s2_43012      | FLASH     |    1442668 |    1442668 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     197312 |     197312 |        0 |        0.0 |
|             | lock                                                  | cy8ckit_062s2_43012      | FLASH     |    1471516 |    1471516 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     224976 |     224976 |        0 |        0.0 |
| qpg         | lighting-app                                          | qpg6105+debug            | FLASH     |     665316 |     665316 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     105172 |     105172 |        0 |        0.0 |
|             | lock-app                                              | qpg6105+debug            | FLASH     |     623720 |     623720 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      99792 |      99792 |        0 |        0.0 |
| stm32       | light                                                 | STM32WB5MM-DK            | FLASH     |     461384 |     461384 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     141488 |     141488 |        0 |        0.0 |
| telink      | bridge-app                                            | tl7218x                  | FLASH     |     695522 |     695522 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     101860 |     101860 |        0 |        0.0 |
|             | light-app-ota-compress-lzma-factory-data              | tl3218x                  | FLASH     |     777394 |     777394 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      50120 |      50120 |        0 |        0.0 |
|             | light-app-ota-compress-lzma-shell-factory-data        | tl3218x                  | FLASH     |     767656 |     767656 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      40420 |      40420 |        0 |        0.0 |
|             | light-app-ota-shell-factory-data                      | tl7218x                  | FLASH     |     784030 |     756116 |   -27914 |       -3.6 |
|             |                                                       |                          | RAM       |     109308 |      97540 |   -11768 |      -10.8 |
|             | light-switch-app-ota-compress-lzma-factory-data       | tl7218x_retention        | FLASH     |     705244 |     683134 |   -22110 |       -3.1 |
|             |                                                       |                          | RAM       |      62620 |      51588 |   -11032 |      -17.6 |
|             | light-switch-app-ota-compress-lzma-shell-factory-data | tlsr9528a                | FLASH     |     741426 |     711584 |   -29842 |       -4.0 |
|             |                                                       |                          | RAM       |      85808 |      73408 |   -12400 |      -14.5 |
|             | light-switch-app-ota-shell-factory-data               | tl3218x_retention        | FLASH     |     709130 |     709130 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      37044 |      37044 |        0 |        0.0 |
|             | lighting-app-ota-factory-data                         | tlsr9118bdk40d           | FLASH     |     603166 |     603166 |        0 |        0.0 |
|             |                                                       |                          | RAM       |     148704 |     148704 |        0 |        0.0 |
|             | lighting-app-ota-rpc-factory-data-4mb                 | tlsr9518adk80d           | FLASH     |     818644 |     791118 |   -27526 |       -3.4 |
|             |                                                       |                          | RAM       |     107568 |      96396 |   -11172 |      -10.4 |
| tizen       | all-clusters-app                                      | arm                      | *unknown* |       5152 |       5152 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |    1791040 |    1791040 |        0 |        0.0 |
|             |                                                       |                          | RAM       |      94472 |      94472 |        0 |        0.0 |
|             | chip-tool-ubsan                                       | arm                      | *unknown* |      11836 |      11836 |        0 |        0.0 |
|             |                                                       |                          | FLASH     |   20061694 |   20061838 |      144 |        0.0 |
|             |                                                       |                          | RAM       |    8794384 |    8794424 |       40 |        0.0 |

</details>

author_association: NONE