| 886 | type Fr = <Bls12_381 as Pairing>::ScalarField; |
| 887 | |
| 888 | pub fn enc_setup<R: RngCore>( |
| 889 | chunk_bit_size: u8, |
| 890 | rng: &mut R, |
| 891 | ) -> ( |
| 892 | EncryptionGens<Bls12_381>, |
| 893 | Vec<<Bls12_381 as Pairing>::G1Affine>, |
| 894 | SecretKey<<Bls12_381 as Pairing>::ScalarField>, |
| 895 | EncryptionKey<Bls12_381>, |
| 896 | DecryptionKey<Bls12_381>, |
| 897 | ) { |
| 898 | let n = chunks_count::<Fr>(chunk_bit_size) as usize; |
| 899 | let gens = EncryptionGens::<Bls12_381>::new_using_rng(rng); |
| 900 | let g_i = (0..n) |
| 901 | .map(|_| <Bls12_381 as Pairing>::G1Affine::rand(rng)) |
| 902 | .collect::<Vec<_>>(); |
| 903 | let delta = Fr::rand(rng); |
| 904 | let gamma = Fr::rand(rng); |
| 905 | let g_delta = gens.G.mul_bigint(delta.into_bigint()).into_affine(); |
| 906 | let g_gamma = gens.G.mul_bigint(gamma.into_bigint()).into_affine(); |
| 907 | let (sk, ek, dk) = keygen(rng, chunk_bit_size, &gens, &g_i, &g_delta, &g_gamma).unwrap(); |
| 908 | (gens, g_i, sk, ek, dk) |
| 909 | } |
| 910 | |
| 911 | pub fn gen_messages<R: RngCore>( |
| 912 | rng: &mut R, |