Files
Sunscreen/sunscreen/crates-io.md
Sam Tay aadde9d162 Offer a simpler API for runtime creation (#246)
* Offer a simpler API for runtime creation

* Update docs and examples to use `FheRuntime::new`
2023-06-06 18:56:46 -07:00

52 lines
1.4 KiB
Markdown

# Intro
Sunscreen is an ecosystem for building privacy-preserving applications using fully homomorphic encryption.
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 externally audited and is *not* intended for use in production.
# Example
Below, we look at how to multiply two encrypted integers together.
```rust
use sunscreen::{
fhe_program,
types::{bfv::Signed, Cipher},
Compiler, Error, FheRuntime,
};
#[fhe_program(scheme = "bfv")]
fn simple_multiply(a: Cipher<Signed>, b: Cipher<Signed>) -> Cipher<Signed> {
a * b
}
fn main() -> Result<(), Error> {
let app = Compiler::new()
.fhe_program(simple_multiply)
.compile()?;
let runtime = FheRuntime::new(app.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(app.get_fhe_program(simple_multiply).unwrap(), vec![a, b], &public_key)?;
let c: Signed = runtime.decrypt(&results[0], &private_key)?;
assert_eq!(c, 75.into());
Ok(())
}
```
# Docs
* [User guide](https://docs.sunscreen.tech)
* [API docs](https://docs.rs/sunscreen)
# Getting help
For questions about Sunscreen, join our [Discord](https://discord.gg/WHCs6jNNDS)!