mirror of
https://github.com/Sunscreen-tech/Sunscreen.git
synced 2026-01-14 16:17:56 -05:00
30 lines
1.0 KiB
Rust
30 lines
1.0 KiB
Rust
use seal_fhe::*;
|
|
|
|
pub fn run_bfv_test<F>(lane_bits: u32, degree: u64, test: F)
|
|
where
|
|
F: FnOnce(Decryptor, BFVEncoder, Encryptor, BFVEvaluator, KeyGenerator),
|
|
{
|
|
let params = BfvEncryptionParametersBuilder::new()
|
|
.set_poly_modulus_degree(degree)
|
|
.set_coefficient_modulus(
|
|
CoefficientModulus::bfv_default(degree, SecurityLevel::TC128).unwrap(),
|
|
)
|
|
.set_plain_modulus(PlainModulus::batching(degree, lane_bits).unwrap())
|
|
.build()
|
|
.unwrap();
|
|
|
|
let ctx = Context::new(¶ms, false, SecurityLevel::TC128).unwrap();
|
|
let gen = KeyGenerator::new(&ctx).unwrap();
|
|
|
|
let encoder = BFVEncoder::new(&ctx).unwrap();
|
|
|
|
let public_key = gen.create_public_key();
|
|
let private_key = gen.secret_key();
|
|
|
|
let encryptor = Encryptor::with_public_and_secret_key(&ctx, &public_key, &private_key).unwrap();
|
|
let decryptor = Decryptor::new(&ctx, &private_key).unwrap();
|
|
let evaluator = BFVEvaluator::new(&ctx).unwrap();
|
|
|
|
test(decryptor, encoder, encryptor, evaluator, gen);
|
|
}
|