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

Function encrypt_decrypt_timing

saver/src/encryption.rs:1060–1178  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1058
1059 #[test]
1060 fn encrypt_decrypt_timing() {
1061 fn check(chunk_bit_size: u8, count: u8) {
1062 let mut rng = StdRng::seed_from_u64(0u64);
1063 let (gens, g_i, sk, ek, dk) = enc_setup(chunk_bit_size, &mut rng);
1064 let prepared_gens = PreparedEncryptionGens::from(gens.clone());
1065 let prepared_ek = PreparedEncryptionKey::from(ek.clone());
1066 let prepared_dk = PreparedDecryptionKey::from(dk.clone());
1067 let pairing_powers = prepared_dk.pairing_powers(chunk_bit_size, &g_i).unwrap();
1068
1069 let mut total_enc = Duration::default();
1070 let mut total_ver_com = Duration::default();
1071 let mut total_ver_com_prep = Duration::default();
1072 let mut total_dec = Duration::default();
1073 let mut total_dec_prep = Duration::default();
1074 let mut total_dec_prep_powers = Duration::default();
1075 let mut total_ver_dec = Duration::default();
1076 let mut total_ver_dec_prep = Duration::default();
1077
1078 for _ in 0..count {
1079 let m = Fr::rand(&mut rng);
1080
1081 let start = Instant::now();
1082 let (ct, _) = Encryption::encrypt(&mut rng, &m, &ek, &g_i, chunk_bit_size).unwrap();
1083 total_enc += start.elapsed();
1084
1085 let start = Instant::now();
1086 ct.verify_commitment(ek.clone(), gens.clone()).unwrap();
1087 total_ver_com += start.elapsed();
1088
1089 let start = Instant::now();
1090 ct.verify_commitment(prepared_ek.clone(), prepared_gens.clone())
1091 .unwrap();
1092 total_ver_com_prep += start.elapsed();
1093
1094 let (chunks, nu) = Encryption::decrypt_to_chunks(
1095 &ct.X_r,
1096 &ct.enc_chunks,
1097 &sk,
1098 dk.clone(),
1099 &g_i,
1100 chunk_bit_size,
1101 )
1102 .unwrap();
1103
1104 let decomposed = decompose(&m, chunk_bit_size).unwrap();
1105 assert_eq!(decomposed, chunks);
1106
1107 let start = Instant::now();
1108 let (m_, nu_) = ct.decrypt(&sk, dk.clone(), &g_i, chunk_bit_size).unwrap();
1109 total_dec += start.elapsed();
1110 assert_eq!(m, m_);
1111 assert_eq!(nu, nu_);
1112
1113 let start = Instant::now();
1114 let (m_, nu_) = ct
1115 .decrypt(&sk, prepared_dk.clone(), &g_i, chunk_bit_size)
1116 .unwrap();
1117 total_dec_prep += start.elapsed();

Callers

nothing calls this directly

Calls 1

checkFunction · 0.70

Tested by

no test coverage detected