8000 Camera TLS Certificate Management Cluster Impl by gmarcosb · Pull Request #39754 · project-chip/connectedhomeip · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Camera TLS Certificate Management Cluster Impl #39754

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

gmarcosb
Copy link
Contributor
@gmarcosb gmarcosb commented Jun 27, 2025

Summary

Camera TLS Certificate Management Cluster Implementation

Related issues

#38895

Testing

CI

Copy link
Contributor
@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the implementation of Camera TLS Certificate Management clusters. The changes involve adding new cluster definitions in .matter and .zap files, and providing their server-side C++ implementations. The review identified several areas for improvement, including ensuring proper handling of external storage options for attributes, addressing a critical potential null pointer dereference, resolving inconsistencies in attribute storage types, and completing the implementation of stubbed-out delegate methods. Additionally, attention should be paid to hardcoded limits and potential ID wrap-around issues.

Copy link
github-actions bot commented Jun 27, 2025

PR #39754: Size comparison from 06523c2 to 52a8109

Full report (26 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, efr32, qpg, stm32, telink) < 8000 td align="right">0
platform target config section 06523c2 52a8109 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1103168 1103168 0 0.0
RAM 179026 179026 0 0.0
bl702 lighting-app bl702+eth FLASH 656576 656576 0 0.0
RAM 134969 134969 0 0.0
bl702+wifi FLASH 833758 833758 0 0.0
RAM 124541 124541 0 0.0
bl706+mfd+rpc+littlefs FLASH 1066384 1066384 0 0.0
RAM 117389 117389 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 895930 895930 0 0.0
RAM 105676 105676 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 979648 979648 0 0.0
RAM 109876 109876 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 764056 764056 0 0.0
RAM 103360 103360 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 775764 775764 0 0.0
RAM 108536 108536 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 721856 721856 0 0.0
RAM 96940 96940 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 706156 706156 0 0.0
RAM 97140 97140 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549446 549446 0 0.0
RAM 205144 205144 0 0.0
lock CC3235SF_LAUNCHXL FLASH 582566 582566 0 0.0
RAM 205344 205344 0 0.0
efr32 lock-app BRD4187C FLASH 948132 948132 0 0.0
RAM 131524 131524 0 0.0
BRD4338a FLASH 745388 745380 -8 -0.0
RAM 206896 206896 0 0.0
window-app BRD4187C FLASH 1041424 1041416 -8 -0.0
RAM 127652 127652 0 0.0
qpg lighting-app qpg6200+debug FLASH 744784 744784 0 0.0
RAM 94212 94212 0 0.0
lock-app qpg6200+debug FLASH 754540 754540 0 0.0
RAM 94248 94248 0.0
stm32 light STM32WB5MM-DK FLASH 466228 466228 0 0.0
RAM 141368 141368 0 0.0
telink bridge-app tl7218x FLASH 703336 703336 0 0.0
RAM 93600 93600 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 795050 795050 0 0.0
RAM 44016 44016 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 783456 783456 0 0.0
RAM 100912 100912 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 710762 710762 0 0.0
RAM 54240 54240 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 747336 747336 0 0.0
RAM 77404 77404 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 724082 724082 0 0.0
RAM 36996 36996 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 603634 603634 0 0.0
RAM 112532 112532 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 819030 819034 4 0.0
RAM 99164 99164 0 0.0

@mergify mergify bot added the conflict label Jun 28, 2025
@mergify mergify bot removed the conflict label Jun 30, 2025
Copy link
github-actions bot commented Jun 30, 2025

PR #39754: Size comparison from 2a72083 to b533091

Full report (17 builds for cc13x4_26x4, cc32xx, efr32, telink)
platform target config section 2a72083 b533091 change % change
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 764080 764080 0 0.0
RAM 103368 103368 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 775772 775772 0 0.0
RAM 108536 108536 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 721880 721880 0 0.0
RAM 96940 96940 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 706180 706180 0 0.0
RAM 97148 97148 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549470 549470 0 0.0
RAM 205144 205144 0 0.0
lock CC3235SF_LAUNCHXL FLASH 582590 582590 0 0.0
RAM 205344 205344 0 0.0
efr32 lock-app BRD4187C FLASH 948164 948164 0 0.0
RAM 131528 131528 0 0.0
BRD4338a FLASH 745484 745476 -8 -0.0
RAM 206896 206896 0 0.0
window-app BRD4187C FLASH 1041520 1041512 -8 -0.0
RAM 127656 127656 0 0.0
telink bridge-app tl7218x FLASH 703352 703352 0 0.0
RAM 93600 93600 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 795066 795066 0 0.0
RAM 44016 44016 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 783472 783472 0 0.0
RAM 100912 100912 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 710778 710778 0 0.0
RAM 54240 54240 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 747352 747352 0 0.0
RAM 77404 77404 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 724098 724098 0 0.0
RAM 36996 36996 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 603650 603650 0 0.0
RAM 112532 112532 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 819046 819050 4 0.0
RAM 99164 99164 0 0.0

Copy link
github-actions bot commented Jun 30, 2025

PR #39754: Size comparison from 2a72083 to 8bbc081

Increases above 0.2%:

platform target config section 2a72083 8bbc081 change % change
linux all-clusters-app debug FLASH 6201300 6234140 32840 0.5
RAM 530400 531832 1432 0.3
Full report (69 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 2a72083 8bbc081 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1103302 1103302 0 0.0
RAM 179026 179026 0 0.0
bl702 lighting-app bl702+eth FLASH 656454 656454 0 0.0
RAM 134977 134977 0 0.0
bl702+wifi FLASH 833892 833892 0 0.0
RAM 124541 124541 0 0.0
bl706+mfd+rpc+littlefs FLASH 1066262 1066262 0 0.0
RAM 117397 117397 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 895808 895808 0 0.0
RAM 105676 105676 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 979526 979526 0 0.0
RAM 109876 109876 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 764080 764080 0 0.0
RAM 103368 103368 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 775772 775772 0 0.0
RAM 108536 108536 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 721880 721880 0 0.0
RAM 96940 96940 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 706180 706180 0 0.0
RAM 97148 97148 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549470 549470 0 0.0
RAM 205144 205144 0 0.0
lock CC3235SF_LAUNCHXL FLASH 582590 582590 0 0.0
RAM 205344 205344 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 663541 663541 0 0.0
RAM 77472 77472 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 683385 683385 0 0.0
RAM 80112 80112 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 683385 683385 0 0.0
RAM 80112 80112 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 640325 640325 0 0.0
RAM 72540 72540 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624917 624917 0 0.0
RAM 73784 73784 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 644545 644545 0 0.0
RAM 76336 76336 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 644545 644545 0 0.0
RAM 76336 76336 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 645853 645853 0 0.0
RAM 76784 76784 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 665561 665561 0 0.0
RAM 79336 79336 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 665561 665561 0 0.0
RAM 79336 79336 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 620529 620529 0 0.0
RAM 70888 70888 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 640381 640381 0 0.0
RAM 73520 73520 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 640381 640381 0 0.0
RAM 73520 73520 0 0.0
efr32 lock-app BRD4187C FLASH 948164 948164 0 0.0
RAM 131528 131528 0 0.0
BRD4338a FLASH 745484 745476 -8 -0.0
RAM 206896 206896 0 0.0
window-app BRD4187C FLASH 1041520 1041512 -8 -0.0
RAM 127656 127656 0 0.0
linux air-purifier-app debug 8000 unknown 4848 4848 0 0.0
FLASH 2798086 2798086 0 0.0
RAM 117384 117384 0 0.0
all-clusters-app debug unknown 5664 5664 0 0.0
FLASH 6201300 6234140 32840 0.5
RAM 530400 531832 1432 0.3
all-clusters-minimal-app debug unknown 5528 5528 0 0.0
FLASH 5475456 5475456 0 0.0
RAM 228088 228088 0 0.0
bridge-app debug unknown 5560 5560 0 0.0
FLASH 4808736 4808736 0 0.0
RAM 207776 207776 0 0.0
camera-app debug unknown 8968 8968 0 0.0
FLASH 6935003 6935003 0 0.0
RAM 230088 230088 0 0.0
camera-controller debug unknown 9184 9184 0 0.0
FLASH 14321691 14321691 0 0.0
RAM 658968 658968 0 0.0
chip-tool debug unknown 6240 6240 0 0.0
FLASH 14660051 14660051 0 0.0
RAM 652520 652520 0 0.0
chip-tool-ipv6only arm64 unknown 40528 40528 0 0.0
FLASH 12645279 12645279 0 0.0
RAM 698784 698784 0 0.0
fabric-admin debug unknown 5920 5920 0 0.0
FLASH 12732767 12732767 0 0.0
RAM 651512 651512 0 0.0
fabric-bridge-app debug unknown 4808 4808 0 0.0
FLASH 4594998 4594998 0 0.0
RAM 193536 193536 0 0.0
fabric-sync debug unknown 5056 5056 0 0.0
FLASH 5744029 5744029 0 0.0
RAM 490864 490864 0 0.0
lighting-app debug+rpc+ui unknown 6272 6272 0 0.0
FLASH 5657649 5657649 0 0.0
RAM 209928 209928 0 0.0
lock-app debug unknown 5488 5488 0 0.0
FLASH 4838930 4838930 0 0.0
RAM 197160 197160 0 0.0
ota-provider-app debug unknown 4848 4848 0 0.0
FLASH 4447664 4447664 0 0.0
RAM 186224 186224 0 0.0
ota-requestor-app debug unknown 4728 4728 0 0.0
FLASH 4519822 4519822 0 0.0
RAM 189064 189064 0 0.0
shell debug unknown 4248 4248 0 0.0
FLASH 3080748 3080972 224 0.0
RAM 147328 147488 160 0.1
thermostat-no-ble arm64 unknown 9800 9800 0 0.0
FLASH 4236247 4236247 0 0.0
RAM 233392 233392 0 0.0
tv-app debug unknown 5824 5824 0 0.0
FLASH 6108269 6108269 0 0.0
RAM 615096 615096 0 0.0
tv-casting-app debug unknown 5336 5336 0 0.0
FLASH 12809805 12809805 0 0.0
RAM 768608 768608 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 889212 889468 256 0.0
RAM 166162 166170 8 0.0
nrf7002dk_nrf5340_cpuapp FLASH 897256 897480 224 0.0
RAM 145100 145108 8 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 859740 859740 0 0.0
RAM 141049 141049 0 0.0
nxp contact mcxw71+release FLASH 625824 625824 0 0.0
RAM 63164 63164 0 0.0
lock mcxw71+release FLASH 777056 777056 0 0.0
RAM 67820 67820 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1632916 1633172 256 0.0
RAM 211104 211112 8 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1577108 1577108 0 0.0
RAM 208472 208472 0 0.0
light cy8ckit_062s2_43012 FLASH 1449708 1449708 0 0.0
RAM 197184 197184 0 0.0
lock cy8ckit_062s2_43012 FLASH 1482076 1482076 0 0.0
RAM 224904 224904 0 0.0
qpg lighting-app qpg6200+debug FLASH 744800 744800 0 0.0
RAM 94220 94220 0 0.0
lock-app qpg6200+debug FLASH 754572 754572 0 0.0
RAM 94248 94248 0 0.0
stm32 light STM32WB5MM-DK FLASH 466252 466252 0 0.0
RAM 141376 141376 0 0.0
telink bridge-app tl7218x FLASH 703352 703352 0 0.0
RAM 93600 93600 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 795066 795066 0 0.0
RAM 44016 44016 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 783472 783472 0 0.0
RAM 100912 100912 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 710778 710778 0 0.0
RAM 54240 54240 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 747352 747352 0 0.0
RAM 77404 77404 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 724098 724098 0 0.0
RAM 36996 36996 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 603650 603650 0 0.0
RAM 112532 112532 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 819046 819050 4 0.0
RAM 99164 99164 0 0.0
tizen all-clusters-app arm unknown 5128 5128 0 0.0
FLASH 1698240 1698416 176 0.0
RAM 91464 91580 116 0.1
chip-tool-ubsan arm unknown 20692 20692 0 0.0
FLASH 20943266 20943266 0 0.0
RAM 9111456 9111456 0 0.0

Copy link
github-actions bot commented Jun 30, 2025

PR #39754: Size comparison from e0f8e39 to ca118ff

Increases above 0.2%:

platform target config section e0f8e392 ca118ff change % change
linux all-clusters-app debug FLASH 6201300 6237854 36554 0.6
RAM 530400 531864 1464 0.3
Full report (66 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, linux, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section e0f8e392 ca118ff change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1103302 1103302 0 0.0
RAM 179026 179026 0 0.0
bl702 lighting-app bl702+eth FLASH 656454 656454 0 0.0
RAM 134977 134977 0 0.0
bl702+wifi FLASH 833892 833892 0 0.0
RAM 124541 124541 0 0.0
bl706+mfd+rpc+littlefs FLASH 1066262 1066262 0 0.0
RAM 117397 117397 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 895808 895808 0 0.0
RAM 105676 105676 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 979526 979526 0 0.0
RAM 109876 109876 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 764080 764080 0 0.0
RAM 103368 103368 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 775772 775772 0 0.0
RAM 108536 108536 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 721880 721880 0 0.0
RAM 96940 96940 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 706180 706180 0 0.0
RAM 97148 97148 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549470 549470 0 0.0
RAM 205144 205144 0 0.0
lock CC3235SF_LAUNCHXL FLASH 582590 582590 0 0.0
RAM 205344 205344 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 663541 663541 0 0.0
RAM 77472 77472 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 683385 683385 0 0.0
RAM 80112 80112 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 683385 683385 0 0.0
RAM 80112 80112 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 640325 640325 0 0.0
RAM 72540 72540 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624917 624917 0 0.0
RAM 73784 73784 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 644545 644545 0 0.0
RAM 76336 76336 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 644545 644545 0 0.0
RAM 76336 76336 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 645853 645853 0 0.0
RAM 76784 76784 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 665561 665561 0 0.0
RAM 79336 79336 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 665561 665561 0 0.0
RAM 79336 79336 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 620529 620529 0 0.0
RAM 70888 70888 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 640381 640381 0 0.0
RAM 73520 73520 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 640381 640381 0 0.0
RAM 73520 73520 0 0.0
efr32 lock-app BRD4187C FLASH 948164 948164 0 0.0
RAM 131528 131528 0 0.0
BRD4338a FLASH 745484 745476 -8 -0.0
RAM 206896 206896 0 0.0
window-app BRD4187C FLASH 1041520 1041512 -8 -0.0
RAM 127656 127656 0 0.0
linux air-purifier-app debug unknown 4848 4848 0 0.0
FLASH 2798086 2798086 0 0.0
RAM 117384 117384 0 0.0
all-clusters-app debug unknown 5664 5664 0 0.0
FLASH 6201300 6237854 36554 0.6
RAM 530400 531864 1464 0.3
all-clusters-minimal-app debug unknown 5528 5528 0 0.0
FLASH 5475456 5475456 0 0.0
RAM 228088 228088 0 0.0
bridge-app debug unknown 5560 5560 0 0.0
FLASH 4808736 4808736 0 0.0
RAM 207776 207776 0 0.0
camera-app debug unknown 8968 8968 0 0.0
FLASH 6935003 6935003 0 0.0
RAM 230088 230088 0 0.0
camera-controller debug unknown 9184 9184 0 0.0
FLASH 14321691 14321691 0 0.0
RAM 658968 658968 0 0.0
chip-tool debug unknown 6240 6240 0 0.0
FLASH 14660051 14660051 0 0.0
RAM 652520 652520 0 0.0
chip-tool-ipv6only arm64 unknown 40528 40528 0 0.0
FLASH 12645279 12645279 0 0.0
RAM 698784 698784 0 0.0
fabric-admin debug unknown 5920 5920 0 0.0
FLASH 12732767 12732767 0 0.0
RAM 651512 651512 0 0.0
fabric-bridge-app debug unknown 4808 4808 0 0.0
FLASH 4594998 4594998 0 0.0
RAM 193536 193536 0 0.0
fabric-sync debug unknown 5056 5056 0 0.0
FLASH 5744029 5744029 0 0.0
RAM 490864 490864 0 0.0
lighting-app debug+rpc+ui unknown 6272 6272 0 0.0
FLASH 5657649 5657649 0 0.0
RAM 209928 209928 0 0.0
lock-app debug unknown 5488 5488 0 0.0
FLASH 4838930 4838930 0 0.0
RAM 197160 197160 0 0.0
ota-provider-app debug unknown 4848 4848 0 0.0
FLASH 4447664 4447664 0 0.0
RAM 186224 186224 0 0.0
ota-requestor-app debug unknown 4728 4728 0 0.0
FLASH 4519822 4519822 0 0.0
RAM 189064 189064 0 0.0
shell debug unknown 4248 4248 0 0.0
FLASH 3080748 3080972 224 0.0
RAM 147328 147488 160 0.1
thermostat-no-ble arm64 unknown 9800 9800 0 0.0
FLASH 4236247 4236247 0 0.0
RAM 233392 233392 0 0.0
tv-app debug unknown 5824 5824 0 0.0
FLASH 6108269 6108269 0 0.0
RAM 615096 615096 0 0.0
tv-casting-app debug unknown 5336 5336 0 0.0
FLASH 12809805 12809805 0 0.0
RAM 768608 768608 0 0.0
nxp contact mcxw71+release FLASH 625824 625824 0 0.0
RAM 63164 63164 0 0.0
lock mcxw71+release FLASH 777056 777056 0 0.0
RAM 67820 67820 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1632916 1633172 256 0.0
RAM 211104 211112 8 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1577108 1577108 0 0.0
RAM 208472 208472 0 0.0
light cy8ckit_062s2_43012 FLASH 1449708 1449708 0 0.0
RAM 197184 197184 0 0.0
lock cy8ckit_062s2_43012 FLASH 1482076 1482076 0 0.0
RAM 224904 224904 0 0.0
qpg lighting-app qpg6200+debug FLASH 744800 744800 0 0.0
RAM 94220 94220 0 0.0
lock-app qpg6200+debug FLASH 754572 754572 0 0.0
RAM 94248 94248 0 0.0
stm32 light STM32WB5MM-DK FLASH 466252 466252 0 0.0
RAM 141376 141376 0 0.0
telink bridge-app tl7218x FLASH 703352 703352 0 0.0
RAM 93600 93600 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 795066 795066 0 0.0
RAM 44016 44016 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 783472 783472 0 0.0
RAM 100912 100912 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 710778 710778 0 0.0
RAM 54240 54240 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 747352 747352 0 0.0
RAM 77404 77404 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 724098 724098 0 0.0
RAM 36996 36996 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 603650 603650 0 0.0
RAM 112532 112532 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 819046 819050 4 0.0
RAM 99164 99164 0 0.0
tizen all-clusters-app arm unknown 5128 5128 0 0.0
FLASH 1698240 1698416 176 0.0
RAM 91464 91580 116 0.1
chip-tool-ubsan arm unknown 20692 20692 0 0.0
FLASH 20943266 20943266 0 0.0
RAM 9111456 9111456 0 0.0

ReturnErrorOnFailure(DataModel::Encode(writer, TLV::ContextTag(Fields::kClientCertificate), data.clientCertificate));
ReturnErrorOnFailure(
DataModel::Encode(writer, TLV::ContextTag(Fields::kIntermediateCertificates), data.intermediateCertificates));
// Fields::kFabricIndex filled from table in GetClientCertificateEntry
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems to be a different encoding than the IM encoding, with different invariants.... but the naming makes it sound like the same thing.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry not sure I understood what you meant - what do you mean by "different encoding than the IM encoding, with different invariants"?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean that in the normal IM wire encoding for these structs, there is always a FabricIndex, for example.

Comment on lines +17 to +18
"tls-certificate-management-server.cpp",
"tls-certificate-management-server.h",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is app-config-dependent in these files?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just copied the pattern used by other clusters so deferring to @andreilitvin, but I believe this is due to the include of app/SafeAttributePersistenceProvider.h

Copy link
Contributor
@bzbarsky-apple bzbarsky-apple Jul 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think SafeAttributePersistenceProvider is app-config-dependent.... and other clusters just did mass-changes to put everything in "app config dependent" until they get converted to the new setup...

Though I guess this cluster is not using "the new setup" either, but I am not sure where the dependency on app config is, if anywhere.

switch (aPath.mAttributeId)
{
default:
// Unknown attribute
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we overriding this at all, then?

* @param[in] loadedCallback lambda to execute for each certificate. If this function returns an error result,
* iteration stops and returns that same error result.
*/
virtual CHIP_ERROR LoadedRootCerts(EndpointId matterEndpoint, FabricIndex fabric,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't quite understand why this is "Loaded" in the past tense. It sounds like a notification, but that's not what this is, right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Somewhat - basically it loads the cert into memory from persistence, thus it is a callback/notification of "the cert has been loaded from persistence -> memory"

But I can change it to something less weird, maybe ForEachRootCert?

*
* @param[in] matterEndpoint The matter endpoint to query against
* @param[in] fingerprint The fingerprint of the root certificate to find.
* @param[out] loadedCallback The lambda to execute with the loaded root cert.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this lambda need to be called synchronously before LookupRootCert returns (if it's called at all)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, there's a doc in @brief: The certificates passed to loadedCallback has a guaranteed lifetime of the method call.

*
* @param[in] matterEndpoint The matter endpoint to query against
* @param[in] fingerprint The fingerprint of the root certificate to find.
* @param[out] loadedCallback The lambda to execute with the generated client CSR.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This must be called synchronously before GenerateClientCsr() returns, right?

@mergify mergify bot added the conflict label Jul 2, 2025
@gmarcosb gmarcosb force-pushed the camera-tls-cert branch 2 times, most recently from d3f1ece to 72f5c17 Compare July 8, 2025 20:48
@mergify mergify bot removed the conflict label Jul 8, 2025
Copy link
github-actions bot commented Jul 8, 2025

PR #39754: Size comparison from 07fe740 to 2b569b1

Full report (13 builds for bl602, bl702, bl702l, cc13x4_26x4, linux, stm32)
platform target config section 07fe740 2b569b1 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1103326 1103326 0 0.0
RAM 179026 179026 0 0.0
bl702 lighting-app bl702+eth FLASH 656474 656474 0 0.0
RAM 134977 134977 0 0.0
bl702+wifi FLASH 833912 833912 0 0.0
RAM 124541 124541 0 0.0
bl706+mfd+rpc+littlefs FLASH 1066286 1066286 0 0.0
RAM 117397 117397 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 895832 895832 0 0.0
RAM 105676 105676 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 979550 979550 0 0.0
RAM 109876 109876 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 764096 764096 0 0.0
RAM 103368 103368 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 775772 775772 0 0.0
RAM 108536 108536 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 721904 721904 0 0.0
RAM 96940 96940 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 706204 706204 0 0.0
RAM 97148 97148 0 0.0
linux chip-tool-ipv6only arm64 unknown 40648 40648 0 0.0
FLASH 12698847 12698847 0 0.0
RAM 701176 701176 0 0.0
thermostat-no-ble arm64 unknown 9832 9832 0 0.0
FLASH 4238655 4238655 0 0.0
RAM 233304 233304 0 0.0
stm32 light STM32WB5MM-DK FLASH 466276 466276 0 0.0
RAM 141376 141376 0 0.0

Copy link
github-actions bot commented Jul 8, 2025

PR #39754: Size comparison from 07fe740 to 653e399

Increases above 0.2%:

platform target config section 07fe740 653e399 change % change
linux all-clusters-app debug FLASH 6205432 6299246 93814 1.5
RAM 531216 545960 14744 2.8
shell debug RAM 147344 147664 320 0.2
Full report (69 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 07fe740 653e399 change % change
bl602 lighting-app bl602+mfd+littlefs+rpc FLASH 1103326 1103326 0 0.0
RAM 179026 179026 0 0.0
bl702 lighting-app bl702+eth FLASH 656474 656474 0 0.0
RAM 134977 134977 0 0.0
bl702+wifi FLASH 833912 833912 0 0.0
RAM 124541 124541 0 0.0
bl706+mfd+rpc+littlefs FLASH 1066286 1066286 0 0.0
RAM 117397 117397 0 0.0
bl702l contact-sensor-app bl702l+mfd+littlefs FLASH 895832 895832 0 0.0
RAM 105676 105676 0 0.0
lighting-app bl702l+mfd+littlefs FLASH 979550 979550 0 0.0
RAM 109876 109876 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 764096 764096 0 0.0
RAM 103368 103368 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 775772 775772 0 0.0
RAM 108536 108536 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 721904 721904 0 0.0
RAM 96940 96940 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 706204 706204 0 0.0
RAM 97148 97148 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549482 549482 0 0.0
RAM 205144 205144 0 0.0
lock CC3235SF_LAUNCHXL FLASH 582602 582602 0 0.0
RAM 205344 205344 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 663549 663549 0 0.0
RAM 77472 77472 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 683401 683401 0 0.0
RAM 80112 80112 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 683401 683401 0 0.0
RAM 80112 80112 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 640341 640341 0 0.0
RAM 72540 72540 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 624933 624933 0 0.0
RAM 73784 73784 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 644569 644569 0 0.0
RAM 76336 76336 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 644569 644569 0 0.0
RAM 76336 76336 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 645885 645885 0 0.0
RAM 76784 76784 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 665601 665601 0 0.0
RAM 79336 79336 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 665601 665601 0 0.0
RAM 79336 79336 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 620561 620561 0 0.0
RAM 70888 70888 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 640413 640413 0 0.0
RAM 73520 73520 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 640413 640413 0 0.0
RAM 73520 73520 0 0.0
efr32 lock-app BRD4187C FLASH 948196 948196 0 0.0
RAM 131528 131528 0 0.0
BRD4338a FLASH 749684 749676 -8 -0.0
RAM 203072 203072 0 0.0
window-app BRD4187C FLASH 1041528 1041520 -8 -0.0
RAM 127656 127656 0 0.0
linux air-purifier-app debug unknown 4856 4856 0 0.0
FLASH 2801826 2801826 0 0.0
RAM 117320 117320 0 0.0
all-clusters-app debug unknown 5672 5680 8 0.1
FLASH 6205432 6299246 93814 1.5
RAM 531216 545960 14744 2.8
all-clusters-minimal-app debug unknown 5536 5536 0 0.0
FLASH 5479092 5479306 214 0.0
RAM 228008 228168 160 0.1
bridge-app debug unknown 5568 5568 0 0.0
FLASH 4812438 4812438 0 0.0
RAM 207712 207712 0 0.0
camera-app debug unknown 8976 8976 0 0.0
FLASH 6939291 6939291 0 0.0
RAM 230024 230024 0 0.0
camera-controller debug unknown 9216 9216 0 0.0
FLASH 14374011 14374011 0 0.0
RAM 661368 661368 0 0.0
chip-tool debug unknown 6272 6272 0 0.0
FLASH 14721561 14721561 0 0.0
RAM 654880 654880 0 0.0
chip-tool-ipv6only arm64 unknown 40648 40648 0 0.0
FLASH 12698847 12698847 0 0.0
RAM 701176 701176 0 0.0
fabric-admin debug unknown 5952 5952 0 0.0
FLASH 12785013 12785013 0 0.0
RAM 653912 653912 0 0.0
fabric-bridge-app debug unknown 4816 4816 0 0.0
FLASH 4598654 4598654 0 0.0
RAM 193424 193424 0 0.0
fabric-sync debug unknown 5056 5056 0 0.0
FLASH 5746381 5746381 0 0.0
RAM 491728 491728 0 0.0
lighting-app debug+rpc+ui unknown 6280 6280 0 0.0
FLASH 5661361 5661361 0 0.0
RAM 209848 209848 0 0.0
lock-app debug unknown 5488 5488 0 0.0
FLASH 4841044 4841044 0 0.0
RAM 197192 197192 0 0.0
ota-provider-app debug unknown 4856 4856 0 0.0
FLASH 4451252 4451252 0 0.0
RAM 186112 186112 0 0.0
ota-requestor-app debug unknown 4736 4736 0 0.0
FLASH 4523376 4523376 0 0.0
RAM 188984 188984 0 0.0
shell debug unknown 4288 4288 0 0.0
FLASH 3081260 3081836 576 0.0
RAM 147344 147664 320 0.2
thermostat-no-ble arm64 unknown 9832 9832 0 0.0
FLASH 4238655 4238655 0 0.0
RAM 233304 233304 0 0.0
tv-app debug unknown 5824 5824 0 0.0
FLASH 6110653 6110653 0 0.0
RAM 615976 615976 0 0.0
tv-casting-app debug unknown 5352 5352 0 0.0
FLASH 12875565 12875565 0 0.0
RAM 771472 771472 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 889236 889488 252 0.0
RAM 166162 166170 8 0.0
nrf7002dk_nrf5340_cpuapp FLASH 897264 897480 216 0.0
RAM 145100 145108 8 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 859760 859760 0 0.0
RAM 141049 141049 0 0.0
nxp contact mcxw71+release FLASH 625840 625840 0 0.0
RAM 63164 63164 0 0.0
lock mcxw71+release FLASH 777080 777080 0 0.0
RAM 67820 67820 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1632948 1633404 456 0.0
RAM 211104 211112 8 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1577140 1577348 208 0.0
RAM 208472 208472 0 0.0
light cy8ckit_062s2_43012 FLASH 1449724 1449724 0 0.0
RAM 197184 197184 0 0.0
lock cy8ckit_062s2_43012 FLASH 1482108 1482108 0 0.0
RAM 224904 224904 0 0.0
qpg lighting-app qpg6200+debug FLASH 744824 744824 0 0.0
RAM 94220 94220 0 0.0
lock-app qpg6200+debug FLASH 754580 754580 0 0.0
RAM 94248 94248 0 0.0
stm32 light STM32WB5MM-DK FLASH 466276 466276 0 0.0
RAM 141376 141376 0 0.0
telink bridge-app tl7218x FLASH 703360 703360 0 0.0
RAM 93600 93600 0 0.0
light-app-ota-compress-lzma-shell-factory-data tl3218x FLASH 795074 795074 0 0.0
RAM 44016 44016 0 0.0
light-app-ota-shell-factory-data tl7218x FLASH 783480 783480 0 0.0
RAM 100912 100912 0 0.0
light-switch-app-ota-compress-lzma-factory-data tl7218x_retention FLASH 710786 710786 0 0.0
RAM 54240 54240 0 0.0
light-switch-app-ota-compress-lzma-shell-factory-data tlsr9528a FLASH 747360 747360 0 0.0
RAM 77404 77404 0 0.0
light-switch-app-ota-factory-data tl3218x_retention FLASH 724106 724106 0 0.0
RAM 36996 36996 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 603658 603658 0 0.0
RAM 112532 112532 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 819054 819058 4 0.0
RAM 99164 99164 0 0.0
tizen all-clusters-app arm unknown 5096 5100 4 0.1
FLASH 1698804 1699172 368 0.0
RAM 91444 91636 192 0.2
chip-tool-ubsan arm unknown 20752 20752 0 0.0
FLASH 21031146 21031146 0 0.0
RAM 9154448 9154448 0 0.0

@gmarcosb gmarcosb marked this pull request as ready for review July 9, 2025 21:52
Copy link
github-actions bot commented Jul 9, 2025

PR #39754: Size comparison from 5dc7824 to b79c696

Full report (3 builds for cc32xx, stm32)
platform target config section 5dc7824 b79c696 change % change
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 549482 549482 0 0.0
RAM 205144 205144 0 0.0
lock CC3235SF_LAUNCHXL FLASH 582602 582602 0 0.0
RAM 205344 205344 0 0.0
stm32 light STM32WB5MM-DK FLASH 466276 466276 0 0.0
RAM 141376 141376 0 0.0

Comment on lines +123 to +126
TLSCertStruct::Type idOnlyCert;
idOnlyCert.fabricIndex = cert.fabricIndex;
idOnlyCert.caid = cert.caid;
return encoder.Encode(idOnlyCert);
Copy link
Contributor
@samadDotDev samadDotDev Jul 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this be "id only cert" when retrieved over a transport that isn't capable of large transport, otherwise encode the whole thing including the cert contents?

Comment on lines +131 to +140
TlsCertificateManagementServer::EncodeProvisionedClientCertificates(EndpointId matterEndpoint, FabricIndex fabric,
const AttributeValueEncoder::ListEncodeHelper & encoder)
{
return mDelegate.LoadedClientCerts(matterEndpoint, fabric, [&](auto & cert) -> CHIP_ERROR {
TLSClientCertificateDetailStruct::Type idOnlyCert;
idOnlyCert.fabricIndex = cert.fabricIndex;
idOnlyCert.ccdid = cert.ccdid;
return encoder.Encode(idOnlyCert);
});
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same thing here, the client cert contents should be encoded when the underlying transport supports the large payload

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the test plan for this script documented somewhere? I see an open skeleton TP PR but that doesn't seem to have any of the steps exercised here

Comment on lines +185 to +187
for cert in attribute_certs:
cert_ids.add(cert.caid)
asserts.assert_is_none(cert.certificate, "ProvisionedRootCertificates SHALL NOT include certificate ")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this be asserted only after a step/pre-req that ensures the cert content is only emitted when a non-TCP transport is in use? and then possibly another test step that "upgrades"/re-establishes the session to over a large payload capable one and assert that certificate contents are returned correctly

Comment on lines +207 to +209
ProvisionRootCertificateResponse::Type response;
auto status = mDelegate.ProvisionRootCert(ctx.mRequestPath.mEndpointId, ctx.mCommandHandler.GetAccessingFabricIndex(), req,
response.caid);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before forwarding to the delegate, the provisioning handler should also check if the same cert already exists which will return CertificateAlreadyInstalled error.

If the CAID is null:
...
If the Node already has the certificate installed:
Fail the command with a cluster-specific status code of CertificateAlreadyInstalled, and
end processing with no other side effects.

We could possibly load the certs here from the delegate (as also done for the read encoding above) and check for existence, or return this cluster specific error from the delegate. But I think the former may be the preferred approach just so we have it at a common server cluster handling spot and don't rely on cert tests to validate if various apps implementing the delegate did the right thing.

Comment on lines +318 to +328
void TlsCertificateManagementServer::HandleProvisionClientCertificate(HandlerContext & ctx,
const ProvisionClientCertificate::DecodableType & req)
{
10000 ChipLogDetail(Zcl, "TlsCertificateManagement: ProvisionClientCertificate");

VerifyOrReturn(req.ccdid <= kMaxClientCertId, ctx.mCommandHandler.AddStatus(ctx.mRequestPath, Status::ConstraintError));
const auto & detail = req.clientCertificateDetails;
VerifyOrReturn(!detail.clientCertificate.HasValue() || detail.clientCertificate.Value().size() <= kSpecMaxCertBytes,
ctx.mCommandHandler.AddStatus(ctx.mRequestPath, Status::ConstraintError));

auto status = mDelegate.ProvisionClientCert(ctx.mRequestPath.mEndpointId, ctx.mCommandHandler.GetAccessingFabricIndex(), req);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same thing with client certificate provisioning, the existing cert should be checked before forwarding to the delegate and should return the spec defined error.

In the current form, it ends up allocating duplicate certificate entries and allocating a new ID to each of them.

@@ -69,6 +69,7 @@ class ScopedMemoryBufferBase
/** Check if a buffer is valid */
explicit operator bool() const { return mBuffer != nullptr; }
bool operator!() const { return mBuffer == nullptr; }
inline bool IsNull() const { return mBuffer == nullptr; }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could we split out some of the support changes in separate PRs?

These seem to be independent (but required) by the TLS cluster.

That way I can move obviously see (and ask for) tests for these support class changes...

/// RAII class for allocation that guarantees that Free() will be called.
/// This is effectively a simple unique_ptr, except calling Platform::Delete instead of delete
template <typename T, class MemoryManagement = Impl::PlatformMemoryManagement>
class AutoDelete : private Impl::ScopedMemoryBufferBase<MemoryManagement>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unit tests please

@@ -195,6 +201,49 @@ class ScopedMemoryBuffer : public Impl::ScopedMemoryBufferBase<MemoryManagement>
}
};

/// RAII class for allocation that guarantees that Free() will be called.
/// This is effectively a simple unique_ptr, except calling Platform::Delete instead of delete
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How is this different from Platform::UniquePtr?

I agree with @andy31415: can we put these core changes into a separate PR so they can be reviewed on their own?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
0