OpenSCMS is currently the only open-source, deployable, Security Credential Management System (SCMS) aligned with IEEE 1609.2.1 (2022). It is built for modularity, observability, and real-world scale.
Rust is used for the main web-oriented aspects of the backend, providing memory safety and high performance in terms of requests-per-second. C is used for all the cryptographic operations where performance is key, as well as encoding and decoding of the SPDUs used throughout the specification.
The official ASN.1 definitions from the IEEE are used to generate C-based CODECs using the open source ASN1C transpiler.
All libraries used have permissive licenses, allowing their incorporation in proprietary solutions.
When deployed to a local minikube instance, it allows development and testing of End Entity implementations in the V2X security space.
If integrated with a complete SCMS manager such as the one from scmsmanager.org it has the potential to be deployed in a production environment.
The code for OpenSCMS resides in a set of repositories
| Repo | Contents |
|---|---|
| OpenSCMS | The Rust based server |
| oscms-codecs-bridge | The top level C bridge between the server and the CODECs layers. |
| oscms-codecs-api | An abstract API for accessing C-based CODECs. |
| oscms-asn1c-codecs | A concrete implementation of the CODECs API using the ASN1C transpiler |
| oscms-asn1c-generated | The raw codecs generated sing the ASN1C transpiler. |
| ieee1609dot2dot1-asn | A fork of the official IEEE ASN.1 files, slightly modified to work with ASN1C |
| etsi_ts103097-asn | ETSE ASN.1 Source files used by those from IEEE |
Each repository contains its own README file with details on downloading, compiling, and testing,
First, please read the Code of Conduct and Contribution Guide, which go into details about how our community works.
We follow the general GitHub pull request workflow, where you make and test your changes in your forked copy and then raise a pull request to have them incorporated into the official repositories.
If you wish to make code contributions, you will need to fork the entire set of repositories. This is due to the use of relative paths for the git submodules.
If you have the Github CLI installed, you can fork all of the code repositories, and clone them to your working directory, with the following commands
gh repo fork --clone https://github.com/OpenSCMS/oscms-codecs-bridge -- --recurse-submodules
gh repo fork --clone https://github.com/OpenSCMS/oscms-asn1c-codecs -- --recurse-submodules
gh repo fork --clone https://github.com/OpenSCMS/oscms-codecs-api -- --recurse-submodules
gh repo fork --clone https://github.com/OpenSCMS/oscms-asn1c-generated -- --recurse-submodules
gh repo fork --clone https://github.com/OpenSCMS/OpenSCMS -- --recurse-submodules
gh repo fork --clone https://github.com/OpenSCMS/oscms-ci-docker -- --recurse-submodules
gh repo fork --clone https://github.com/OpenSCMS/ieee1609dot2dot1-asn -- --recurse-submodules
gh repo fork --clone https://github.com/OpenSCMS/etsi_ts103097-asn -- --recurse-submodulesIf you don't want to clone at the time of forking, use the following.
gh repo fork --clone=false https://github.com/OpenSCMS/oscms-codecs-bridge
gh repo fork --clone=false https://github.com/OpenSCMS/oscms-asn1c-codecs
gh repo fork --clone=false https://github.com/OpenSCMS/oscms-codecs-api
gh repo fork --clone=false https://github.com/OpenSCMS/oscms-asn1c-generated
gh repo fork --clone=false https://github.com/OpenSCMS/OpenSCMS
gh repo fork --clone=false https://github.com/OpenSCMS/oscms-ci-docker
gh repo fork --clone=false https://github.com/OpenSCMS/ieee1609dot2dot1-asn
gh repo fork --clone=false https://github.com/OpenSCMS/etsi_ts103097-asnThe primary channel for support is through the project discussions forum, and raising issues on individual repositories.
As a last resort, you can also reach out to a subset of Organization owners via email at support@openscms.net.
This project is licensed under the Apache-2.0 License. See the LICENSE file for details.
