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