Intro

Sunscreen is an ecosystem for building privacy-preserving applications using fully homomorphic encryption. While in private beta, documentation can be found here.

This 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.

WARNING! This library is meant for experiments only. It has not been audited and is not intended for use in production.

Example

```rust use sunscreen::{ fhe_program, types::{bfv::Signed, Cipher}, Compiler, Error, Runtime, };

[fhe_program(scheme = "bfv")]

fn simple_multiply(a: Cipher, b: Cipher) -> Cipher { a * b }

fn main() -> Result<(), Error> { let fheprogram = Compiler::withfheprogram(simplemultiply).compile()?;

let runtime = Runtime::new(&fhe_program.metadata.params)?;

let (public_key, private_key) = runtime.generate_keys()?;

let a = runtime.encrypt(Signed::from(15), &public_key)?;
let b = runtime.encrypt(Signed::from(5), &public_key)?;

let results = runtime.run(&fhe_program, vec![a, b], &public_key)?;

let c: Signed = runtime.decrypt(&results[0], &private_key)?;

assert_eq!(c, 75.into());

Ok(())

} ```

Docs

TODO

Getting help

TODO