Skip to content

jeffmur/fhel

Repository files navigation

Fully Homomorphic Encryption Library

The Fully Homomorphic Encryption Library (fhel) is a powerful encryption library that enables fully homomorphic encryption (FHE) capabilities. It provides a seamless integration with Flutter, allowing developers to perform secure computations on encrypted data on resource constrained devices.

This library aims to expose basic functionalities to Flutter users to generate encryption context, derive keys, encrypt and decrypt data, and perform arithmetic operations on encrypted data. It provides a high-level abstraction for working with plaintext and ciphertext values, as well support for multiple encryption schemes.

With FHEL, developers can leverage the power of fully homomorphic encryption to perform computations on sensitive data while preserving privacy and security. It opens up new possibilities for secure data processing in applications built with Flutter.

For more information, see our wiki

Development 🏗️

Compilation can become difficult when using multiple languages on multiple operating systems.

Makefiles are 🔑

In general commands denoted with ci should encompass all required action(s), while others should perform a single action.

Compilation 👷

For compiliation, see backend Makefile for library configuration.

From the root of the project:

make build-cmake

Unit Testing 🧪

For C++, we have integrated GoogleTest as our testing framework.

From the root of the project:

make ctest

For Dart, the SDK comes out-of-the-box with a comprehensive testing framework.

From the root of the projct:

make dtest

Deployment 🚀

Currently configured to be manually deployed via:

dart pub publish

In the future, we may configure an automated publishing.

Distribution 📦

For distribution, we use Conan to manage C++ dependencies, wrapped with Poetry to be run in a virtual environment.

From the root of the project:

pip install poetry
poetry config virtualenvs.create true
poetry install
conan create .