gMorph
is written entirely in Rust and is meant to be easily cross-compiled to WebAssembly for use in [gWasm].
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].
```toml
[dependencies] gmorph = "0.1" ```
```rust use gmorph::*; use num_traits::Zero;
let keypair = KeyPair::default(); let enc: Vec<_> = (1..10) .map(|x| Encoded::encode(x).encrypt(&keypair)) .collect(); let enc = enc.intoiter().fold(Encoded::zero(), |acc, x| acc + x); let given = enc.decrypt(&keypair).decode(); let expected: u32 = (1..10).sum();
assert_eq!(expected, given, "the sums should be equal, and equal to 45"); ```
You can find some more examples in examples folder.
For instance, to run examples/simple_mul.rs
, invoke:
cargo run --release --example simple_mul