@@ -17,33 +17,34 @@ use kahe_traits::{HasKahe, KaheBase, KaheEncrypt, KaheKeygen, TrySecretKeyInto};
1717use messages:: { ClientMessage , DecryptorPublicKey } ;
1818use prng_traits:: SecurePrng ;
1919use std:: cell:: RefCell ;
20+ use std:: rc:: Rc ;
2021use vahe_traits:: { HasVahe , VaheBase , VerifiableEncrypt } ;
2122
2223/// Lightweight client directly exposing KAHE/VAHE types.
2324pub struct WillowV1Client < Kahe : KaheBase , Vahe : VaheBase > {
24- pub kahe : Kahe ,
25- pub vahe : Vahe ,
25+ pub kahe : Rc < Kahe > ,
26+ pub vahe : Rc < Vahe > ,
2627 pub prng : RefCell < Kahe :: Rng > , // Using a single PRNG for both VAHE and KAHE.
2728}
2829
2930impl < Kahe : KaheBase , Vahe : VaheBase > HasKahe for WillowV1Client < Kahe , Vahe > {
3031 type Kahe = Kahe ;
3132 fn kahe ( & self ) -> & Self :: Kahe {
32- & self . kahe
33+ self . kahe . as_ref ( )
3334 }
3435}
3536
3637impl < Kahe : KaheBase , Vahe : VaheBase > HasVahe for WillowV1Client < Kahe , Vahe > {
3738 type Vahe = Vahe ;
3839 fn vahe ( & self ) -> & Self :: Vahe {
39- & self . vahe
40+ self . vahe . as_ref ( )
4041 }
4142}
4243
4344impl < Kahe : KaheBase , Vahe : VaheBase > WillowV1Client < Kahe , Vahe > {
4445 pub fn new_with_randomly_generated_seed (
45- kahe : Kahe ,
46- vahe : Vahe ,
46+ kahe : Rc < Kahe > ,
47+ vahe : Rc < Vahe > ,
4748 ) -> Result < Self , status:: StatusError > {
4849 let seed = Kahe :: Rng :: generate_seed ( ) ?;
4950 let prng = RefCell :: new ( Kahe :: Rng :: create ( & seed) ?) ;
@@ -124,8 +125,8 @@ mod test {
124125
125126 // Create a client.
126127 let ( kahe_config, ahe_config) = create_shell_configs ( & aggregation_config) ?;
127- let kahe = ShellKahe :: new ( kahe_config, CONTEXT_STRING ) ?;
128- let vahe = ShellVahe :: new ( ahe_config, CONTEXT_STRING ) ?;
128+ let kahe = Rc :: new ( ShellKahe :: new ( kahe_config, CONTEXT_STRING ) ?) ;
129+ let vahe = Rc :: new ( ShellVahe :: new ( ahe_config, CONTEXT_STRING ) ?) ;
129130 let client = WillowV1Client :: new_with_randomly_generated_seed ( kahe, vahe) ?;
130131
131132 // Generate AHE keys.
@@ -161,16 +162,13 @@ mod test {
161162 key_id : b"test" . to_vec ( ) ,
162163 } ;
163164
164- // Create a client .
165+ // Create common KAHE/VAHE instances .
165166 let ( kahe_config, ahe_config) = create_shell_configs ( & aggregation_config) ?;
166- let kahe = ShellKahe :: new ( kahe_config, CONTEXT_STRING ) ?;
167- let vahe = ShellVahe :: new ( ahe_config, CONTEXT_STRING ) ?;
168- let client1 = WillowV1Client :: new_with_randomly_generated_seed ( kahe, vahe) ?;
167+ let kahe = Rc :: new ( ShellKahe :: new ( kahe_config, CONTEXT_STRING ) ?) ;
168+ let vahe = Rc :: new ( ShellVahe :: new ( ahe_config, CONTEXT_STRING ) ?) ;
169169
170- // Create a second client.
171- let ( kahe_config, ahe_config) = create_shell_configs ( & aggregation_config) ?;
172- let kahe = ShellKahe :: new ( kahe_config, CONTEXT_STRING ) ?;
173- let vahe = ShellVahe :: new ( ahe_config, CONTEXT_STRING ) ?;
170+ // Create clients.
171+ let client1 = WillowV1Client :: new_with_randomly_generated_seed ( kahe. clone ( ) , vahe. clone ( ) ) ?;
174172 let client2 = WillowV1Client :: new_with_randomly_generated_seed ( kahe, vahe) ?;
175173
176174 // Generate AHE keys.
0 commit comments