ib/libcbor/.vscode/settings.json +++ b/contrib/libcbor/.vscode/settings.json diff --cc contrib/libcbor/BUILD index 000000000000,5035c90f756b..5035c90f756b mode 000000,100644..100644 --- a/contrib/libcbor/BUILD +++ b/contrib/libcbor/BUILD diff --cc contrib/libcbor/CONTRIBUTING.md index 9bd42a06b6dc,000000000000..c0f0da6029ca mode 100644,000000..100644 --- a/contrib/libcbor/CONTRIBUTING.md +++ b/contrib/libcbor/CONTRIBUTING.md @@@ -1,35 -1,0 +1,52 @@@ +# Contributing to libcbor + +libcbor is maintained by [@PJK](https://github.com/PJK) in his spare time on a best-effort basis. + +Community contributions are welcome as long as they align with the [project priorities](https://github.com/PJK/libcbor#main-features) and [goals](https://libcbor.readthedocs.io/en/latest/development.html#goals) and follow the guidelines described below. + +## Principles + +**Bug reports and questions:** Bug reports and specific technical questions are always welcome. Feel free to open an [issue](https://github.com/PJK/libcbor/issues). + +**Incremental improvements:** Bug fixes (including build scripts, examples, test, typos, CI/CD config, etc.) and documentation improvements (fixes of typos, inaccuracies, out of date content, etc.) are always welcome. Feel free to open a [PR](https://github.com/PJK/libcbor/pulls). + +**New features:** I am looking to keep the scope of libcbor small. If you would like to add a feature, please open an issue with your proposal (or reach out to me privately) to discuss if the feature fits into libcbor before opening a PR. + +**Major changes:** Please open an issue with your proposal (or reach out to me privately) to discuss if the improvement fits into cbor before opening a PR. + +## Pull Request Process + +1. Ensure that all CI checks pass +2. Check that the PR is complete and of good quality + - Include a descriptive summary of the change. If the PR addresses an open issue, please link it. + - Code changes: Add tests + - If necessary: Update documentation, including any links +3. Code changes: Update [the changelog](https://github.com/PJK/libcbor/blob/master/CHANGELOG.md). Do *not* change the version number. + +## Interactions + +I work on libcbor on a best effort basis. The typical response time is a few days. + +If you do not receive a response in a few weeks, feel free to ping the PR or issue. + ++## Coding style ++ ++C++ code: `./clang-format.sh`. ++ ++Function Doxygen strings: ++```c ++/** An example short description ++ * ++ * @param item The item to fooify. Describe any expectations on it (e.g."must ++ * be a valid array") and reference counting manipulation. ++ * Multi-line descriptions are OK where necessary. ++ * @param target_item Short description, always with a full stop. ++ * @return Has fooification succeeded? List any special cases. ++ */ ++ bool foo(cbor_item_t *item, cbor_item_t *target_item); ++``` ++ +## Resources + +- [Development documentation](https://libcbor.readthedocs.io/en/latest/development.html) + diff --cc contrib/libcbor/MODULE.bazel index 000000000000,fbc208ab2397..fbc208ab2397 mode 000000,100644..100644 --- a/contrib/libcbor/MODULE.bazel +++ b/contrib/libcbor/MODULE.bazel diff --cc contrib/libcbor/README.md index ea54bed9437b,000000000000..62d37b6b957d mode 100644,000000..100644 --- a/contrib/libcbor/README.md +++ b/contrib/libcbor/README.md @@@ -1,121 -1,0 +1,152 @@@ +# [libcbor](https://github.com/PJK/libcbor) + +[![CircleCI](https://circleci.com/gh/PJK/libcbor/tree/master.svg?style=svg)](https://circleci.com/gh/PJK/libcbor/tree/master) +[![Documentation Status](https://readthedocs.org/projects/libcbor/badge/?version=latest)](https://readthedocs.org/projects/libcbor/?badge=latest) +[![latest packaged version(s)](https://repology.org/badge/latest-versions/libcbor.svg)](https://repology.org/project/libcbor/versions) +[![codecov](https://codecov.io/gh/PJK/libcbor/branch/master/graph/badge.svg)](https://codecov.io/gh/PJK/libcbor) + +**libcbor** is a C library for parsing and generating [CBOR](https://cbor.io/), the general-purpose schema-less binary data format. + +## Main features - - Complete [IETF RFC 8949 (STD 94)](https://www.rfc-editor.org/info/std94) conformance - - Robust platform-independent C99 implementation - - Layered architecture offers both control and convenience - - Flexible memory management - - No shared global state - threading friendly - - Proper handling of UTF-8 - - Full support for streams & incremental processing - - Extensive documentation and test suite - - No runtime dependencies, small footprint - ++ ++- Complete CBOR [IETF RFC 8949 (STD 94)](https://www.rfc-editor.org/info/std94) specification conformance (previously known as [RFC 7049](https://www.rfc-editor.org/info/rfc7049)) ++- Supports CBOR Sequences ([RFC 8742](https://datatracker.ietf.org/doc/html/rfc8742)) ++- Robust platform-independent C99 implementation, tested on ++ - Linux, OS X, Windows, BSD ++ - x86(_64), arm(64), mips(el), riscv64 ++- Layered architecture offers both control and convenience ++- Flexible memory management ++- No shared global state - threading friendly ++- Proper handling of UTF-8 ++- Full support for streams & incremental processing ++- Extensive documentation and test suite ++- No runtime dependencies, small footprint ++ ++## References ++ ++libcbor is most prominently used in: ++ ++- Yubico's [libfido2](https://developers.yubico.com/libfido2/) 2FA security key implementation ++- Amazon's [AWS C SDK](https://github.com/awslabs/aws-c-common) ++- Gnome [fwdup](https://github.com/fwupd/fwupd/blob/main/meson.build#L339) ++- Alibaba's [Inclavare librats](https://github.com/inclavare-containers/librats) ++- [QEMU](https://wiki.qemu.org/ChangeLog/9.2) ++- [ITK](https://docs.itk.org/projects/wasm/en/latest/introduction/parts.html) ++ ++It found its way into many open source an proprietary projects. If you run among others [OpenSSH](https://www.matbra.com/2020/02/17/using-fido2-with-ssh.html), [Microsoft PowerShell](https://github.com/PowerShell/libcbor), [SteamOS](https://github.com/randombk/steamos-teardown/blob/5a37d977fae55d9c41eaf1d07528fa965740bb26/docs/packages.md?plain=1#L461), or [MySQL](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-34.html) -- you might be indirectly running libcbor too. ++ ++Also, thank you for the shout out in ! ++ +## Getting started + +### Compile from source + +```bash +git clone https://github.com/PJK/libcbor +cmake -DCMAKE_BUILD_TYPE=Release libcbor +make +make install +``` + +### Homebrew + +```bash +brew install libcbor +``` + +### Ubuntu 18.04 and above + +```bash +sudo add-apt-repository universe +sudo apt-get install libcbor-dev +``` + +### Fedora & RPM friends + +```bash +yum install libcbor-devel +``` + - ### Others ++### Include git repository using using CMake ++ ++See e.g. . ++ ++## Include git repository using Bazel ++ ++See . ++ ++### Others + +
+ Packaged libcbor is available from 15+ major repositories. Click here for more detail + + [![Packaging status](https://repology.org/badge/vertical-allrepos/libcbor.svg)](https://repology.org/project/libcbor/versions) +
+ +## Usage example + +```c +#include +#include + +int main(void) { + /* Preallocate the map structure */ + cbor_item_t* root = cbor_new_definite_map(2); + /* Add the content */ + bool success = cbor_map_add( + root, (struct cbor_pair){ + .key = cbor_move(cbor_build_string("Is CBOR awesome?")), + .value = cbor_move(cbor_build_bool(true))}); + success &= cbor_map_add( + root, (struct cbor_pair){ + .key = cbor_move(cbor_build_uint8(42)), + .value = cbor_move(cbor_build_string("Is the answer"))}); + if (!success) return 1; + /* Output: `length` bytes of data in the `buffer` */ + unsigned char* buffer; + size_t buffer_size; + cbor_serialize_alloc(root, &buffer, &buffer_size); + + fwrite(buffer, 1, buffer_size, stdout); + free(buffer); + + fflush(stdout); + cbor_decref(&root); +} +``` + +## Documentation ++ ++Crash course: ++ +Get the latest documentation at [libcbor.readthedocs.org](http://libcbor.readthedocs.org/) + +## Contributions + +Bug reports and contributions are welcome. Please see [CONTRIBUTING.md](https://github.com/PJK/libcbor/blob/master/CONTRIBUTING.md) for more info. + +Kudos to all the [contributors](https://github.com/PJK/libcbor/graphs/contributors)! + +## License ++ +The MIT License (MIT) + +Copyright (c) Pavel Kalvoda, 2014-2020 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --cc contrib/libcbor/doc/source/requirements.in index 000000000000,000ba6286d17..000ba6286d17 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/requirements.in +++ b/contrib/libcbor/doc/source/requirements.in diff --cc contrib/libcbor/doc/source/tutorial.rst index 000000000000,81859ccb2192..81859ccb2192 mode 000000,100644..100644 --- a/contrib/libcbor/doc/source/tutorial.rst +++ b/contrib/libcbor/doc/source/tutorial.rst diff --cc contrib/libcbor/examples/bazel/MODULE.bazel index 000000000000,5d14df5cf761..5d14df5cf761 mode 000000,100644..100644 --- a/contrib/libcbor/examples/bazel/MODULE.bazel +++ b/contrib/libcbor/examples/bazel/MODULE.bazel diff --cc contrib/libcbor/examples/cbor_sequence.c index 000000000000,02c43185ff58..02c43185ff58 mode 000000,100644..100644 --- a/contrib/libcbor/examples/cbor_sequence.c +++ b/contrib/libcbor/examples/cbor_sequence.c diff --cc contrib/libcbor/examples/crash_course.c index 000000000000,4bd9f9379d26..4bd9f9379d26 mode 000000,100644..100644 --- a/contrib/libcbor/examples/crash_course.c +++ b/contrib/libcbor/examples/crash_course.c diff --cc contrib/libcbor/misc/asan_suppressions.osx.supp index 000000000000,5503d9412a53..5503d9412a53 mode 000000,100644..100644 --- a/contrib/libcbor/misc/asan_suppressions.osx.supp +++ b/contrib/libcbor/misc/asan_suppressions.osx.supp