|
3 | 3 | use crate::node::{Node, Nodes};
|
4 | 4 | use ic_crypto_internal_threshold_sig_ecdsa::test_utils::{corrupt_dealing, ComplaintCorrupter};
|
5 | 5 | use ic_crypto_internal_threshold_sig_ecdsa::{
|
6 |
| - EccScalar, IDkgComplaintInternal, IDkgDealingInternal, MEGaCiphertext, NodeIndex, Seed, |
| 6 | + IDkgComplaintInternal, IDkgDealingInternal, NodeIndex, Seed, |
7 | 7 | };
|
8 | 8 | use ic_crypto_temp_crypto::{TempCryptoComponent, TempCryptoComponentGeneric};
|
9 | 9 | use ic_interfaces::crypto::IDkgProtocol;
|
@@ -2124,6 +2124,7 @@ pub fn corrupt_dealings_and_generate_complaints<'a, R: RngCore + CryptoRng>(
|
2124 | 2124 | *index_to_corrupt,
|
2125 | 2125 | &mut transcript.verified_dealings,
|
2126 | 2126 | complainer_index,
|
| 2127 | + rng, |
2127 | 2128 | )
|
2128 | 2129 | });
|
2129 | 2130 |
|
@@ -2179,38 +2180,30 @@ fn generate_and_verify_opening(
|
2179 | 2180 | opening
|
2180 | 2181 | }
|
2181 | 2182 |
|
2182 |
| -fn corrupt_signed_dealing_for_one_receiver( |
| 2183 | +fn corrupt_signed_dealing_for_one_receiver<R: Rng + CryptoRng>( |
2183 | 2184 | dealing_index_to_corrupt: NodeIndex,
|
2184 | 2185 | dealings: &mut BTreeMap<NodeIndex, BatchSignedIDkgDealing>,
|
2185 | 2186 | receiver_index: NodeIndex,
|
| 2187 | + rng: &mut R, |
2186 | 2188 | ) {
|
2187 | 2189 | let signed_dealing = dealings
|
2188 | 2190 | .get_mut(&dealing_index_to_corrupt)
|
2189 | 2191 | .unwrap_or_else(|| panic!("Missing dealing at index {:?}", dealing_index_to_corrupt));
|
2190 | 2192 | let invalidated_internal_dealing_raw = {
|
2191 |
| - let mut internal_dealing = |
| 2193 | + let internal_dealing = |
2192 | 2194 | IDkgDealingInternal::deserialize(&signed_dealing.idkg_dealing().internal_dealing_raw)
|
2193 | 2195 | .expect("failed to deserialize internal dealing");
|
2194 |
| - match internal_dealing.ciphertext { |
2195 |
| - MEGaCiphertext::Single(ref mut ctext) => { |
2196 |
| - let corrupted_ctext = corrupt_ecc_scalar(&ctext.ctexts[receiver_index as usize]); |
2197 |
| - ctext.ctexts[receiver_index as usize] = corrupted_ctext; |
2198 |
| - } |
2199 |
| - MEGaCiphertext::Pairs(ref mut ctext) => { |
2200 |
| - let (ctext_1, ctext_2) = ctext.ctexts[receiver_index as usize].clone(); |
2201 |
| - let corrupted_ctext_1 = corrupt_ecc_scalar(&ctext_1); |
2202 |
| - ctext.ctexts[receiver_index as usize] = (corrupted_ctext_1, ctext_2); |
2203 |
| - } |
2204 |
| - }; |
2205 |
| - internal_dealing |
| 2196 | + |
| 2197 | + let corrupted_internal_dealing = |
| 2198 | + ic_crypto_internal_threshold_sig_ecdsa::test_utils::corrupt_dealing( |
| 2199 | + &internal_dealing, |
| 2200 | + &[receiver_index], |
| 2201 | + Seed::from_rng(rng), |
| 2202 | + ) |
| 2203 | + .expect("failed to corrupt dealing"); |
| 2204 | + corrupted_internal_dealing |
2206 | 2205 | .serialize()
|
2207 | 2206 | .expect("failed to serialize internal dealing")
|
2208 | 2207 | };
|
2209 | 2208 | signed_dealing.content.content.internal_dealing_raw = invalidated_internal_dealing_raw;
|
2210 | 2209 | }
|
2211 |
| - |
2212 |
| -fn corrupt_ecc_scalar(value: &EccScalar) -> EccScalar { |
2213 |
| - value |
2214 |
| - .add(&EccScalar::one(value.curve_type())) |
2215 |
| - .expect("Corruption for testing failed") |
2216 |
| -} |
0 commit comments