-
Notifications
You must be signed in to change notification settings - Fork 246
Use EverCBOR (EverParse v2025.12.10) in uvm_endorsements #7522
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
Conversation
… functions proven, etc.)
This reverts commit ca64c31.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR replaces the QCBOR library with EverCBOR from EverParse v2025.12.10 for parsing and validating CBOR data in UVM endorsements. EverCBOR is a formally verified C implementation that provides memory safety, arithmetic safety, and functional correctness guarantees, including automatic validation of CBOR maps for duplicate keys.
Key changes:
- Migration from QCBOR API to EverCBOR API in COSE_Sign1 parsing logic
- Integration of EverCBOR library as a new third-party dependency
- Updated error handling to use EverCBOR's validation approach
Reviewed changes
Copilot reviewed 20 out of 22 changed files in this pull request and generated 17 comments.
Show a summary per file
| File | Description |
|---|---|
| src/node/uvm_endorsements.h | Removed QCBOR and t_cose header includes |
| src/node/uvm_endorsements.cpp | Migrated CBOR parsing logic from QCBOR to EverCBOR API with new error handling patterns |
| cmake/evercbor.cmake | Added CMake build configuration for EverCBOR static library |
| CMakeLists.txt | Integrated evercbor library into ccf_node and endorsements_test targets |
| 3rdparty/exported/evercbor/* | Added EverCBOR v2025.12.10 source files, headers, examples, and tests |
|
@tahina-pro thank you for making this change, this is a very welcome upgrade from what we use for CBOR today! Would it be possible to only add the necessary files for evercbor, and not the additional samples etc. I am hoping it's a small number of them (3?) which reduces the churn on updates, the amount of copilot-generated distraction etc. Could you also add an entry in https://github.com/microsoft/CCF/blob/main/cgmanifest.json with the repo name, sha and release tag please. |
as instructed by @achamayou
This PR replaces QCBOR with EverCBOR from EverParse v2025.12.10 in uvm_endorsements.
EverCBOR is a formally verified C implementation of parsers and serializers for CBOR. EverCBOR is part of EverParse, an open-source toolchain for formally verified secure binary data parsing and serialization, developed by the RiSE (Research in Software Engineering) team at Microsoft Research.
EverCBOR is proven:
Regarding performance:
As of EverParse v2025.12.10, EverCBOR supports definite-length CBOR objects without floating-point values, which is enough for COSE.