{"id":13472351,"url":"https://github.com/Sunscreen-tech/Sunscreen","last_synced_at":"2025-03-26T15:31:59.139Z","repository":{"id":46217172,"uuid":"424345781","full_name":"Sunscreen-tech/Sunscreen","owner":"Sunscreen-tech","description":"A compiler for fully homomorphic encryption and zero knowledge proofs","archived":false,"fork":false,"pushed_at":"2024-07-02T19:10:17.000Z","size":114260,"stargazers_count":247,"open_issues_count":13,"forks_count":26,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-10-30T04:13:44.763Z","etag":null,"topics":["cryptography","homomorphic-encryption","zero-knowledge"],"latest_commit_sha":null,"homepage":"https://docs.sunscreen.tech","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sunscreen-tech.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":"2021-11-03T18:57:04.000Z","updated_at":"2024-10-29T02:51:46.000Z","dependencies_parsed_at":"2024-07-31T16:54:15.200Z","dependency_job_id":null,"html_url":"https://github.com/Sunscreen-tech/Sunscreen","commit_stats":{"total_commits":472,"total_committers":7,"mean_commits":67.42857142857143,"dds":0.4216101694915254,"last_synced_commit":"ace6d97140b6366613464c32693ac2e9bebefa5c"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunscreen-tech%2FSunscreen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunscreen-tech%2FSunscreen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunscreen-tech%2FSunscreen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sunscreen-tech%2FSunscreen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sunscreen-tech","download_url":"https://codeload.github.com/Sunscreen-tech/Sunscreen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245681425,"owners_count":20655191,"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":["cryptography","homomorphic-encryption","zero-knowledge"],"created_at":"2024-07-31T16:00:53.995Z","updated_at":"2025-03-26T15:31:58.251Z","avatar_url":"https://github.com/Sunscreen-tech.png","language":"Rust","funding_links":[],"categories":["Rust","Libraries"],"sub_categories":["[Sunscreen](https://sunscreen.tech/)"],"readme":"[![Rust](https://github.com/Sunscreen-tech/Sunscreen/workflows/CI/badge.svg)](https://github.com/Sunscreen-tech/Sunscreen/actions/workflows/rust.yml)\n\n# Intro\n\nSunscreen is an ecosystem for building privacy-preserving applications using fully homomorphic encryption (and later on zero-knowledge proofs as well). Fully homomorphic encryption (FHE) is a special kind of encryption scheme that allows anyone to perform computations directly on encrypted data. Since it's quite hard to write FHE programs, we've created a \"compiler\" to make this process easier for developers.\n\nIf you'd like to try out our FHE compiler before downloading it, we offer [a playground](https://playground.sunscreen.tech).\n\nExtensive documentation can be found [here](https://docs.sunscreen.tech).\n\n*WARNING!* This library is meant for experiments only. It has not been externally audited and is not intended for use in production. \n\n# Set up\nThese directions cover the requirements for *developing the sunscreen platform itself*, which may be more than needed to merely consume it as a dependency. If you wish to develop an application using Sunscreen, see the installation.\n\n## Install Rust\nInstall [Rustup](https://rustup.rs/) and follow the directions for your OS. We recommend stable Rust 1.58 or later.\n\n## MacOS\n```brew install cmake git```\n\n## Linux\n### Install prereqs\nUsing yum:\n```sudo yum install gcc gcc-c++ cmake3 openssl-devel clang git```\n\nUsing apt:\n```sudo apt install build-essential clang cmake3 libssl-dev git```\n\nAfter installing prereqs, make a link to `cmake3` named `cmake`\n```sudo ln /usr/bin/cmake3 \u003csomwhere/under/$PATH/\u003ecmake```\n\n## Windows\nWe recommend developing sunscreen on macOS or Linux, as Windows is really slow.\n\n### Cmake\nInstall [cmake 3](https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-windows-x86_64.msi).\n\n### Clang\nInstall [llvm+clang](https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.0/LLVM-13.0.0-win64.exe). In the installer, select the option to add LLVM to your `%PATH%`. If you forget to do check this option, add `C:\\Program Files\\LLVM\\bin` to your `%PATH%`.\n\n### MSVC C++\nInstall the [MSVC C++ toolchain](https://aka.ms/vs/17/release/vs_BuildTools.exe)\n\nWhen prompted for what to install, ensure you additionally check the *Windows 10 SDK*. You'll need to rerun the tool and modify your installation if you forget to do this.\n\n### Enable long file paths\nSome of our compilation tests produce really long file paths. These tests will fail unless you [enable long file paths](https://www.howtogeek.com/266621/how-to-make-windows-10-accept-file-paths-over-260-characters/). TL;DR; run `regedit.exe`, set `HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\FileSystem` to `1` and reboot.\n\n### git\nInstall [git](https://git-scm.com/download/win). Defaults are fine.\n\n## Initialize submodules\n```\ngit submodule update --init --recursive\n```\n\n# Dev workflows\nWorking with Sunscreen is as you'd expect with any other Rust repository:\n\n## Build\n```cargo build```\n\n## Test\n```cargo test --release```\n\n## Docs\n```cargo doc --open```\n\n## Format\n```cargo fmt```\n\n## Debug\nWe have a `launch.json` checked in that defines a bunch of debug configurations. In VSCode, you should see a bunch of dropdowns in the debug menu to debug the tests and examples.\n\n# License\nThis project is licensed under the terms of the GNU AGPLv3 license. If you require a different license for your application, please reach out to us.\n\n# Contribute\nFeel free to open up issues!\n\nIf you'd like to submit a pull request, you'll need to agree to a Contributor License Agreement. For more info, contact us at hello@sunscreen.tech.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSunscreen-tech%2FSunscreen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSunscreen-tech%2FSunscreen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSunscreen-tech%2FSunscreen/lists"}