View Javadoc
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 }