1 package civitas.crypto.ciphertextlist;
2
3 import static org.mockito.Mockito.mock;
4
5 import java.util.List;
6 import java.util.stream.IntStream;
7
8 import civitas.crypto.ciphertext.ElGamalCiphertext;
9 import civitas.crypto.ciphertext.ElGamalCiphertextTestData;
10 import civitas.crypto.ciphertext.ElGamalCiphertextish;
11 import civitas.crypto.signedciphertext.ElGamalSignedCiphertext;
12 import civitas.crypto.votecapabilityshare.VoteCapabilityTestData;
13 import civitas.util.CivitasBigInteger;
14 import civitas.util.CivitasBigIntegerFactory;
15
16 public interface ElGamalCiphertextListTestData extends ElGamalCiphertextTestData, VoteCapabilityTestData {
17
18 CiphertextList EMPTY_LIST = new CiphertextList();
19
20 CiphertextList CIPHERTEXTLIST_ONE_LONG = new CiphertextList(List.of(EL_GAMAL_CIPHERTEXT_ONE));
21
22 CiphertextList CIPHERTEXTLIST_TWO_LONG =
23 new CiphertextList(List.of(EL_GAMAL_CIPHERTEXT_ONE, EL_GAMAL_CIPHERTEXT_TWO));
24
25 CiphertextList CIPHERTEXTLIST_ZEROSIZED = new CiphertextList();
26 CiphertextList CIPHERTEXTLIST_ONEINSIDE = new CiphertextList(List.of(CIPHERTEXT_E));
27 CiphertextList CIPHERTEXTLIST = new CiphertextList(List.of(CIPHERTEXT_E, CIPHERTEXT_EPRIME));
28
29 int NO_OF_WELL_KNOWN_CIPHERTEXTS = 4;
30
31 CiphertextList CIPHERTEXT_LIST = new CiphertextList(IntStream.range(0, NO_OF_WELL_KNOWN_CIPHERTEXTS)
32 .mapToObj(
33 i -> new ElGamalCiphertext(ONE, BIGINT_G.modPow(CivitasBigIntegerFactory.obtain(i + 1), BIGINT_P)))
34 .toList());
35 List<ElGamalSignedCiphertext> ENCRYPTED_SIGNED_VOTE_CAPABILITIES = VOTE_CAPABILITIES.stream()
36 .map(x -> new ElGamalSignedCiphertext(
37 mock(
38 CivitasBigInteger.class,
39 "ENCRYPTED_SIGNED_VOTE_CAPABILITIES_A" + VOTE_CAPABILITIES.indexOf(x)),
40 mock(
41 CivitasBigInteger.class,
42 "ENCRYPTED_SIGNED_VOTE_CAPABILITIES_B" + VOTE_CAPABILITIES.indexOf(x)),
43 mock(
44 CivitasBigInteger.class,
45 "ENCRYPTED_SIGNED_VOTE_CAPABILITIES_C" + VOTE_CAPABILITIES.indexOf(x)),
46 mock(
47 CivitasBigInteger.class,
48 "ENCRYPTED_SIGNED_VOTE_CAPABILITIES_D" + VOTE_CAPABILITIES.indexOf(x))))
49 .toList();
50 List<ElGamalCiphertext> ENCRYPTED_VOTE_CAPABILITIES = ENCRYPTED_SIGNED_VOTE_CAPABILITIES.stream()
51 .map(x -> mock(
52 ElGamalCiphertext.class,
53 "ENCRYPTED_VOTE_CAPABILITIES_" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x)))
54 .toList();
55 List<ElGamalCiphertext> ENCRYPTED_VOTE_CAPABILITIES_WITH_EPRIME = VOTE_CAPABILITIES.stream()
56 .map(x -> mock(
57 ElGamalCiphertext.class, "ENCRYPTED_VOTE_CAPABILITIES_WITH_EPRIME_" + VOTE_CAPABILITIES.indexOf(x)))
58 .toList();
59 ElGamalSignedCiphertext[] POSTED_CAPABILITIES =
60 ENCRYPTED_SIGNED_VOTE_CAPABILITIES.toArray(new ElGamalSignedCiphertext[0]);
61 ElGamalSignedCiphertext[] POSTED_CAPABILITIES_NONVERIFY = VOTE_CAPABILITIES.stream()
62 .map(x -> mock(
63 ElGamalSignedCiphertext.class, "POSTED_CAPABILITIES_NONVERIFY_" + VOTE_CAPABILITIES.indexOf(x)))
64 .toList()
65 .toArray(new ElGamalSignedCiphertext[0]);
66
67 List<CivitasBigInteger> DS = RANDOMS.subList(0, NO_OF_WELL_KNOWN_CIPHERTEXTS);
68 List<CivitasBigInteger> RS = RANDOMS.subList(NO_OF_WELL_KNOWN_CIPHERTEXTS, NO_OF_WELL_KNOWN_CIPHERTEXTS * 2);
69
70 CivitasBigInteger SUM = DS.stream().reduce(ZERO, (a, b) -> {
71 if (b != DS.get(MY_CHOICE.ordinal())) {
72 return a.modAdd(b, BIGINT_Q);
73 }
74 return a;
75 });
76
77 List<ElGamalCiphertextish> REENCRYPTED_VOTE_CAPABILITIES = ENCRYPTED_SIGNED_VOTE_CAPABILITIES.stream()
78 .map(x -> (ElGamalCiphertextish) new ElGamalCiphertext(
79 mock(
80 CivitasBigInteger.class,
81 "REENCRYPTED_VOTE_CAPABILITIES_A" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x)),
82 mock(
83 CivitasBigInteger.class,
84 "REENCRYPTED_VOTE_CAPABILITIES_B" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x))))
85 .toList();
86
87 List<ElGamalCiphertextish> REENCRYPTED_VOTE_CAPABILITIES_WITH_KEY_E = ENCRYPTED_SIGNED_VOTE_CAPABILITIES.stream()
88 .map(x -> (ElGamalCiphertextish) new ElGamalCiphertext(
89 mock(
90 CivitasBigInteger.class,
91 "REENCRYPTED_VOTE_CAPABILITIES_E_A" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x)),
92 mock(
93 CivitasBigInteger.class,
94 "REENCRYPTED_VOTE_CAPABILITIES_E_B" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x))))
95 .toList();
96
97 List<ElGamalCiphertext> PROOF_EPRIMES = List.of(
98 new ElGamalCiphertext(
99 mock(CivitasBigInteger.class, "eprime_a0"), mock(CivitasBigInteger.class, "eprime_b0")),
100 new ElGamalCiphertext(
101 mock(CivitasBigInteger.class, "eprime_a1"), mock(CivitasBigInteger.class, "eprime_b1")),
102 new ElGamalCiphertext(
103 mock(CivitasBigInteger.class, "eprime_a2"), mock(CivitasBigInteger.class, "eprime_b2")),
104 new ElGamalCiphertext(
105 mock(CivitasBigInteger.class, "eprime_a3"), mock(CivitasBigInteger.class, "eprime_b3")));
106 }