Skip to content
Fully Homomorphic Encryption library
Rust
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
benches
examples
src
.gitignore
.rustfmt.toml
Cargo.toml
LICENSE
README.md
clippy.toml

README.md

gMorph - Fully Homomorphic Encryption library

build-status

gMorph is written entirely in Rust and is meant to be easily cross-compiled to WebAssembly for use in gWasm.

Disclaimer

gMorph is very much experimental in nature so things are expected to break unexpectedly. Also, please note that we make no claims about security of the encryption scheme. This work is provided as the Proof of Concept for FHE on gWASM, basically for demonstration purposes. If you find a bug, please file a bug report here.

Example usage:

use gmorph::*;
use num_traits::Zero;

let key_pair = KeyPair::default();
let enc: Vec<_> = (1..10)
    .map(|x| Encoded::encode(x).encrypt(&key_pair))
    .collect();
let enc = enc.into_iter().fold(Encoded::zero(), |acc, x| acc + x);
let given = enc.decrypt(&key_pair).decode();
let expected: u32 = (1..10).sum();

assert_eq!(expected, given, "the sums should be equal, and equal to 45");

Examples

You can find some more examples in examples folder. For instance, to run examples/simple_mul.rs, invoke:

cargo run --release --example simple_mul
You can’t perform that action at this time.