MCPcopy Create free account
hub / github.com/docknetwork/crypto / rerandomize_encryption

Function rerandomize_encryption

saver/src/saver_groth16.rs:380–478  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

378
379 #[test]
380 fn rerandomize_encryption() {
381 fn check(chunk_bit_size: u8) {
382 let mut rng = StdRng::seed_from_u64(0u64);
383 let gens = EncryptionGens::<Bls12_381>::new_using_rng(&mut rng);
384 let n = chunks_count::<Fr>(chunk_bit_size);
385 let msg = Fr::rand(&mut rng);
386
387 let circuit = BitsizeCheckCircuit::new(chunk_bit_size, Some(n), None, true);
388 let snark_srs = generate_srs::<Bls12_381, _, _>(circuit, &gens, &mut rng).unwrap();
389 let pvk = prepare_verifying_key::<Bls12_381>(&snark_srs.pk.vk);
390
391 let g_i = get_gs_for_encryption(&snark_srs.pk.vk);
392 let (sk, ek, dk) = keygen(
393 &mut rng,
394 chunk_bit_size,
395 &gens,
396 g_i,
397 &snark_srs.pk.delta_g1,
398 &snark_srs.gamma_g1,
399 )
400 .unwrap();
401
402 let start = Instant::now();
403 let (ct, _, proof) =
404 Encryption::encrypt_with_proof(&mut rng, &msg, &ek, &snark_srs, chunk_bit_size)
405 .unwrap();
406 let enc_time = start.elapsed();
407
408 Encryption::verify_ciphertext_commitment(
409 &ct.X_r,
410 &ct.enc_chunks,
411 &ct.commitment,
412 ek.clone(),
413 gens.clone(),
414 )
415 .unwrap();
416
417 verify_proof(&pvk, &proof, &ct).unwrap();
418
419 let (decrypted_message, nu) = ct
420 .decrypt_given_groth16_vk(&sk, dk.clone(), &snark_srs.pk.vk, chunk_bit_size)
421 .unwrap();
422 assert_eq!(decrypted_message, msg);
423 ct.verify_decryption_given_groth16_vk(
424 &decrypted_message,
425 &nu,
426 chunk_bit_size,
427 dk.clone(),
428 &snark_srs.pk.vk,
429 gens.clone(),
430 )
431 .unwrap();
432
433 let start = Instant::now();
434 let (ct, _, proof) = Encryption::rerandomize_ciphertext_and_proof(
435 ct,
436 proof,
437 &snark_srs.pk.vk,

Callers

nothing calls this directly

Calls 1

checkFunction · 0.70

Tested by

no test coverage detected