Skip to content

Commit dd6b7a5

Browse files
committed
chore(backward): add data for the new zk proof
1 parent e55ebe2 commit dd6b7a5

File tree

8 files changed

+354
-60
lines changed

8 files changed

+354
-60
lines changed

utils/tfhe-backward-compat-data/crates/generate_1_5/src/lib.rs

Lines changed: 108 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ use tfhe::boolean::engine::BooleanEngine;
77
use tfhe::core_crypto::commons::generators::DeterministicSeeder;
88
use tfhe::core_crypto::prelude::DefaultRandomGenerator;
99
use tfhe::shortint::engine::ShortintEngine;
10-
use tfhe::{CompressedServerKey, Seed};
10+
use tfhe::zk::{CompactPkeCrs, ZkComputeLoad};
11+
use tfhe::{
12+
ClientKey, CompactPublicKey, CompressedServerKey, ProvenCompactCiphertextList, Seed, ServerKey,
13+
set_server_key,
14+
};
1115
use tfhe_backward_compat_data::generate::*;
1216
use tfhe_backward_compat_data::*;
1317
use utils::*;
@@ -30,6 +34,23 @@ const HL_SERVERKEY_WITH_COMPRESSION_TEST: HlServerKeyTest = HlServerKeyTest {
3034
rerand_cpk_filename: None,
3135
compressed: false,
3236
};
37+
38+
// We have a proven list generated for 0.11, but since this version the hash modes have evolved so
39+
// we re generate one
40+
const HL_PROVEN_COMPACTLIST_TEST_ZKV2: HlHeterogeneousCiphertextListTest =
41+
HlHeterogeneousCiphertextListTest {
42+
test_filename: Cow::Borrowed("hl_proven_list_zkv2_1_5"),
43+
key_filename: Cow::Borrowed("client_key_for_zk"),
44+
clear_values: Cow::Borrowed(&[17u8 as u64]),
45+
data_kinds: Cow::Borrowed(&[DataKind::Unsigned]),
46+
compressed: false,
47+
proof_info: Some(PkeZkProofAuxiliaryInfo {
48+
public_key_filename: Cow::Borrowed("public_key"),
49+
params_filename: Cow::Borrowed("zk_pke_crs"),
50+
metadata: Cow::Borrowed("2vdrawkcab"),
51+
}),
52+
};
53+
3354
pub struct V1_5;
3455

3556
impl TfhersVersion for V1_5 {
@@ -54,29 +75,97 @@ impl TfhersVersion for V1_5 {
5475
let dir = Self::data_dir(base_data_dir).join(HL_MODULE_NAME);
5576
create_dir_all(&dir).unwrap();
5677

57-
let config =
58-
tfhe::ConfigBuilder::with_custom_parameters(HL_CLIENTKEY_TEST.parameters.convert())
59-
.enable_compression(INSECURE_TEST_PARAMS_TUNIFORM_COMPRESSION_MULTIBIT.convert())
60-
.build();
61-
let (hl_client_key, hl_server_key) = tfhe::generate_keys(config);
62-
let compressed_server_key = CompressedServerKey::new(&hl_client_key);
63-
64-
store_versioned_test(&hl_client_key, &dir, &HL_CLIENTKEY_TEST.test_filename);
65-
store_versioned_test(
66-
&compressed_server_key,
67-
&dir,
68-
&HL_COMPRESSED_SERVERKEY_TEST.test_filename,
69-
);
70-
store_versioned_test(
71-
&hl_server_key,
72-
&dir,
73-
&HL_SERVERKEY_WITH_COMPRESSION_TEST.test_filename,
74-
);
78+
{
79+
let config =
80+
tfhe::ConfigBuilder::with_custom_parameters(HL_CLIENTKEY_TEST.parameters.convert())
81+
.enable_compression(
82+
INSECURE_TEST_PARAMS_TUNIFORM_COMPRESSION_MULTIBIT.convert(),
83+
)
84+
.build();
85+
let (hl_client_key, hl_server_key) = tfhe::generate_keys(config);
86+
let compressed_server_key = CompressedServerKey::new(&hl_client_key);
87+
88+
store_versioned_test(&hl_client_key, &dir, &HL_CLIENTKEY_TEST.test_filename);
89+
store_versioned_test(
90+
&compressed_server_key,
91+
&dir,
92+
&HL_COMPRESSED_SERVERKEY_TEST.test_filename,
93+
);
94+
store_versioned_test(
95+
&hl_server_key,
96+
&dir,
97+
&HL_SERVERKEY_WITH_COMPRESSION_TEST.test_filename,
98+
);
99+
}
100+
101+
// Generate a zk proof with the new hash modes
102+
{
103+
let config = tfhe::ConfigBuilder::with_custom_parameters(
104+
INSECURE_SMALL_TEST_PARAMS_KS32.convert(),
105+
)
106+
.use_dedicated_compact_public_key_parameters((
107+
INSECURE_DEDICATED_CPK_TEST_PARAMS.convert(),
108+
KS_TO_SMALL_TEST_PARAMS.convert(),
109+
))
110+
.build();
111+
let hl_client_key = ClientKey::generate(config);
112+
let hl_server_key = ServerKey::new(&hl_client_key);
113+
set_server_key(hl_server_key.clone());
114+
let compact_pub_key = CompactPublicKey::new(&hl_client_key);
115+
let crs = CompactPkeCrs::from_config(config, 64).unwrap();
116+
117+
store_versioned_auxiliary(
118+
&crs,
119+
&dir,
120+
&HL_PROVEN_COMPACTLIST_TEST_ZKV2
121+
.proof_info
122+
.unwrap()
123+
.params_filename,
124+
);
125+
126+
// Store the associated client key to be able to decrypt the ciphertexts in the list
127+
store_versioned_auxiliary(
128+
&hl_client_key,
129+
&dir,
130+
&HL_PROVEN_COMPACTLIST_TEST_ZKV2.key_filename,
131+
);
132+
133+
store_versioned_auxiliary(
134+
&compact_pub_key,
135+
&dir,
136+
&HL_PROVEN_COMPACTLIST_TEST_ZKV2
137+
.proof_info
138+
.unwrap()
139+
.public_key_filename,
140+
);
141+
142+
let mut proven_builder = ProvenCompactCiphertextList::builder(&compact_pub_key);
143+
proven_builder.push(HL_PROVEN_COMPACTLIST_TEST_ZKV2.clear_values[0] as u8);
144+
145+
let proven_list_packed = proven_builder
146+
.build_with_proof_packed(
147+
&crs,
148+
HL_PROVEN_COMPACTLIST_TEST_ZKV2
149+
.proof_info
150+
.unwrap()
151+
.metadata
152+
.as_bytes(),
153+
ZkComputeLoad::Proof,
154+
)
155+
.unwrap();
156+
157+
store_versioned_test(
158+
&proven_list_packed,
159+
&dir,
160+
&HL_PROVEN_COMPACTLIST_TEST_ZKV2.test_filename,
161+
);
162+
}
75163

76164
vec![
77165
TestMetadata::HlClientKey(HL_CLIENTKEY_TEST),
78166
TestMetadata::HlServerKey(HL_COMPRESSED_SERVERKEY_TEST),
79167
TestMetadata::HlServerKey(HL_SERVERKEY_WITH_COMPRESSION_TEST),
168+
TestMetadata::HlHeterogeneousCiphertextList(HL_PROVEN_COMPACTLIST_TEST_ZKV2),
80169
]
81170
}
82171
}

0 commit comments

Comments
 (0)