{"id":22923691,"url":"https://github.com/mithril-security/ring-fortanix","last_synced_at":"2025-07-24T07:34:03.822Z","repository":{"id":64778877,"uuid":"539027154","full_name":"mithril-security/ring-fortanix","owner":"mithril-security","description":"Ring patch for Fortanix target","archived":false,"fork":false,"pushed_at":"2023-01-18T16:23:47.000Z","size":75760,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"sgx-target","last_synced_at":"2025-06-03T22:17:54.317Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mithril-security.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-09-20T14:18:23.000Z","updated_at":"2022-12-14T10:10:32.000Z","dependencies_parsed_at":"2023-02-10T16:15:15.657Z","dependency_job_id":null,"html_url":"https://github.com/mithril-security/ring-fortanix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mithril-security/ring-fortanix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithril-security%2Fring-fortanix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithril-security%2Fring-fortanix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithril-security%2Fring-fortanix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithril-security%2Fring-fortanix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mithril-security","download_url":"https://codeload.github.com/mithril-security/ring-fortanix/tar.gz/refs/heads/sgx-target","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mithril-security%2Fring-fortanix/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266808556,"owners_count":23987450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-14T08:16:21.064Z","updated_at":"2025-07-24T07:34:03.768Z","avatar_url":"https://github.com/mithril-security.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"THE SOFTWARE IS PROVIDED \"AS IS\" AND BRIAN SMITH AND THE AUTHORS DISCLAIM\nALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL BRIAN SMITH OR THE AUTHORS\nBE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY\nDAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN\nAN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\nOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n\n\n*ring*\n======\n\n*ring* is focused on the implementation, testing, and optimization of a core\nset of cryptographic operations exposed via an easy-to-use (and hard-to-misuse)\nAPI. *ring* exposes a [Rust](https://www.rust-lang.org/) API and is written in\na hybrid of Rust, C, and assembly language.\n\nParticular attention is being paid to making it easy to build and integrate\n*ring* into applications and higher-level frameworks, and to ensuring that\n*ring* works optimally on small devices, and eventually microcontrollers, to\nsupport Internet of Things (IoT) applications.\n\n*ring* is focused on general-purpose cryptography. WebPKI X.509 certificate\nvalidation is done in the [webpki](https://github.com/briansmith/webpki)\nproject, which is built on top of *ring*. Also, multiple groups are working on\nimplementations of cryptographic protocols like TLS, SSH, and DNSSEC on top of\n*ring*.\n\n*ring* is the successor of an earlier project called GFp. GFp implemented some\nelliptic curve cryptography over prime finite fields, also known as prime\nGalois fields and often denoted GF(p). When we implemented RSA, the name GFp\ndid not make as much sense, since modular arithmetic over RSA public moduli is\nnot GF(p) arithmetic but rather finite commutative *ring* arithmetic. Also note\nthat *ring* started as a subset of BoringSSL, and “*ring*” is a substring of\n“Bo*ring*SSL”.\n\nMost of the C and assembly language code in *ring* comes from BoringSSL, and\nBoringSSL is derived from OpenSSL. *ring* merges changes from BoringSSL\nregularly. Also, several changes that were developed for *ring* have already\nbeen merged into BoringSSL.\n\n\n\n\nDocumentation\n-------------\n\nSee the documentation at\nhttps://briansmith.org/rustdoc/ring/.\n\nSee [BUILDING.md](BUILDING.md) for instructions on how to build it. These\ninstructions are especially important for cross-compiling and for building on\nWindows when not building from crates.io, as there are build prerequisites that\nneed to be installed.\n\n\n\nBenchmarks\n----------\n\n*ring*'s benchmarks are in the\n[crypto-bench](https://github.com/briansmith/crypto-bench) project. Because\nthere is lots of platform-specific code in *ring*, and because *ring* chooses\ndynamically at runtime which optimized implementation of each crypto primitive\nto use, it is very difficult to publish a useful single set of benchmarks;\ninstead, you are highly encouraged to run the benchmarks yourselves on your\ntarget hardware.\n\n\n\n\nContributing\n------------\n\nThe most important contributions are *uses* of *ring*. That is, we're very\ninterested in seeing useful things built on top of *ring*, like implementations\nof TLS, SSH, the Noise Protocol, etc.\n\nOf course, contributions to *ring*'s code base are highly appreciated too.\nThe *ring* project happily accepts pull requests without you needing to sign\nany formal license agreement. The portions of pull requests that modify\nexisting files must be licensed under the same terms as the files being\nmodified. New files in pull requests, including in particular all Rust code,\nmust be licensed under the ISC-style license. Please state that you agree to\nlicense your contributions in the commit messages of commits in pull requests,\ne.g. by putting this at the bottom of your commit message:\n\n```\n\nI agree to license my contributions to each file under the terms given\nat the top of each file I changed.\n```\n\n\nIf\nyou want to work directly on *ring* and you don't have an idea for something to\ncontribute already, see these curated lists of open issues:\n\n* [good-first-bug](https://github.com/briansmith/ring/labels/good-first-bug):\n  Bugs that we think newcomers might find best to start with. Note that what\n  makes a bug a good fit depends a lot on the developer's background and not\n  just the hardness of the work.\n\nIn addition, we're always interested in these kinds of contributions:\n\n* Expanded benchmarks in the\n  [crypto-bench](https://github.com/briansmith/crypto-bench) project.\n* Additional testing code and additional test vectors.\n* Static analysis and fuzzing in the continuous integration.\n* Support for more platforms in the continuous integration (e.g. Android, iOS,\n  ARM microcontrollers).\n* Documentation improvements.\n* More code simplification, especially eliminating dead code.\n* Improving the code size, execution speed, and/or memory footprint.\n* Fixing any bugs you may have found.\n* Better IDE support for Windows (e.g. running the tests within the IDE) and\n  macOS (e.g. Xcode project files).\n\nBefore submitting pull requests, make sure that the tests succeed both when\nrunning `cargo test` and `cargo test --no-default-features`. See\n[BUILDING.md](BUILDING.md) for more info about the features flags that are\nuseful for people hacking on *ring*.\n\n\n\nVersioning \u0026 Stability\n----------------------\n\nUsers of *ring* should always use the latest released version, and users\nshould upgrade to the latest released version as soon as it is released.\n*ring* has a linear release model that favors users of the latest released\nversion. We have never backported fixes to earlier releases and we don't\nmaintain branches other than the main branch. Further, for some obscure\ntechnical reasons it's currently not possible to link two different versions\nof *ring* into the same program; for policy reasons we don't bother to try\nto work around that. Thus it is important that libraries using *ring* update\nto the latest version of *ring* ASAP, so that libraries that depend on\n*their* libraries can upgrade to the latest version of *ring*.\n\n*ring* is tested on the latest Stable, Beta, and Nightly releases of Rust.\nWe do not spend effort on backward compatibility with older releases of\nRust; for example, when Rust 1.53 (Stable) is released, we don't care if\n*ring* stops working with Rust 1.52 or earlier versions. Thus, we can\nalways use the latest *stable* features of the Rust language in *ring*.\nSo far we've never used unstable features of Rust except for the benchmarking\nsupport (`#[bench]`), and we're hoping to remove even *that* Nightly\ndependency. Sometimes things are broken with Nightly Rust. We prioritize\nkeeping things working on Stable; if things break on Beta and Nightly then\nthat breakage won't be considered urgent, though it will eventually get\nresolved, one way or another.\n\nWe prefer to improve *ring*'s API over keeping *ring*'s API stable. We\ndon't keep old APIs around for the sake of backward compatibility; we prefer\nto remove old APIs in the same change that adds new APIs. This makes it\neasier for people to contribute improvements. This means that sometimes\nupgrading to the newest version of *ring* will require some code changes. Over\ntime the rate of change in the API will probably slow to the point where it\nwill be stable in practice.\n\nWe don't have release notes. Instead, we try to clearly document each change\nin each commit. Read the the commit message, the tests, and the patch itself\nfor each change. If anything is still unclear, let us know by submitting a pull\nrequest or by filing an issue in the issue tracker so that we can improve\nthings.\n\nThis model of development is different than the model a lot of other open\nsource libraries use. The idea behind *our* model is to encourage all users to\nwork together to ensure that the latest version is good *as it is being\ndeveloped*. In particular, because users know that correctness/security fixes\n(if any) aren't going to get backported, they have a strong incentive to help\nreview pull requests before they are merged and/or review commits on the main\nbranch after they've landed to ensure that code quality on the main branch\nstays high.\n\nThe more common model, where there are stable versions that have important\nsecurity patches backported, lowers people's incentives to actively participate\nin mainline development. Maintaining stable APIs also discourages improving\nAPI design and internal code quality. Thus that model doesn't seem like a good\nfit for *ring*.\n\nEvery six months we have a meeting to revisit this policy. Email\n[brian@briansmith.org](mailto:brian@briansmith.org) if you want to attend\nthe next meeting. Please don't file issues regarding this policy.\n\n\n\nBug Reporting\n-------------\n\nPlease report bugs either as pull requests or as issues in [the issue\ntracker](https://github.com/briansmith/ring/issues). *ring* has a\n**full disclosure** vulnerability policy. **Please do NOT attempt to report\nany security vulnerability in this code privately to anybody.**\n\n\n\nOnline Automated Testing\n------------------------\n\nThe following targets are tested in GitHub Actions. The tests are run in debug\nand release configurations, for the current release of each Rust channel\n(Stable, Beta, Nightly). A C compiler is currently required to compile some\nparts of *ring*; *ring* should be compatible with GCC 4.8+, Clang 10+, and MSVC\n2019+, at least.\n\n| Target                         | Notes |\n| -------------------------------| ----- |\n| aarch64-apple-darwin           | Build-only (GitHub Actions doesn't have a way to run the tests)\n| aarch64-apple-ios              | Build-only (GitHub Actions doesn't have a way to run the tests)\n| aarch64-unknown-linux-gnu      | Tested on 64-bit Linux using QEMU user emulation\n| aarch64-unknown-linux-musl     | Tested on 64-bit Linux using QEMU user emulation. [Needs more work; issue 713](https://github.com/briansmith/ring/issues/713)\n| aarch64-linux-android          | API level 21 (Android 5.0+); [Build-only; issue 486](https://github.com/briansmith/ring/issues/486)\n| arm-unknown-linux-gnueabihf    | Tested on 64-bit Linux using QEMU user emulation\n| armv7-linux-androideabi        | API level 18 (Android 4.3+); [Build-only; issue 838](https://github.com/briansmith/ring/issues/838)\n| armv7-unknown-linux-musleabihf | Tested on 64-bit Linux using QEMU user emulation. [Needs more work; issue 713](https://github.com/briansmith/ring/issues/713)\n| i686-pc-windows-msvc           | Tested on 64-bit Windows Server 2019 Datacenter\n| i686-unknown-linux-gnu         | Tested on 64-bit Linux using multilib support\n| i686-unknown-linux-musl        | Tested on 64-bit Linux using multilib support. [Needs more work; issue 713](https://github.com/briansmith/ring/issues/713)\n| x86_64-apple-darwin            |\n| x86_64-pc-windows-gnu          |\n| x86_64-pc-windows-msvc         | Tested on 64-bit Windows Server 2019 Datacenter\n| x86_64-unknown-linux-gnu       |\n| x86_64-unknown-linux-musl      | [Needs more work; issue 713](https://github.com/briansmith/ring/issues/713)\n| wasm32-unknown-unknown         | Tested using wasm-bindgen-test-runner on Linux in Chrome and Firefox.\n\nLicense\n-------\n\nSee [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmithril-security%2Fring-fortanix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmithril-security%2Fring-fortanix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmithril-security%2Fring-fortanix/lists"}