Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 5 additions & 8 deletions willow/crypto/shell_ahe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -261,10 +261,9 @@ impl ShellAhe {
> {
let (ciphertext, metadata, wraparounds) =
self.encrypt_impl(plaintext, &pk.0, prng, true)?;
if !wraparounds.is_some() {
return Err(status::internal("Failed to compute wraparounds."));
}
Ok((ciphertext, metadata, wraparounds.unwrap()))
let wraparounds =
wraparounds.ok_or_else(|| status::internal("Failed to compute wraparounds."))?;
Ok((ciphertext, metadata, wraparounds))
}

fn partial_decrypt_impl(
Expand Down Expand Up @@ -319,10 +318,8 @@ impl ShellAhe {
> {
let (pd, metadata) =
self.partial_decrypt_impl(ct_a, &sk_share.0, prng, /*compute_metadata=*/ true)?;
if !metadata.is_some() {
return Err(status::internal("Failed to compute metadata."));
}
Ok((PartialDecryption(pd), metadata.unwrap()))
let metadata = metadata.ok_or_else(|| status::internal("Failed to compute metadata."))?;
Ok((PartialDecryption(pd), metadata))
}

pub fn num_coeffs(&self) -> usize {
Expand Down
19 changes: 8 additions & 11 deletions willow/protocol/willow_v1_accumulator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -273,17 +273,14 @@ mod tests {
let max_number_of_decryptors = aggregation_config.max_number_of_decryptors;

// Create common KAHE/VAHE instances.
let kahe = Rc::new(
ShellKahe::new(create_shell_kahe_config(&aggregation_config).unwrap(), CONTEXT_STRING)
.unwrap(),
);
let vahe = Rc::new(
ShellVahe::new(
create_shell_ahe_config(max_number_of_decryptors).unwrap(),
CONTEXT_STRING,
)
.unwrap(),
);
let kahe = Rc::new(ShellKahe::new(
create_shell_kahe_config(&aggregation_config)?,
CONTEXT_STRING,
)?);
let vahe = Rc::new(ShellVahe::new(
create_shell_ahe_config(max_number_of_decryptors)?,
CONTEXT_STRING,
)?);

// Create client.
let client = WillowV1Client::new_with_randomly_generated_seed(kahe.clone(), vahe.clone())?;
Expand Down
9 changes: 3 additions & 6 deletions willow/protocol/willow_v1_coordinator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,7 @@ mod tests {

#[gtest]
fn coordinator_handles_setup_and_creates_verification_request() -> googletest::Result<()> {
let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);

// Create two decryptors.
let decryptor1 = WillowV1Decryptor::new_with_randomly_generated_seed(vahe.clone())?;
Expand Down Expand Up @@ -209,8 +208,7 @@ mod tests {

#[gtest]
fn coordinator_setup_fails_when_not_pre_setup() -> googletest::Result<()> {
let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);

let decryptor = WillowV1Decryptor::new_with_randomly_generated_seed(vahe.clone())?;
let mut state = DecryptorState::default();
Expand All @@ -237,8 +235,7 @@ mod tests {
/// using the multi-decryptor protocol with a coordinator and reputable decryptor.
#[gtest]
fn end_to_end_multi_decryptor_protocol() -> googletest::Result<()> {
let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);

// Create two multi-decryptors (same struct, using multi-decryptor traits).
let decryptor1 = WillowV1Decryptor::new_with_randomly_generated_seed(vahe.clone())?;
Expand Down
25 changes: 9 additions & 16 deletions willow/protocol/willow_v1_decryptor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -292,8 +292,7 @@ mod tests {

#[gtest]
fn decryptor_state_serialization_roundtrip() -> googletest::Result<()> {
let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);
let decryptor = WillowV1Decryptor::new_with_randomly_generated_seed(vahe)?;
let mut decryptor_state = DecryptorState::default();

Expand Down Expand Up @@ -321,13 +320,12 @@ mod tests {
use shell_parameters::create_shell_kahe_config;
use testing_utils::generate_aggregation_config;

let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);
let decryptor = WillowV1Decryptor::new_with_randomly_generated_seed(vahe)?;

let config = generate_aggregation_config("default".to_string(), 16, 10, 1, 1);
let kahe_config = create_shell_kahe_config(&config).unwrap();
let kahe = Rc::new(ShellKahe::new(kahe_config, &config.key_id).unwrap());
let kahe_config = create_shell_kahe_config(&config)?;
let kahe = Rc::new(ShellKahe::new(kahe_config, &config.key_id)?);

let mut decryptor_state = DecryptorState::default();
decryptor.create_public_key_share(&mut decryptor_state)?;
Expand All @@ -354,8 +352,7 @@ mod tests {
fn create_setup_contribution_generates_key_share_and_proof() -> googletest::Result<()> {
use decryptor_traits::SecureAggregationBaseMultiDecryptor;

let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);
let decryptor = WillowV1Decryptor::new_with_randomly_generated_seed(vahe)?;
let mut state = DecryptorState::default();

Expand All @@ -376,8 +373,7 @@ mod tests {
};
use messages::VerifyKeyContributionsRequest;

let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);
let decryptor1 = WillowV1Decryptor::new_with_randomly_generated_seed(vahe.clone())?;
let decryptor2 = WillowV1Decryptor::new_with_randomly_generated_seed(vahe.clone())?;

Expand All @@ -402,8 +398,7 @@ mod tests {
};
use messages::VerifyKeyContributionsRequest;

let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);
let decryptor = WillowV1Decryptor::new_with_randomly_generated_seed(vahe.clone())?;

let mut state = DecryptorState::default();
Expand All @@ -424,8 +419,7 @@ mod tests {
use decryptor_traits::SecureAggregationReputableDecryptor;
use messages::VerifyKeyContributionsRequest;

let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);
let decryptor = WillowV1Decryptor::new_with_randomly_generated_seed(vahe)?;

let request = VerifyKeyContributionsRequest { key_contributions: vec![] };
Expand All @@ -444,8 +438,7 @@ mod tests {
use single_thread_hkdf::SingleThreadHkdfPrng;
use vahe_traits::{Recover, VerifiableEncrypt};

let vahe =
Rc::new(ShellVahe::new(create_shell_ahe_config(1).unwrap(), CONTEXT_STRING).unwrap());
let vahe = Rc::new(ShellVahe::new(create_shell_ahe_config(1)?, CONTEXT_STRING)?);

let decryptor = WillowV1Decryptor::new_with_randomly_generated_seed(vahe.clone())?;
let mut state = DecryptorState::default();
Expand Down
22 changes: 9 additions & 13 deletions willow/protocol/willow_v1_verifier.rs
Original file line number Diff line number Diff line change
Expand Up @@ -298,22 +298,18 @@ mod tests {
let max_number_of_decryptors = aggregation_config.max_number_of_decryptors;

// Create common KAHE/VAHE instances.
let kahe = Rc::new(
ShellKahe::new(create_shell_kahe_config(&aggregation_config).unwrap(), CONTEXT_STRING)
.unwrap(),
);
let vahe = Rc::new(
ShellVahe::new(
create_shell_ahe_config(max_number_of_decryptors).unwrap(),
CONTEXT_STRING,
)
.unwrap(),
);
let kahe = Rc::new(ShellKahe::new(
create_shell_kahe_config(&aggregation_config)?,
CONTEXT_STRING,
)?);
let vahe = Rc::new(ShellVahe::new(
create_shell_ahe_config(max_number_of_decryptors)?,
CONTEXT_STRING,
)?);

// Create client.
let client =
WillowV1Client::new_with_randomly_generated_seed(Rc::clone(&kahe), Rc::clone(&vahe))
.unwrap();
WillowV1Client::new_with_randomly_generated_seed(Rc::clone(&kahe), Rc::clone(&vahe))?;

// Create decryptor.
let mut decryptor_state = DecryptorState::default();
Expand Down
6 changes: 3 additions & 3 deletions willow/testing_utils/testing_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ pub fn ahe_decrypt_with_single_sk_share(
vahe: &ShellVahe,
prng: &mut <ShellKahe as KaheBase>::Rng,
) -> Result<<ShellVahe as AheBase>::Plaintext, status::StatusError> {
let decryption_request = vahe.get_partial_dec_ciphertext(&ahe_ciphertext).unwrap();
let rest_of_ciphertext = vahe.get_recover_ciphertext(&ahe_ciphertext).unwrap();
let partial_decryption = vahe.partial_decrypt(&decryption_request, &sk_share, prng).unwrap();
let decryption_request = vahe.get_partial_dec_ciphertext(&ahe_ciphertext)?;
let rest_of_ciphertext = vahe.get_recover_ciphertext(&ahe_ciphertext)?;
let partial_decryption = vahe.partial_decrypt(&decryption_request, &sk_share, prng)?;
vahe.recover(&partial_decryption, &rest_of_ciphertext, None)
}

Expand Down
Loading
Loading