- Purpose and Disclaimer
- Community Projects in Contrib Repository
- User Projects in Other OpenFHE Repositories
- Winning Solutions for FHERMA Challenges
- Guidelines for Submitting a New Project
The contrib repository is intended to host community-contributed projects that provide examples of using OpenFHE and/or extend OpenFHE.
These projects may be useful to OpenFHE users but are not considered part of the core OpenFHE project functionality.
Contributions within this repository are not officially supported by the project maintainers and may not be actively maintained or rigorously tested.
Users are responsible for evaluating the quality and compatibility of any code they choose to utilize from the contrib repository and should not expect bug fixes or updates unless explicitly stated by the contributor.
All contributed projects are listed below. Please check out the project folder for more details.
| Project | Description | Scheme(s) | Language(s) | Author(s) |
|---|---|---|---|---|
| Image classification with Resnet20 | Encrypted image classification using a pre-trained ResNet-20 CNN model based on the CIFAR-10 dataset. | CKKS | C++ | Lorenzo Rovida (University of Milano-Bicocca) |
| Slot replication | The basic use-case is taking a packed ciphertext as input, outputting a vector of ciphertexts with all the slots of the |
CKKS | C++ | Shai Halevi (AWS) |
The user projects that exist in other OpenFHE repositories are listed below.
| Project | Description | Scheme(s) | Language(s) | Author(s) |
|---|---|---|---|---|
| Boolean circuit evaluator | Various Boolean circuits in the Bristol format | CGGI | C++ | David Bruce Cousins (Duality) |
| Genomic analysis | Logistic Regression Approximation and Chi-Square GWAS protocols | CKKS | C++ | Duality |
| Google Transpiler examples | Routing algorithms and AES evaluation | CGGI | C++ | David Bruce Cousins (Duality) |
| Logistic regression training | Logistic Regression Trianing in C++ using Nesterov's Accelerated Gradient Descent method | CKKS | C++ | Duality |
| Logistic regression training (Python) | Logistic Regression Trianing in Python | CKKS | Python | Ian Quah (University of Washington) |
| Network-oriented algorithms | Encrypted network measurement/control, secure data distribution | BGV, BFV, CKKS | C++ | Duality |
| Serialization examples | FHE, Proxy Re-Encryption, and Threshold FHE examples | BGV, CKKS | C++ | David Bruce Cousins (Duality) |
| Substring search | Substring search using Rabin-Karp algorithm | BFV | C++ | David Bruce Cousins (Duality) |
| Support Vector Machine inference | Linear Support Vector Machine inference in Python | CKKS | Python | Rener Oliveira |
Winning solutions for FHERMA challenges, most of which are implemented in OpenFHE, are available as part of the FHE Components Library. The FHE components library already includes efficient implementation examples for evaluating image classification, matrix multiplication, logistic function, look-up tables, and maximum element, and for computing parity, ReLu and sign functions.
Please review existing contributions and use one of them as a template. The user projects can be written in any programming language supported by OpenFHE, e.g., C++, Python, Rust.
- (Only for C++ user projects) Create a user CMake project following the Building User Applications article.
- (Only for C++ user projects) Follow the standard folder naming convention, e.g.,
src,include,lib,examples,tests. - Add a license (BSD-2 license is recommended).
- Add a README.md file to the root of the project. Specify the versions of OpenFHE under which your project has been tested.
- Submit a PR with the contribution.