Skip to content
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

Updated Certification Declaration Format to Match the Spec #10825

Merged

Conversation

emargolis
Copy link
Contributor

Problem

CD format in SDK doesn't match the latest spec updates.

Change overview

-- Updated CD format to match the latest spec
-- Added new test cases
-- Updated TLV decoding to utilize that fact that reader.get() checks for correct TLV Type.

Testing

Existing and new unit tests

@github-actions
Copy link

github-actions bot commented Oct 22, 2021

PR #10825: Size comparison from 0c16976 to 2a87b60

22 builds (for efr32, k32w, linux, mbed, p6, qpg, telink)
platform target config section 0c16976 2a87b60 change % change
efr32 lighting-app BRD4161A .bss 118028 118028 0 0.0
.data 1800 1800 0 0.0
.text 784328 784328 0 0.0
lock-app BRD4161A .bss 115884 115884 0 0.0
.data 1760 1760 0 0.0
.text 763456 763456 0 0.0
window-app BRD4161A .bss 116204 116204 0 0.0
.data 1764 1764 0 0.0
.text 764380 764380 0 0.0
lighting-app BRD4161A+rpc .bss 131356 131356 0 0.0
.data 1852 1852 0 0.0
.text 764028 764028 0 0.0
k32w lock-app k32w061+debug .bss 69060 69060 0 0.0
.data 1864 1864 0 0.0
.text 516068 516068 0 0.0
shell k32w061+debug .bss 55080 55080 0 0.0
.data 672 672 0 0.0
.text 359544 359544 0 0.0
lighting-app k32w061+se05x+release .bss 78592 78592 0 0.0
.data 1900 1900 0 0.0
.text 614836 614836 0 0.0
linux all-clusters-app debug .bss 52208 52208 0 0.0
.data 978 978 0 0.0
.data.rel.ro 60384 60384 0 0.0
.dynamic 592 592 0 0.0
.got 4088 4088 0 0.0
.init 27 27 0 0.0
.init_array 512 512 0 0.0
.rodata 136405 136405 0 0.0
.text 1352290 1352290 0 0.0
chip-tool debug .bss 17712 17712 0 0.0
.data 1584 1584 0 0.0
.data.rel.ro 93504 93504 0 0.0
.dynamic 592 592 0 0.0
.got 4368 4368 0 0.0
.init 27 27 0 0.0
.init_array 416 416 0 0.0
.rodata 193860 193860 0 0.0
.text 3502693 3502693 0 0.0
ota-provider-app debug .bss 37472 37472 0 0.0
.data 752 752 0 0.0
.data.rel.ro 24488 24488 0 0.0
.dynamic 592 592 0 0.0
.got 4016 4016 0 0.0
.init 27 27 0 0.0
.init_array 440 440 0 0.0
.rodata 110248 110248 0 0.0
.text 1022226 1022226 0 0.0
ota-requestor-app debug .bss 205728 205728 0 0.0
.data 752 752 0 0.0
.data.rel.ro 25800 25800 0 0.0
.dynamic 592 592 0 0.0
.got 4144 4144 0 0.0
.init 27 27 0 0.0
.init_array 512 512 0 0.0
.rodata 128392 128392 0 0.0
.text 1140786 1140786 0 0.0
shell debug .bss 16136 16136 0 0.0
.data 242 242 0 0.0
.data.rel.ro 36496 36496 0 0.0
.dynamic 592 592 0 0.0
.got 3528 3528 0 0.0
.init 27 27 0 0.0
.init_array 336 336 0 0.0
.rodata 76463 76463 0 0.0
.text 597346 597346 0 0.0
tv-app debug .bss 216592 216592 0 0.0
.data 2032 2032 0 0.0
.data.rel.ro 57408 57408 0 0.0
.dynamic 592 592 0 0.0
.got 4408 4408 0 0.0
.init 27 27 0 0.0
.init_array 608 608 0 0.0
.rodata 152904 152904 0 0.0
.text 1452706 1452706 0 0.0
bridge-app debug+rpc .bss 52912 52912 0 0.0
.data 976 976 0 0.0
.data.rel.ro 27112 27112 0 0.0
.dynamic 592 592 0 0.0
.got 3952 3952 0 0.0
.init 27 27 0 0.0
.init_array 400 400 0 0.0
.rodata 110748 110748 0 0.0
.text 1063173 1063173 0 0.0
lighting-app debug+rpc .bss 42232 42232 0 0.0
.data 1106 1106 0 0.0
.data.rel.ro 53808 53808 0 0.0
.dynamic 608 608 0 0.0
.got 4112 4112 0 0.0
.init 27 27 0 0.0
.init_array 528 528 0 0.0
.rodata 127921 127921 0 0.0
.text 1261170 1261170 0 0.0
mbed lighting-app CY8CPROTO_062_4343W+release .bss 172100 172100 0 0.0
.data 5464 5464 0 0.0
.heap 858880 858880 0 0.0
.text 1220088 1220088 0 0.0
lock-app CY8CPROTO_062_4343W+release .bss 171020 171020 0 0.0
.data 5432 5432 0 0.0
.heap 859992 859992 0 0.0
.text 1197984 1197984 0 0.0
p6 lock-app default .bss 68216 68216 0 0.0
.data 2416 2416 0 0.0
.heap 962712 962712 0 0.0
.text 1126688 1126688 0 0.0
qpg lighting-app qpg6100+debug .bss 53552 53552 0 0.0
.data 1004 1004 0 0.0
.text 485972 485972 0 0.0
lock-app qpg6100+debug .bss 52496 52496 0 0.0
.data 960 960 0 0.0
.text 462060 462060 0 0.0
persistent-storage-app qpg6100+debug .bss 27840 27840 0 0.0
.data 372 372 0 0.0
.text 149896 149896 0 0.0
telink lighting-app tlsr9518adk80d bss 70996 70996 0 0.0
noinit 33216 33216 0 0.0
text 457630 457630 0 0.0
12 builds (for esp32, nrfconnect)
platform target config section 0c16976 2a87b60 change % change
esp32 all-clusters-app c3devkit .dram0.bss 60296 60296 0 0.0
.dram0.data 16440 16440 0 0.0
.flash.rodata 199864 199864 0 0.0
.flash.text 874330 874330 0 0.0
.iram0.text 57564 57564 0 0.0
m5stack .dram0.bss 62800 62800 0 0.0
.dram0.data 32084 32084 0 0.0
.flash.rodata 208600 208600 0 0.0
.flash.text 905263 905263 0 0.0
.iram0.text 125115 125115 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 bss 113176 113176 0 0.0
rodata 98076 98076 0 0.0
text 577104 577104 0 0.0
lock-app nrf52840dk_nrf52840 bss 112244 112244 0 0.0
rodata 94412 94412 0 0.0
text 558592 558592 0 0.0
pigweed-app nrf52840dk_nrf52840 bss 51824 51824 0 0.0
rodata 45776 45776 0 0.0
text 339456 339456 0 0.0
pump-app nrf52840dk_nrf52840 bss 112312 112312 0 0.0
rodata 95396 95396 0 0.0
text 561744 561744 0 0.0
pump-controller-app nrf52840dk_nrf52840 bss 112252 112252 0 0.0
rodata 94472 94472 0 0.0
text 558384 558384 0 0.0
shell nrf52840dk_nrf52840 bss 109072 109072 0 0.0
rodata 72524 72524 0 0.0
text 520208 520208 0 0.0
lighting-app nrf52840dk_nrf52840+rpc bss 109420 109420 0 0.0
rodata 88856 88856 0 0.0
text 550296 550296 0 0.0
nrf5340dk_nrf5340_cpuapp bss 114552 114552 0 0.0
rodata 93316 93316 0 0.0
text 506572 506572 0 0.0
lock-app nrf5340dk_nrf5340_cpuapp bss 113616 113616 0 0.0
rodata 89672 89672 0 0.0
text 488056 488056 0 0.0
shell nrf5340dk_nrf5340_cpuapp bss 110056 110056 0 0.0
rodata 67168 67168 0 0.0
text 440816 440816 0 0.0

src/credentials/CertificationDeclaration.cpp Outdated Show resolved Hide resolved
src/credentials/CertificationDeclaration.cpp Outdated Show resolved Hide resolved
src/credentials/CertificationDeclaration.h Show resolved Hide resolved
src/credentials/CertificationDeclaration.cpp Outdated Show resolved Hide resolved
@pullapprove pullapprove bot requested a review from tecimovic October 25, 2021 06:51
  -- Added new test cases
  -- Updated TLV decoding to utilize that fact that reader.get() checks for corrent TLV Type.
@emargolis emargolis force-pushed the emargolis/feature/cd-format-update branch from 2a87b60 to a8f245f Compare October 25, 2021 07:09
@todo
Copy link

todo bot commented Oct 25, 2021

share code with EstimateTLVStructOverhead to estimate TLV structure size.

// TODO: share code with EstimateTLVStructOverhead to estimate TLV structure size.
static constexpr uint32_t kCertificationElements_TLVEncodedMaxLength = (1 + 1) + // Length of header and end of outer TLV structure.
(3 + kCertificateIdLength) + // Encoded length of CertificateId string.
(1 + sizeof(uint16_t)) * kMaxProductIdsCountPerCD + 3 + // Max encoding length of an array of 100 uint16_t elements.
(2 + sizeof(uint8_t)) * 2 + // Encoding length of two uint8_t element.
(2 + sizeof(uint16_t)) * 7; // Max total encoding length of seven uint16_t elements.
static constexpr uint32_t kMaxCMSSignedCDMessage = 183 + kCertificationElements_TLVEncodedMaxLength;
struct CertificationElements
{


This comment was generated by todo based on a TODO comment in a8f245f in #10825. cc @emargolis.

@github-actions
Copy link

github-actions bot commented Oct 25, 2021

PR #10825: Size comparison from afd63a1 to a8f245f

8 builds (for k32w, p6, qpg, telink)
platform target config section afd63a1 a8f245f change % change
k32w lock-app k32w061+debug .bss 69228 69228 0 0.0
.data 1864 1864 0 0.0
.text 515076 515076 0 0.0
shell k32w061+debug .bss 63256 63256 0 0.0
.data 672 672 0 0.0
.text 359556 359556 0 0.0
lighting-app k32w061+se05x+release .bss 78744 78744 0 0.0
.data 1900 1900 0 0.0
.text 613792 613792 0 0.0
p6 lock-app default .bss 67208 67208 0 0.0
.data 2416 2416 0 0.0
.heap 963720 963720 0 0.0
.text 1125992 1125992 0 0.0
qpg lighting-app qpg6100+debug .bss 52456 52456 0 0.0
.data 1004 1004 0 0.0
.text 485048 485048 0 0.0
lock-app qpg6100+debug .bss 51400 51400 0 0.0
.data 960 960 0 0.0
.text 461188 461188 0 0.0
persistent-storage-app qpg6100+debug .bss 27752 27752 0 0.0
.data 372 372 0 0.0
.text 149896 149896 0 0.0
telink lighting-app tlsr9518adk80d bss 69988 69988 0 0.0
noinit 33216 33216 0 0.0
text 457670 457670 0 0.0
15 builds (for efr32, linux, mbed)
platform target config section afd63a1 a8f245f change % change
efr32 lighting-app BRD4161A .bss 113716 113716 0 0.0
.data 1752 1752 0 0.0
.text 735768 735768 0 0.0
lock-app BRD4161A .bss 111572 111572 0 0.0
.data 1712 1712 0 0.0
.text 714984 714984 0 0.0
window-app BRD4161A .bss 111884 111884 0 0.0
.data 1716 1716 0 0.0
.text 715812 715812 0 0.0
lighting-app BRD4161A+rpc .bss 130220 130220 0 0.0
.data 1852 1852 0 0.0
.text 723184 723184 0 0.0
linux all-clusters-app debug .bss 50192 50192 0 0.0
.data 978 978 0 0.0
.data.rel.ro 60448 60448 0 0.0
.dynamic 592 592 0 0.0
.got 4088 4088 0 0.0
.init 27 27 0 0.0
.init_array 512 512 0 0.0
.rodata 134485 134485 0 0.0
.text 1353266 1353266 0 0.0
chip-tool debug .bss 17712 17712 0 0.0
.data 1584 1584 0 0.0
.data.rel.ro 94016 94016 0 0.0
.dynamic 592 592 0 0.0
.got 4368 4368 0 0.0
.init 27 27 0 0.0
.init_array 416 416 0 0.0
.rodata 207140 207140 0 0.0
.text 3618293 3618293 0 0.0
ota-provider-app debug .bss 37472 37472 0 0.0
.data 752 752 0 0.0
.data.rel.ro 24488 24488 0 0.0
.dynamic 592 592 0 0.0
.got 4016 4016 0 0.0
.init 27 27 0 0.0
.init_array 440 440 0 0.0
.rodata 110344 110344 0 0.0
.text 1023554 1023554 0 0.0
ota-requestor-app debug .bss 205728 205728 0 0.0
.data 752 752 0 0.0
.data.rel.ro 25800 25800 0 0.0
.dynamic 592 592 0 0.0
.got 4144 4144 0 0.0
.init 27 27 0 0.0
.init_array 512 512 0 0.0
.rodata 128424 128424 0 0.0
.text 1142274 1142274 0 0.0
shell debug .bss 16136 16136 0 0.0
.data 242 242 0 0.0
.data.rel.ro 36496 36496 0 0.0
.dynamic 592 592 0 0.0
.got 3528 3528 0 0.0
.init 27 27 0 0.0
.init_array 336 336 0 0.0
.rodata 76495 76495 0 0.0
.text 599506 599506 0 0.0
tv-app debug .bss 215568 215568 0 0.0
.data 2032 2032 0 0.0
.data.rel.ro 57408 57408 0 0.0
.dynamic 592 592 0 0.0
.got 4408 4408 0 0.0
.init 27 27 0 0.0
.init_array 608 608 0 0.0
.rodata 151944 151944 0 0.0
.text 1454306 1454306 0 0.0
bridge-app debug+rpc .bss 51888 51888 0 0.0
.data 976 976 0 0.0
.data.rel.ro 27112 27112 0 0.0
.dynamic 592 592 0 0.0
.got 3952 3952 0 0.0
.init 27 27 0 0.0
.init_array 400 400 0 0.0
.rodata 109740 109740 0 0.0
.text 1064085 1064085 0 0.0
lighting-app debug+rpc .bss 41208 41208 0 0.0
.data 1106 1106 0 0.0
.data.rel.ro 53808 53808 0 0.0
.dynamic 608 608 0 0.0
.got 4112 4112 0 0.0
.init 27 27 0 0.0
.init_array 528 528 0 0.0
.rodata 126897 126897 0 0.0
.text 1262034 1262034 0 0.0
mbed lighting-app CY8CPROTO_062_4343W+release .bss 171092 171092 0 0.0
.data 5464 5464 0 0.0
.heap 859888 859888 0 0.0
.text 1219112 1219112 0 0.0
lock-app CY8CPROTO_062_4343W+release .bss 170012 170012 0 0.0
.data 5432 5432 0 0.0
.heap 861000 861000 0 0.0
.text 1197072 1197072 0 0.0
pigweed-app CY8CPROTO_062_4343W+release .bss 11760 11760 0 0.0
.data 4360 4360 0 0.0
.heap 1020328 1020328 0 0.0
.text 103064 103064 0 0.0
12 builds (for esp32, nrfconnect)
platform target config section afd63a1 a8f245f change % change
esp32 all-clusters-app c3devkit .dram0.bss 58272 58272 0 0.0
.dram0.data 16464 16464 0 0.0
.flash.rodata 197936 197936 0 0.0
.flash.text 874314 874314 0 0.0
.iram0.text 57564 57564 0 0.0
m5stack .dram0.bss 60776 60776 0 0.0
.dram0.data 32084 32084 0 0.0
.flash.rodata 206696 206696 0 0.0
.flash.text 905471 905471 0 0.0
.iram0.text 125115 125115 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 bss 112168 112168 0 0.0
rodata 97100 97100 0 0.0
text 577208 577208 0 0.0
lock-app nrf52840dk_nrf52840 bss 111240 111240 0 0.0
rodata 93500 93500 0 0.0
text 558696 558696 0 0.0
pigweed-app nrf52840dk_nrf52840 bss 51824 51824 0 0.0
rodata 45776 45776 0 0.0
text 339456 339456 0 0.0
pump-app nrf52840dk_nrf52840 bss 111300 111300 0 0.0
rodata 94396 94396 0 0.0
text 561852 561852 0 0.0
pump-controller-app nrf52840dk_nrf52840 bss 111236 111236 0 0.0
rodata 93476 93476 0 0.0
text 558488 558488 0 0.0
shell nrf52840dk_nrf52840 bss 109072 109072 0 0.0
rodata 72536 72536 0 0.0
text 520316 520316 0 0.0
lighting-app nrf52840dk_nrf52840+rpc bss 108408 108408 0 0.0
rodata 87876 87876 0 0.0
text 550400 550400 0 0.0
nrf5340dk_nrf5340_cpuapp bss 113540 113540 0 0.0
rodata 92340 92340 0 0.0
text 506680 506680 0 0.0
lock-app nrf5340dk_nrf5340_cpuapp bss 112612 112612 0 0.0
rodata 88760 88760 0 0.0
text 488160 488160 0 0.0
shell nrf5340dk_nrf5340_cpuapp bss 110056 110056 0 0.0
rodata 67180 67180 0 0.0
text 440924 440924 0 0.0

@emargolis
Copy link
Contributor Author

@bzbarsky-apple @saurabhst PTAL

@woody-apple
Copy link
Contributor

Fast tracking given comments appear resolved, and we're past review deadlines

@woody-apple woody-apple merged commit a71b784 into project-chip:master Oct 27, 2021
JasonLiuZhuoCheng pushed a commit to JasonLiuZhuoCheng/connectedhomeip that referenced this pull request Oct 28, 2021
…hip#10825)

-- Added new test cases
  -- Updated TLV decoding to utilize that fact that reader.get() checks for corrent TLV Type.
@emargolis emargolis deleted the emargolis/feature/cd-format-update branch December 14, 2021 10:15
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