Skip to content

Commit

Permalink
feat: use tfhe-rs parameters supporting compression
Browse files Browse the repository at this point in the history
Also, add a small binary to generate keys in fhevm-engine-common.
  • Loading branch information
dartdart26 committed Aug 25, 2024
1 parent 71984ed commit bed330f
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 8 deletions.
1 change: 1 addition & 0 deletions fhevm-engine/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
target
**/fhevm-keys
Git LFS file not shown
15 changes: 15 additions & 0 deletions fhevm-engine/fhevm-engine-common/src/bin/generate_keys.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
use fhevm_engine_common::generate_fhe_keys;

fn main() {
let output_dir = "fhevm-keys";
println!("Generating keys...");
let keys = generate_fhe_keys();
println!("Creating directory {output_dir}");
std::fs::create_dir_all(output_dir).unwrap();
println!("Creating file {output_dir}/cks");
std::fs::write(format!("{output_dir}/cks"), keys.client_key).unwrap();
println!("Creating file {output_dir}/pks");
std::fs::write(format!("{output_dir}/pks"), keys.compact_public_key).unwrap();
println!("Creating file {output_dir}/sks");
std::fs::write(format!("{output_dir}/sks"), keys.server_key).unwrap();
}
30 changes: 24 additions & 6 deletions fhevm-engine/fhevm-engine-common/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
pub mod types;
use tfhe::{
generate_keys,
shortint::parameters::{
list_compression::COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64,
PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64,
},
CompactPublicKey, ConfigBuilder,
};

pub mod tfhe_ops;
pub mod types;

pub struct FhevmKeys {
pub server_key: Vec<u8>,
Expand All @@ -8,10 +17,19 @@ pub struct FhevmKeys {
}

pub fn generate_fhe_keys() -> FhevmKeys {
let (client_key, server_key) = tfhe::generate_keys(tfhe::ConfigBuilder::default().build());
let compact_key = tfhe::CompactPublicKey::new(&client_key);
let config =
ConfigBuilder::with_custom_parameters(PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64)
.enable_compression(COMP_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64)
.build();
let (client_key, server_key) = generate_keys(config);
let public_key = CompactPublicKey::new(&client_key);

let client_key = bincode::serialize(&client_key).unwrap();
let server_key = bincode::serialize(&server_key).unwrap();
let compact_public_key = bincode::serialize(&compact_key).unwrap();
FhevmKeys { server_key, client_key, compact_public_key }
}
let compact_public_key = bincode::serialize(&public_key).unwrap();
FhevmKeys {
server_key,
client_key,
compact_public_key,
}
}

0 comments on commit bed330f

Please sign in to comment.