1 package civitas.crypto.proofvote;
2
3 import static org.mockito.Mockito.mock;
4
5 import java.util.List;
6 import java.util.Map;
7
8 import civitas.common.ConstructTestData;
9 import civitas.crypto.oneoflreencryption.ElGamal1OfLReencryption;
10 import civitas.crypto.proof1ofl.ElGamalProof1OfLTestData;
11 import civitas.util.CivitasBigInteger;
12 import civitas.util.CivitasBigIntegerFactory;
13
14 public interface ProofVoteTestData extends ElGamalProof1OfLTestData {
15
16 ElGamal1OfLReencryption ENCRYPTED_CHOICE =
17 new ElGamal1OfLReencryption(REENCRYPTED_WELL_KNOWN_CHOICE, EL_GAMAL_PROOF_1_OF_L);
18
19 List<CivitasBigInteger> PROOF_VOTE_ENVIRONMENT = List.of(
20 EL_GAMAL_PARAMETERS.g,
21 CIPHERTEXT_ENCCAP.a,
22 CIPHERTEXT_ENCCAP.b,
23 REENCRYPTED_WELL_KNOWN_CHOICE.a,
24 REENCRYPTED_WELL_KNOWN_CHOICE.b,
25 BIGINTEGER_HASH_OF_ADDITIONALENV,
26 BIGINT_G.modPow(RANDOMS_0, BIGINT_P),
27 BIGINT_G.modPow(RANDOMS_1, BIGINT_P));
28
29 byte[] HASH_OF_PROOF_ENVIRONMENT = "hash of proof environment".getBytes();
30
31 CivitasBigInteger PROOF_VOTE_C =
32 CivitasBigIntegerFactory.obtain(1, HASH_OF_PROOF_ENVIRONMENT).mod(BIGINT_Q);
33 CivitasBigInteger PROOF_VOTE_S1 =
34 RANDOMS_0.modSubtract(PROOF_VOTE_C.modMultiply(ELGAMAL_REENCRYPT_FACTOR_EPRIME.r(), BIGINT_Q), BIGINT_Q);
35 CivitasBigInteger PROOF_VOTE_S2 =
36 RANDOMS_1.modSubtract(PROOF_VOTE_C.modMultiply(ELGAMAL_REENCRYPT_FACTOR_E.r(), BIGINT_Q), BIGINT_Q);
37 ProofVote PROOF_VOTE = new ProofVote(PROOF_VOTE_C, PROOF_VOTE_S1, PROOF_VOTE_S2);
38
39 ProofVote PROOF_VOTE_BAD = new ProofVote(BIGINT_B, PROOF_VOTE_S1, PROOF_VOTE_S2);
40
41 Map<Integer, ProofVote> PROOF_VOTE_MAP = ConstructTestData.constructTestData(
42 VOTE_PIECES, piece -> mock(ProofVote.class, "PROOF_VOTE_" + VOTE_PIECES.indexOf(piece)));
43 }