{"id":18422432,"url":"https://github.com/sri-csl/evocrypt","last_synced_at":"2025-04-13T12:27:53.055Z","repository":{"id":251417763,"uuid":"837354424","full_name":"SRI-CSL/evocrypt","owner":"SRI-CSL","description":"EVOCrypt: EasyCrypt Verified OCaml Cryptographic Library","archived":false,"fork":false,"pushed_at":"2025-04-03T16:05:52.000Z","size":146,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-04-13T12:27:36.522Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"eC","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SRI-CSL.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-02T19:18:36.000Z","updated_at":"2025-03-12T00:38:56.000Z","dependencies_parsed_at":"2024-11-06T04:31:50.749Z","dependency_job_id":"ce190019-d248-4438-ac70-441a06bd4d7d","html_url":"https://github.com/SRI-CSL/evocrypt","commit_stats":null,"previous_names":["sri-csl/evocrypt"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRI-CSL%2Fevocrypt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRI-CSL%2Fevocrypt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRI-CSL%2Fevocrypt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SRI-CSL%2Fevocrypt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SRI-CSL","download_url":"https://codeload.github.com/SRI-CSL/evocrypt/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248713539,"owners_count":21149716,"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","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-11-06T04:29:58.596Z","updated_at":"2025-04-13T12:27:53.029Z","avatar_url":"https://github.com/SRI-CSL.png","language":"eC","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EVOCrypt: EasyCrypt Verified OCaml Cryptographic library\n\nEVOCrypt is a library that provides verified, high-assurance implementations of a series of cryptographic algorithms/protocols, including\n- Commitment schemes\n- MPC protocols\n- Secret sharing schemes\n- ZK protocols\n\nAll implementations have been first specified in EasyCrypt, where all security and functional correctness proofs have been formalized. OCaml code is then obtained via code synthesis using the [CoCoCrypt](https://github.com/SRI-CSL/cococrypt) toolchain. The properties proved in EasyCrypt are carried out to the final OCaml implementation, thus increasing the degree of assurance of our code.\n\nWe next provide a detailed list of the concrete algorithms/protocols provided by EVOCrypt.\n\n#### Commitment schemes\n\nSo far, we support the following commitment schemes:\n- SHA3-based commitment scheme\n\n#### MPC protocols\n\nSo far, we support the following MPC protocols:\n- BGW protocol, with unlimited party support\n\n#### Secret sharing schemes\n\nSo far, we support the following secret sharing schemes:\n- Shamir secret sharing, with unlimited party support\n\n#### ZK protocols\n\nSo far, we support the following ZK protocols:\n- MPC-in-the-Head, using BGW as the underlying MPC protocol\n- Line-Point Zero Knowledge (LPZK), assuming pre-computed correlated randomness\n\n## Instalation requirements\n\nEVOCrypt uses the following third-party tools/libraries:\n- OCaml (\u003e= 4.14.0) - available at [https://ocaml.org/](https://ocaml.org/)\n- Dune (\u003e= 3.14) - available at [https://github.com/ocaml/dune](https://github.com/ocaml/dune)\n- Cryptokit - available at [https://github.com/xavierleroy/cryptokit](https://github.com/xavierleroy/cryptokit)\n- Zarith - available at [https://github.com/ocaml/Zarith](https://github.com/ocaml/Zarith)\n- Domainslib - available at [https://github.com/ocaml-multicore/domainslib](https://github.com/ocaml-multicore/domainslib)\n\nWe recommend installing the above dependencies using `opam`. However, they can be installed by cloning the corresponding repository and manually installing the tool/library.\n\nAfter installing `OCaml` and `opam`, typing\n\n```\n$\u003e opam install dune cryptokit zarith domainslib\n```\ninstalls all EVOCrypt required dependencies\n\n## Installing/Compiling EVOCrypt\n\nIf installing from source, running\n\n```\n$\u003e make\n$\u003e make install\n```\n\nbuilds and install the EVOCrypt library (under root module named `EVOCrypt`) assuming that all dependencies have been successfully installed. \n\nEVOCrypt can also be installed via `opam`, by running\n\n```\n$\u003e opam pin git+https://github.com/SRI-CSL/evocrypt.git#main\n```\n\nwhich installs EVOCrypt and its dependencies via `opam`.\n\n## Examples\n\nExamples of how to use EVOCrypt can be found in the `test` directory.\n\n## EasyCrypt proof\n\nThe EasyCrypt proof can be found under the `proof` folder. To compile the proof, we include a Dockerfile that can be built via\n\n```\n$\u003e docker build -t ec-check-docker -f Dockerfile .\n```\n\nand then executing it by running\n\n```\n$\u003e docker run -ti --memory=\"16g\" --cpus=\"3.0\" ec-check-docker\n```\n\nAlternatively, from the main repository folder, doing\n\n```\n$\u003e make check-proof\n```\n\nalso builds and executed the proof checker Docker container.\n\n## Acknowledgments\n\nThis material is based upon work supported by DARPA under Contract No. HR001120C0086. Any opinions, findings and conclusions or recommendations expressed in this material are those the author(s) and do not necessarily reflect the views of the United States Government or DARPA.\n\nDistribution Statement ‘A’ (Approved for Public Release, Distribution Unlimited)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsri-csl%2Fevocrypt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsri-csl%2Fevocrypt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsri-csl%2Fevocrypt/lists"}